pid= preg_replace("/[^0-9]/", "", microtime(TRUE)); // Transfer data $this->setBases($bases); $this->setBase($base); } function setSubmitButton($flag) { $this->submitButton= $flag; } function setHeight($value) { $this->height= $value; } function setBase($base) { if (isset($this->pathMapping[$base])) { $this->base= $base; $this->update(true); } } function checkBase($base) { return isset($this->pathMapping[$base]); } function checkLastBaseUpdate() { return $this->lastState; } function setBases($bases) { global $config; $this->pathMapping= array(); $selected= $this->base == $config->current['BASE']?"Selected":""; $first= true; $last_indent= 2; foreach ($bases as $base => $dummy) { // Build path style display $elements= explode(',', substr($base, 0, strlen($base) - strlen($config->current['BASE']))); $elements= array_reverse($elements, true); $this->pathMapping[$base]= $base == $config->current['BASE']? '/' : ldap::fix(preg_replace('/(^|,)[a-z0-9]+=/i', '/', implode(',', $elements))); $this->pathMapping[$base]= stripslashes( $this->pathMapping[$base]); } // Save bases to session for autocompletion session::global_set('pathMapping', $this->pathMapping); session::global_set('department_info', $config->department_info); } function update($force= false) { global $config; // Analyze for base changes if needed $this->action= null; $last_base= $this->base; if(isset($_REQUEST['BPID']) && $_REQUEST['BPID'] == $this->pid) { if (isset($_POST['bs_rebase_'.$this->pid]) && !empty($_POST['bs_rebase_'.$this->pid])) { $new_base= base64_decode($_POST['bs_rebase_'.$this->pid]); if (isset($this->pathMapping[$new_base])) { $this->base= $new_base; $this->action= 'rebase'; } else { $this->lastState= false; return false; } }else{ // Input field set? if (isset($_POST['bs_input_'.$this->pid])) { // Take over input field base if ($this->submitButton && isset($_POST['submit_base_'.$this->pid]) || !$this->submitButton) { // Check if base is available $this->lastState= false; foreach ($this->pathMapping as $key => $path) { if (mb_strtolower($path) == mb_strtolower(get_post('bs_input_'.$this->pid))) { $this->base= $key; $this->lastState= true; break; } } } } } } /* Skip if there's no change */ if (($this->tree && $this->base == $last_base) && !$force) { return true; } $link= "onclick=\"\$('bs_rebase_".$this->pid."').value='".base64_encode($config->current['BASE'])."'; $('submit_tree_base_".$this->pid."').click();\""; $this->tree= "pid}').hide(); \" onfocus=\" \$('bs_{$this->pid}').hide(); \" onmouseover=\" mouseIsStillOver = true; function showIt() { if(mouseIsStillOver){ \$('bs_".$this->pid."').show(); } }; Element.clonePosition(\$('bs_".$this->pid."'), 'bs_input_".$this->pid."', {setHeight: false, setWidth: false, offsetTop:(Element.getHeight('bs_input_".$this->pid."'))}); rtimer=showIt.delay(0.25); \" onmouseout=\" mouseIsStillOver=false; rtimer=Element.hide.delay(0.25,'bs_".$this->pid."')\" value=\"".preg_replace('/"/','"',$this->pathMapping[$this->base])."\">"; // Autocompleter $this->tree.= "
". ""; $selected= $this->base == $config->current['BASE']?"Selected":""; $this->tree.= " \n"; // Draw submitter if required if ($this->submitButton) { $this->tree.= image('images/lists/submit.png', "submit_base_".$this->pid, _("Submit")); } $this->tree.= ""; $this->tree.= ""; $this->tree.= ""; $this->lastState= true; return true; } function gennonbreaks($string) { return str_replace('-', '‑', str_replace(' ', ' ', $string)); } function render() { return $this->tree; } function getBase() { return $this->base; } function getAction() { // Do not do anything if this is not our BPID, or there's even no BPID available... if(!isset($_REQUEST['BPID']) || $_REQUEST['BPID'] != $this->pid) { return; } if ($this->action) { return array("targets" => array($this->base), "action" => $this->action); } return null; } } ?>