<?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; } } ?>