model.itop-config-mgmt.php 102 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632
  1. <?php
  2. // Copyright (C) 2010 Combodo SARL
  3. //
  4. // This program is free software; you can redistribute it and/or modify
  5. // it under the terms of the GNU General Public License as published by
  6. // the Free Software Foundation; version 3 of the License.
  7. //
  8. // This program is distributed in the hope that it will be useful,
  9. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. // GNU General Public License for more details.
  12. //
  13. // You should have received a copy of the GNU General Public License
  14. // along with this program; if not, write to the Free Software
  15. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  16. /**
  17. * Persistent classes for a CMDB
  18. *
  19. * @author Erwan Taloc <erwan.taloc@combodo.com>
  20. * @author Romain Quetiez <romain.quetiez@combodo.com>
  21. * @author Denis Flaven <denis.flaven@combodo.com>
  22. * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
  23. */
  24. MetaModel::RegisterRelation("impacts", array("description"=>"Objects impacted by", "verb_down"=>"impacts", "verb_up"=>"depends on"));
  25. MetaModel::RegisterRelation("depends on", array("description"=>"That impacts ", "verb_down"=>"depends on", "verb_up"=>"impacts"));
  26. class Organization extends cmdbAbstractObject
  27. {
  28. public static function Init()
  29. {
  30. $aParams = array
  31. (
  32. "category" => "bizmodel,searchable,structure",
  33. "key_type" => "autoincrement",
  34. "name_attcode" => "name",
  35. "state_attcode" => "",
  36. "reconc_keys" => array("name"),
  37. "db_table" => "organization",
  38. "db_key_field" => "id",
  39. "db_finalclass_field" => "",
  40. "display_template" => "",
  41. );
  42. MetaModel::Init_Params($aParams);
  43. MetaModel::Init_InheritAttributes();
  44. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  45. MetaModel::Init_AddAttribute(new AttributeString("code", array("allowed_values"=>null, "sql"=>"code", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  46. MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values"=>new ValueSetEnum('active,inactive'), "sql"=>"status", "default_value"=>"active", "is_null_allowed"=>true, "depends_on"=>array())));
  47. MetaModel::Init_AddAttribute(new AttributeExternalKey("parent_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"parent_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  48. MetaModel::Init_AddAttribute(new AttributeExternalField("parent_name", array("allowed_values"=>null, "extkey_attcode"=>"parent_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  49. MetaModel::Init_SetZListItems('details', array('name', 'code', 'status', 'parent_id'));
  50. MetaModel::Init_SetZListItems('advanced_search', array('name', 'code', 'status'));
  51. MetaModel::Init_SetZListItems('standard_search', array('name', 'code', 'status'));
  52. MetaModel::Init_SetZListItems('list', array('status', 'parent_id'));
  53. }
  54. }
  55. class Location extends cmdbAbstractObject
  56. {
  57. public static function Init()
  58. {
  59. $aParams = array
  60. (
  61. "category" => "bizmodel,searchable,structure",
  62. "key_type" => "autoincrement",
  63. "name_attcode" => "name",
  64. "state_attcode" => "",
  65. "reconc_keys" => array("name", "org_id", "org_name"),
  66. "db_table" => "location",
  67. "db_key_field" => "id",
  68. "db_finalclass_field" => "",
  69. "icon" => "../modules/itop-config-mgmt-1.0.0/images/location.png",
  70. );
  71. MetaModel::Init_Params($aParams);
  72. MetaModel::Init_InheritAttributes();
  73. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  74. MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values"=>new ValueSetEnum('active,inactive'), "sql"=>"status", "default_value"=>"active", "is_null_allowed"=>true, "depends_on"=>array())));
  75. MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  76. MetaModel::Init_AddAttribute(new AttributeExternalField("org_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  77. MetaModel::Init_AddAttribute(new AttributeText("address", array("allowed_values"=>null, "sql"=>"address", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  78. MetaModel::Init_AddAttribute(new AttributeString("postal_code", array("allowed_values"=>null, "sql"=>"postal_code", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  79. MetaModel::Init_AddAttribute(new AttributeString("city", array("allowed_values"=>null, "sql"=>"city", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  80. MetaModel::Init_AddAttribute(new AttributeString("country", array("allowed_values"=>null, "sql"=>"country", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  81. MetaModel::Init_AddAttribute(new AttributeExternalKey("parent_id", array("targetclass"=>"Location", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Location AS L WHERE L.org_id = :this->org_id'), "sql"=>"parent_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("org_id"))));
  82. MetaModel::Init_AddAttribute(new AttributeExternalField("parent_name", array("allowed_values"=>null, "extkey_attcode"=>"parent_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  83. MetaModel::Init_AddAttribute(new AttributeLinkedSet("contact_list", array("linked_class"=>"Contact", "ext_key_to_me"=>"location_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  84. MetaModel::Init_AddAttribute(new AttributeLinkedSet("infra_list", array("linked_class"=>"InfrastructureCI", "ext_key_to_me"=>"location_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  85. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'address', 'postal_code', 'city', 'country', 'parent_id', 'contact_list', 'infra_list'));
  86. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'country'));
  87. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'city', 'country'));
  88. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'city', 'country'));
  89. }
  90. }
  91. abstract class Contact extends cmdbAbstractObject
  92. {
  93. public static function Init()
  94. {
  95. $aParams = array
  96. (
  97. "category" => "bizmodel,searchable,structure",
  98. "key_type" => "autoincrement",
  99. "name_attcode" => "name",
  100. "state_attcode" => "",
  101. "reconc_keys" => array("name","org_id", "org_name", "email"),
  102. "db_table" => "contact",
  103. "db_key_field" => "id",
  104. "db_finalclass_field" => "",
  105. "icon" => "../modules/itop-config-mgmt-1.0.0/images/team.png",
  106. );
  107. MetaModel::Init_Params($aParams);
  108. MetaModel::Init_InheritAttributes();
  109. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  110. MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values"=>new ValueSetEnum('active,inactive'), "sql"=>"status", "default_value"=>"active", "is_null_allowed"=>false, "depends_on"=>array())));
  111. MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  112. MetaModel::Init_AddAttribute(new AttributeExternalField("org_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  113. MetaModel::Init_AddAttribute(new AttributeEmailAddress("email", array("allowed_values"=>null, "sql"=>"email", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  114. MetaModel::Init_AddAttribute(new AttributeString("phone", array("allowed_values"=>null, "sql"=>"phone", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  115. MetaModel::Init_AddAttribute(new AttributeExternalKey("location_id", array("targetclass"=>"Location", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Location AS L WHERE L.org_id = :this->org_id'), "sql"=>"location_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array('org_id'))));
  116. MetaModel::Init_AddAttribute(new AttributeExternalField("location_name", array("allowed_values"=>null, "extkey_attcode"=>"location_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  117. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("contract_list", array("linked_class"=>"lnkContractToContact", "ext_key_to_me"=>"contact_id", "ext_key_to_remote"=>"contract_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  118. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("service_list", array("linked_class"=>"lnkServiceToContact", "ext_key_to_me"=>"contact_id", "ext_key_to_remote"=>"service_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  119. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ticket_list", array("linked_class"=>"lnkTicketToContact", "ext_key_to_me"=>"contact_id", "ext_key_to_remote"=>"ticket_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  120. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ci_list", array("linked_class"=>"lnkCIToContact", "ext_key_to_me"=>"contact_id", "ext_key_to_remote"=>"ci_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  121. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("team_list", array("linked_class"=>"lnkTeamToContact", "ext_key_to_me"=>"contact_id", "ext_key_to_remote"=>"team_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  122. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'contract_list', 'service_list', 'ticket_list', 'ci_list', 'team_list'));
  123. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id'));
  124. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id'));
  125. MetaModel::Init_SetZListItems('list', array('finalclass', 'status', 'org_id', 'email', 'phone', 'location_id'));
  126. }
  127. }
  128. class Person extends Contact
  129. {
  130. public static function Init()
  131. {
  132. $aParams = array
  133. (
  134. "category" => "bizmodel,searchable,structure",
  135. "key_type" => "autoincrement",
  136. "name_attcode" => array('first_name', 'name'),
  137. "state_attcode" => "",
  138. "reconc_keys" => array("name","first_name","org_id","email"),
  139. "db_table" => "person",
  140. "db_key_field" => "id",
  141. "db_finalclass_field" => "",
  142. "icon" => "../modules/itop-config-mgmt-1.0.0/images/person.png",
  143. );
  144. MetaModel::Init_Params($aParams);
  145. MetaModel::Init_InheritAttributes();
  146. MetaModel::Init_AddAttribute(new AttributeString("first_name", array("allowed_values"=>null, "sql"=>"first_name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  147. MetaModel::Init_AddAttribute(new AttributeString("employee_id", array("allowed_values"=>null, "sql"=>"employee_id", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  148. MetaModel::Init_SetZListItems('details', array('name','first_name', 'org_id', 'status', 'location_id', 'email', 'phone', 'employee_id','team_list', 'contract_list', 'service_list', 'ticket_list', 'ci_list'));
  149. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id'));
  150. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id'));
  151. MetaModel::Init_SetZListItems('list', array('name','first_name','status', 'org_id', 'email', 'phone', 'location_id'));
  152. }
  153. }
  154. class Team extends Contact
  155. {
  156. public static function Init()
  157. {
  158. $aParams = array
  159. (
  160. "category" => "bizmodel,searchable,structure",
  161. "key_type" => "autoincrement",
  162. "name_attcode" => "name",
  163. "state_attcode" => "",
  164. "reconc_keys" => array("name", "org_id"),
  165. "db_table" => "team",
  166. "db_key_field" => "id",
  167. "db_finalclass_field" => "",
  168. "icon" => "../modules/itop-config-mgmt-1.0.0/images/team.png",
  169. );
  170. MetaModel::Init_Params($aParams);
  171. MetaModel::Init_InheritAttributes();
  172. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("member_list", array("linked_class"=>"lnkTeamToContact", "ext_key_to_me"=>"team_id", "ext_key_to_remote"=>"contact_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  173. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'location_id', 'email', 'phone', 'member_list', 'contract_list', 'service_list', 'ticket_list', 'ci_list', 'team_list'));
  174. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id'));
  175. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id'));
  176. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'email', 'phone', 'location_id'));
  177. }
  178. }
  179. class lnkTeamToContact extends cmdbAbstractObject
  180. {
  181. public static function Init()
  182. {
  183. $aParams = array
  184. (
  185. "category" => "bizmodel,searchable,structure",
  186. "key_type" => "autoincrement",
  187. "name_attcode" => "team_id",
  188. "state_attcode" => "",
  189. "reconc_keys" => array(),
  190. "db_table" => "lnkteamtocontact",
  191. "db_key_field" => "id",
  192. "db_finalclass_field" => "",
  193. "display_template" => "",
  194. );
  195. MetaModel::Init_Params($aParams);
  196. MetaModel::Init_InheritAttributes();
  197. MetaModel::Init_AddAttribute(new AttributeExternalKey("team_id", array("targetclass"=>"Team", "jointype"=>null, "allowed_values"=>null, "sql"=>"team_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  198. MetaModel::Init_AddAttribute(new AttributeExternalField("team_name", array("allowed_values"=>null, "extkey_attcode"=>"team_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  199. MetaModel::Init_AddAttribute(new AttributeExternalKey("contact_id", array("targetclass"=>"Contact", "jointype"=>null, "allowed_values"=>null, "sql"=>"contact_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  200. MetaModel::Init_AddAttribute(new AttributeExternalField("contact_name", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  201. MetaModel::Init_AddAttribute(new AttributeExternalField("contact_location_id", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"location_id", "is_null_allowed"=>true, "depends_on"=>array())));
  202. MetaModel::Init_AddAttribute(new AttributeExternalField("contact_location_name", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"location_name", "is_null_allowed"=>true, "depends_on"=>array())));
  203. MetaModel::Init_AddAttribute(new AttributeExternalField("contact_email", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array())));
  204. MetaModel::Init_AddAttribute(new AttributeExternalField("contact_phone", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"phone", "is_null_allowed"=>true, "depends_on"=>array())));
  205. MetaModel::Init_AddAttribute(new AttributeString("role", array("allowed_values"=>null, "sql"=>"role", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  206. MetaModel::Init_SetZListItems('details', array('team_id', 'contact_id', 'role'));
  207. MetaModel::Init_SetZListItems('advanced_search', array('team_id', 'contact_id', 'role'));
  208. MetaModel::Init_SetZListItems('standard_search', array('team_id', 'contact_id', 'role'));
  209. MetaModel::Init_SetZListItems('list', array('team_id', 'contact_id', 'contact_location_id', 'contact_email', 'contact_phone', 'role'));
  210. }
  211. }
  212. abstract class Document extends cmdbAbstractObject
  213. {
  214. public static function Init()
  215. {
  216. $aParams = array
  217. (
  218. "category" => "bizmodel,searchable,documentation",
  219. "key_type" => "autoincrement",
  220. "name_attcode" => "name",
  221. "state_attcode" => "",
  222. "reconc_keys" => array("name","org_id","org_name"),
  223. "db_table" => "document",
  224. "db_key_field" => "id",
  225. "db_finalclass_field" => "",
  226. "icon" => "../modules/itop-config-mgmt-1.0.0/images/document.png",
  227. );
  228. MetaModel::Init_Params($aParams);
  229. MetaModel::Init_InheritAttributes();
  230. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  231. MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  232. MetaModel::Init_AddAttribute(new AttributeExternalField("org_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  233. MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  234. MetaModel::Init_AddAttribute(new AttributeEnum("type", array("allowed_values"=>new ValueSetEnum('contract,networkmap,presentation,training,whitePaper,workinginstructions'), "sql"=>"type", "default_value"=>"presentation", "is_null_allowed"=>true, "depends_on"=>array())));
  235. MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values"=>new ValueSetEnum('draft,published,obsolete'), "sql"=>"status", "default_value"=>"draft", "is_null_allowed"=>false, "depends_on"=>array())));
  236. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("contract_list", array("linked_class"=>"lnkContractToDoc", "ext_key_to_me"=>"document_id", "ext_key_to_remote"=>"contract_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  237. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("service_list", array("linked_class"=>"lnkServiceToDoc", "ext_key_to_me"=>"document_id", "ext_key_to_remote"=>"service_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  238. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ticket_list", array("linked_class"=>"lnkTicketToDoc", "ext_key_to_me"=>"document_id", "ext_key_to_remote"=>"ticket_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  239. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ci_list", array("linked_class"=>"lnkCIToDoc", "ext_key_to_me"=>"document_id", "ext_key_to_remote"=>"ci_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  240. MetaModel::Init_SetZListItems('details', array('name', 'org_id', 'description', 'type', 'status', 'contract_list', 'service_list', 'ticket_list', 'ci_list'));
  241. MetaModel::Init_SetZListItems('advanced_search', array('name', 'org_id', 'description', 'type', 'status'));
  242. MetaModel::Init_SetZListItems('standard_search', array('name', 'org_id', 'description', 'type', 'status'));
  243. MetaModel::Init_SetZListItems('list', array('org_id', 'type', 'status'));
  244. }
  245. }
  246. class WebDoc extends Document
  247. {
  248. public static function Init()
  249. {
  250. $aParams = array
  251. (
  252. "category" => "bizmodel,searchable,documentation",
  253. "key_type" => "autoincrement",
  254. "name_attcode" => "name",
  255. "state_attcode" => "",
  256. "reconc_keys" => array("name","org_id","org_name"),
  257. "db_table" => "externaldoc",
  258. "db_key_field" => "id",
  259. "db_finalclass_field" => "",
  260. "icon" => "../modules/itop-config-mgmt-1.0.0/images/document.png",
  261. );
  262. MetaModel::Init_Params($aParams);
  263. MetaModel::Init_InheritAttributes();
  264. MetaModel::Init_AddAttribute(new AttributeURL("url", array("target"=>"_blank", "allowed_values"=>null, "sql"=>"url", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  265. MetaModel::Init_SetZListItems('details', array('name', 'org_id', 'description', 'type', 'status', 'contract_list', 'service_list', 'ticket_list', 'ci_list', 'url'));
  266. MetaModel::Init_SetZListItems('advanced_search', array('name', 'org_id', 'description', 'type', 'status', 'url'));
  267. MetaModel::Init_SetZListItems('standard_search', array('name', 'org_id', 'description', 'type', 'status', 'url'));
  268. MetaModel::Init_SetZListItems('list', array('org_id', 'type', 'status', 'url'));
  269. }
  270. }
  271. class Note extends Document
  272. {
  273. public static function Init()
  274. {
  275. $aParams = array
  276. (
  277. "category" => "bizmodel,searchable,documentation",
  278. "key_type" => "autoincrement",
  279. "name_attcode" => "name",
  280. "state_attcode" => "",
  281. "reconc_keys" => array("name","org_id","org_name"),
  282. "db_table" => "note",
  283. "db_key_field" => "id",
  284. "db_finalclass_field" => "",
  285. "icon" => "../modules/itop-config-mgmt-1.0.0/images/document.png",
  286. );
  287. MetaModel::Init_Params($aParams);
  288. MetaModel::Init_InheritAttributes();
  289. MetaModel::Init_AddAttribute(new AttributeText("note", array("allowed_values"=>null, "sql"=>"note", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  290. MetaModel::Init_SetZListItems('details', array('name', 'org_id', 'description', 'type', 'status', 'contract_list', 'service_list', 'ticket_list', 'ci_list', 'note'));
  291. MetaModel::Init_SetZListItems('advanced_search', array('name', 'org_id', 'description', 'type', 'status', 'note'));
  292. MetaModel::Init_SetZListItems('standard_search', array('name', 'org_id', 'description', 'type', 'status', 'note'));
  293. MetaModel::Init_SetZListItems('list', array('org_id', 'type', 'status', 'note'));
  294. }
  295. }
  296. class FileDoc extends Document
  297. {
  298. public static function Init()
  299. {
  300. $aParams = array
  301. (
  302. "category" => "bizmodel,searchable,documentation",
  303. "key_type" => "autoincrement",
  304. "name_attcode" => "name",
  305. "state_attcode" => "",
  306. "reconc_keys" => array("name","org_id","org_name"),
  307. "db_table" => "filedoc",
  308. "db_key_field" => "id",
  309. "db_finalclass_field" => "",
  310. "icon" => "../modules/itop-config-mgmt-1.0.0/images/document.png",
  311. );
  312. MetaModel::Init_Params($aParams);
  313. MetaModel::Init_InheritAttributes();
  314. MetaModel::Init_AddAttribute(new AttributeBlob("contents", array("depends_on"=>array())));
  315. MetaModel::Init_SetZListItems('details', array('name', 'org_id', 'description', 'type', 'status', 'contract_list', 'service_list', 'ticket_list', 'ci_list', 'contents'));
  316. MetaModel::Init_SetZListItems('advanced_search', array('name', 'org_id', 'description', 'type', 'status'));
  317. MetaModel::Init_SetZListItems('standard_search', array('name', 'org_id', 'description', 'type', 'status'));
  318. MetaModel::Init_SetZListItems('list', array('org_id', 'type', 'status', 'contents'));
  319. }
  320. /**
  321. * Overload the display of the properties to add a tab (the first one)
  322. * with the preview of the document
  323. */
  324. public function DisplayBareProperties(WebPage $oPage, $bEditMode = false)
  325. {
  326. if (!$bEditMode)
  327. {
  328. $oPage->SetCurrentTab(Dict::S('Class:Document:PreviewTab'));
  329. $oPage->add($this->DisplayDocumentInline($oPage, 'contents'));
  330. $oPage->SetCurrentTab(Dict::S('UI:PropertiesTab'));
  331. }
  332. parent::DisplayBareProperties($oPage, $bEditMode);
  333. }
  334. }
  335. class Licence extends cmdbAbstractObject
  336. {
  337. public static function Init()
  338. {
  339. $aParams = array
  340. (
  341. "category" => "bizmodel,searchable,configmgmt",
  342. "key_type" => "autoincrement",
  343. "name_attcode" => "name",
  344. "state_attcode" => "",
  345. "reconc_keys" => array("name","org_id", "org_name"),
  346. "db_table" => "licence",
  347. "db_key_field" => "id",
  348. "db_finalclass_field" => "",
  349. "icon" => "../modules/itop-config-mgmt-1.0.0/images/licence.png",
  350. );
  351. MetaModel::Init_Params($aParams);
  352. MetaModel::Init_InheritAttributes();
  353. MetaModel::Init_AddAttribute(new AttributeString("provider", array("allowed_values"=>null, "sql"=>"provider", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  354. MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  355. MetaModel::Init_AddAttribute(new AttributeExternalField("org_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  356. MetaModel::Init_AddAttribute(new AttributeString("product", array("allowed_values"=>null, "sql"=>"product", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  357. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  358. MetaModel::Init_AddAttribute(new AttributeDate("start", array("allowed_values"=>null, "sql"=>"start", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
  359. MetaModel::Init_AddAttribute(new AttributeDate("end", array("allowed_values"=>null, "sql"=>"end", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
  360. MetaModel::Init_AddAttribute(new AttributeString("licence_key", array("allowed_values"=>null, "sql"=>"licence_key", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  361. MetaModel::Init_AddAttribute(new AttributeText("scope", array("allowed_values"=>null, "sql"=>"scope", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  362. MetaModel::Init_AddAttribute(new AttributeInteger("usage_limit", array("allowed_values"=>null, "sql"=>"usage_limit", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
  363. MetaModel::Init_AddAttribute(new AttributeLinkedSet("usage_list", array("linked_class"=>"SoftwareInstance", "ext_key_to_me"=>"licence_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  364. MetaModel::Init_SetZListItems('details', array('name','org_id','provider', 'product', 'start', 'end', 'licence_key', 'scope', 'usage_limit', 'usage_list'));
  365. MetaModel::Init_SetZListItems('advanced_search', array('provider', 'product', 'name', 'start', 'end', 'licence_key', 'scope'));
  366. MetaModel::Init_SetZListItems('standard_search', array('org_id','provider', 'product', 'name', 'start', 'end', 'licence_key', 'scope'));
  367. MetaModel::Init_SetZListItems('list', array('org_id','provider', 'product', 'start', 'end'));
  368. }
  369. }
  370. class Subnet extends cmdbAbstractObject
  371. {
  372. public static function Init()
  373. {
  374. $aParams = array
  375. (
  376. "category" => "bizmodel,searchable,configmgmt",
  377. "key_type" => "autoincrement",
  378. "name_attcode" => array('ip', 'ip_mask'),
  379. "state_attcode" => "",
  380. "reconc_keys" => array("ip", "ip_mask","org_id", "org_name"),
  381. "db_table" => "subnet",
  382. "db_key_field" => "id",
  383. "db_finalclass_field" => "",
  384. "icon" => "../modules/itop-config-mgmt-1.0.0/images/subnet.png",
  385. );
  386. MetaModel::Init_Params($aParams);
  387. MetaModel::Init_InheritAttributes();
  388. //MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  389. MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  390. MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  391. MetaModel::Init_AddAttribute(new AttributeExternalField("org_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  392. MetaModel::Init_AddAttribute(new AttributeIPAddress("ip", array("allowed_values"=>null, "sql"=>"ip", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  393. MetaModel::Init_AddAttribute(new AttributeIPAddress("ip_mask", array("allowed_values"=>null, "sql"=>"ip_mask", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  394. MetaModel::Init_SetZListItems('details', array('ip', 'ip_mask', 'org_id', 'description'));
  395. MetaModel::Init_SetZListItems('advanced_search', array('ip', 'ip_mask', 'org_id', 'description'));
  396. MetaModel::Init_SetZListItems('standard_search', array('ip', 'ip_mask', 'org_id', 'description'));
  397. MetaModel::Init_SetZListItems('list', array('ip', 'ip_mask', 'org_id'));
  398. }
  399. function DisplayBareRelations(WebPage $oPage, $bEditMode = false)
  400. {
  401. parent::DisplayBareRelations($oPage, $bEditMode);
  402. if (!$bEditMode)
  403. {
  404. $oPage->SetCurrentTab(Dict::S('Class:Subnet/Tab:IPUsage'));
  405. $bit_ip = ip2long($this->Get('ip'));
  406. $bit_mask = ip2long($this->Get('ip_mask'));
  407. $iIPMin = ($bit_ip & $bit_mask) + 1; // exclude the first one: identifies the subnet itsel
  408. $iIPMax = ($bit_ip | (~$bit_mask)) - 1; // exclude the last one : reserved for DHCP
  409. $sIPMin = long2ip($iIPMin);
  410. $sIPMax = long2ip($iIPMax);
  411. $oPage->p(Dict::Format('Class:Subnet/Tab:IPUsage-explain', $sIPMin, $sIPMax));
  412. $oIfSet = new CMDBObjectSet(DBObjectSearch::FromOQL("SELECT NetworkInterface AS if WHERE INET_ATON(if.ip_address) >= INET_ATON('$sIPMin') AND INET_ATON(if.ip_address) <= INET_ATON('$sIPMax')"));
  413. self::DisplaySet($oPage, $oIfSet, array('block_id' => 'nwif'));
  414. $iCountUsed = $oIfSet->Count();
  415. $iCountRange = $iIPMax - $iIPMin;
  416. $iFreeCount = $iCountRange - $iCountUsed;
  417. $oPage->SetCurrentTab(Dict::S('Class:Subnet/Tab:FreeIPs'));
  418. $oPage->p(Dict::Format('Class:Subnet/Tab:FreeIPs-count', $iFreeCount));
  419. $oPage->p(Dict::S('Class:Subnet/Tab:FreeIPs-explain'));
  420. $aUsedIPs = $oIfSet->GetColumnAsArray('ip_address', false);
  421. $iAnIP = $iIPMin;
  422. $iFound = 0;
  423. while (($iFound < min($iFreeCount, 10)) && ($iAnIP <= $iIPMax))
  424. {
  425. $sAnIP = long2ip($iAnIP);
  426. if (!in_array($sAnIP, $aUsedIPs))
  427. {
  428. $iFound++;
  429. $oPage->p($sAnIP);
  430. }
  431. else
  432. {
  433. }
  434. $iAnIP++;
  435. }
  436. }
  437. }
  438. }
  439. class Patch extends cmdbAbstractObject
  440. {
  441. public static function Init()
  442. {
  443. $aParams = array
  444. (
  445. "category" => "bizmodel,searchable,configmgmt",
  446. "key_type" => "autoincrement",
  447. "name_attcode" => "name",
  448. "state_attcode" => "",
  449. "reconc_keys" => array("name"),
  450. "db_table" => "patch",
  451. "db_key_field" => "id",
  452. "db_finalclass_field" => "",
  453. "icon" => "../modules/itop-config-mgmt-1.0.0/images/patch.png",
  454. );
  455. MetaModel::Init_Params($aParams);
  456. MetaModel::Init_InheritAttributes();
  457. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  458. MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  459. MetaModel::Init_AddAttribute(new AttributeString("target_sw", array("allowed_values"=>null, "sql"=>"target_sw", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  460. MetaModel::Init_AddAttribute(new AttributeString("version", array("allowed_values"=>null, "sql"=>"version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  461. MetaModel::Init_AddAttribute(new AttributeEnum("type", array("allowed_values"=>new ValueSetEnum('application,os,security,servicepack'), "sql"=>"type", "default_value"=>"security", "is_null_allowed"=>false, "depends_on"=>array())));
  462. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ci_list", array("linked_class"=>"lnkPatchToCI", "ext_key_to_me"=>"patch_id", "ext_key_to_remote"=>"ci_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  463. MetaModel::Init_SetZListItems('details', array('name', 'description', 'target_sw', 'version', 'type', 'ci_list'));
  464. MetaModel::Init_SetZListItems('advanced_search', array('name', 'target_sw', 'version', 'type'));
  465. MetaModel::Init_SetZListItems('standard_search', array('name', 'target_sw', 'version', 'type','description'));
  466. MetaModel::Init_SetZListItems('list', array('target_sw', 'version', 'type'));
  467. }
  468. }
  469. abstract class Software extends cmdbAbstractObject
  470. {
  471. public static function Init()
  472. {
  473. $aParams = array
  474. (
  475. "category" => "bizmodel,searchable,configmgmt",
  476. "key_type" => "autoincrement",
  477. "name_attcode" => "name",
  478. "state_attcode" => "",
  479. "reconc_keys" => array("name"),
  480. "db_table" => "software",
  481. "db_key_field" => "id",
  482. "db_finalclass_field" => "",
  483. "icon" => "../modules/itop-config-mgmt-1.0.0/images/software.png",
  484. );
  485. MetaModel::Init_Params($aParams);
  486. MetaModel::Init_InheritAttributes();
  487. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  488. MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  489. MetaModel::Init_SetZListItems('details', array('name', 'description'));
  490. MetaModel::Init_SetZListItems('advanced_search', array('name', 'description'));
  491. MetaModel::Init_SetZListItems('standard_search', array('name', 'description'));
  492. MetaModel::Init_SetZListItems('list', array('description'));
  493. }
  494. }
  495. class Application extends Software
  496. {
  497. public static function Init()
  498. {
  499. $aParams = array
  500. (
  501. "category" => "bizmodel,searchable,configmgmt",
  502. "key_type" => "autoincrement",
  503. "name_attcode" => "name",
  504. "state_attcode" => "",
  505. "reconc_keys" => array("name"),
  506. "db_table" => "software_app",
  507. "db_key_field" => "id",
  508. "db_finalclass_field" => "",
  509. "icon" => "../modules/itop-config-mgmt-1.0.0/images/software.png",
  510. );
  511. MetaModel::Init_Params($aParams);
  512. MetaModel::Init_InheritAttributes();
  513. MetaModel::Init_AddAttribute(new AttributeLinkedSet("instance_list", array("linked_class"=>"ApplicationInstance", "ext_key_to_me"=>"software_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  514. MetaModel::Init_SetZListItems('details', array('name', 'description', 'instance_list'));
  515. MetaModel::Init_SetZListItems('advanced_search', array('name', 'description'));
  516. MetaModel::Init_SetZListItems('standard_search', array('name', 'description'));
  517. MetaModel::Init_SetZListItems('list', array('description'));
  518. }
  519. }
  520. class DBServer extends Software
  521. {
  522. public static function Init()
  523. {
  524. $aParams = array
  525. (
  526. "category" => "bizmodel,searchable,configmgmt",
  527. "key_type" => "autoincrement",
  528. "name_attcode" => "name",
  529. "state_attcode" => "",
  530. "reconc_keys" => array("name"),
  531. "db_table" => "software_db",
  532. "db_key_field" => "id",
  533. "db_finalclass_field" => "",
  534. "icon" => "../modules/itop-config-mgmt-1.0.0/images/software.png",
  535. );
  536. MetaModel::Init_Params($aParams);
  537. MetaModel::Init_InheritAttributes();
  538. MetaModel::Init_AddAttribute(new AttributeLinkedSet("instance_list", array("linked_class"=>"DBServerInstance", "ext_key_to_me"=>"software_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  539. MetaModel::Init_SetZListItems('details', array('name', 'description', 'instance_list'));
  540. MetaModel::Init_SetZListItems('advanced_search', array('name', 'description'));
  541. MetaModel::Init_SetZListItems('standard_search', array('name', 'description'));
  542. MetaModel::Init_SetZListItems('list', array('description'));
  543. }
  544. }
  545. class lnkPatchToCI extends cmdbAbstractObject
  546. {
  547. public static function Init()
  548. {
  549. $aParams = array
  550. (
  551. "category" => "bizmodel,configmgmt",
  552. "key_type" => "autoincrement",
  553. "name_attcode" => "patch_id",
  554. "state_attcode" => "",
  555. "reconc_keys" => array("patch_id","ci_id"),
  556. "db_table" => "lnkpatchtoci",
  557. "db_key_field" => "id",
  558. "db_finalclass_field" => "",
  559. "display_template" => "",
  560. );
  561. MetaModel::Init_Params($aParams);
  562. MetaModel::Init_InheritAttributes();
  563. MetaModel::Init_AddAttribute(new AttributeExternalKey("patch_id", array("targetclass"=>"Patch", "jointype"=>null, "allowed_values"=>null, "sql"=>"patch_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  564. MetaModel::Init_AddAttribute(new AttributeExternalField("patch_name", array("allowed_values"=>null, "extkey_attcode"=>"patch_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  565. MetaModel::Init_AddAttribute(new AttributeExternalKey("ci_id", array("targetclass"=>"Device", "jointype"=>null, "allowed_values"=>null, "sql"=>"ci_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  566. MetaModel::Init_AddAttribute(new AttributeExternalField("ci_name", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  567. MetaModel::Init_AddAttribute(new AttributeExternalField("ci_status", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"status", "is_null_allowed"=>true, "depends_on"=>array())));
  568. MetaModel::Init_SetZListItems('details', array('patch_id', 'ci_id', 'ci_status'));
  569. MetaModel::Init_SetZListItems('advanced_search', array('patch_id', 'ci_id'));
  570. MetaModel::Init_SetZListItems('standard_search', array('patch_id', 'ci_id'));
  571. MetaModel::Init_SetZListItems('list', array('patch_id', 'ci_id', 'ci_status'));
  572. }
  573. }
  574. abstract class FunctionalCI extends cmdbAbstractObject
  575. {
  576. public static function Init()
  577. {
  578. $aParams = array
  579. (
  580. "category" => "bizmodel,searchable,configmgmt",
  581. "key_type" => "autoincrement",
  582. "name_attcode" => "name",
  583. "state_attcode" => "",
  584. "reconc_keys" => array("name","org_id", "owner_name"),
  585. "db_table" => "functionalci",
  586. "db_key_field" => "id",
  587. "db_finalclass_field" => "",
  588. "icon" => "../modules/itop-config-mgmt-1.0.0/images/server.png",
  589. );
  590. MetaModel::Init_Params($aParams);
  591. MetaModel::Init_InheritAttributes();
  592. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  593. MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values"=>new ValueSetEnum('implementation,production,obsolete'), "sql"=>"status", "default_value"=>"implementation", "is_null_allowed"=>false, "depends_on"=>array())));
  594. MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  595. MetaModel::Init_AddAttribute(new AttributeExternalField("owner_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  596. MetaModel::Init_AddAttribute(new AttributeEnum("importance", array("allowed_values"=>new ValueSetEnum('low,medium,high'), "sql"=>"importance", "default_value"=>"medium", "is_null_allowed"=>false, "depends_on"=>array())));
  597. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("contact_list", array("linked_class"=>"lnkCIToContact", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"contact_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  598. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("document_list", array("linked_class"=>"lnkCIToDoc", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"document_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  599. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("solution_list", array("linked_class"=>"lnkSolutionToCI", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"solution_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  600. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("contract_list", array("linked_class"=>"lnkContractToCI", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"contract_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  601. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ticket_list", array("linked_class"=>"lnkTicketToCI", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"ticket_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  602. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list'));
  603. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance'));
  604. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance'));
  605. MetaModel::Init_SetZListItems('list', array('finalclass', 'status', 'org_id', 'importance'));
  606. }
  607. public static function GetRelationQueries($sRelCode)
  608. {
  609. switch ($sRelCode)
  610. {
  611. case "impacts":
  612. $aRels = array(
  613. "contact" => array("sQuery"=>"SELECT Contact AS c JOIN lnkCIToContact AS l1 ON l1.contact_id = c.id WHERE l1.ci_id = :this->id", "bPropagate"=>true, "iDistance"=>3),
  614. "solution" => array("sQuery"=>"SELECT ApplicationSolution AS s JOIN lnkSolutionToCI AS l1 ON l1.solution_id = s.id WHERE l1.ci_id = :this->id", "bPropagate"=>true, "iDistance"=>2),
  615. );
  616. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  617. break;
  618. default:
  619. return parent::GetRelationQueries($sRelCode);
  620. }
  621. }
  622. }
  623. abstract class SoftwareInstance extends FunctionalCI
  624. {
  625. public static function Init()
  626. {
  627. $aParams = array
  628. (
  629. "category" => "bizmodel,searchable,configmgmt",
  630. "key_type" => "autoincrement",
  631. "name_attcode" => array('name', 'device_id_friendlyname'),
  632. "state_attcode" => "",
  633. "reconc_keys" => array("name", "device_id", "device_name", "org_id", "owner_name"),
  634. "db_table" => "softwareinstance",
  635. "db_key_field" => "id",
  636. "db_finalclass_field" => "",
  637. "icon" => "../modules/itop-config-mgmt-1.0.0/images/application.png",
  638. );
  639. MetaModel::Init_Params($aParams);
  640. MetaModel::Init_InheritAttributes();
  641. MetaModel::Init_AddAttribute(new AttributeExternalKey("device_id", array("targetclass"=>"Device", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Device WHERE org_id = :this->org_id'), "sql"=>"device_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("org_id"))));
  642. MetaModel::Init_AddAttribute(new AttributeExternalField("device_name", array("allowed_values"=>null, "extkey_attcode"=>"device_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  643. MetaModel::Init_AddAttribute(new AttributeExternalKey("licence_id", array("targetclass"=>"Licence", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Licence WHERE org_id = :this->org_id'), "sql"=>"licence_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("org_id"))));
  644. MetaModel::Init_AddAttribute(new AttributeExternalField("licence_name", array("allowed_values"=>null, "extkey_attcode"=>"licence_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  645. MetaModel::Init_AddAttribute(new AttributeString("version", array("allowed_values"=>null, "sql"=>"version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  646. MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  647. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'device_id', 'licence_id', 'version', 'description', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list'));
  648. MetaModel::Init_SetZListItems('advanced_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'version'));
  649. MetaModel::Init_SetZListItems('standard_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'version'));
  650. MetaModel::Init_SetZListItems('list', array('finalclass', 'status', 'org_id', 'importance', 'device_id', 'version'));
  651. }
  652. public function ComputeValues()
  653. {
  654. }
  655. public static function GetRelationQueries($sRelCode)
  656. {
  657. switch ($sRelCode)
  658. {
  659. case "impacts":
  660. $aRels = array(
  661. // Actually this should be limited to the Software instances based on a DBServer Application type...
  662. "db_instances" => array("sQuery"=>"SELECT DatabaseInstance AS db WHERE db.db_server_instance_id = :this->id", "bPropagate"=>true, "iDistance"=>5),
  663. );
  664. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  665. break;
  666. case 'depends on':
  667. $aRels = array(
  668. "applications" => array("sQuery"=>"SELECT Device JOIN SoftwareInstance AS app ON app.device_id = Device.id WHERE app.id = :this->id", "bPropagate"=>true, "iDistance"=>5),
  669. );
  670. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  671. break;
  672. default:
  673. return parent::GetRelationQueries($sRelCode);
  674. }
  675. }
  676. }
  677. class DBServerInstance extends SoftwareInstance
  678. {
  679. public static function Init()
  680. {
  681. $aParams = array
  682. (
  683. "category" => "bizmodel,searchable,configmgmt",
  684. "key_type" => "autoincrement",
  685. "name_attcode" => array('name', 'device_id_friendlyname'),
  686. "state_attcode" => "",
  687. "reconc_keys" => array("name","software_id","software_name","device_id","device_name","org_id","owner_name"),
  688. "db_table" => "softwareinstance_dbserver",
  689. "db_key_field" => "id",
  690. "db_finalclass_field" => "",
  691. "icon" => "../modules/itop-config-mgmt-1.0.0/images/database.png",
  692. );
  693. MetaModel::Init_Params($aParams);
  694. MetaModel::Init_InheritAttributes();
  695. MetaModel::Init_AddAttribute(new AttributeExternalKey("software_id", array("targetclass"=>"DBServer", "jointype"=>null, "allowed_values"=>null, "sql"=>"software_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  696. MetaModel::Init_AddAttribute(new AttributeExternalField("software_name", array("allowed_values"=>null, "extkey_attcode"=>"software_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  697. MetaModel::Init_AddAttribute(new AttributeLinkedSet("dbinstance_list", array("linked_class"=>"DatabaseInstance", "ext_key_to_me"=>"db_server_instance_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  698. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version', 'description', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'dbinstance_list'));
  699. MetaModel::Init_SetZListItems('advanced_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
  700. MetaModel::Init_SetZListItems('standard_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
  701. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'device_id', 'software_id', 'version'));
  702. }
  703. }
  704. class ApplicationInstance extends SoftwareInstance
  705. {
  706. public static function Init()
  707. {
  708. $aParams = array
  709. (
  710. "category" => "bizmodel,searchable,configmgmt",
  711. "key_type" => "autoincrement",
  712. "name_attcode" => array('name', 'device_id_friendlyname'),
  713. "state_attcode" => "",
  714. "reconc_keys" => array("name","software_id","software_name","device_id","device_name","org_id","owner_name"),
  715. "db_table" => "softwareinstance_application",
  716. "db_key_field" => "id",
  717. "db_finalclass_field" => "",
  718. "icon" => "../modules/itop-config-mgmt-1.0.0/images/application.png",
  719. );
  720. MetaModel::Init_Params($aParams);
  721. MetaModel::Init_InheritAttributes();
  722. MetaModel::Init_AddAttribute(new AttributeExternalKey("software_id", array("targetclass"=>"Application", "jointype"=>null, "allowed_values"=>null, "sql"=>"software_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  723. MetaModel::Init_AddAttribute(new AttributeExternalField("software_name", array("allowed_values"=>null, "extkey_attcode"=>"software_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  724. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version', 'description', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list'));
  725. MetaModel::Init_SetZListItems('advanced_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
  726. MetaModel::Init_SetZListItems('standard_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
  727. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'device_id', 'software_id', 'version'));
  728. }
  729. }
  730. class DatabaseInstance extends FunctionalCI
  731. {
  732. public static function Init()
  733. {
  734. $aParams = array
  735. (
  736. "category" => "bizmodel,searchable,configmgmt",
  737. "key_type" => "autoincrement",
  738. "name_attcode" => array('name', 'db_server_instance_id_friendlyname'),
  739. "state_attcode" => "",
  740. "reconc_keys" => array("name","org_id","owner_name","db_server_instance_id","db_server_instance_name"),
  741. "db_table" => "databaseinstance",
  742. "db_key_field" => "id",
  743. "db_finalclass_field" => "",
  744. "icon" => "../modules/itop-config-mgmt-1.0.0/images/database-instance.png",
  745. );
  746. MetaModel::Init_Params($aParams);
  747. MetaModel::Init_InheritAttributes();
  748. MetaModel::Init_AddAttribute(new AttributeExternalKey("db_server_instance_id", array("targetclass"=>"DBServerInstance", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT DBServerInstance WHERE org_id = :this->org_id'), "sql"=>"db_server_instance_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("org_id"))));
  749. MetaModel::Init_AddAttribute(new AttributeExternalField("db_server_instance_name", array("allowed_values"=>null, "extkey_attcode"=>"db_server_instance_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  750. MetaModel::Init_AddAttribute(new AttributeExternalField("db_server_instance_version", array("allowed_values"=>null, "extkey_attcode"=>"db_server_instance_id", "target_attcode"=>"version", "is_null_allowed"=>true, "depends_on"=>array())));
  751. MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  752. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'db_server_instance_id', 'db_server_instance_version', 'description', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list'));
  753. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'db_server_instance_id', 'db_server_instance_version'));
  754. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'db_server_instance_id', 'db_server_instance_version'));
  755. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'db_server_instance_id', 'db_server_instance_version'));
  756. }
  757. public static function GetRelationQueries($sRelCode)
  758. {
  759. switch ($sRelCode)
  760. {
  761. case "depends on":
  762. $aRels = array(
  763. "db_instances" => array("sQuery"=>"SELECT DBServerInstance AS db_server_inst JOIN DatabaseInstance AS db ON db.db_server_instance_id = db_server_inst.id WHERE db.id = :this->id", "bPropagate"=>true, "iDistance"=>5),
  764. );
  765. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  766. break;
  767. default:
  768. return parent::GetRelationQueries($sRelCode);
  769. }
  770. }
  771. }
  772. class Group extends cmdbAbstractObject
  773. {
  774. public static function Init()
  775. {
  776. $aParams = array
  777. (
  778. "category" => "bizmodel,searchable,configmgmt",
  779. "key_type" => "autoincrement",
  780. "name_attcode" => "name",
  781. "state_attcode" => "",
  782. "reconc_keys" => array("name","org_id","owner_name"),
  783. "db_table" => "group",
  784. "db_key_field" => "id",
  785. "db_finalclass_field" => "",
  786. "icon" => "../modules/itop-config-mgmt-1.0.0/images/group.png",
  787. );
  788. MetaModel::Init_Params($aParams);
  789. MetaModel::Init_InheritAttributes();
  790. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  791. MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values"=>new ValueSetEnum('production,implementation,obsolete'), "sql"=>"status", "default_value"=>"implementation", "is_null_allowed"=>false, "depends_on"=>array())));
  792. MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  793. MetaModel::Init_AddAttribute(new AttributeExternalField("owner_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  794. MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  795. MetaModel::Init_AddAttribute(new AttributeString("type", array("allowed_values"=>null, "sql"=>"type", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  796. MetaModel::Init_AddAttribute(new AttributeExternalKey("parent_id", array("targetclass"=>"Group", "jointype"=>null, "allowed_values"=>null, "sql"=>"parent_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("org_id"))));
  797. MetaModel::Init_AddAttribute(new AttributeExternalField("parent_name", array("allowed_values"=>null, "extkey_attcode"=>"parent_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  798. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ci_list", array("linked_class"=>"lnkGroupToCI", "ext_key_to_me"=>"group_id", "ext_key_to_remote"=>"ci_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  799. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'type','description', 'parent_id', 'ci_list'));
  800. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'type'));
  801. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'type'));
  802. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'type','parent_id'));
  803. }
  804. }
  805. class lnkGroupToCI extends cmdbAbstractObject
  806. {
  807. public static function Init()
  808. {
  809. $aParams = array
  810. (
  811. "category" => "bizmodel,configmgmt",
  812. "key_type" => "autoincrement",
  813. "name_attcode" => "group_id",
  814. "state_attcode" => "",
  815. "reconc_keys" => array("group_id","ci_id"),
  816. "db_table" => "lnkgrouptoci",
  817. "db_key_field" => "id",
  818. "db_finalclass_field" => "",
  819. "display_template" => "",
  820. );
  821. MetaModel::Init_Params($aParams);
  822. MetaModel::Init_InheritAttributes();
  823. MetaModel::Init_AddAttribute(new AttributeExternalKey("group_id", array("targetclass"=>"Group", "jointype"=>null, "allowed_values"=>null, "sql"=>"group_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  824. MetaModel::Init_AddAttribute(new AttributeExternalField("group_name", array("allowed_values"=>null, "extkey_attcode"=>"group_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  825. MetaModel::Init_AddAttribute(new AttributeExternalKey("ci_id", array("targetclass"=>"FunctionalCI", "jointype"=>null, "allowed_values"=>null, "sql"=>"ci_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  826. MetaModel::Init_AddAttribute(new AttributeExternalField("ci_name", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  827. MetaModel::Init_AddAttribute(new AttributeExternalField("ci_status", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"status", "is_null_allowed"=>true, "depends_on"=>array())));
  828. MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"reason", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  829. MetaModel::Init_SetZListItems('details', array('group_id', 'ci_id', 'ci_status', 'reason'));
  830. MetaModel::Init_SetZListItems('advanced_search', array('group_id', 'ci_id', 'reason'));
  831. MetaModel::Init_SetZListItems('standard_search', array('group_id', 'ci_id', 'reason'));
  832. MetaModel::Init_SetZListItems('list', array('group_id', 'ci_id', 'ci_status', 'reason'));
  833. }
  834. }
  835. class ApplicationSolution extends FunctionalCI
  836. {
  837. public static function Init()
  838. {
  839. $aParams = array
  840. (
  841. "category" => "bizmodel,searchable,configmgmt",
  842. "key_type" => "autoincrement",
  843. "name_attcode" => "name",
  844. "state_attcode" => "",
  845. "reconc_keys" => array("name","org_id","owner_name"),
  846. "db_table" => "applicationsolution",
  847. "db_key_field" => "id",
  848. "db_finalclass_field" => "",
  849. "icon" => "../modules/itop-config-mgmt-1.0.0/images/solution.png",
  850. );
  851. MetaModel::Init_Params($aParams);
  852. MetaModel::Init_InheritAttributes();
  853. MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  854. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ci_list", array("linked_class"=>"lnkSolutionToCI", "ext_key_to_me"=>"solution_id", "ext_key_to_remote"=>"ci_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  855. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("process_list", array("linked_class"=>"lnkProcessToSolution", "ext_key_to_me"=>"solution_id", "ext_key_to_remote"=>"process_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  856. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'description', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'ci_list', 'process_list'));
  857. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance'));
  858. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance'));
  859. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance'));
  860. }
  861. public static function GetRelationQueries($sRelCode)
  862. {
  863. switch ($sRelCode)
  864. {
  865. case "impacts":
  866. $aRels = array(
  867. "process" => array("sQuery"=>"SELECT BusinessProcess AS p JOIN lnkProcessToSolution AS l1 ON l1.process_id = p.id WHERE l1.solution_id = :this->id", "bPropagate"=>true, "iDistance"=>3),
  868. );
  869. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  870. break;
  871. case "depends on":
  872. $aRels = array(
  873. "solution" => array("sQuery"=>"SELECT FunctionalCI AS ci JOIN lnkSolutionToCI AS l1 ON l1.ci_id = ci.id WHERE l1.solution_id = :this->id", "bPropagate"=>true, "iDistance"=>2),
  874. );
  875. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  876. break;
  877. default:
  878. return parent::GetRelationQueries($sRelCode);
  879. }
  880. }
  881. }
  882. class BusinessProcess extends FunctionalCI
  883. {
  884. public static function Init()
  885. {
  886. $aParams = array
  887. (
  888. "category" => "bizmodel,searchable,configmgmt",
  889. "key_type" => "autoincrement",
  890. "name_attcode" => "name",
  891. "state_attcode" => "",
  892. "reconc_keys" => array("name","org_id","owner_name"),
  893. "db_table" => "businessprocess",
  894. "db_key_field" => "id",
  895. "db_finalclass_field" => "",
  896. "icon" => "../modules/itop-config-mgmt-1.0.0/images/business-process.png",
  897. );
  898. MetaModel::Init_Params($aParams);
  899. MetaModel::Init_InheritAttributes();
  900. MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  901. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("used_solution_list", array("linked_class"=>"lnkProcessToSolution", "ext_key_to_me"=>"process_id", "ext_key_to_remote"=>"solution_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  902. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'description', 'contact_list', 'document_list', 'contract_list', 'ticket_list', 'used_solution_list'));
  903. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'description'));
  904. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'description'));
  905. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance'));
  906. }
  907. public static function GetRelationQueries($sRelCode)
  908. {
  909. switch ($sRelCode)
  910. {
  911. case "depends on":
  912. $aRels = array(
  913. "solution" => array("sQuery"=>"SELECT ApplicationSolution AS app JOIN lnkProcessToSolution AS l1 ON l1.solution_id = app.id WHERE l1.process_id = :this->id", "bPropagate"=>true, "iDistance"=>3),
  914. );
  915. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  916. break;
  917. default:
  918. return parent::GetRelationQueries($sRelCode);
  919. }
  920. }
  921. }
  922. abstract class ConnectableCI extends FunctionalCI
  923. {
  924. public static function Init()
  925. {
  926. $aParams = array
  927. (
  928. "category" => "bizmodel,searchable,configmgmt",
  929. "key_type" => "autoincrement",
  930. "name_attcode" => "name",
  931. "state_attcode" => "",
  932. "reconc_keys" => array("name","org_id","owner_name"),
  933. "db_table" => "connectableci",
  934. "db_key_field" => "id",
  935. "db_finalclass_field" => "",
  936. "display_template" => "",
  937. );
  938. MetaModel::Init_Params($aParams);
  939. MetaModel::Init_InheritAttributes();
  940. MetaModel::Init_AddAttribute(new AttributeString("brand", array("allowed_values"=>null, "sql"=>"brand", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  941. MetaModel::Init_AddAttribute(new AttributeString("model", array("allowed_values"=>null, "sql"=>"model", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  942. MetaModel::Init_AddAttribute(new AttributeString("serial_number", array("allowed_values"=>null, "sql"=>"serial_number", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  943. MetaModel::Init_AddAttribute(new AttributeString("asset_ref", array("allowed_values"=>null, "sql"=>"asset_ref", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  944. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list'));
  945. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  946. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  947. MetaModel::Init_SetZListItems('list', array('finalclass', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  948. }
  949. }
  950. class NetworkInterface extends ConnectableCI
  951. {
  952. public static function Init()
  953. {
  954. $aParams = array
  955. (
  956. "category" => "bizmodel,searchable,configmgmt",
  957. "key_type" => "autoincrement",
  958. "name_attcode" => array('device_id_friendlyname', 'name'),
  959. "state_attcode" => "",
  960. "reconc_keys" => array("name","device_id","device_name","org_id"),
  961. "db_table" => "networkinterface",
  962. "db_key_field" => "id",
  963. "db_finalclass_field" => "",
  964. "icon" => "../modules/itop-config-mgmt-1.0.0/images/interface.png",
  965. );
  966. MetaModel::Init_Params($aParams);
  967. MetaModel::Init_InheritAttributes();
  968. MetaModel::Init_AddAttribute(new AttributeExternalKey("device_id", array("targetclass"=>"Device", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Device WHERE org_id = :this->org_id'), "sql"=>"device_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array("org_id"))));
  969. MetaModel::Init_AddAttribute(new AttributeExternalField("device_name", array("allowed_values"=>null, "extkey_attcode"=>"device_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  970. MetaModel::Init_AddAttribute(new AttributeEnum("logical_type", array("allowed_values"=>new ValueSetEnum('backup,logical,port,primary,secondary'), "sql"=>"logical_type", "default_value"=>"primary", "is_null_allowed"=>false, "depends_on"=>array())));
  971. MetaModel::Init_AddAttribute(new AttributeEnum("physical_type", array("allowed_values"=>new ValueSetEnum('atm,ethernet,framerelay,vlan'), "sql"=>"physical_type", "default_value"=>"ethernet", "is_null_allowed"=>false, "depends_on"=>array())));
  972. MetaModel::Init_AddAttribute(new AttributeIPAddress("ip_address", array("allowed_values"=>null, "sql"=>"ip_address", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  973. MetaModel::Init_AddAttribute(new AttributeIPAddress("ip_mask", array("allowed_values"=>null, "sql"=>"ip_mask", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  974. // With a validation pattern for '00:1a:4b:68:e3:97'
  975. // MetaModel::Init_AddAttribute(new AttributeString("mac_address", array("allowed_values"=>null, "sql"=>"mac_address", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array(), "validation_pattern"=>"^[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}$")));
  976. MetaModel::Init_AddAttribute(new AttributeString("mac_address", array("allowed_values"=>null, "sql"=>"mac_address", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array(), "validation_pattern"=>"")));
  977. MetaModel::Init_AddAttribute(new AttributeInteger("speed", array("allowed_values"=>null, "sql"=>"speed", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  978. MetaModel::Init_AddAttribute(new AttributeEnum("duplex", array("allowed_values"=>new ValueSetEnum('full,half,auto,unknown'), "sql"=>"duplex", "default_value"=>"full", "is_null_allowed"=>true, "depends_on"=>array())));
  979. MetaModel::Init_AddAttribute(new AttributeExternalKey("connected_if", array("targetclass"=>"NetworkInterface", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT NetworkInterface WHERE org_id = :this->org_id'), "sql"=>"connected_if", "is_null_allowed"=>true, "on_target_delete"=>DEL_AUTO, "depends_on"=>array("org_id"))));
  980. MetaModel::Init_AddAttribute(new AttributeExternalField("connected_name", array("allowed_values"=>null, "extkey_attcode"=>"connected_if", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  981. MetaModel::Init_AddAttribute(new AttributeExternalField("connected_if_device_id", array("allowed_values"=>null, "extkey_attcode"=>"connected_if", "target_attcode"=>"device_id", "is_null_allowed"=>true, "depends_on"=>array())));
  982. MetaModel::Init_AddAttribute(new AttributeExternalField("connected_if_device_id_name", array("allowed_values"=>null, "extkey_attcode"=>"connected_if", "target_attcode"=>"device_name", "is_null_allowed"=>true, "depends_on"=>array())));
  983. MetaModel::Init_AddAttribute(new AttributeEnum("link_type", array("allowed_values"=>new ValueSetEnum('uplink,downlink'), "sql"=>"link_type", "default_value"=>"uplink", "is_null_allowed"=>false, "depends_on"=>array())));
  984. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'link_type', 'connected_if', 'connected_if_device_id', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list'));
  985. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'speed', 'duplex', 'connected_if', 'connected_if_device_id'));
  986. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'device_id', 'logical_type', 'physical_type', 'ip_address', 'ip_mask', 'mac_address', 'connected_if_device_id'));
  987. MetaModel::Init_SetZListItems('list', array('status', 'ip_address', 'importance', 'device_id', 'logical_type', 'physical_type', 'link_type', 'connected_if_device_id'));
  988. }
  989. public static function GetRelationQueries($sRelCode)
  990. {
  991. switch ($sRelCode)
  992. {
  993. case "impacts":
  994. $aRels = array(
  995. "connected_devices" => array("sQuery"=>"SELECT Device AS dev JOIN NetworkInterface AS if1 ON if1.device_id = dev.id JOIN NetworkInterface AS if2 ON if2.connected_if = if1.id WHERE if2.id = :this->id AND if2.link_type='downlink'", "bPropagate"=>true, "iDistance"=>5),
  996. );
  997. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  998. break;
  999. default:
  1000. return parent::GetRelationQueries($sRelCode);
  1001. }
  1002. }
  1003. protected function UpdateConnectedInterface()
  1004. {
  1005. $oConnIf = MetaModel::GetObject('NetworkInterface', $this->Get('connected_if'), false /* no exception if not found */);
  1006. if (!is_null($oConnIf))
  1007. {
  1008. $sLink = $this->Get('link_type');
  1009. $sConnLink = ($sLink == 'uplink') ? 'downlink' : 'uplink';
  1010. if (($oConnIf->Get('connected_if') != $this->GetKey()) || ($sConnLink != $oConnIf->Get('link_type')))
  1011. {
  1012. // Something has to be changed on the connected interface...
  1013. if ($oConnIf->Get('connected_if') != $this->GetKey())
  1014. {
  1015. // It is connected to another interface: reset that third one...
  1016. $oThirdIf = MetaModel::GetObject('NetworkInterface', $oConnIf->Get('connected_if'), false);
  1017. if (!is_null($oThirdIf))
  1018. {
  1019. $oThirdIf->Set('connected_if', 0);
  1020. // Need to backup the current change, because it is reset when DBUpdateTracked is complete
  1021. $oCurrChange = self::$m_oCurrChange;
  1022. $oThirdIf->DBUpdateTracked($oCurrChange);
  1023. self::$m_oCurrChange = $oCurrChange;
  1024. }
  1025. }
  1026. // Connect the remote interface to the current one
  1027. $oConnIf->Set('connected_if', $this->GetKey());
  1028. $oConnIf->Set('link_type', $sConnLink);
  1029. // Need to backup the current change, because it is reset when DBUpdateTracked is complete
  1030. $oCurrChange = self::$m_oCurrChange;
  1031. $oConnIf->DBUpdateTracked($oCurrChange);
  1032. self::$m_oCurrChange = $oCurrChange;
  1033. }
  1034. }
  1035. }
  1036. protected function AfterInsert()
  1037. {
  1038. $this->UpdateConnectedInterface();
  1039. parent::AfterInsert();
  1040. }
  1041. protected function AfterUpdate()
  1042. {
  1043. $this->UpdateConnectedInterface();
  1044. parent::AfterUpdate();
  1045. }
  1046. }
  1047. abstract class Device extends ConnectableCI
  1048. {
  1049. public static function Init()
  1050. {
  1051. $aParams = array
  1052. (
  1053. "category" => "bizmodel,searchable,configmgmt",
  1054. "key_type" => "autoincrement",
  1055. "name_attcode" => "name",
  1056. "state_attcode" => "",
  1057. "reconc_keys" => array("name","org_id","owner_name"),
  1058. "db_table" => "device",
  1059. "db_key_field" => "id",
  1060. "db_finalclass_field" => "",
  1061. "icon" => "../modules/itop-config-mgmt-1.0.0/images/server.png",
  1062. );
  1063. MetaModel::Init_Params($aParams);
  1064. MetaModel::Init_InheritAttributes();
  1065. MetaModel::Init_AddAttribute(new AttributeLinkedSet("nwinterface_list", array("linked_class"=>"NetworkInterface", "ext_key_to_me"=>"device_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  1066. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'nwinterface_list'));
  1067. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  1068. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  1069. MetaModel::Init_SetZListItems('list', array('finalclass', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  1070. }
  1071. public static function GetRelationQueries($sRelCode)
  1072. {
  1073. switch ($sRelCode)
  1074. {
  1075. case "impacts":
  1076. $aRels = array(
  1077. "applications" => array("sQuery"=>"SELECT SoftwareInstance AS app WHERE app.device_id = :this->id", "bPropagate"=>true, "iDistance"=>5),
  1078. "connected_devices" => array("sQuery"=>"SELECT Device AS dev JOIN NetworkInterface AS if1 ON if1.device_id = dev.id JOIN NetworkInterface AS if2 ON if2.connected_if = if1.id WHERE if2.device_id = :this->id AND if2.link_type='downlink'", "bPropagate"=>true, "iDistance"=>5),
  1079. );
  1080. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  1081. break;
  1082. case "depends on":
  1083. $aRels = array(
  1084. "connected_devices" => array("sQuery"=>"SELECT Device AS dev JOIN NetworkInterface AS if1 ON if1.device_id = dev.id JOIN NetworkInterface AS if2 ON if2.connected_if = if1.id WHERE if2.device_id = :this->id AND if2.link_type='uplink'", "bPropagate"=>true, "iDistance"=>5),
  1085. );
  1086. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  1087. break;
  1088. default:
  1089. return parent::GetRelationQueries($sRelCode);
  1090. }
  1091. }
  1092. }
  1093. class PC extends Device
  1094. {
  1095. public static function Init()
  1096. {
  1097. $aParams = array
  1098. (
  1099. "category" => "bizmodel,searchable,configmgmt",
  1100. "key_type" => "autoincrement",
  1101. "name_attcode" => "name",
  1102. "state_attcode" => "",
  1103. "reconc_keys" => array("name","org_id","owner_name"),
  1104. "db_table" => "pc",
  1105. "db_key_field" => "id",
  1106. "db_finalclass_field" => "",
  1107. "icon" => "../modules/itop-config-mgmt-1.0.0/images/laptop.png",
  1108. );
  1109. MetaModel::Init_Params($aParams);
  1110. MetaModel::Init_InheritAttributes();
  1111. MetaModel::Init_AddAttribute(new AttributeString("cpu", array("allowed_values"=>null, "sql"=>"cpu", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1112. MetaModel::Init_AddAttribute(new AttributeString("ram", array("allowed_values"=>null, "sql"=>"ram", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1113. MetaModel::Init_AddAttribute(new AttributeString("hdd", array("allowed_values"=>null, "sql"=>"hdd", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1114. MetaModel::Init_AddAttribute(new AttributeString("os_family", array("allowed_values"=>null, "sql"=>"os_family", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1115. MetaModel::Init_AddAttribute(new AttributeString("os_version", array("allowed_values"=>null, "sql"=>"os_version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1116. MetaModel::Init_AddAttribute(new AttributeLinkedSet("application_list", array("linked_class"=>"SoftwareInstance", "ext_key_to_me"=>"device_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  1117. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("patch_list", array("linked_class"=>"lnkPatchToCI", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"patch_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  1118. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'cpu', 'ram', 'hdd', 'os_family', 'os_version', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'nwinterface_list', 'application_list', 'patch_list'));
  1119. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
  1120. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'os_family', 'os_version'));
  1121. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'os_family'));
  1122. }
  1123. }
  1124. abstract class MobileCI extends Device
  1125. {
  1126. public static function Init()
  1127. {
  1128. $aParams = array
  1129. (
  1130. "category" => "bizmodel,searchable,configmgmt",
  1131. "key_type" => "autoincrement",
  1132. "name_attcode" => "name",
  1133. "state_attcode" => "",
  1134. "reconc_keys" => array("name","org_id","owner_name"),
  1135. "db_table" => "mobileci",
  1136. "db_key_field" => "id",
  1137. "db_finalclass_field" => "",
  1138. "icon" => "../modules/itop-config-mgmt-1.0.0/images/mobile-phone.png",
  1139. );
  1140. MetaModel::Init_Params($aParams);
  1141. MetaModel::Init_InheritAttributes();
  1142. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'nwinterface_list'));
  1143. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  1144. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  1145. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model'));
  1146. }
  1147. }
  1148. class MobilePhone extends MobileCI
  1149. {
  1150. public static function Init()
  1151. {
  1152. $aParams = array
  1153. (
  1154. "category" => "bizmodel,searchable,configmgmt",
  1155. "key_type" => "autoincrement",
  1156. "name_attcode" => "name",
  1157. "state_attcode" => "",
  1158. "reconc_keys" => array("name","org_id","owner_name"),
  1159. "db_table" => "mobilephone",
  1160. "db_key_field" => "id",
  1161. "db_finalclass_field" => "",
  1162. "icon" => "../modules/itop-config-mgmt-1.0.0/images/mobile-phone.png",
  1163. );
  1164. MetaModel::Init_Params($aParams);
  1165. MetaModel::Init_InheritAttributes();
  1166. MetaModel::Init_AddAttribute(new AttributeString("number", array("allowed_values"=>null, "sql"=>"number", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1167. MetaModel::Init_AddAttribute(new AttributeString("imei", array("allowed_values"=>null, "sql"=>"IMIE", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1168. MetaModel::Init_AddAttribute(new AttributeString("hw_pin", array("allowed_values"=>null, "sql"=>"hw_pin", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1169. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'number', 'imei', 'hw_pin', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'nwinterface_list'));
  1170. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'number', 'imei'));
  1171. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'number', 'imei'));
  1172. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model'));
  1173. }
  1174. }
  1175. abstract class InfrastructureCI extends Device
  1176. {
  1177. public static function Init()
  1178. {
  1179. $aParams = array
  1180. (
  1181. "category" => "bizmodel,searchable,configmgmt",
  1182. "key_type" => "autoincrement",
  1183. "name_attcode" => "name",
  1184. "state_attcode" => "",
  1185. "reconc_keys" => array("name","org_id","owner_name","location_id","location_name"),
  1186. "db_table" => "infrastructureci",
  1187. "db_key_field" => "id",
  1188. "db_finalclass_field" => "",
  1189. "icon" => "../modules/itop-config-mgmt-1.0.0/images/server.png",
  1190. );
  1191. MetaModel::Init_Params($aParams);
  1192. MetaModel::Init_InheritAttributes();
  1193. MetaModel::Init_AddAttribute(new AttributeText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1194. MetaModel::Init_AddAttribute(new AttributeExternalKey("location_id", array("targetclass"=>"Location", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Location AS l WHERE l.org_id = :this->org_id'), "sql"=>"location_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array("org_id"))));
  1195. MetaModel::Init_AddAttribute(new AttributeExternalField("location_name", array("allowed_values"=>null, "extkey_attcode"=>"location_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  1196. MetaModel::Init_AddAttribute(new AttributeText("location_details", array("allowed_values"=>null, "sql"=>"location_details", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1197. MetaModel::Init_AddAttribute(new AttributeIPAddress("management_ip", array("allowed_values"=>null, "sql"=>"management_ip", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1198. MetaModel::Init_AddAttribute(new AttributeString("default_gateway", array("allowed_values"=>null, "sql"=>"default_gateway", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1199. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'nwinterface_list'));
  1200. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway'));
  1201. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref','location_id','management_ip', 'default_gateway'));
  1202. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'location_id'));
  1203. }
  1204. }
  1205. class NetworkDevice extends InfrastructureCI
  1206. {
  1207. public static function Init()
  1208. {
  1209. $aParams = array
  1210. (
  1211. "category" => "bizmodel,searchable,configmgmt",
  1212. "key_type" => "autoincrement",
  1213. "name_attcode" => "name",
  1214. "state_attcode" => "",
  1215. "reconc_keys" => array("name","org_id","owner_name","location_id","location_name"),
  1216. "db_table" => "networkdevice",
  1217. "db_key_field" => "id",
  1218. "db_finalclass_field" => "",
  1219. "display_template" => "",
  1220. "icon" => "../modules/itop-config-mgmt-1.0.0/images/switch.png",
  1221. );
  1222. MetaModel::Init_Params($aParams);
  1223. MetaModel::Init_InheritAttributes();
  1224. MetaModel::Init_AddAttribute(new AttributeEnum("type", array("allowed_values"=>new ValueSetEnum('wanaccelerator,firewall,hub,loadbalancer,router,switch'), "sql"=>"type", "default_value"=>"switch", "is_null_allowed"=>true, "depends_on"=>array())));
  1225. MetaModel::Init_AddAttribute(new AttributeString("ios_version", array("allowed_values"=>null, "sql"=>"ios_version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1226. MetaModel::Init_AddAttribute(new AttributeString("ram", array("allowed_values"=>null, "sql"=>"ram", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1227. MetaModel::Init_AddAttribute(new AttributeString("snmp_read", array("allowed_values"=>null, "sql"=>"snmp_read", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1228. MetaModel::Init_AddAttribute(new AttributeString("snmp_write", array("allowed_values"=>null, "sql"=>"snmp_write", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1229. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'ios_version', 'ram', 'snmp_read', 'snmp_write', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'nwinterface_list'));
  1230. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'ios_version', 'ram'));
  1231. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'location_id','management_ip', 'default_gateway', 'type', 'ios_version'));
  1232. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'location_id', 'type'));
  1233. }
  1234. }
  1235. class Server extends InfrastructureCI
  1236. {
  1237. public static function Init()
  1238. {
  1239. $aParams = array
  1240. (
  1241. "category" => "bizmodel,searchable,configmgmt",
  1242. "key_type" => "autoincrement",
  1243. "name_attcode" => "name",
  1244. "state_attcode" => "",
  1245. "reconc_keys" => array("name","org_id","owner_name","location_id","location_name"),
  1246. "db_table" => "server",
  1247. "db_key_field" => "id",
  1248. "db_finalclass_field" => "",
  1249. "icon" => "../modules/itop-config-mgmt-1.0.0/images/server.png",
  1250. );
  1251. MetaModel::Init_Params($aParams);
  1252. MetaModel::Init_InheritAttributes();
  1253. MetaModel::Init_AddAttribute(new AttributeString("cpu", array("allowed_values"=>null, "sql"=>"cpu", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1254. MetaModel::Init_AddAttribute(new AttributeString("ram", array("allowed_values"=>null, "sql"=>"ram", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1255. MetaModel::Init_AddAttribute(new AttributeString("hdd", array("allowed_values"=>null, "sql"=>"hdd", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1256. MetaModel::Init_AddAttribute(new AttributeString("os_family", array("allowed_values"=>null, "sql"=>"os_family", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1257. MetaModel::Init_AddAttribute(new AttributeString("os_version", array("allowed_values"=>null, "sql"=>"os_version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1258. MetaModel::Init_AddAttribute(new AttributeLinkedSet("application_list", array("linked_class"=>"SoftwareInstance", "ext_key_to_me"=>"device_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  1259. MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("patch_list", array("linked_class"=>"lnkPatchToCI", "ext_key_to_me"=>"ci_id", "ext_key_to_remote"=>"patch_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
  1260. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'cpu', 'ram', 'hdd', 'os_family', 'os_version', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'nwinterface_list', 'application_list', 'patch_list'));
  1261. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
  1262. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'location_id', 'management_ip', 'default_gateway', 'os_family', 'os_version'));
  1263. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'location_id', 'os_family'));
  1264. }
  1265. }
  1266. class Printer extends InfrastructureCI
  1267. {
  1268. public static function Init()
  1269. {
  1270. $aParams = array
  1271. (
  1272. "category" => "bizmodel,searchable,configmgmt",
  1273. "key_type" => "autoincrement",
  1274. "name_attcode" => "name",
  1275. "state_attcode" => "",
  1276. "reconc_keys" => array("name","org_id","owner_name","location_id","location_name"),
  1277. "db_table" => "printer",
  1278. "db_key_field" => "id",
  1279. "db_finalclass_field" => "",
  1280. "icon" => "../modules/itop-config-mgmt-1.0.0/images/printer.png",
  1281. );
  1282. MetaModel::Init_Params($aParams);
  1283. MetaModel::Init_InheritAttributes();
  1284. MetaModel::Init_AddAttribute(new AttributeEnum("type", array("allowed_values"=>new ValueSetEnum('mopier,printer'), "sql"=>"type", "default_value"=>"printer", "is_null_allowed"=>true, "depends_on"=>array())));
  1285. MetaModel::Init_AddAttribute(new AttributeEnum("technology", array("allowed_values"=>new ValueSetEnum('laser,inkjet,tracer'), "sql"=>"technology", "default_value"=>"laser", "is_null_allowed"=>true, "depends_on"=>array())));
  1286. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'technology', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'nwinterface_list'));
  1287. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'technology'));
  1288. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'technology'));
  1289. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'location_id', 'management_ip', 'default_gateway', 'type', 'technology'));
  1290. }
  1291. }
  1292. class lnkCIToDoc extends cmdbAbstractObject
  1293. {
  1294. public static function Init()
  1295. {
  1296. $aParams = array
  1297. (
  1298. "category" => "bizmodel,configmgmt",
  1299. "key_type" => "autoincrement",
  1300. "name_attcode" => "ci_id",
  1301. "state_attcode" => "",
  1302. "reconc_keys" => array("ci_id","document_id"),
  1303. "db_table" => "lnkcitodoc",
  1304. "db_key_field" => "id",
  1305. "db_finalclass_field" => "",
  1306. "display_template" => "",
  1307. );
  1308. MetaModel::Init_Params($aParams);
  1309. MetaModel::Init_InheritAttributes();
  1310. MetaModel::Init_AddAttribute(new AttributeExternalKey("ci_id", array("targetclass"=>"FunctionalCI", "jointype"=>null, "allowed_values"=>null, "sql"=>"ci_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  1311. MetaModel::Init_AddAttribute(new AttributeExternalField("ci_name", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  1312. MetaModel::Init_AddAttribute(new AttributeExternalField("ci_status", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"status", "is_null_allowed"=>true, "depends_on"=>array())));
  1313. MetaModel::Init_AddAttribute(new AttributeExternalKey("document_id", array("targetclass"=>"Document", "jointype"=>null, "allowed_values"=>null, "sql"=>"document_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  1314. MetaModel::Init_AddAttribute(new AttributeExternalField("document_name", array("allowed_values"=>null, "extkey_attcode"=>"document_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  1315. MetaModel::Init_AddAttribute(new AttributeExternalField("document_type", array("allowed_values"=>null, "extkey_attcode"=>"document_id", "target_attcode"=>"type", "is_null_allowed"=>true, "depends_on"=>array())));
  1316. MetaModel::Init_AddAttribute(new AttributeExternalField("document_status", array("allowed_values"=>null, "extkey_attcode"=>"document_id", "target_attcode"=>"status", "is_null_allowed"=>true, "depends_on"=>array())));
  1317. MetaModel::Init_SetZListItems('details', array('ci_id', 'ci_status', 'document_id', 'document_type', 'document_status'));
  1318. MetaModel::Init_SetZListItems('advanced_search', array('ci_id', 'document_id'));
  1319. MetaModel::Init_SetZListItems('standard_search', array('ci_id', 'document_id'));
  1320. MetaModel::Init_SetZListItems('list', array('ci_id', 'ci_status', 'document_id', 'document_type', 'document_status'));
  1321. }
  1322. }
  1323. class lnkCIToContact extends cmdbAbstractObject
  1324. {
  1325. public static function Init()
  1326. {
  1327. $aParams = array
  1328. (
  1329. "category" => "bizmodel,configmgmt",
  1330. "key_type" => "autoincrement",
  1331. "name_attcode" => "ci_id",
  1332. "state_attcode" => "",
  1333. "reconc_keys" => array("ci_id","contact_id"),
  1334. "db_table" => "lnkcitocontact",
  1335. "db_key_field" => "id",
  1336. "db_finalclass_field" => "",
  1337. "icon" => "../modules/itop-config-mgmt-1.0.0/images/contact.png",
  1338. );
  1339. MetaModel::Init_Params($aParams);
  1340. MetaModel::Init_InheritAttributes();
  1341. MetaModel::Init_AddAttribute(new AttributeExternalKey("ci_id", array("targetclass"=>"FunctionalCI", "jointype"=>null, "allowed_values"=>null, "sql"=>"ci_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  1342. MetaModel::Init_AddAttribute(new AttributeExternalField("ci_name", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  1343. MetaModel::Init_AddAttribute(new AttributeExternalField("ci_status", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"status", "is_null_allowed"=>true, "depends_on"=>array())));
  1344. MetaModel::Init_AddAttribute(new AttributeExternalKey("contact_id", array("targetclass"=>"Contact", "jointype"=>null, "allowed_values"=>null, "sql"=>"contact_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  1345. MetaModel::Init_AddAttribute(new AttributeExternalField("contact_name", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  1346. MetaModel::Init_AddAttribute(new AttributeExternalField("contact_email", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array())));
  1347. MetaModel::Init_AddAttribute(new AttributeString("role", array("allowed_values"=>null, "sql"=>"role", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1348. MetaModel::Init_SetZListItems('details', array('ci_id', 'ci_status', 'contact_id', 'contact_email', 'role'));
  1349. MetaModel::Init_SetZListItems('advanced_search', array('ci_id', 'contact_id', 'role'));
  1350. MetaModel::Init_SetZListItems('standard_search', array('ci_id', 'contact_id', 'role'));
  1351. MetaModel::Init_SetZListItems('list', array('ci_id', 'ci_status', 'contact_id', 'contact_email', 'role'));
  1352. }
  1353. }
  1354. class lnkSolutionToCI extends cmdbAbstractObject
  1355. {
  1356. public static function Init()
  1357. {
  1358. $aParams = array
  1359. (
  1360. "category" => "bizmodel,configmgmt",
  1361. "key_type" => "autoincrement",
  1362. "name_attcode" => "solution_id",
  1363. "state_attcode" => "",
  1364. "reconc_keys" => array("solution_id","ci_id"),
  1365. "db_table" => "lnksolutiontoci",
  1366. "db_key_field" => "id",
  1367. "db_finalclass_field" => "",
  1368. "display_template" => "",
  1369. );
  1370. MetaModel::Init_Params($aParams);
  1371. MetaModel::Init_InheritAttributes();
  1372. MetaModel::Init_AddAttribute(new AttributeExternalKey("solution_id", array("targetclass"=>"ApplicationSolution", "jointype"=>null, "allowed_values"=>null, "sql"=>"solution_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  1373. MetaModel::Init_AddAttribute(new AttributeExternalField("solution_name", array("allowed_values"=>null, "extkey_attcode"=>"solution_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  1374. MetaModel::Init_AddAttribute(new AttributeExternalKey("ci_id", array("targetclass"=>"FunctionalCI", "jointype"=>null, "allowed_values"=>null, "sql"=>"ci_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  1375. MetaModel::Init_AddAttribute(new AttributeExternalField("ci_name", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  1376. MetaModel::Init_AddAttribute(new AttributeExternalField("ci_status", array("allowed_values"=>null, "extkey_attcode"=>"ci_id", "target_attcode"=>"status", "is_null_allowed"=>true, "depends_on"=>array())));
  1377. MetaModel::Init_AddAttribute(new AttributeString("utility", array("allowed_values"=>null, "sql"=>"utility", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1378. MetaModel::Init_SetZListItems('details', array('solution_id', 'ci_id', 'ci_status', 'utility'));
  1379. MetaModel::Init_SetZListItems('advanced_search', array('solution_id', 'ci_id', 'utility'));
  1380. MetaModel::Init_SetZListItems('standard_search', array('solution_id', 'ci_id', 'utility'));
  1381. MetaModel::Init_SetZListItems('list', array('solution_id', 'ci_id', 'ci_status', 'utility'));
  1382. }
  1383. }
  1384. class lnkProcessToSolution extends cmdbAbstractObject
  1385. {
  1386. public static function Init()
  1387. {
  1388. $aParams = array
  1389. (
  1390. "category" => "bizmodel,configmgmt",
  1391. "key_type" => "autoincrement",
  1392. "name_attcode" => "solution_id",
  1393. "state_attcode" => "",
  1394. "reconc_keys" => array("solution_id","process_id"),
  1395. "db_table" => "lnkprocesstosolution",
  1396. "db_key_field" => "id",
  1397. "db_finalclass_field" => "",
  1398. "display_template" => "",
  1399. );
  1400. MetaModel::Init_Params($aParams);
  1401. MetaModel::Init_InheritAttributes();
  1402. MetaModel::Init_AddAttribute(new AttributeExternalKey("solution_id", array("targetclass"=>"ApplicationSolution", "jointype"=>null, "allowed_values"=>null, "sql"=>"solution_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  1403. MetaModel::Init_AddAttribute(new AttributeExternalField("solution_name", array("allowed_values"=>null, "extkey_attcode"=>"solution_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  1404. MetaModel::Init_AddAttribute(new AttributeExternalKey("process_id", array("targetclass"=>"BusinessProcess", "jointype"=>null, "allowed_values"=>null, "sql"=>"process_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  1405. MetaModel::Init_AddAttribute(new AttributeExternalField("process_name", array("allowed_values"=>null, "extkey_attcode"=>"process_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
  1406. MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"reason", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1407. MetaModel::Init_SetZListItems('details', array('solution_id', 'process_id', 'reason'));
  1408. MetaModel::Init_SetZListItems('advanced_search', array('solution_id', 'process_id', 'reason'));
  1409. MetaModel::Init_SetZListItems('standard_search', array('solution_id', 'process_id', 'reason'));
  1410. MetaModel::Init_SetZListItems('list', array('solution_id', 'process_id', 'reason'));
  1411. }
  1412. }
  1413. //////////////////////////////////////////////////////////////////////////////
  1414. // Menu:
  1415. // +----------------------------------------+
  1416. // | My Module |
  1417. // +----------------------------------------+
  1418. // + All items
  1419. // + ...
  1420. // + ...
  1421. ////////////////////////////////////////////////////////////////////////////////////
  1422. // Create the top-level group. fRank = 1, means it will be inserted after the group '0', which is usually 'Welcome'
  1423. // Note (RQ) :
  1424. // After 1.0.1, the welcome page and menus have been removed from the application
  1425. // and put into a separate module "itop-welcome-itil"
  1426. // Until we develop a migration utility, and as would like to preserve the
  1427. // capability to upgrade iTop without any manual operation, we have decided to
  1428. // implement this dirty workaround that makes it...
  1429. require_once(APPROOT.'modules/itop-welcome-itil/model.itop-welcome-itil.php');
  1430. $oAdminMenu = new MenuGroup('DataAdministration', 70 /* fRank */, 'Organization', UR_ACTION_MODIFY, UR_ALLOWED_YES|UR_ALLOWED_DEPENDS);
  1431. $iAdminGroup = $oAdminMenu->GetIndex();
  1432. new WebPageMenuNode('Audit', '../pages/audit.php', $iAdminGroup, 33 /* fRank */);
  1433. $oTypologyNode = new TemplateMenuNode('Catalogs', '', $iAdminGroup, 50 /* fRank */);
  1434. $iTopology = $oTypologyNode->GetIndex();
  1435. new OQLMenuNode('Organization', 'SELECT Organization', $iTopology, 10 /* fRank */, true /* bSearch */);
  1436. new OQLMenuNode('Application', 'SELECT Application', $iTopology, 20 /* fRank */);
  1437. new OQLMenuNode('DBServer', 'SELECT DBServer', $iTopology, 40 /* fRank */);
  1438. $oConfigManagementGroup = new MenuGroup('ConfigManagement', 20 /* fRank */);
  1439. // Create an entry, based on a custom template, for the Configuration management overview, under the top-level group
  1440. new TemplateMenuNode('ConfigManagementOverview', '../modules/itop-config-mgmt-1.0.0/overview.html', $oConfigManagementGroup->GetIndex(), 0 /* fRank */);
  1441. $oContactNode = new TemplateMenuNode('Contact', '../modules/itop-config-mgmt-1.0.0/contacts_menu.html', $oConfigManagementGroup->GetIndex(), 1 /* fRank */);
  1442. new NewObjectMenuNode('NewContact', 'Contact', $oContactNode->GetIndex(), 1 /* fRank */);
  1443. new SearchMenuNode('SearchContacts', 'Contact', $oContactNode->GetIndex(), 2 /* fRank */);
  1444. new OQLMenuNode('Document', 'SELECT Document', $oConfigManagementGroup->GetIndex(), 2 /* fRank */, true /* bSearch */);
  1445. new OQLMenuNode('Location', 'SELECT Location', $oConfigManagementGroup->GetIndex(), 3 /* fRank */, true /* bSearch */);
  1446. new OQLMenuNode('Group', 'SELECT Group', $oConfigManagementGroup->GetIndex(), 4 /* fRank */, true /* bSearch */);
  1447. $oCINode = new TemplateMenuNode('ConfigManagementCI', '../modules/itop-config-mgmt-1.0.0/cis_menu.html', $oConfigManagementGroup->GetIndex(), 5 /* fRank */);
  1448. new NewObjectMenuNode('NewCI', 'FunctionalCI', $oCINode->GetIndex(), 0 /* fRank */);
  1449. new SearchMenuNode('SearchCIs', 'FunctionalCI', $oCINode->GetIndex(), 1 /* fRank */);
  1450. $oShortcutsNode = new TemplateMenuNode('ConfigManagement:Shortcuts', '', $oConfigManagementGroup->GetIndex(), 6 /* fRank */);
  1451. new OQLMenuNode('Server', 'SELECT Server', $oShortcutsNode->GetIndex(), 1 /* fRank */);
  1452. new OQLMenuNode('NetworkDevice', 'SELECT NetworkDevice', $oShortcutsNode->GetIndex(), 2 /* fRank */);
  1453. new OQLMenuNode('Printer', 'SELECT Printer', $oShortcutsNode->GetIndex(), 3 /* fRank */);
  1454. new OQLMenuNode('PC', 'SELECT PC', $oShortcutsNode->GetIndex(), 4 /* fRank */);
  1455. new OQLMenuNode('BusinessProcess', 'SELECT BusinessProcess', $oShortcutsNode->GetIndex(), 5 /* fRank */);
  1456. new OQLMenuNode('ApplicationSolution', 'SELECT ApplicationSolution', $oShortcutsNode->GetIndex(), 6 /* fRank */);
  1457. ?>