31 foreach ($modules as $module) {
32 foreach ($module->attr_collections as $coll_i => $coll) {
33 if (!isset($this->info[$coll_i])) {
34 $this->info[$coll_i] =
array();
36 foreach ($coll as $attr_i => $attr) {
37 if ($attr_i === 0 && isset($this->info[$coll_i][$attr_i])) {
39 $this->info[$coll_i][$attr_i] = array_merge(
40 $this->info[$coll_i][$attr_i],
45 $this->info[$coll_i][$attr_i] = $attr;
50 foreach ($this->info as $name => $attr) {
65 if (!isset($attr[0])) {
71 for ($i = 0; isset($merge[$i]); $i++) {
72 if (isset($seen[$merge[$i]])) {
75 $seen[$merge[$i]] =
true;
77 if (!isset($this->info[$merge[$i]])) {
80 foreach ($this->info[$merge[$i]] as $key => $value) {
81 if (isset($attr[$key])) {
86 if (isset($this->info[$merge[$i]][0])) {
88 $merge = array_merge($merge, $this->info[$merge[$i]][0]);
104 $processed =
array();
106 foreach ($attr as $def_i => $def) {
112 if (isset($processed[$def_i])) {
117 if ($required = (strpos($def_i,
'*') !==
false)) {
119 unset($attr[$def_i]);
120 $def_i = trim($def_i,
'*');
121 $attr[$def_i] = $def;
124 $processed[$def_i] =
true;
127 if (is_object($def)) {
129 $attr[$def_i]->required = ($required || $attr[$def_i]->required);
133 if ($def ===
false) {
134 unset($attr[$def_i]);
138 if (
$t = $attr_types->get($def)) {
140 $attr[$def_i]->required = $required;
142 unset($attr[$def_i]);
doConstruct($attr_types, $modules)
performInclusions(&$attr)
Takes a reference to an attribute associative array and performs all inclusions specified by the zero...
$info
Associative array of attribute collections, indexed by name.
__construct($attr_types, $modules)
Performs all expansions on internal data for use by other inclusions It also collects all attribute c...
Create styles array
The data for the language used.
Defines common attribute collections that modules reference.
expandIdentifiers(&$attr, $attr_types)
Expands all string identifiers in an attribute array by replacing them with the appropriate values in...