phpldapadmin/lib/PLMTree.php
2009-06-30 21:52:55 +10:00

170 lines
5.2 KiB
PHP

<?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/PLMTree.php,v 1.2.2.1 2008/11/29 11:33:53 wurley Exp $
require HTDOCDIR.JSDIR.'phplayersmenu/lib/PHPLIB.php';
require HTDOCDIR.JSDIR.'phplayersmenu/lib/layersmenu-common.inc.php';
require HTDOCDIR.JSDIR.'phplayersmenu/lib/treemenu.inc.php';
/**
* @package phpLDAPadmin
* @author The phpLDAPadmin development team
* @author Xavier Bruyet
*/
class PLMTree extends HTMLTree {
// no support of mass deletion form
protected function draw_mass_deletion_start_form() {
}
protected function draw_mass_deletion_submit_button() {
}
protected function draw_mass_deletion_end_form() {
}
/**
* Recursively descend on the given dn and draw the tree in plm
*
* @param dn $dn Current dn.
* @param int $level Level to start drawing
* @todo: Currently draw PLM only shows the first 50 entries of the base children -
* possibly the childrens children too. Have disabed the size_limit on the base -
* need to check that it doesnt affect non PLM tree viewer and children where
* size > size_limit.
*/
protected function draw_dn($dn,$level) {
if (DEBUG_ENABLED)
debug_log('Entered with (%s,%s)',33,__FILE__,__LINE__,__METHOD__,$dn,$level);
static $tm = null;
if (! isset($tm)) {
$tm = new TreeMenu();
$tm->setDirroot(JSDIR.'phplayersmenu/');
$tm->setIcondir(IMGDIR);
$tm->setIconwww(IMGDIR);
$tm->setImgwww(JSDIR.'phplayersmenu/menuimages/');
}
$tree_plm = $this->to_plm($dn,$level);
$tm->setMenuStructureString($tree_plm);
$tm->parseStructureForMenu('pla_tree_'.$this->server_id);
$tm->setTreeMenuTheme('');
$tm->newTreeMenu('pla_tree_'.$this->server_id);
echo sprintf('<tr><td class="spacer"></td><td colspan="%s">%s</td></tr>',$this->getDepth()+3-1,$tm->getTreeMenu('pla_tree_'.$this->server_id));
}
protected function to_plm($dn,$level) {
if (DEBUG_ENABLED)
debug_log('Entered with (%s,%s)',33,__FILE__,__LINE__,__METHOD__,$dn,$level);
$ldapserver = $this->getLdapServer();
$dnEntry = $this->getEntry($dn);
if (!$dnEntry) {
$this->addEntry($dn);
$dnEntry = $this->getEntry($dn);
}
if (!$dnEntry) {
if (DEBUG_ENABLED)
debug_log('Returning (%s)',33,__FILE__,__LINE__,__METHOD__,'');
return '';
}
$encoded_dn = rawurlencode($dn);
$edit_href = sprintf('cmd.php?cmd=template_engine&server_id=%s&dn=%s',$this->server_id,$encoded_dn);
$rdn = get_rdn($dn);
$dots = '';
for ($i=0;$i<=$level+1;$i++) $dots .= '.';
# Have we tranversed this part of the tree yet?
if ($dnEntry->isOpened()) {
$child_count = $this->get_children_number($dnEntry);
$tree_plm = sprintf("%s|%s|%s|%s|%s|%s|%s\n",
$dots,
($this->get_formatted_dn($dnEntry, $level)).($child_count ? ' ('.$child_count.')' : ''),
$edit_href, $this->get_formatted_title($dnEntry, $level), $dnEntry->getIcon($ldapserver), '',
($dnEntry->isOpened() ? 1 : 0));
$tree_plm .= $this->get_plm_before_first_child($dnEntry, $level);
foreach ($dnEntry->getChildren() as $dn) {
$tree_plm .= $this->to_plm($dn,$level+1);
}
$tree_plm .= $this->get_plm_after_last_child($dnEntry, $level);
} else {
$child_count = $this->get_children_number($dnEntry);
if ($child_count) {
$tree_plm = sprintf("%s|%s|%s|%s|%s|%s|%s|%s\n",
$dots,
($this->get_formatted_dn($dnEntry, $level)).($child_count ? ' ('.$child_count.')' : ''),
$edit_href, $this->get_formatted_title($dnEntry, $level), $dnEntry->getIcon($ldapserver), '',
($dnEntry->isOpened() ? 1 : 0),
$child_count);
} else {
$tree_plm = sprintf("%s|%s|%s|%s|%s|%s|%s|%s\n",
$dots,
($this->get_formatted_dn($dnEntry, $level)),
$edit_href, $this->get_formatted_title($dnEntry, $level), $dnEntry->getIcon($ldapserver), '',
($dnEntry->isOpened() ? 1 : 0),
$child_count === false ? 1 : 0);
}
}
if (DEBUG_ENABLED)
debug_log('Returning (%s)',33,__FILE__,__LINE__,__METHOD__,$tree_plm);
return $tree_plm;
}
protected function get_formatted_title($entry, $level) {
return $entry->getDn();
}
protected function get_plm_before_first_child($entry, $level) {
$ldapserver = $this->getLdapServer();
$plm = '';
if (!$ldapserver->isReadOnly() && ($entry->getChildrenNumber() > 10) && ($ldapserver->isShowCreateEnabled())) {
$encoded_dn = rawurlencode($entry->getDn());
$create_href = sprintf('cmd.php?cmd=template_engine&server_id=%s&container=%s', $ldapserver->server_id, $encoded_dn);
$dots = '.';
for ($i=0;$i<=$level+1;$i++) $dots .= '.';
$plm = sprintf("%s|%s|%s|%s|%s|%s|%s\n",
$dots, _('Create new entry here'),
$create_href, $entry->getDn(), 'star.png', '', 0);
}
return $plm;
}
protected function get_plm_after_last_child($entry, $level) {
$ldapserver = $this->getLdapServer();
$plm = '';
if (!$ldapserver->isReadOnly() && !$entry->isLeaf() && $ldapserver->isShowCreateEnabled()) {
$encoded_dn = rawurlencode($entry->getDn());
$create_href = sprintf('cmd.php?cmd=template_engine&server_id=%s&container=%s', $ldapserver->server_id, $encoded_dn);
$dots = '.';
for ($i=0;$i<=$level+1;$i++) $dots .= '.';
$plm = sprintf("%s|%s|%s|%s|%s|%s|%s\n",
$dots, _('Create new entry here'),
$create_href, $entry->getDn(), 'star.png', '', 0);
}
return $plm;
}
}
?>