mirror of
http://git.whoc.org.uk/git/password-manager.git
synced 2025-01-25 15:21:31 +01:00
228 lines
7.7 KiB
PHP
228 lines
7.7 KiB
PHP
<?php
|
|
include "./setup_library/xPandMenu.php";
|
|
include "./setup_library/setup_misc.php";
|
|
if(file_exists("../configuration.php"))
|
|
{
|
|
include_once("../configuration.php");
|
|
}
|
|
|
|
if(file_exists("../objects/class.database.php"))
|
|
{
|
|
include_once("../objects/class.database.php");
|
|
}
|
|
include_once('../objects/class.pog_base.php');
|
|
|
|
$objectName = isset($_REQUEST['objectname']) ? $_REQUEST['objectname'] : '';
|
|
$anchor = isset($_REQUEST['anchor']) ? $_REQUEST['anchor'] : '';
|
|
$offset = isset($_REQUEST['offset']) ? $_REQUEST['offset'] : '';
|
|
$limit = isset($_REQUEST['limit']) ? $_REQUEST['limit'] : '';
|
|
|
|
|
|
//include all classes (possible relations)
|
|
$dir = opendir('../objects/');
|
|
$objects = array();
|
|
while(($file = readdir($dir)) !== false)
|
|
{
|
|
if(strlen($file) > 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("<span style='color:#998D05'>".$objectName."</span> <span style='font-weight:normal'>{Dimensions:[".sizeof($instanceList)."]}</span>", false, "setup_images/folderclose.gif","setup_images/folderopen.gif"));
|
|
$node = &$masterNode->addItem(new XNode("<span style='color:#998D05'>ADD RECORD</span>", 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("<br/><span style='color:#998D05'>".$attribute."</span> <span style='font-weight:normal;color:#ADA8B2;'>{".$instance->pog_attribute_type[$attribute]['db_attributes'][1]."}</span><br/>".$thisValue."<br/>", false,'',"setup_images/folderopen.gif"));
|
|
}
|
|
}
|
|
$x++;
|
|
}
|
|
$js = trim($js, ",");
|
|
$js .= ")";
|
|
$subnode = &$node->addItem(new XNode("<br/><a href='#' onclick='javascript:sndReq(\"Add\", getOpenNodes(), \"$objectName\", \"".$instance->{strtolower($objectName).'Id'}."\", this.parentNode.parentNode.parentNode.parentNode.id, $js, \"$objectName\");return false;'><img src='./setup_images/button_add.gif' border='0'/></a>", false,'',"folderopen.gif"));
|
|
|
|
if ($instanceList != null)
|
|
{
|
|
foreach($instanceList as $instance)
|
|
{
|
|
ConvertObjectToNode($instance, $masterNode, $js, $objectName);
|
|
}
|
|
}
|
|
|
|
$menu_html_code = $root->generateTree();
|
|
$menu_html_code .= "<div class='nav'>";
|
|
$pre = "<div class='nav'>";
|
|
if ($offset != '' && $offset != 0)
|
|
{
|
|
$pre .= "‹‹<a href='#' onclick='javascript:refTree(".($offset-$limit).", $limit, \"$objectName\");return false;'>Newer</a> | ";
|
|
$menu_html_code.= "‹‹<a href='#' onclick='javascript:refTree(".($offset-$limit).", $limit, \"$objectName\");return false;'>Newer</a> | ";
|
|
}
|
|
$pre .= "<b>".($recCount-$offset-$limit < 0 ? 0 : $recCount-$offset-$limit)." - ".($recCount-$offset)." of $recCount </b>";
|
|
$menu_html_code .= "<b>".($recCount-$offset-$limit < 0 ? 0 : $recCount-$offset-$limit)." - ".($recCount-$offset)." of $recCount </b>";
|
|
|
|
if ($offset <= $recCount - $limit)
|
|
{
|
|
$pre .= "| <a href='#' onclick='javascript:refTree(".($offset+$limit).", $limit, \"$objectName\");return false;'>Older</a>››";
|
|
$menu_html_code.= "| <a href='#' onclick='javascript:refTree(".($offset+$limit).", $limit, \"$objectName\");return false;'>Older</a>››";
|
|
}
|
|
$menu_html_code .= "</div>";
|
|
$pre .= "</div>";
|
|
$table = "<div id='container'><br/><br/>".$pre.$menu_html_code."</div>";
|
|
echo $table;
|
|
}
|
|
?>
|