ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilADTTest.php
Go to the documentation of this file.
1<?php
2
3include_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?>
ADT based-object base class.
static getInstance()
Get singleton.
setTable($a_table)
Set table name.
setPrimary(array $a_value)
Set primary fields (in MDB2 format)
This is a ADT-based example object.
const INTERESTS_NONE
hasPrimary()
Check if currently has primary.
const INTERESTS_IT
initProperties()
Init properties (aka set ADT definition)
parsePrimary(array $a_args)
Parse incoming primary key.
const INTERESTS_LANGUAGES
createPrimaryKey()
Create new primary key, e.g.
initDBBridge(ilADTGroupDBBridge $a_adt_db)
Init (properties) DB bridge.
global $lng
Definition: privfeed.php:40
global $ilDB
if(!is_array($argv)) $options