ILIAS  Release_5_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilADTTest.php
Go to the documentation of this file.
1 <?php
2 
3 include_once "Services/ADT/classes/_Example/class.ilADTBasedObject.php";
4 
11 {
12  protected $id; // [int]
13  protected $properties; // [ilADTGroup]
14 
15  const INTERESTS_NONE = 0;
17  const INTERESTS_IT = 2;
18 
19 
20  // properties
21 
22  protected function initProperties()
23  {
24  global $lng;
25 
26  // this could be generated from XML or code comments or whatever
27 
28  include_once "Services/ADT/classes/class.ilADTFactory.php";
29  $factory = ilADTFactory::getInstance();
30 
31  $properties_def = $factory->getDefinitionInstanceByType("Group");
32 
33  $name = $factory->getDefinitionInstanceByType("Text");
34  $name->setMaxLength(255);
35  $properties_def->addElement("name", $name);
36 
37  $status = $factory->getDefinitionInstanceByType("Boolean");
38  $properties_def->addElement("active", $status);
39 
40  // example options from ilLanguage
41  $lng->loadLanguageModule("meta");
42  $options = array();
43  foreach($lng->getInstalledLanguages() as $lang)
44  {
45  $options[$lang] = $lng->txt("meta_l_".$lang);
46  }
47 
48  $lang = $factory->getDefinitionInstanceByType("Enum");
49  $lang->setNumeric(false);
50  $lang->setOptions($options);
51  $properties_def->addElement("lang", $lang);
52 
53 
54  $age = $factory->getDefinitionInstanceByType("Integer");
55  $age->setMin(0);
56  $age->setMax(120);
57  $properties_def->addElement("age", $age);
58 
59  $weight = $factory->getDefinitionInstanceByType("Float");
60  $weight->setMin(0);
61  $weight->setMax(500);
62  $properties_def->addElement("weight", $weight);
63 
64  // null?
65  $home = $factory->getDefinitionInstanceByType("Location");
66  $properties_def->addElement("home", $home);
67 
68  $tags = $factory->getDefinitionInstanceByType("MultiText");
69  $tags->setMaxLength(255);
70  $tags->setMaxSize(5);
71  $properties_def->addElement("tags", $tags);
72 
73  $options = array(
74  self::INTERESTS_NONE => $lng->txt("test_interests_none"),
75  self::INTERESTS_LANGUAGES => $lng->txt("test_interests_languages"),
76  self::INTERESTS_IT => $lng->txt("test_interests_it")
77  );
78 
79  $intr = $factory->getDefinitionInstanceByType("MultiEnum");
80  $intr->setOptions($options);
81  $properties_def->addElement("interests", $intr);
82 
83  $date = $factory->getDefinitionInstanceByType("Date");
84  $properties_def->addElement("entry_date", $date);
85 
86  $dt = $factory->getDefinitionInstanceByType("DateTime");
87  $properties_def->addElement("last_login", $dt);
88 
89  // convert ADT definitions to proper ADTs
90  return $factory->getInstanceByDefinition($properties_def);
91  }
92 
93 
94  // CRUD/DB
95 
96  // simple sequence example
97 
98  protected function initDBBridge(ilADTGroupDBBridge $a_adt_db)
99  {
100  $a_adt_db->setTable("adt_test");
101  $a_adt_db->setPrimary(array("id"=>array("integer", $this->id)));
102  }
103 
104  protected function parsePrimary(array $a_args)
105  {
106  $this->id = (int)$a_args[0];
107  }
108 
109  protected function hasPrimary()
110  {
111  return (bool)$this->id;
112  }
113 
114  protected function createPrimaryKey()
115  {
116  global $ilDB;
117 
118  $this->id = $ilDB->nextId("adt_test");
119 
120  // INSERT is only done if createPrimaryKey() returns TRUE!
121  return true;
122  }
123 
124 }
125 
126 ?>