model.itop-config-mgmt.php 89 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443
  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. require_once('../application/cmdbabstract.class.inc.php');
  25. require_once('../application/template.class.inc.php');
  26. MetaModel::RegisterRelation("impacts", array("description"=>"Objects impacted by", "verb_down"=>"impacts", "verb_up"=>"is impacted by"));
  27. class Organization extends cmdbAbstractObject
  28. {
  29. public static function Init()
  30. {
  31. $aParams = array
  32. (
  33. "category" => "bizmodel,searchable,structure",
  34. "key_type" => "autoincrement",
  35. "name_attcode" => "name",
  36. "state_attcode" => "",
  37. "reconc_keys" => array("name"),
  38. "db_table" => "organization",
  39. "db_key_field" => "id",
  40. "db_finalclass_field" => "",
  41. "display_template" => "",
  42. );
  43. MetaModel::Init_Params($aParams);
  44. MetaModel::Init_InheritAttributes();
  45. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  46. MetaModel::Init_AddAttribute(new AttributeString("code", array("allowed_values"=>null, "sql"=>"code", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  47. 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())));
  48. 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())));
  49. 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())));
  50. MetaModel::Init_SetZListItems('details', array('name', 'code', 'status', 'parent_id'));
  51. MetaModel::Init_SetZListItems('advanced_search', array('name', 'code', 'status'));
  52. MetaModel::Init_SetZListItems('standard_search', array('name', 'code', 'status'));
  53. MetaModel::Init_SetZListItems('list', array('status', 'parent_id'));
  54. }
  55. }
  56. class Location extends cmdbAbstractObject
  57. {
  58. public static function Init()
  59. {
  60. $aParams = array
  61. (
  62. "category" => "bizmodel,searchable,structure",
  63. "key_type" => "autoincrement",
  64. "name_attcode" => "name",
  65. "state_attcode" => "",
  66. "reconc_keys" => array("name"),
  67. "db_table" => "location",
  68. "db_key_field" => "id",
  69. "db_finalclass_field" => "",
  70. "icon" => "../business/templates/location.png",
  71. );
  72. MetaModel::Init_Params($aParams);
  73. MetaModel::Init_InheritAttributes();
  74. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  75. 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())));
  76. 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())));
  77. 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())));
  78. MetaModel::Init_AddAttribute(new AttributeText("address", array("allowed_values"=>null, "sql"=>"address", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  79. MetaModel::Init_AddAttribute(new AttributeString("postal_code", array("allowed_values"=>null, "sql"=>"postal_code", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  80. MetaModel::Init_AddAttribute(new AttributeString("city", array("allowed_values"=>null, "sql"=>"city", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  81. MetaModel::Init_AddAttribute(new AttributeString("country", array("allowed_values"=>null, "sql"=>"country", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  82. MetaModel::Init_AddAttribute(new AttributeExternalKey("parent_id", array("targetclass"=>"Location", "jointype"=>null, "allowed_values"=>null, "sql"=>"parent_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  83. 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())));
  84. 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())));
  85. 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())));
  86. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'address', 'postal_code', 'city', 'country', 'parent_id', 'contact_list', 'infra_list'));
  87. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'country'));
  88. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'city', 'country'));
  89. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'city', 'country'));
  90. }
  91. }
  92. abstract class Contact extends cmdbAbstractObject
  93. {
  94. public static function Init()
  95. {
  96. $aParams = array
  97. (
  98. "category" => "bizmodel,searchable,structure",
  99. "key_type" => "autoincrement",
  100. "name_attcode" => "name",
  101. "state_attcode" => "",
  102. "reconc_keys" => array("name"),
  103. "db_table" => "contact",
  104. "db_key_field" => "id",
  105. "db_finalclass_field" => "",
  106. "icon" => "../business/templates/team.png",
  107. );
  108. MetaModel::Init_Params($aParams);
  109. MetaModel::Init_InheritAttributes();
  110. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  111. 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())));
  112. 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())));
  113. 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())));
  114. MetaModel::Init_AddAttribute(new AttributeEmailAddress("email", array("allowed_values"=>null, "sql"=>"email", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  115. MetaModel::Init_AddAttribute(new AttributeString("phone", array("allowed_values"=>null, "sql"=>"phone", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  116. 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'))));
  117. 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())));
  118. 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())));
  119. 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())));
  120. 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())));
  121. 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())));
  122. 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())));
  123. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'contract_list', 'service_list', 'ticket_list', 'ci_list', 'team_list'));
  124. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id'));
  125. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id'));
  126. MetaModel::Init_SetZListItems('list', array('finalclass', 'status', 'org_id', 'email', 'phone', 'location_id'));
  127. }
  128. }
  129. class Person extends Contact
  130. {
  131. public static function Init()
  132. {
  133. $aParams = array
  134. (
  135. "category" => "bizmodel,searchable,structure",
  136. "key_type" => "autoincrement",
  137. "name_attcode" => "name",
  138. "state_attcode" => "",
  139. "reconc_keys" => array("name"),
  140. "db_table" => "person",
  141. "db_key_field" => "id",
  142. "db_finalclass_field" => "",
  143. "icon" => "../business/templates/person.png",
  144. );
  145. MetaModel::Init_Params($aParams);
  146. MetaModel::Init_InheritAttributes();
  147. MetaModel::Init_AddAttribute(new AttributeString("first_name", array("allowed_values"=>null, "sql"=>"first_name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  148. MetaModel::Init_AddAttribute(new AttributeString("employee_id", array("allowed_values"=>null, "sql"=>"employee_id", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  149. MetaModel::Init_SetZListItems('details', array('first_name', 'name', 'org_id', 'status', 'location_id', 'email', 'phone', 'employee_id', 'contract_list', 'service_list', 'ticket_list', 'ci_list', 'team_list'));
  150. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id'));
  151. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id'));
  152. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'email', 'phone', 'location_id'));
  153. }
  154. public function GetName()
  155. {
  156. return $this->Get('first_name').' '.$this->Get('name');
  157. }
  158. }
  159. class Team extends Contact
  160. {
  161. public static function Init()
  162. {
  163. $aParams = array
  164. (
  165. "category" => "bizmodel,searchable,structure",
  166. "key_type" => "autoincrement",
  167. "name_attcode" => "name",
  168. "state_attcode" => "",
  169. "reconc_keys" => array("name"),
  170. "db_table" => "team",
  171. "db_key_field" => "id",
  172. "db_finalclass_field" => "",
  173. "icon" => "../business/templates/team.png",
  174. );
  175. MetaModel::Init_Params($aParams);
  176. MetaModel::Init_InheritAttributes();
  177. 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())));
  178. 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'));
  179. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id'));
  180. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id'));
  181. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'email', 'phone', 'location_id'));
  182. }
  183. }
  184. class lnkTeamToContact extends cmdbAbstractObject
  185. {
  186. public static function Init()
  187. {
  188. $aParams = array
  189. (
  190. "category" => "bizmodel,searchable,structure",
  191. "key_type" => "autoincrement",
  192. "name_attcode" => "team_id",
  193. "state_attcode" => "",
  194. "reconc_keys" => array("name"),
  195. "db_table" => "lnkteamtocontact",
  196. "db_key_field" => "id",
  197. "db_finalclass_field" => "",
  198. "display_template" => "",
  199. );
  200. MetaModel::Init_Params($aParams);
  201. MetaModel::Init_InheritAttributes();
  202. 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())));
  203. 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())));
  204. 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())));
  205. 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())));
  206. 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())));
  207. 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())));
  208. 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())));
  209. 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())));
  210. MetaModel::Init_AddAttribute(new AttributeString("role", array("allowed_values"=>null, "sql"=>"role", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  211. MetaModel::Init_SetZListItems('details', array('team_id', 'contact_id', 'role'));
  212. MetaModel::Init_SetZListItems('advanced_search', array('team_id', 'contact_id', 'role'));
  213. MetaModel::Init_SetZListItems('standard_search', array('team_id', 'contact_id', 'role'));
  214. MetaModel::Init_SetZListItems('list', array('team_id', 'contact_id', 'contact_location_id', 'contact_email', 'contact_phone', 'role'));
  215. }
  216. }
  217. abstract class Document extends cmdbAbstractObject
  218. {
  219. public static function Init()
  220. {
  221. $aParams = array
  222. (
  223. "category" => "bizmodel,searchable,documentation",
  224. "key_type" => "autoincrement",
  225. "name_attcode" => "name",
  226. "state_attcode" => "",
  227. "reconc_keys" => array("name"),
  228. "db_table" => "document",
  229. "db_key_field" => "id",
  230. "db_finalclass_field" => "",
  231. "icon" => "../business/templates/document.png",
  232. );
  233. MetaModel::Init_Params($aParams);
  234. MetaModel::Init_InheritAttributes();
  235. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  236. MetaModel::Init_AddAttribute(new AttributeString("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  237. 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())));
  238. MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values"=>new ValueSetEnum('draft,published,obsolete'), "sql"=>"status", "default_value"=>"draft", "is_null_allowed"=>true, "depends_on"=>array())));
  239. 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())));
  240. 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())));
  241. 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())));
  242. 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())));
  243. MetaModel::Init_SetZListItems('details', array('name', 'description', 'type', 'status', 'contract_list', 'service_list', 'ticket_list', 'ci_list'));
  244. MetaModel::Init_SetZListItems('advanced_search', array('name', 'description', 'type', 'status'));
  245. MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'type', 'status'));
  246. MetaModel::Init_SetZListItems('list', array('type', 'status'));
  247. }
  248. }
  249. class ExternalDoc extends Document
  250. {
  251. public static function Init()
  252. {
  253. $aParams = array
  254. (
  255. "category" => "bizmodel,searchable,documentation",
  256. "key_type" => "autoincrement",
  257. "name_attcode" => "name",
  258. "state_attcode" => "",
  259. "reconc_keys" => array("name"),
  260. "db_table" => "externaldoc",
  261. "db_key_field" => "id",
  262. "db_finalclass_field" => "",
  263. "icon" => "../business/templates/document.png",
  264. );
  265. MetaModel::Init_Params($aParams);
  266. MetaModel::Init_InheritAttributes();
  267. MetaModel::Init_AddAttribute(new AttributeURL("url", array("target"=>"_blank", "allowed_values"=>null, "sql"=>"url", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  268. MetaModel::Init_SetZListItems('details', array('name', 'description', 'type', 'status', 'contract_list', 'service_list', 'ticket_list', 'ci_list', 'url'));
  269. MetaModel::Init_SetZListItems('advanced_search', array('name', 'description', 'type', 'status', 'url'));
  270. MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'type', 'status', 'url'));
  271. MetaModel::Init_SetZListItems('list', array('type', 'status', 'url'));
  272. }
  273. }
  274. class Note extends Document
  275. {
  276. public static function Init()
  277. {
  278. $aParams = array
  279. (
  280. "category" => "bizmodel,searchable,documentation",
  281. "key_type" => "autoincrement",
  282. "name_attcode" => "name",
  283. "state_attcode" => "",
  284. "reconc_keys" => array("name"),
  285. "db_table" => "note",
  286. "db_key_field" => "id",
  287. "db_finalclass_field" => "",
  288. "icon" => "../business/templates/document.png",
  289. );
  290. MetaModel::Init_Params($aParams);
  291. MetaModel::Init_InheritAttributes();
  292. MetaModel::Init_AddAttribute(new AttributeWikiText("note", array("allowed_values"=>null, "sql"=>"note", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  293. MetaModel::Init_SetZListItems('details', array('name', 'description', 'type', 'status', 'contract_list', 'service_list', 'ticket_list', 'ci_list', 'note'));
  294. MetaModel::Init_SetZListItems('advanced_search', array('name', 'description', 'type', 'status', 'note'));
  295. MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'type', 'status', 'note'));
  296. MetaModel::Init_SetZListItems('list', array('type', 'status', 'note'));
  297. }
  298. }
  299. class FileDoc extends Document
  300. {
  301. public static function Init()
  302. {
  303. $aParams = array
  304. (
  305. "category" => "bizmodel,searchable,documentation",
  306. "key_type" => "autoincrement",
  307. "name_attcode" => "name",
  308. "state_attcode" => "",
  309. "reconc_keys" => array("name"),
  310. "db_table" => "filedoc",
  311. "db_key_field" => "id",
  312. "db_finalclass_field" => "",
  313. "icon" => "../business/templates/document.png",
  314. );
  315. MetaModel::Init_Params($aParams);
  316. MetaModel::Init_InheritAttributes();
  317. MetaModel::Init_AddAttribute(new AttributeBlob("contents", array("depends_on"=>array())));
  318. MetaModel::Init_SetZListItems('details', array('name', 'description', 'type', 'status', 'contract_list', 'service_list', 'ticket_list', 'ci_list', 'contents'));
  319. MetaModel::Init_SetZListItems('advanced_search', array('name', 'description', 'type', 'status'));
  320. MetaModel::Init_SetZListItems('standard_search', array('name', 'description', 'type', 'status'));
  321. MetaModel::Init_SetZListItems('list', array('type', 'status', 'contents'));
  322. }
  323. /**
  324. * Overload the display of the properties to add a tab (the first one)
  325. * with the preview of the document
  326. */
  327. public function DisplayBareProperties(WebPage $oPage, $bEditMode = false)
  328. {
  329. if (!$bEditMode)
  330. {
  331. $oPage->SetCurrentTab(Dict::S('Class:Document:PreviewTab'));
  332. $oPage->add($this->DisplayDocumentInline($oPage, 'contents'));
  333. $oPage->SetCurrentTab(Dict::S('UI:PropertiesTab'));
  334. }
  335. parent::DisplayBareProperties($oPage, $bEditMode);
  336. }
  337. }
  338. class Licence extends cmdbAbstractObject
  339. {
  340. public static function Init()
  341. {
  342. $aParams = array
  343. (
  344. "category" => "bizmodel,searchable,configmgmt",
  345. "key_type" => "autoincrement",
  346. "name_attcode" => "name",
  347. "state_attcode" => "",
  348. "reconc_keys" => array("name"),
  349. "db_table" => "licence",
  350. "db_key_field" => "id",
  351. "db_finalclass_field" => "",
  352. "icon" => "../business/templates/licence.png",
  353. );
  354. MetaModel::Init_Params($aParams);
  355. MetaModel::Init_InheritAttributes();
  356. MetaModel::Init_AddAttribute(new AttributeString("provider", array("allowed_values"=>null, "sql"=>"provider", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  357. MetaModel::Init_AddAttribute(new AttributeString("product", array("allowed_values"=>null, "sql"=>"product", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  358. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  359. MetaModel::Init_AddAttribute(new AttributeDate("start", array("allowed_values"=>null, "sql"=>"start", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
  360. MetaModel::Init_AddAttribute(new AttributeDate("end", array("allowed_values"=>null, "sql"=>"end", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
  361. MetaModel::Init_AddAttribute(new AttributeString("licence_key", array("allowed_values"=>null, "sql"=>"licence_key", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  362. MetaModel::Init_AddAttribute(new AttributeText("scope", array("allowed_values"=>null, "sql"=>"scope", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  363. MetaModel::Init_AddAttribute(new AttributeInteger("usage_limit", array("allowed_values"=>null, "sql"=>"usage_limit", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
  364. 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())));
  365. MetaModel::Init_SetZListItems('details', array('provider', 'product', 'name', 'start', 'end', 'licence_key', 'scope', 'usage_limit', 'usage_list'));
  366. MetaModel::Init_SetZListItems('advanced_search', array('provider', 'product', 'name', 'start', 'end', 'licence_key', 'scope'));
  367. MetaModel::Init_SetZListItems('standard_search', array('provider', 'product', 'name', 'start', 'end', 'licence_key', 'scope'));
  368. MetaModel::Init_SetZListItems('list', array('provider', 'product', 'name', 'start', 'end'));
  369. }
  370. }
  371. class Subnet extends cmdbAbstractObject
  372. {
  373. public static function Init()
  374. {
  375. $aParams = array
  376. (
  377. "category" => "bizmodel,searchable,configmgmt",
  378. "key_type" => "autoincrement",
  379. "name_attcode" => "ip",
  380. "state_attcode" => "",
  381. "reconc_keys" => array("ip", "ip_mask"),
  382. "db_table" => "subnet",
  383. "db_key_field" => "id",
  384. "db_finalclass_field" => "",
  385. "icon" => "../business/templates/subnet.png",
  386. );
  387. MetaModel::Init_Params($aParams);
  388. MetaModel::Init_InheritAttributes();
  389. //MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  390. MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  391. 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())));
  392. 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())));
  393. MetaModel::Init_AddAttribute(new AttributeIPAddress("ip", array("allowed_values"=>null, "sql"=>"ip", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  394. MetaModel::Init_AddAttribute(new AttributeIPAddress("ip_mask", array("allowed_values"=>null, "sql"=>"ip_mask", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  395. MetaModel::Init_SetZListItems('details', array('ip', 'ip_mask', 'org_id', 'description'));
  396. MetaModel::Init_SetZListItems('advanced_search', array('ip', 'ip_mask', 'org_id', 'description'));
  397. MetaModel::Init_SetZListItems('standard_search', array('ip', 'ip_mask', 'org_id', 'description'));
  398. MetaModel::Init_SetZListItems('list', array('ip', 'ip_mask', 'org_id'));
  399. }
  400. public function GetName()
  401. {
  402. return $this->Get('ip').' / '.$this->Get('ip_mask');
  403. }
  404. function DisplayBareRelations(WebPage $oPage, $bEditMode = false)
  405. {
  406. parent::DisplayBareRelations($oPage, $bEditMode);
  407. if (!$bEditMode)
  408. {
  409. $oPage->SetCurrentTab(Dict::S('Class:Subnet/Tab:IPUsage'));
  410. $bit_ip = ip2long($this->Get('ip'));
  411. $bit_mask = ip2long($this->Get('ip_mask'));
  412. $iIPMin = $bit_ip & $bit_mask;
  413. $iIPMax = ($bit_ip | (~$bit_mask)) - 1;
  414. $sIPMin = long2ip($iIPMin);
  415. $sIPMax = long2ip($iIPMax);
  416. $oPage->p(Dict::Format('Class:Subnet/Tab:IPUsage-explain', $sIPMin, $sIPMax));
  417. $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')"));
  418. self::DisplaySet($oPage, $oIfSet);
  419. $iCountUsed = $oIfSet->Count();
  420. $iCountRange = $iIPMax - $iIPMin;
  421. $iFreeCount = $iCountRange - $iCountUsed;
  422. $oPage->SetCurrentTab(Dict::S('Class:Subnet/Tab:FreeIPs'));
  423. $oPage->p(Dict::Format('Class:Subnet/Tab:FreeIPs-count', $iFreeCount));
  424. $oPage->p(Dict::S('Class:Subnet/Tab:FreeIPs-explain'));
  425. $aUsedIPs = $oIfSet->GetColumnAsArray('ip_address', false);
  426. $iAnIP = $iIPMin;
  427. $iFound = 0;
  428. while (($iFound < min($iFreeCount, 10)) && ($iAnIP <= $iIPMax))
  429. {
  430. $sAnIP = long2ip($iAnIP);
  431. if (!in_array($sAnIP, $aUsedIPs))
  432. {
  433. $iFound++;
  434. $oPage->p($sAnIP);
  435. }
  436. else
  437. {
  438. }
  439. $iAnIP++;
  440. }
  441. }
  442. }
  443. }
  444. class Patch extends cmdbAbstractObject
  445. {
  446. public static function Init()
  447. {
  448. $aParams = array
  449. (
  450. "category" => "bizmodel,searchable,configmgmt",
  451. "key_type" => "autoincrement",
  452. "name_attcode" => "name",
  453. "state_attcode" => "",
  454. "reconc_keys" => array("name"),
  455. "db_table" => "patch",
  456. "db_key_field" => "id",
  457. "db_finalclass_field" => "",
  458. "icon" => "../business/templates/patch.png",
  459. );
  460. MetaModel::Init_Params($aParams);
  461. MetaModel::Init_InheritAttributes();
  462. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  463. MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  464. MetaModel::Init_AddAttribute(new AttributeString("target_sw", array("allowed_values"=>null, "sql"=>"target_sw", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  465. MetaModel::Init_AddAttribute(new AttributeString("version", array("allowed_values"=>null, "sql"=>"version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  466. MetaModel::Init_AddAttribute(new AttributeEnum("type", array("allowed_values"=>new ValueSetEnum('application,os,security,servicepack'), "sql"=>"type", "default_value"=>"security", "is_null_allowed"=>true, "depends_on"=>array())));
  467. 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())));
  468. MetaModel::Init_SetZListItems('details', array('name', 'description', 'target_sw', 'version', 'type', 'ci_list'));
  469. MetaModel::Init_SetZListItems('advanced_search', array('name', 'target_sw', 'version', 'type'));
  470. MetaModel::Init_SetZListItems('standard_search', array('name', 'target_sw', 'version', 'type'));
  471. MetaModel::Init_SetZListItems('list', array('target_sw', 'version', 'type'));
  472. }
  473. }
  474. abstract class Software extends cmdbAbstractObject
  475. {
  476. public static function Init()
  477. {
  478. $aParams = array
  479. (
  480. "category" => "bizmodel,searchable,configmgmt",
  481. "key_type" => "autoincrement",
  482. "name_attcode" => "name",
  483. "state_attcode" => "",
  484. "reconc_keys" => array("name"),
  485. "db_table" => "software",
  486. "db_key_field" => "id",
  487. "db_finalclass_field" => "",
  488. "icon" => "../business/templates/software.png",
  489. );
  490. MetaModel::Init_Params($aParams);
  491. MetaModel::Init_InheritAttributes();
  492. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  493. MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  494. MetaModel::Init_SetZListItems('details', array('name', 'description'));
  495. MetaModel::Init_SetZListItems('advanced_search', array('name', 'description'));
  496. MetaModel::Init_SetZListItems('standard_search', array('name', 'description'));
  497. MetaModel::Init_SetZListItems('list', array('description'));
  498. }
  499. }
  500. class Application extends Software
  501. {
  502. public static function Init()
  503. {
  504. $aParams = array
  505. (
  506. "category" => "bizmodel,searchable,configmgmt",
  507. "key_type" => "autoincrement",
  508. "name_attcode" => "name",
  509. "state_attcode" => "",
  510. "reconc_keys" => array("name"),
  511. "db_table" => "software_app",
  512. "db_key_field" => "id",
  513. "db_finalclass_field" => "",
  514. "icon" => "../business/templates/software.png",
  515. );
  516. MetaModel::Init_Params($aParams);
  517. MetaModel::Init_InheritAttributes();
  518. 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())));
  519. MetaModel::Init_SetZListItems('details', array('name', 'description', 'instance_list'));
  520. MetaModel::Init_SetZListItems('advanced_search', array('name', 'description'));
  521. MetaModel::Init_SetZListItems('standard_search', array('name', 'description'));
  522. MetaModel::Init_SetZListItems('list', array('description'));
  523. }
  524. }
  525. class DBServer extends Software
  526. {
  527. public static function Init()
  528. {
  529. $aParams = array
  530. (
  531. "category" => "bizmodel,searchable,configmgmt",
  532. "key_type" => "autoincrement",
  533. "name_attcode" => "name",
  534. "state_attcode" => "",
  535. "reconc_keys" => array("name"),
  536. "db_table" => "software_db",
  537. "db_key_field" => "id",
  538. "db_finalclass_field" => "",
  539. "icon" => "../business/templates/software.png",
  540. );
  541. MetaModel::Init_Params($aParams);
  542. MetaModel::Init_InheritAttributes();
  543. 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())));
  544. MetaModel::Init_SetZListItems('details', array('name', 'description', 'instance_list'));
  545. MetaModel::Init_SetZListItems('advanced_search', array('name', 'description'));
  546. MetaModel::Init_SetZListItems('standard_search', array('name', 'description'));
  547. MetaModel::Init_SetZListItems('list', array('description'));
  548. }
  549. }
  550. class lnkPatchToCI extends cmdbAbstractObject
  551. {
  552. public static function Init()
  553. {
  554. $aParams = array
  555. (
  556. "category" => "bizmodel,configmgmt",
  557. "key_type" => "autoincrement",
  558. "name_attcode" => "patch_id",
  559. "state_attcode" => "",
  560. "reconc_keys" => array("name"),
  561. "db_table" => "lnkpatchtoci",
  562. "db_key_field" => "id",
  563. "db_finalclass_field" => "",
  564. "display_template" => "",
  565. );
  566. MetaModel::Init_Params($aParams);
  567. MetaModel::Init_InheritAttributes();
  568. 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())));
  569. 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())));
  570. 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())));
  571. 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())));
  572. 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())));
  573. MetaModel::Init_SetZListItems('details', array('patch_id', 'ci_id', 'ci_status'));
  574. MetaModel::Init_SetZListItems('advanced_search', array('patch_id', 'ci_id'));
  575. MetaModel::Init_SetZListItems('standard_search', array('patch_id', 'ci_id'));
  576. MetaModel::Init_SetZListItems('list', array('patch_id', 'ci_id', 'ci_status'));
  577. }
  578. }
  579. abstract class FunctionalCI extends cmdbAbstractObject
  580. {
  581. public static function Init()
  582. {
  583. $aParams = array
  584. (
  585. "category" => "bizmodel,searchable,configmgmt",
  586. "key_type" => "autoincrement",
  587. "name_attcode" => "name",
  588. "state_attcode" => "",
  589. "reconc_keys" => array("name"),
  590. "db_table" => "functionalci",
  591. "db_key_field" => "id",
  592. "db_finalclass_field" => "",
  593. "icon" => "../business/templates/server.png",
  594. );
  595. MetaModel::Init_Params($aParams);
  596. MetaModel::Init_InheritAttributes();
  597. MetaModel::Init_AddAttribute(new AttributeString("name", array("allowed_values"=>null, "sql"=>"name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
  598. MetaModel::Init_AddAttribute(new AttributeEnum("status", array("allowed_values"=>new ValueSetEnum('implementation,production,obsolete'), "sql"=>"status", "default_value"=>"implementation", "is_null_allowed"=>true, "depends_on"=>array())));
  599. 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())));
  600. 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())));
  601. 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())));
  602. 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())));
  603. 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())));
  604. 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())));
  605. 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())));
  606. 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())));
  607. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list'));
  608. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance'));
  609. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance'));
  610. MetaModel::Init_SetZListItems('list', array('finalclass', 'status', 'org_id', 'importance'));
  611. }
  612. public static function GetRelationQueries($sRelCode)
  613. {
  614. switch ($sRelCode)
  615. {
  616. case "impacts":
  617. $aRels = array(
  618. "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),
  619. "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),
  620. );
  621. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  622. }
  623. }
  624. }
  625. abstract class SoftwareInstance extends FunctionalCI
  626. {
  627. public static function Init()
  628. {
  629. $aParams = array
  630. (
  631. "category" => "bizmodel,searchable,configmgmt",
  632. "key_type" => "autoincrement",
  633. "name_attcode" => "software_name",
  634. "state_attcode" => "",
  635. "reconc_keys" => array("software_id", "device_id"),
  636. "db_table" => "softwareinstance",
  637. "db_key_field" => "id",
  638. "db_finalclass_field" => "",
  639. "icon" => "../business/templates/application.png",
  640. );
  641. MetaModel::Init_Params($aParams);
  642. MetaModel::Init_InheritAttributes();
  643. MetaModel::Init_AddAttribute(new AttributeExternalKey("device_id", array("targetclass"=>"Device", "jointype"=>null, "allowed_values"=>null, "sql"=>"device_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  644. 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())));
  645. MetaModel::Init_AddAttribute(new AttributeExternalKey("licence_id", array("targetclass"=>"Licence", "jointype"=>null, "allowed_values"=>null, "sql"=>"licence_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  646. 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())));
  647. MetaModel::Init_AddAttribute(new AttributeExternalKey("software_id", array("targetclass"=>"Software", "jointype"=>null, "allowed_values"=>null, "sql"=>"software_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  648. 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())));
  649. MetaModel::Init_AddAttribute(new AttributeString("version", array("allowed_values"=>null, "sql"=>"version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  650. MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  651. 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'));
  652. MetaModel::Init_SetZListItems('advanced_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
  653. MetaModel::Init_SetZListItems('standard_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
  654. MetaModel::Init_SetZListItems('list', array('finalclass', 'status', 'org_id', 'importance', 'device_id', 'software_id', 'version'));
  655. }
  656. public function GetName()
  657. {
  658. return $this->Get('name').' - '.$this->Get('device_name');
  659. }
  660. public function ComputeValues()
  661. {
  662. }
  663. public static function GetRelationQueries($sRelCode)
  664. {
  665. switch ($sRelCode)
  666. {
  667. case "impacts":
  668. $aRels = array(
  669. // Actually this should be limited to the Software instances based on a DBServer Application type...
  670. "db_instances" => array("sQuery"=>"SELECT DatabaseInstance AS db WHERE db.db_server_instance_id = :this->id", "bPropagate"=>true, "iDistance"=>5),
  671. );
  672. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  673. }
  674. }
  675. }
  676. class DBServerInstance extends SoftwareInstance
  677. {
  678. public static function Init()
  679. {
  680. $aParams = array
  681. (
  682. "category" => "bizmodel,searchable,configmgmt",
  683. "key_type" => "autoincrement",
  684. "name_attcode" => "software_name",
  685. "state_attcode" => "",
  686. "reconc_keys" => array("software_id", "device_id"),
  687. "db_table" => "softwareinstance_dbserver",
  688. "db_key_field" => "id",
  689. "db_finalclass_field" => "",
  690. "icon" => "../business/templates/application.png",
  691. );
  692. MetaModel::Init_Params($aParams);
  693. MetaModel::Init_InheritAttributes();
  694. MetaModel::Init_OverloadAttributeParams("software_id", array("targetclass"=>"DBServer"));
  695. //MetaModel::Init_OverloadAttributeParams("software_id", array("allowed_values"=>new ValueSetObjects('SELECT DBServer')));
  696. 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())));
  697. 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'));
  698. MetaModel::Init_SetZListItems('advanced_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
  699. MetaModel::Init_SetZListItems('standard_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
  700. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'device_id', 'software_id', 'version'));
  701. }
  702. }
  703. class ApplicationInstance extends SoftwareInstance
  704. {
  705. public static function Init()
  706. {
  707. $aParams = array
  708. (
  709. "category" => "bizmodel,searchable,configmgmt",
  710. "key_type" => "autoincrement",
  711. "name_attcode" => "software_name",
  712. "state_attcode" => "",
  713. "reconc_keys" => array("software_id", "device_id"),
  714. "db_table" => "softwareinstance_application",
  715. "db_key_field" => "id",
  716. "db_finalclass_field" => "",
  717. "icon" => "../business/templates/application.png",
  718. );
  719. MetaModel::Init_Params($aParams);
  720. MetaModel::Init_InheritAttributes();
  721. MetaModel::Init_OverloadAttributeParams("software_id", array("targetclass"=>"Application"));
  722. 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'));
  723. MetaModel::Init_SetZListItems('advanced_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
  724. MetaModel::Init_SetZListItems('standard_search', array('status', 'org_id', 'importance', 'device_id', 'licence_id', 'software_id', 'version'));
  725. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'device_id', 'software_id', 'version'));
  726. }
  727. }
  728. class DatabaseInstance extends FunctionalCI
  729. {
  730. public static function Init()
  731. {
  732. $aParams = array
  733. (
  734. "category" => "bizmodel,searchable,configmgmt",
  735. "key_type" => "autoincrement",
  736. "name_attcode" => "name",
  737. "state_attcode" => "",
  738. "reconc_keys" => array("name"),
  739. "db_table" => "databaseinstance",
  740. "db_key_field" => "id",
  741. "db_finalclass_field" => "",
  742. "icon" => "../business/templates/database-instance.png",
  743. );
  744. MetaModel::Init_Params($aParams);
  745. MetaModel::Init_InheritAttributes();
  746. MetaModel::Init_AddAttribute(new AttributeExternalKey("db_server_instance_id", array("targetclass"=>"DBServerInstance", "jointype"=>null, "allowed_values"=>null, "sql"=>"db_server_instance_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
  747. 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())));
  748. 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())));
  749. MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  750. 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'));
  751. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'db_server_instance_id', 'db_server_instance_version'));
  752. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'db_server_instance_id', 'db_server_instance_version'));
  753. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'db_server_instance_id', 'db_server_instance_version'));
  754. }
  755. public function GetName()
  756. {
  757. return $this->Get('name').' - '.$this->Get('db_server_instance_name');
  758. }
  759. }
  760. class ApplicationSolution extends FunctionalCI
  761. {
  762. public static function Init()
  763. {
  764. $aParams = array
  765. (
  766. "category" => "bizmodel,searchable,configmgmt",
  767. "key_type" => "autoincrement",
  768. "name_attcode" => "name",
  769. "state_attcode" => "",
  770. "reconc_keys" => array("name"),
  771. "db_table" => "applicationsolution",
  772. "db_key_field" => "id",
  773. "db_finalclass_field" => "",
  774. "icon" => "../business/templates/solution.png",
  775. );
  776. MetaModel::Init_Params($aParams);
  777. MetaModel::Init_InheritAttributes();
  778. MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  779. 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())));
  780. 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())));
  781. 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'));
  782. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance'));
  783. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance'));
  784. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance'));
  785. }
  786. public static function GetRelationQueries($sRelCode)
  787. {
  788. switch ($sRelCode)
  789. {
  790. case "impacts":
  791. $aRels = array(
  792. "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),
  793. );
  794. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  795. }
  796. }
  797. }
  798. class BusinessProcess extends FunctionalCI
  799. {
  800. public static function Init()
  801. {
  802. $aParams = array
  803. (
  804. "category" => "bizmodel,searchable,configmgmt",
  805. "key_type" => "autoincrement",
  806. "name_attcode" => "name",
  807. "state_attcode" => "",
  808. "reconc_keys" => array("name"),
  809. "db_table" => "businessprocess",
  810. "db_key_field" => "id",
  811. "db_finalclass_field" => "",
  812. "icon" => "../business/templates/business-process.png",
  813. );
  814. MetaModel::Init_Params($aParams);
  815. MetaModel::Init_InheritAttributes();
  816. MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  817. 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())));
  818. MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'importance', 'description', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list', 'used_solution_list'));
  819. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'description'));
  820. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'description'));
  821. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'description'));
  822. }
  823. }
  824. abstract class ConnectableCI extends FunctionalCI
  825. {
  826. public static function Init()
  827. {
  828. $aParams = array
  829. (
  830. "category" => "bizmodel,searchable,configmgmt",
  831. "key_type" => "autoincrement",
  832. "name_attcode" => "name",
  833. "state_attcode" => "",
  834. "reconc_keys" => array("name"),
  835. "db_table" => "connectableci",
  836. "db_key_field" => "id",
  837. "db_finalclass_field" => "",
  838. "display_template" => "",
  839. );
  840. MetaModel::Init_Params($aParams);
  841. MetaModel::Init_InheritAttributes();
  842. MetaModel::Init_AddAttribute(new AttributeString("brand", array("allowed_values"=>null, "sql"=>"brand", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  843. MetaModel::Init_AddAttribute(new AttributeString("model", array("allowed_values"=>null, "sql"=>"model", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  844. MetaModel::Init_AddAttribute(new AttributeString("serial_number", array("allowed_values"=>null, "sql"=>"serial_number", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  845. MetaModel::Init_AddAttribute(new AttributeString("asset_ref", array("allowed_values"=>null, "sql"=>"asset_ref", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  846. 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'));
  847. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  848. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  849. MetaModel::Init_SetZListItems('list', array('finalclass', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  850. }
  851. }
  852. class NetworkInterface extends ConnectableCI
  853. {
  854. public static function Init()
  855. {
  856. $aParams = array
  857. (
  858. "category" => "bizmodel,searchable,configmgmt",
  859. "key_type" => "autoincrement",
  860. "name_attcode" => "name",
  861. "state_attcode" => "",
  862. "reconc_keys" => array("name"),
  863. "db_table" => "networkinterface",
  864. "db_key_field" => "id",
  865. "db_finalclass_field" => "",
  866. "icon" => "../business/templates/interface.png",
  867. );
  868. MetaModel::Init_Params($aParams);
  869. MetaModel::Init_InheritAttributes();
  870. MetaModel::Init_AddAttribute(new AttributeExternalKey("device_id", array("targetclass"=>"Device", "jointype"=>null, "allowed_values"=>null, "sql"=>"device_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  871. 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())));
  872. 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())));
  873. 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())));
  874. MetaModel::Init_AddAttribute(new AttributeIPAddress("ip_address", array("allowed_values"=>null, "sql"=>"ip_address", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  875. MetaModel::Init_AddAttribute(new AttributeIPAddress("ip_mask", array("allowed_values"=>null, "sql"=>"ip_mask", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  876. MetaModel::Init_AddAttribute(new AttributeString("mac_address", array("allowed_values"=>null, "sql"=>"mac_address", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  877. MetaModel::Init_AddAttribute(new AttributeInteger("speed", array("allowed_values"=>null, "sql"=>"speed", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  878. MetaModel::Init_AddAttribute(new AttributeEnum("duplex", array("allowed_values"=>new ValueSetEnum('full,half,unknown'), "sql"=>"duplex", "default_value"=>"full", "is_null_allowed"=>true, "depends_on"=>array())));
  879. MetaModel::Init_AddAttribute(new AttributeExternalKey("connected_if", array("targetclass"=>"NetworkInterface", "jointype"=>null, "allowed_values"=>null, "sql"=>"connected_if", "is_null_allowed"=>true, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
  880. 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())));
  881. 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())));
  882. 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())));
  883. 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', 'connected_if', 'connected_if_device_id', 'contact_list', 'document_list', 'solution_list', 'contract_list', 'ticket_list'));
  884. 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'));
  885. MetaModel::Init_SetZListItems('standard_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'));
  886. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'device_id', 'logical_type', 'physical_type', 'connected_if'));
  887. }
  888. public function GetName()
  889. {
  890. return $this->Get('device_name').' - '.$this->Get('name');
  891. }
  892. }
  893. abstract class Device extends ConnectableCI
  894. {
  895. public static function Init()
  896. {
  897. $aParams = array
  898. (
  899. "category" => "bizmodel,searchable,configmgmt",
  900. "key_type" => "autoincrement",
  901. "name_attcode" => "name",
  902. "state_attcode" => "",
  903. "reconc_keys" => array("name"),
  904. "db_table" => "device",
  905. "db_key_field" => "id",
  906. "db_finalclass_field" => "",
  907. "icon" => "../business/templates/server.png",
  908. );
  909. MetaModel::Init_Params($aParams);
  910. MetaModel::Init_InheritAttributes();
  911. 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())));
  912. 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'));
  913. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  914. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  915. MetaModel::Init_SetZListItems('list', array('finalclass', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  916. }
  917. public static function GetRelationQueries($sRelCode)
  918. {
  919. switch ($sRelCode)
  920. {
  921. case "impacts":
  922. $aRels = array(
  923. "applications" => array("sQuery"=>"SELECT SoftwareInstance AS app WHERE app.device_id = :this->id", "bPropagate"=>true, "iDistance"=>5),
  924. );
  925. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  926. }
  927. }
  928. }
  929. class PC extends Device
  930. {
  931. public static function Init()
  932. {
  933. $aParams = array
  934. (
  935. "category" => "bizmodel,searchable,configmgmt",
  936. "key_type" => "autoincrement",
  937. "name_attcode" => "name",
  938. "state_attcode" => "",
  939. "reconc_keys" => array("name"),
  940. "db_table" => "pc",
  941. "db_key_field" => "id",
  942. "db_finalclass_field" => "",
  943. "icon" => "../business/templates/laptop.png",
  944. );
  945. MetaModel::Init_Params($aParams);
  946. MetaModel::Init_InheritAttributes();
  947. MetaModel::Init_AddAttribute(new AttributeString("cpu", array("allowed_values"=>null, "sql"=>"cpu", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  948. MetaModel::Init_AddAttribute(new AttributeString("ram", array("allowed_values"=>null, "sql"=>"ram", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  949. MetaModel::Init_AddAttribute(new AttributeString("hdd", array("allowed_values"=>null, "sql"=>"hdd", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  950. MetaModel::Init_AddAttribute(new AttributeString("os_family", array("allowed_values"=>null, "sql"=>"os_family", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  951. MetaModel::Init_AddAttribute(new AttributeString("os_version", array("allowed_values"=>null, "sql"=>"os_version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  952. 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())));
  953. 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())));
  954. 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'));
  955. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
  956. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
  957. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'os_family'));
  958. }
  959. }
  960. abstract class MobileCI extends Device
  961. {
  962. public static function Init()
  963. {
  964. $aParams = array
  965. (
  966. "category" => "bizmodel,searchable,configmgmt",
  967. "key_type" => "autoincrement",
  968. "name_attcode" => "name",
  969. "state_attcode" => "",
  970. "reconc_keys" => array("name"),
  971. "db_table" => "mobileci",
  972. "db_key_field" => "id",
  973. "db_finalclass_field" => "",
  974. "icon" => "../business/templates/mobile-phone.png",
  975. );
  976. MetaModel::Init_Params($aParams);
  977. MetaModel::Init_InheritAttributes();
  978. 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'));
  979. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  980. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  981. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref'));
  982. }
  983. }
  984. class MobilePhone extends MobileCI
  985. {
  986. public static function Init()
  987. {
  988. $aParams = array
  989. (
  990. "category" => "bizmodel,searchable,configmgmt",
  991. "key_type" => "autoincrement",
  992. "name_attcode" => "name",
  993. "state_attcode" => "",
  994. "reconc_keys" => array("name"),
  995. "db_table" => "mobilephone",
  996. "db_key_field" => "id",
  997. "db_finalclass_field" => "",
  998. "icon" => "../business/templates/mobile-phone.png",
  999. );
  1000. MetaModel::Init_Params($aParams);
  1001. MetaModel::Init_InheritAttributes();
  1002. MetaModel::Init_AddAttribute(new AttributeString("number", array("allowed_values"=>null, "sql"=>"number", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1003. MetaModel::Init_AddAttribute(new AttributeString("imei", array("allowed_values"=>null, "sql"=>"IMIE", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1004. MetaModel::Init_AddAttribute(new AttributeString("hw_pin", array("allowed_values"=>null, "sql"=>"hw_pin", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1005. 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'));
  1006. MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'number', 'imei'));
  1007. MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'number', 'imei'));
  1008. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model'));
  1009. }
  1010. }
  1011. abstract class InfrastructureCI extends Device
  1012. {
  1013. public static function Init()
  1014. {
  1015. $aParams = array
  1016. (
  1017. "category" => "bizmodel,searchable,configmgmt",
  1018. "key_type" => "autoincrement",
  1019. "name_attcode" => "name",
  1020. "state_attcode" => "",
  1021. "reconc_keys" => array("name"),
  1022. "db_table" => "infrastructureci",
  1023. "db_key_field" => "id",
  1024. "db_finalclass_field" => "",
  1025. "icon" => "../business/templates/server.png",
  1026. );
  1027. MetaModel::Init_Params($aParams);
  1028. MetaModel::Init_InheritAttributes();
  1029. MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1030. 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"))));
  1031. 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())));
  1032. MetaModel::Init_AddAttribute(new AttributeText("location_details", array("allowed_values"=>null, "sql"=>"location_details", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1033. MetaModel::Init_AddAttribute(new AttributeIPAddress("management_ip", array("allowed_values"=>null, "sql"=>"management_ip", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1034. MetaModel::Init_AddAttribute(new AttributeString("default_gateway", array("allowed_values"=>null, "sql"=>"default_gateway", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1035. 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'));
  1036. 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'));
  1037. 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'));
  1038. MetaModel::Init_SetZListItems('list', array('name', 'status', 'org_id', 'importance', 'brand', 'model', 'location_id'));
  1039. }
  1040. }
  1041. class NetworkDevice extends InfrastructureCI
  1042. {
  1043. public static function Init()
  1044. {
  1045. $aParams = array
  1046. (
  1047. "category" => "bizmodel,searchable,configmgmt",
  1048. "key_type" => "autoincrement",
  1049. "name_attcode" => "name",
  1050. "state_attcode" => "",
  1051. "reconc_keys" => array("name"),
  1052. "db_table" => "networkdevice",
  1053. "db_key_field" => "id",
  1054. "db_finalclass_field" => "",
  1055. "display_template" => "",
  1056. );
  1057. MetaModel::Init_Params($aParams);
  1058. MetaModel::Init_InheritAttributes();
  1059. 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())));
  1060. MetaModel::Init_AddAttribute(new AttributeString("ios_version", array("allowed_values"=>null, "sql"=>"ios_version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1061. MetaModel::Init_AddAttribute(new AttributeString("ram", array("allowed_values"=>null, "sql"=>"ram", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1062. MetaModel::Init_AddAttribute(new AttributeString("snmp_read", array("allowed_values"=>null, "sql"=>"snmp_read", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1063. MetaModel::Init_AddAttribute(new AttributeString("snmp_write", array("allowed_values"=>null, "sql"=>"snmp_write", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1064. 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'));
  1065. 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'));
  1066. 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', 'ios_version', 'ram'));
  1067. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'location_id', 'type'));
  1068. }
  1069. }
  1070. class Server extends InfrastructureCI
  1071. {
  1072. public static function Init()
  1073. {
  1074. $aParams = array
  1075. (
  1076. "category" => "bizmodel,searchable,configmgmt",
  1077. "key_type" => "autoincrement",
  1078. "name_attcode" => "name",
  1079. "state_attcode" => "",
  1080. "reconc_keys" => array("name"),
  1081. "db_table" => "server",
  1082. "db_key_field" => "id",
  1083. "db_finalclass_field" => "",
  1084. "icon" => "../business/templates/server.png",
  1085. );
  1086. MetaModel::Init_Params($aParams);
  1087. MetaModel::Init_InheritAttributes();
  1088. MetaModel::Init_AddAttribute(new AttributeString("cpu", array("allowed_values"=>null, "sql"=>"cpu", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1089. MetaModel::Init_AddAttribute(new AttributeString("ram", array("allowed_values"=>null, "sql"=>"ram", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1090. MetaModel::Init_AddAttribute(new AttributeString("hdd", array("allowed_values"=>null, "sql"=>"hdd", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1091. MetaModel::Init_AddAttribute(new AttributeString("os_family", array("allowed_values"=>null, "sql"=>"os_family", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1092. MetaModel::Init_AddAttribute(new AttributeString("os_version", array("allowed_values"=>null, "sql"=>"os_version", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1093. 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())));
  1094. 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())));
  1095. 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'));
  1096. 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'));
  1097. 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', 'cpu', 'ram', 'hdd', 'os_family', 'os_version'));
  1098. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'location_id', 'os_family'));
  1099. }
  1100. }
  1101. class Printer extends InfrastructureCI
  1102. {
  1103. public static function Init()
  1104. {
  1105. $aParams = array
  1106. (
  1107. "category" => "bizmodel,searchable,configmgmt",
  1108. "key_type" => "autoincrement",
  1109. "name_attcode" => "name",
  1110. "state_attcode" => "",
  1111. "reconc_keys" => array("name"),
  1112. "db_table" => "printer",
  1113. "db_key_field" => "id",
  1114. "db_finalclass_field" => "",
  1115. "icon" => "../business/templates/printer.png",
  1116. );
  1117. MetaModel::Init_Params($aParams);
  1118. MetaModel::Init_InheritAttributes();
  1119. 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())));
  1120. 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())));
  1121. 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'));
  1122. 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'));
  1123. 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'));
  1124. MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'importance', 'brand', 'model', 'serial_number', 'asset_ref', 'description', 'location_id', 'location_details', 'management_ip', 'default_gateway', 'type', 'technology'));
  1125. }
  1126. }
  1127. class lnkCIToDoc extends cmdbAbstractObject
  1128. {
  1129. public static function Init()
  1130. {
  1131. $aParams = array
  1132. (
  1133. "category" => "bizmodel,configmgmt",
  1134. "key_type" => "autoincrement",
  1135. "name_attcode" => "ci_id",
  1136. "state_attcode" => "",
  1137. "reconc_keys" => array("name"),
  1138. "db_table" => "lnkcitodoc",
  1139. "db_key_field" => "id",
  1140. "db_finalclass_field" => "",
  1141. "display_template" => "",
  1142. );
  1143. MetaModel::Init_Params($aParams);
  1144. MetaModel::Init_InheritAttributes();
  1145. 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())));
  1146. 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())));
  1147. 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())));
  1148. 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())));
  1149. 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())));
  1150. 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())));
  1151. 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())));
  1152. MetaModel::Init_SetZListItems('details', array('ci_id', 'ci_status', 'document_id', 'document_type', 'document_status'));
  1153. MetaModel::Init_SetZListItems('advanced_search', array('ci_id', 'document_id'));
  1154. MetaModel::Init_SetZListItems('standard_search', array('ci_id', 'document_id'));
  1155. MetaModel::Init_SetZListItems('list', array('ci_id', 'ci_status', 'document_id', 'document_type', 'document_status'));
  1156. }
  1157. }
  1158. class lnkCIToContact extends cmdbAbstractObject
  1159. {
  1160. public static function Init()
  1161. {
  1162. $aParams = array
  1163. (
  1164. "category" => "bizmodel,configmgmt",
  1165. "key_type" => "autoincrement",
  1166. "name_attcode" => "ci_id",
  1167. "state_attcode" => "",
  1168. "reconc_keys" => array("name"),
  1169. "db_table" => "lnkcitocontact",
  1170. "db_key_field" => "id",
  1171. "db_finalclass_field" => "",
  1172. "icon" => "../business/templates/contact.png",
  1173. );
  1174. MetaModel::Init_Params($aParams);
  1175. MetaModel::Init_InheritAttributes();
  1176. 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())));
  1177. 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())));
  1178. 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())));
  1179. 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())));
  1180. 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())));
  1181. 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())));
  1182. MetaModel::Init_AddAttribute(new AttributeString("role", array("allowed_values"=>null, "sql"=>"role", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1183. MetaModel::Init_SetZListItems('details', array('ci_id', 'ci_status', 'contact_id', 'contact_email', 'role'));
  1184. MetaModel::Init_SetZListItems('advanced_search', array('ci_id', 'contact_id', 'role'));
  1185. MetaModel::Init_SetZListItems('standard_search', array('ci_id', 'contact_id', 'role'));
  1186. MetaModel::Init_SetZListItems('list', array('ci_id', 'ci_status', 'contact_id', 'contact_email', 'role'));
  1187. }
  1188. }
  1189. class lnkSolutionToCI extends cmdbAbstractObject
  1190. {
  1191. public static function Init()
  1192. {
  1193. $aParams = array
  1194. (
  1195. "category" => "bizmodel,configmgmt",
  1196. "key_type" => "autoincrement",
  1197. "name_attcode" => "solution_id",
  1198. "state_attcode" => "",
  1199. "reconc_keys" => array("name"),
  1200. "db_table" => "lnksolutiontoci",
  1201. "db_key_field" => "id",
  1202. "db_finalclass_field" => "",
  1203. "display_template" => "",
  1204. );
  1205. MetaModel::Init_Params($aParams);
  1206. MetaModel::Init_InheritAttributes();
  1207. 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_MANUAL, "depends_on"=>array())));
  1208. 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())));
  1209. 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())));
  1210. 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())));
  1211. 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())));
  1212. MetaModel::Init_AddAttribute(new AttributeString("utility", array("allowed_values"=>null, "sql"=>"utility", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1213. MetaModel::Init_SetZListItems('details', array('solution_id', 'ci_id', 'ci_status', 'utility'));
  1214. MetaModel::Init_SetZListItems('advanced_search', array('solution_id', 'ci_id', 'utility'));
  1215. MetaModel::Init_SetZListItems('standard_search', array('solution_id', 'ci_id', 'utility'));
  1216. MetaModel::Init_SetZListItems('list', array('solution_id', 'ci_id', 'ci_status', 'utility'));
  1217. }
  1218. }
  1219. class lnkProcessToSolution extends cmdbAbstractObject
  1220. {
  1221. public static function Init()
  1222. {
  1223. $aParams = array
  1224. (
  1225. "category" => "bizmodel,configmgmt",
  1226. "key_type" => "autoincrement",
  1227. "name_attcode" => "solution_id",
  1228. "state_attcode" => "",
  1229. "reconc_keys" => array("name"),
  1230. "db_table" => "lnkprocesstosolution",
  1231. "db_key_field" => "id",
  1232. "db_finalclass_field" => "",
  1233. "display_template" => "",
  1234. );
  1235. MetaModel::Init_Params($aParams);
  1236. MetaModel::Init_InheritAttributes();
  1237. 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())));
  1238. 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())));
  1239. 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())));
  1240. 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())));
  1241. MetaModel::Init_AddAttribute(new AttributeString("reason", array("allowed_values"=>null, "sql"=>"reason", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
  1242. MetaModel::Init_SetZListItems('details', array('solution_id', 'process_id', 'reason'));
  1243. MetaModel::Init_SetZListItems('advanced_search', array('solution_id', 'process_id', 'reason'));
  1244. MetaModel::Init_SetZListItems('standard_search', array('solution_id', 'process_id', 'reason'));
  1245. MetaModel::Init_SetZListItems('list', array('solution_id', 'process_id', 'reason'));
  1246. }
  1247. }
  1248. //////////////////////////////////////////////////////////////////////////////
  1249. // Menu:
  1250. // +----------------------------------------+
  1251. // | My Module |
  1252. // +----------------------------------------+
  1253. // + All items
  1254. // + ...
  1255. // + ...
  1256. ////////////////////////////////////////////////////////////////////////////////////
  1257. // Create the top-level group. fRank = 1, means it will be inserted after the group '0', which is usually 'Welcome'
  1258. $oAdminMenu = new MenuGroup('DataAdministration', 999);
  1259. $iAdminGroup = $oAdminMenu->GetIndex();
  1260. new WebPageMenuNode('Audit', '../pages/audit.php', $iAdminGroup, 33 /* fRank */);
  1261. $oTypologyNode = new TemplateMenuNode('Catalogs', '', $iAdminGroup, 50 /* fRank */);
  1262. $iTopology = $oTypologyNode->GetIndex();
  1263. new OQLMenuNode('Organization', 'SELECT Organization', $iTopology, 10 /* fRank */);
  1264. new OQLMenuNode('Application', 'SELECT Application', $iTopology, 20 /* fRank */);
  1265. new OQLMenuNode('DBServer', 'SELECT DBServer', $iTopology, 40 /* fRank */);
  1266. $oConfigManagementGroup = new MenuGroup('ConfigManagement', 1 /* fRank */);
  1267. // Create an entry, based on a custom template, for the Configuration management overview, under the top-level group
  1268. new TemplateMenuNode('ConfigManagementOverview', '../business/templates/configuration_management_menu.html', $oConfigManagementGroup->GetIndex(), 0 /* fRank */);
  1269. $oContactNode = new TemplateMenuNode('Contact', '../business/templates/contacts_menu.html', $oConfigManagementGroup->GetIndex(), 1 /* fRank */);
  1270. new OQLMenuNode('Person', 'SELECT Person', $oContactNode->GetIndex(), 1 /* fRank */);
  1271. new OQLMenuNode('Team', 'SELECT Team', $oContactNode->GetIndex(), 2 /* fRank */);
  1272. new OQLMenuNode('Document', 'SELECT Document', $oConfigManagementGroup->GetIndex(), 2 /* fRank */);
  1273. new OQLMenuNode('Location', 'SELECT Location', $oConfigManagementGroup->GetIndex(), 3 /* fRank */);
  1274. $oCINode = new TemplateMenuNode('ConfigManagementCI', '../business/templates/configuration_items_menu.html', $oConfigManagementGroup->GetIndex(), 2 /* fRank */);
  1275. new OQLMenuNode('BusinessProcess', 'SELECT BusinessProcess', $oCINode->GetIndex(), 0 /* fRank */);
  1276. new OQLMenuNode('ApplicationSolution', 'SELECT ApplicationSolution', $oCINode->GetIndex(), 1 /* fRank */);
  1277. $oSWNode = new TemplateMenuNode('ConfigManagementSoftware', '', $oCINode->GetIndex(), 2 /* fRank */);
  1278. new OQLMenuNode('Licence', 'SELECT Licence', $oSWNode->GetIndex(), 0 /* fRank */);
  1279. new OQLMenuNode('Patch', 'SELECT Patch', $oSWNode->GetIndex(), 1 /* fRank */);
  1280. new OQLMenuNode('ApplicationInstance', 'SELECT SoftwareInstance', $oSWNode->GetIndex(), 2 /* fRank */);
  1281. $oHWNode = new TemplateMenuNode('ConfigManagementHardware', '', $oCINode->GetIndex(), 3 /* fRank */);
  1282. new OQLMenuNode('Subnet', 'SELECT Subnet', $oHWNode->GetIndex(), 0 /* fRank */);
  1283. new OQLMenuNode('NetworkDevice', 'SELECT NetworkDevice', $oHWNode->GetIndex(), 1 /* fRank */);
  1284. new OQLMenuNode('Server', 'SELECT Server', $oHWNode->GetIndex(), 2 /* fRank */);
  1285. new OQLMenuNode('Printer', 'SELECT Printer', $oHWNode->GetIndex(), 3 /* fRank */);
  1286. new OQLMenuNode('MobilePhone', 'SELECT MobilePhone', $oHWNode->GetIndex(), 4 /* fRank */);
  1287. new OQLMenuNode('PC', 'SELECT PC', $oHWNode->GetIndex(), 5 /* fRank */);
  1288. ?>