protected static function _generateMenuEnumerationTree(Enumeration $enumeration) { static $enumerationIds = array(); $enumerationId = $enumeration->enumerationId; $enumerationsClosure = new EnumerationsClosure(); $descendants = $enumerationsClosure->getEnumerationTreeById($enumerationId); $displayOrder = 0; foreach ($descendants as $enum) { if (isset($enumerationIds[$enum->enumerationId])) { continue; } $enumerationIds[$enum->enumerationId] = true; $displayOrder += 10; $menu = new MenuItem(); $menu->siteSection = 'All'; $menu->type = 'freeform'; $menu->active = 1; $menu->title = $enum->name; //$menu->displayOrder = $displayOrder; $menu->displayOrder = $enum->enumerationId; // temporarily set displayOrder using the enumerationId $menu->parentId = $enumerationId; $menu->persist(); $enum->ormId = $menu->menuId; $enum->persist(); if ($enumerationId != $enum->enumerationId) { // prevents infinite loop self::_generateMenuEnumerationTree($enum); } } }
protected function _generateEnumerationTree(SimpleXMLElement $xml, $enumerationId) { static $enumerationList = array(); $enumerationsClosure = new EnumerationsClosure(); $descendants = $enumerationsClosure->getEnumerationTreeById($enumerationId); $item = null; foreach ($descendants as $enum) { if (in_array($enum->enumerationId, $enumerationList)) { continue; } $icon = ''; if (strlen($enum->ormClass) > 0 && class_exists($enum->ormClass)) { $icon = "<a onclick=\"enumEditObject({$enum->enumerationId})\" title=\"Edit Object\"><img src=\"" . Zend_Registry::get('baseUrl') . "img/sm-editproblem.png\" alt=\"Edit Object\" /></a>"; } $category = ''; if ($item === null) { //$item = $xml->addChild("row"); $item = $xml; $category = $enum->category; } $leaf = $item->addChild("row"); $leaf->addAttribute('id', $enum->enumerationId); $leaf->addChild('cell', htmlspecialchars($enum->name)); $leaf->addChild('cell', $category); $leaf->addChild('cell', $enum->active); $leaf->addChild('cell', $icon); $enumerationList[] = $enum->enumerationId; if ($enumerationId != $enum->enumerationId) { // prevents infinite loop $this->_generateEnumerationTree($leaf, $enum->enumerationId); } } }