4 && substr(strtolower($file), strlen($file) - 4) === '.php' && !is_dir($file) && $file != "class.database.php" && $file != "configuration.php" && $file != "setup.php" && $file != "class.pog_base.php") { $objects[] = $file; } } closedir($dir); foreach ($objects as $object) { include_once("../objects/{$object}"); } eval ('$instance = new '.$objectName.'();'); $attributeList = array_keys(get_object_vars($instance)); $noOfExternalAttributes = sizeof($attributeList) - 3; // get object id to perform action. required for Delete() and Update() $objectId = isset($_REQUEST['objectid']) ? $_REQUEST['objectid'] : ''; // get the ids of all open nodes before action is performed $openNodes = isset($_REQUEST['opennodes']) ? explode('-', $_REQUEST['opennodes']) : ''; // get action to perform $action = $_GET['action']; $currentNode = -1; if (isset($_GET['currentnode'])) { // get the node id on which the action is performed. required for Delete() and Update() $currentNode = $_GET['currentnode']; $currentNodeParts = explode('Xnode', $currentNode); if (isset($currentNodeParts[1])) { $currentNode = $currentNodeParts[1]; } } $root = new XMenu(); if ($openNodes != '') { foreach ($openNodes as $openNode) { $openNodeParts = explode('Xtree', $openNode); $noParts = sizeof($openNodeParts); // all open nodes when action is initiated if ($noParts > 0 && is_numeric($openNodeParts[$noParts - 1])) { // initialize all open nodes $root->visibleNodes[] = $openNodeParts[$noParts - 1]; } } } // perform requested action switch($action) { case 'Add': eval ('$instance = new '.$objectName.'();'); $attributeList = array_keys(get_object_vars($instance)); foreach($attributeList as $attribute) { if ($attribute != "pog_attribute_type" && $attribute!= "pog_query") { if (isset($instance->pog_attribute_type[$attribute])) { if (isset($_GET[$attribute])) { $instance->{$attribute} = $_GET[$attribute]; } } } } if ($instance->Save()) { for ($i = 0; $i < sizeof($root->visibleNodes); $i++) { if ($root->visibleNodes[$i] > ($noOfExternalAttributes + 2)) { $root->visibleNodes[$i] += ($noOfExternalAttributes + 1); } } } RefreshTree($anchor, $root); break; case 'Refresh': RefreshTree($objectName, $root, $offset, $limit); break; case 'GetList': RefreshTree($anchor, $root, $offset, $limit); break; case 'DeleteDeep': case 'Delete': eval ('$instance = new '.$objectName.'();'); $instance->Get($objectId); $instance->Delete(($action == 'DeleteDeep')); for ($i = 0; $i < sizeof($root->visibleNodes); $i++) { if ($root->visibleNodes[$i] > ($noOfExternalAttributes + 2)) { if (intval($root->visibleNodes[$i]) == intval($openNodeParts[$noParts - 1])) { $root->visibleNodes[$i] = null; } else if ($root->visibleNodes[$i] > $currentNode) { $root->visibleNodes[$i] -= ($noOfExternalAttributes + 1); } } } RefreshTree($anchor, $root); break; case 'Update': eval ('$instance = new '.$objectName.'();'); $instance->Get($objectId); $attributeList = array_keys(get_object_vars($instance)); foreach($attributeList as $attribute) { if ($attribute != "pog_attribute_type" && $attribute!= "pog_query") { if (isset($instance->pog_attribute_type[$attribute])) { if (isset($_GET[$attribute])) { $instance->{$attribute} = $_GET[$attribute]; } } } } $instance->Save(); RefreshTree($anchor, $root); break; } /** * Refreshes the tree after an operation while preserving node statuses * * @param unknown_type $objectName * @param unknown_type $root */ function RefreshTree($objectName, $root, $offset = '', $limit = '') { if ($limit == '') { $offset = 0; $limit = 50; } $sqlLimit = "$offset, $limit"; $js = "new Array("; eval ('$instance = new '.$objectName.'();'); $recCount = GetNumberOfRecords(strtolower($objectName)); $attributeList = array_keys(get_object_vars($instance)); $instanceList = $instance->GetList(array(array(strtolower($objectName)."Id",">",0)), strtolower($objectName)."Id", false, $sqlLimit); $x = 0; $masterNode = &$root->addItem(new XNode("".$objectName." {Dimensions:[".sizeof($instanceList)."]}", false, "setup_images/folderclose.gif","setup_images/folderopen.gif")); $node = &$masterNode->addItem(new XNode("ADD RECORD", false,"setup_images/folderclose.gif","setup_images/folderopen.gif")); foreach($attributeList as $attribute) { if ($attribute != "pog_attribute_type" && $attribute!= "pog_query") { if ($x != 0 && isset($instance->pog_attribute_type[$attribute])) { $js .= '"'.$attribute.'",'; $thisValue = ConvertAttributeToHtml($attribute, $instance->pog_attribute_type[$attribute]['db_attributes'], $instance->{$attribute}, $instance->{$attributeList[0]}); $subnode = &$node->addItem(new XNode("
".$attribute." {".$instance->pog_attribute_type[$attribute]['db_attributes'][1]."}
".$thisValue."
", false,'',"setup_images/folderopen.gif")); } } $x++; } $js = trim($js, ","); $js .= ")"; $subnode = &$node->addItem(new XNode("
", false,'',"folderopen.gif")); if ($instanceList != null) { foreach($instanceList as $instance) { ConvertObjectToNode($instance, $masterNode, $js, $objectName); } } $menu_html_code = $root->generateTree(); $menu_html_code .= ""; $table = "


".$pre.$menu_html_code."
"; echo $table; } ?>