business_test.class.inc.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. <?php
  2. require_once('../core/MyHelpers.class.inc.php');
  3. require_once('../core/cmdbobject.class.inc.php');
  4. /**
  5. * business_test.class.inc.php
  6. * User defined objects, for unit testing
  7. *
  8. * @package iTopUnitTests
  9. * @author Romain Quetiez <romainquetiez@yahoo.fr>
  10. * @author Denis Flaven <denisflave@free.fr>
  11. * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
  12. * @link www.itop.com
  13. * @since 1.0
  14. * @version 1.1.1.1 $
  15. */
  16. ///////////////////////////////////////////////////////////////////////////////
  17. // Business implementation demo
  18. ///////////////////////////////////////////////////////////////////////////////
  19. MetaModel::RegisterRelation("Potes", array("description"=>"ceux dont l'email ressemble au mien", "verb_down"=>"est pote de", "verb_up"=>"est pote de"));
  20. MetaModel::RegisterZList("list1", array("description"=>"une premiere list, just for fun", "type"=>"attributes"));
  21. MetaModel::RegisterZList("list2", array("description"=>"la secunda e meliora", "type"=>"attributes"));
  22. MetaModel::RegisterZList("list3", array("description"=>"la variante qui tue", "type"=>"filters"));
  23. /**
  24. * blah blah
  25. *
  26. * @package iTopUnitTests
  27. * @author Romain Quetiez <romainquetiez@yahoo.fr>
  28. * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
  29. * @link www.itop.com
  30. * @since 1.0
  31. * @version 1.1.1.1 $
  32. */
  33. class cmdbObjectHomeMade extends cmdbObject
  34. {
  35. public static function Init()
  36. {
  37. $aParams = array
  38. (
  39. "category" => "blah",
  40. "name" => "anyObject",
  41. "description" => "std object",
  42. "key_type" => "autoincrement",
  43. "key_label" => "",
  44. "name_attcode" => "",
  45. "state_attcode" => "",
  46. "reconc_keys" => array(""),
  47. "db_table" => "",
  48. "db_key_field" => "",
  49. "db_finalclass_field" => "",
  50. );
  51. MetaModel::Init_Params($aParams);
  52. }
  53. public static function GetRelationQueries($sRelCode)
  54. {
  55. //trigger_error("GetRelationQueries: cmdbObjectHomeMade");
  56. switch ($sRelCode)
  57. {
  58. case "Potes":
  59. $aRels = array("xxxx" => array("sQuery"=>"cmdbContact: pkey = 40", "bPropagate"=>true, "iDistance"=>3));
  60. return $aRels;
  61. }
  62. }
  63. }
  64. /**
  65. * blah blah
  66. *
  67. * @package iTopUnitTests
  68. * @author Romain Quetiez <romainquetiez@yahoo.fr>
  69. * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
  70. * @link www.itop.com
  71. * @since 1.0
  72. * @version 1.1.1.1 $
  73. */
  74. class cmdbContact extends cmdbObjectHomeMade
  75. {
  76. public static function Init()
  77. {
  78. $aParams = array
  79. (
  80. "category" => "blah",
  81. "name" => "Contact",
  82. "description" => "Un object que l'on peut communiquer avec",
  83. "key_type" => "autoincrement",
  84. "key_label" => "",
  85. "name_attcode" => "name",
  86. "state_attcode" => "etat",
  87. "reconc_keys" => array("name"),
  88. "db_table" => "contact",
  89. "db_key_field" => "contactid",
  90. "db_finalclass_field" => "actualclass",
  91. );
  92. MetaModel::Init_Params($aParams);
  93. //MetaModel::Init_InheritAttributes();
  94. MetaModel::Init_AddAttribute(new AttributeString("etat", array("label"=>"l'etat", "description"=>"les etats d'ame d'eric", "allowed_values"=>new ValueSetEnum('justborn, 15, 21'), "sql"=>"etat", "default_value"=>"justborn", "is_null_allowed"=>false, "depends_on"=>array())));
  95. MetaModel::Init_AddAttribute(new AttributeString("name", array("label"=>"nom", "description"=>"ze equipe", "allowed_values"=>null, "sql"=>"name", "default_value"=>"XXXX", "is_null_allowed"=>false, "depends_on"=>array())));
  96. MetaModel::Init_AddAttribute(new AttributeString("email", array("label"=>"iMaile", "description"=>"imelle", "allowed_values"=>null, "sql"=>"email", "default_value"=>null, "is_null_allowed"=>true, "depends_on"=>array())));
  97. MetaModel::Init_AddAttribute(new AttributeExternalKey("owner", array("label"=>"owned by", "description"=>"organization owning the team", "allowed_values"=>null, "sql"=>"ownerorg", "targetclass"=>"cmdbOrga", "is_null_allowed"=>true, "depends_on"=>array())));
  98. MetaModel::Init_AddAttribute(new AttributeExternalField("ownername", array("label"=>"owned by", "description"=>"name of organization owning the team", "allowed_values"=>null, "extkey_attcode"=>"owner", "target_attcode"=>"_name_")));
  99. MetaModel::Init_AddAttribute(new AttributeExternalField("ownertnut", array("label"=>"owntnut", "description"=>"blah tnut blah", "allowed_values"=>null, "extkey_attcode"=>"owner", "target_attcode"=>"_dunsnumber_")));
  100. MetaModel::Init_AddAttribute(new AttributeLinkedSet("myworkshops", array("label"=>"held workshops", "description"=>"blah tnut blah", "depends_on"=>array(), "linked_class"=>"cmdbLiens", "ext_key_to_me"=>"tocontact", "count_min"=>1, "count_max"=>10, "allowed_values"=>null)));
  101. MetaModel::Init_InheritFilters();
  102. MetaModel::Init_AddFilterFromAttribute("owner");
  103. MetaModel::Init_AddFilterFromAttribute("name");
  104. MetaModel::Init_AddFilterFromAttribute("ownername");
  105. MetaModel::Init_SetZListItems("list1", array("name", "email"));
  106. MetaModel::Init_SetZListItems("list2", array());
  107. MetaModel::Init_SetZListItems("list3", array("ownername"));
  108. MetaModel::Init_DefineState("justborn", array("label"=>"just born", "description"=>"too young to die", "attribute_inherit"=>null, "attribute_list"=>array("owner"=>OPT_ATT_MANDATORY)));
  109. MetaModel::Init_DefineState("15", array("label"=>"student", "description"=>"stupid age", "attribute_inherit"=>"justborn", "attribute_list"=>array("owner"=>OPT_ATT_MUSTPROMPT, "email"=>OPT_ATT_MUSTPROMPT)));
  110. MetaModel::Init_DefineState("21", array("label"=>"old", "description"=>"one foot in the grave", "attribute_inherit"=>"15", "attribute_list"=>array("email"=>OPT_ATT_READONLY|OPT_ATT_MUSTCHANGE)));
  111. MetaModel::Init_DefineStimulus("toschool", new StimulusUserAction(array("label"=>"go to school", "description"=>"start learning stupid things")));
  112. MetaModel::Init_DefineStimulus("raise", new StimulusUserAction(array("label"=>"grow!", "description"=>"eat tons of BigMACs")));
  113. MetaModel::Init_DefineTransition("justborn", "toschool", array("target_state"=>"15", "actions"=>array('MyLifecycleHandler', 'MyLifecycleHandler2'), "user_restriction"=>null));
  114. MetaModel::Init_DefineTransition("15", "raise", array("target_state"=>"21", "actions"=>null, "user_restriction"=>null));
  115. }
  116. public static function GetRelationQueries($sRelCode)
  117. {
  118. //trigger_error("GetRelationQueries: cmdbContact");
  119. switch ($sRelCode)
  120. {
  121. case "Potes":
  122. $aRels = array(
  123. "zz1" => array("sQuery"=>"cmdbContact: name Begins with '\$[this.name::]' AND pkey != \$[this.pkey::]", "bPropagate"=>false, "iDistance"=>3),
  124. "zz2" => array("sQuery"=>"cmdbContact: owner = \$[this.owner::] AND owner != 2", "bPropagate"=>false, "iDistance"=>3),
  125. );
  126. return array_merge($aRels, parent::GetRelationQueries($sRelCode));
  127. }
  128. }
  129. public function MyLifecycleHandler($sStimulusCode)
  130. {
  131. echo "<p>youhou!</p>";
  132. return true;
  133. }
  134. public function MyLifecycleHandler2($sStimulusCode)
  135. {
  136. echo "<p>... les papous...</p>";
  137. return true;
  138. }
  139. }
  140. /**
  141. * blah blah
  142. *
  143. * @package iTopUnitTests
  144. * @author Romain Quetiez <romainquetiez@yahoo.fr>
  145. * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
  146. * @link www.itop.com
  147. * @since 1.0
  148. * @version 1.1.1.1 $
  149. */
  150. class cmdbTeam extends cmdbContact
  151. {
  152. public static function Init()
  153. {
  154. $aParams = array
  155. (
  156. "category" => "blah",
  157. "name" => "Equipado",
  158. "description" => "Un regroupement de gens",
  159. "key_type" => "autoincrement",
  160. "key_label" => "",
  161. "name_attcode" => "email",
  162. "state_attcode" => "",
  163. "reconc_keys" => array("email"),
  164. "db_table" => "team",
  165. "db_key_field" => "teamid",
  166. "db_finalclass_field" => "",
  167. );
  168. MetaModel::Init_Params($aParams);
  169. MetaModel::Init_InheritAttributes();
  170. MetaModel::Init_OverloadAttributeParams("email", array("label"=>"email2", "description"=>"emailleu22"));
  171. MetaModel::Init_AddAttribute(new AttributeInteger("headcount", array("label"=>"nombre", "description"=>"combien ils sont", "allowed_values"=>null, "sql"=>"headcount", "default_value"=>654321, "is_null_allowed"=>false, "depends_on"=>array())));
  172. MetaModel::Init_InheritFilters();
  173. MetaModel::Init_AddFilterFromAttribute("headcount");
  174. MetaModel::Init_SetZListItems("noneditable", array("name"));
  175. }
  176. public function ComputeValues()
  177. {
  178. //echo "Set(), function ComputeValues has been found for ".get_class($this)."<br/>\n";
  179. $this->Set("name", $this->Get("email")." and ".$this->Get("headcount"));
  180. }
  181. public static function GetRelationQueries($sRelCode)
  182. {
  183. //trigger_error("GetRelationQueries: cmdbTeam");
  184. switch ($sRelCode)
  185. {
  186. case "Potes":
  187. //$aRels = array("Relies on" => array("sQuery"=>"cmdbContact: name Begins with 'Louis'", "bPropagate"=>false, "iDistance"=>3));
  188. return array_merge(array(), parent::GetRelationQueries($sRelCode));
  189. }
  190. }
  191. }
  192. /**
  193. * blah blah
  194. *
  195. * @package iTopUnitTests
  196. * @author Romain Quetiez <romainquetiez@yahoo.fr>
  197. * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
  198. * @link www.itop.com
  199. * @since 1.0
  200. * @version 1.1.1.1 $
  201. */
  202. class cmdbOrga extends cmdbObjectHomeMade
  203. {
  204. public static function Init()
  205. {
  206. $aParams = array
  207. (
  208. "category" => "blah",
  209. "name" => "Organization",
  210. "description" => "Une entite qui possede des choses",
  211. "key_type" => "",
  212. "key_label" => "",
  213. "name_attcode" => "_name_",
  214. "state_attcode" => "",
  215. "reconc_keys" => array("_name_"),
  216. "db_table" => "organization",
  217. "db_key_field" => "orgid",
  218. "db_finalclass_field" => "",
  219. );
  220. MetaModel::Init_Params($aParams);
  221. //MetaModel::Init_InheritAttributes();
  222. MetaModel::Init_AddAttribute(new AttributeString("_name_", array("label"=>"namo", "description"=>"official company name", "allowed_values"=>null, "sql"=>"name", "default_value"=>"XXXX", "is_null_allowed"=>false, "depends_on"=>array())));
  223. MetaModel::Init_AddAttribute(new AttributeEnum("_status_", array("label"=>"step", "description"=>"step or status, etc.", "allowed_values"=>null, "sql"=>"status", "default_value"=>"XXXX", "is_null_allowed"=>false, "depends_on"=>array())));
  224. MetaModel::Init_AddAttribute(new AttributeInteger("_dunsnumber_", array("label"=>"duns debile number", "description"=>"une bonne idee a OVSD", "allowed_values"=>null, "sql"=>"dunsnumber", "default_value"=>99007, "is_null_allowed"=>false, "depends_on"=>array())));
  225. // not yet allowed MetaModel::Init_AddAttribute(new AttributeInteger("_dunsnumberBY2_", array("label"=>"dummy duns", "description"=>"deux fois plus debile", "allowed_values"=>null, "sql"=>"dunsnumber * 3.141592654")));
  226. MetaModel::Init_InheritFilters();
  227. MetaModel::Init_AddFilterFromAttribute("_name_");
  228. MetaModel::Init_SetZListItems("list1", array("_status_"));
  229. MetaModel::Init_SetZListItems("list2", array());
  230. MetaModel::Init_SetZListItems("list3", array("_name_"));
  231. }
  232. }
  233. /**
  234. * blah blah
  235. *
  236. * @package iTopUnitTests
  237. * @author Romain Quetiez <romainquetiez@yahoo.fr>
  238. * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
  239. * @link www.itop.com
  240. * @since 1.0
  241. * @version 1.1.1.1 $
  242. */
  243. class cmdbLiens extends cmdbObjectHomeMade
  244. {
  245. public static function Init()
  246. {
  247. $aParams = array
  248. (
  249. "category" => "blah",
  250. "name" => "Liens_entre_contacts_et_workshop",
  251. "description" => "Une entite qui lie des contacts et workshops",
  252. "key_type" => "autoincrement",
  253. "key_label" => "",
  254. "name_attcode" => "function",
  255. "state_attcode" => "",
  256. "reconc_keys" => array("function"),
  257. "db_table" => "role_ws",
  258. "db_key_field" => "linkid",
  259. "db_finalclass_field" => "",
  260. );
  261. MetaModel::Init_Params($aParams);
  262. //MetaModel::Init_InheritAttributes();
  263. MetaModel::Init_AddAttribute(new AttributeString("function", array("label"=>"fonction", "description"=>"la fonction...", "allowed_values"=>null, "sql"=>"function", "default_value"=>"XXXX", "is_null_allowed"=>false, "depends_on"=>array())));
  264. MetaModel::Init_AddAttribute(new AttributeString("a1", array("label"=>"a1", "description"=>"a1", "allowed_values"=>null, "sql"=>"a1", "default_value"=>"XXXX", "is_null_allowed"=>false, "depends_on"=>array())));
  265. MetaModel::Init_AddAttribute(new AttributeString("a2", array("label"=>"a1", "description"=>"a2", "allowed_values"=>null, "sql"=>"a2", "default_value"=>"XXXX", "is_null_allowed"=>true, "depends_on"=>array())));
  266. // What makes it being a link...
  267. MetaModel::Init_AddAttribute(new AttributeExternalKey("toworkshop", array("label"=>"participates in", "description"=>"workshop in wich the person is participating", "allowed_values"=>null, "sql"=>"ws_id", "targetclass"=>"cmdbWorkshop", "is_null_allowed"=>false, "depends_on"=>array())));
  268. MetaModel::Init_AddAttribute(new AttributeExternalField("ws_info", array("label"=>"name", "description"=>"namedescription", "allowed_values"=>null, "extkey_attcode"=>"toworkshop", "target_attcode"=>"namitus")));
  269. MetaModel::Init_AddAttribute(new AttributeExternalKey("tocontact", array("label"=>"is held by", "description"=>"people involved in that mess", "allowed_values"=>null, "sql"=>"contactid", "targetclass"=>"cmdbContact", "is_null_allowed"=>false, "depends_on"=>array())));
  270. MetaModel::Init_AddAttribute(new AttributeExternalField("contact_info", array("label"=>"name", "description"=>"namedescription", "allowed_values"=>null, "extkey_attcode"=>"tocontact", "target_attcode"=>"name")));
  271. MetaModel::Init_InheritFilters();
  272. MetaModel::Init_AddFilterFromAttribute("function");
  273. MetaModel::Init_SetZListItems("list1", array("toworkshop", "contact_info"));
  274. MetaModel::Init_SetZListItems("list2", array("function"));
  275. MetaModel::Init_SetZListItems("list3", array("function"));
  276. }
  277. public static function GetRelationQueries($sRelCode)
  278. {
  279. throw new CoreException("GetRelationQueries: cmdbLiens");
  280. return array("Relies on" => array("sQuery"=>"", "bPropagate"=>true, "iDistance"=>3));
  281. }
  282. }
  283. /**
  284. * blah blah
  285. *
  286. * @package iTopUnitTests
  287. * @author Romain Quetiez <romainquetiez@yahoo.fr>
  288. * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
  289. * @link www.itop.com
  290. * @since 1.0
  291. * @version 1.1.1.1 $
  292. */
  293. class cmdbWorkshop extends cmdbObjectHomeMade
  294. {
  295. public static function Init()
  296. {
  297. $aParams = array
  298. (
  299. "category" => "blah",
  300. "name" => "Workshop",
  301. "description" => "Une entite qui pond des theories insensees",
  302. "key_type" => "autoincrement",
  303. "key_label" => "",
  304. "name_attcode" => "namitus",
  305. "state_attcode" => "",
  306. "reconc_keys" => array("namitus"),
  307. "db_table" => "workshop",
  308. "db_key_field" => "ws_id",
  309. "db_finalclass_field" => "",
  310. );
  311. MetaModel::Init_Params($aParams);
  312. //MetaModel::Init_InheritAttributes();
  313. MetaModel::Init_AddAttribute(new AttributeString("namitus", array("label"=>"namo", "description"=>"nom imbitique pour pondeurs de debilites", "allowed_values"=>null, "sql"=>"name", "default_value"=>"XXXX", "is_null_allowed"=>false, "depends_on"=>array())));
  314. MetaModel::Init_InheritFilters();
  315. MetaModel::Init_AddFilterFromAttribute("namitus");
  316. MetaModel::Init_SetZListItems("list1", array("namitus"));
  317. MetaModel::Init_SetZListItems("list2", array());
  318. MetaModel::Init_SetZListItems("list3", array("namitus"));
  319. }
  320. public static function GetRelationQueries($sRelCode)
  321. {
  322. throw new CoreException("GetRelationQueries: cmdbWorkshop");
  323. return array("Relies on" => array("sQuery"=>"", "bPropagate"=>true, "iDistance"=>3));
  324. }
  325. }
  326. ?>