ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
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 $DIC;
25
26 $lng = $DIC['lng'];
27
28 // this could be generated from XML or code comments or whatever
29
30 include_once "Services/ADT/classes/class.ilADTFactory.php";
32
33 $properties_def = $factory->getDefinitionInstanceByType("Group");
34
35 $name = $factory->getDefinitionInstanceByType("Text");
36 $name->setMaxLength(255);
37 $properties_def->addElement("name", $name);
38
39 $status = $factory->getDefinitionInstanceByType("Boolean");
40 $properties_def->addElement("active", $status);
41
42 // example options from ilLanguage
43 $lng->loadLanguageModule("meta");
44 $options = array();
45 foreach ($lng->getInstalledLanguages() as $lang) {
46 $options[$lang] = $lng->txt("meta_l_" . $lang);
47 }
48
49 $lang = $factory->getDefinitionInstanceByType("Enum");
50 $lang->setNumeric(false);
51 $lang->setOptions($options);
52 $properties_def->addElement("lang", $lang);
53
54
55 $age = $factory->getDefinitionInstanceByType("Integer");
56 $age->setMin(0);
57 $age->setMax(120);
58 $properties_def->addElement("age", $age);
59
60 $weight = $factory->getDefinitionInstanceByType("Float");
61 $weight->setMin(0);
62 $weight->setMax(500);
63 $properties_def->addElement("weight", $weight);
64
65 // null?
66 $home = $factory->getDefinitionInstanceByType("Location");
67 $properties_def->addElement("home", $home);
68
69 $tags = $factory->getDefinitionInstanceByType("MultiText");
70 $tags->setMaxLength(255);
71 $tags->setMaxSize(5);
72 $properties_def->addElement("tags", $tags);
73
74 $options = array(
75 self::INTERESTS_NONE => $lng->txt("test_interests_none"),
76 self::INTERESTS_LANGUAGES => $lng->txt("test_interests_languages"),
77 self::INTERESTS_IT => $lng->txt("test_interests_it")
78 );
79
80 $intr = $factory->getDefinitionInstanceByType("MultiEnum");
81 $intr->setOptions($options);
82 $properties_def->addElement("interests", $intr);
83
84 $date = $factory->getDefinitionInstanceByType("Date");
85 $properties_def->addElement("entry_date", $date);
86
87 $dt = $factory->getDefinitionInstanceByType("DateTime");
88 $properties_def->addElement("last_login", $dt);
89
90 // convert ADT definitions to proper ADTs
91 return $factory->getInstanceByDefinition($properties_def);
92 }
93
94
95 // CRUD/DB
96
97 // simple sequence example
98
99 protected function initDBBridge(ilADTGroupDBBridge $a_adt_db)
100 {
101 $a_adt_db->setTable("adt_test");
102 $a_adt_db->setPrimary(array("id" => array("integer", $this->id)));
103 }
104
105 protected function parsePrimary(array $a_args)
106 {
107 $this->id = (int) $a_args[0];
108 }
109
110 protected function hasPrimary()
111 {
112 return (bool) $this->id;
113 }
114
115 protected function createPrimaryKey()
116 {
117 global $DIC;
118
119 $ilDB = $DIC['ilDB'];
120
121 $this->id = $ilDB->nextId("adt_test");
122
123 // INSERT is only done if createPrimaryKey() returns TRUE!
124 return true;
125 }
126}
An exception for terminatinating execution or to throw for unit testing.
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.
$factory
Definition: metadata.php:58
if($format !==null) $name
Definition: metadata.php:230
$lng
global $ilDB
$lang
Definition: xapiexit.php:8
$DIC
Definition: xapitoken.php:46