X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_baseSelectDialog.inc;h=a2569d644fd067be9e79a2c22d874469839cb7e0;hb=b9a665f8e5359cbfdf540f344f0419668521027f;hp=a0d9f340aebc6fa00279ade6cf49d342dfdc8a32;hpb=f861fe9cc9dd8256d00141a60980456616176f50;p=gosa.git
diff --git a/plugins/admin/systems/class_baseSelectDialog.inc b/plugins/admin/systems/class_baseSelectDialog.inc
index a0d9f340a..a2569d644 100644
--- a/plugins/admin/systems/class_baseSelectDialog.inc
+++ b/plugins/admin/systems/class_baseSelectDialog.inc
@@ -2,38 +2,47 @@
class baseSelectDialog extends MultiSelectWindow
{
- var $selected_base = ""; // Used for navigation
+ var $selectedBase = ""; // Used for navigation
var $base_selection_regex = "*"; // Used regex ...
// var $Doesnothing = ""; // Checkbox which does nothing
- var $selectedBase = false; // used to specify the selected base,
- // false if none is selected
- function baseSelectDialog ($config)
+ var $BaseToUse = false; // used to specify the selected base,
+ // false if none is selected
+
+ var $allowedBases = array();
+
+ function baseSelectDialog ($config,$onlyAllowThisBases = array())
{
- MultiSelectWindow::MultiSelectWindow($config);
+ MultiSelectWindow::MultiSelectWindow($config,"BASEselectWindow");
- $this->selected_base = $config->current['BASE'];
+ $this->selectedBase = $config->current['BASE'];
+ $this->allowedBases = $onlyAllowThisBases;
+
$this->SetTitle("Base");
- $this->SetSummary(_("Please choose your prefered base"));
+ $this->SetSummary(_("Choose a base"));
$this->SetListHeader("
".
- " ".
" ".
+ " ".
" ".
+ " ".
"
");
- $this->SetInformation(_("Step in the prefered tree and click save to use the subtree as base for the currently edited user. Or click the image on the end of each entry."));
+ $this->SetInformation(_("Step in the prefered tree and click save to use the current subtree as base. Or click the image at the end of each entry."));
$this->EnableAplhabet (true);
$this->EnableCloseButton(true);
$this->EnableSaveButton (true);
+ $this->SetSaveButtonString(_("Use"));
+ $this->SetCloseButtonString(_("Cancel"));
+
$this->AddHeader(array("string"=>" ","attach"=>"style='width:20px;'"));
- $this->AddHeader(array("string"=>"Base"));
- $this->AddHeader(array("string"=>"Option","attach"=>"style='width:50px;border-right:0px;'"));
+ $this->AddHeader(array("string"=>_("Base")));
+ $this->AddHeader(array("string"=>_("Action"),"attach"=>"style='width:50px;border-right:0px;'"));
/* Text ,Value ,Name ,Is selected */
// $this->AddCheckBox("Doesnothing","servers","Doesnothing",true);
@@ -51,25 +60,34 @@ class baseSelectDialog extends MultiSelectWindow
function setEntries()
{
$this->ClearElementsList();
- $ldap = $this->config->get_ldap_link();
- $ldap->cd($this->selected_base);
- $ldap->ls("(&(objectClass=gosaDepartment)
- (|(ou=".$this->base_selection_regex.")
- (cn=".$this->base_selection_regex.")
- (description=".$this->base_selection_regex.")))",
- $this->selected_base,array("ou","description","cn"));
$link = "%s";
- $base_back = preg_replace("/^[^,]+,/","",$this->selected_base);
+ $base_back = preg_replace("/^[^,]+,/","",$this->selectedBase);
$base_back = convert_department_dn($base_back);
+
+ $filter = "(&(objectClass=gosaDepartment)".
+ "(|(ou=".$this->base_selection_regex.")".
+ "(cn=".$this->base_selection_regex.")".
+ "(description=".$this->base_selection_regex.")))";
+
+ $ui = get_userinfo();
+ $res = get_list($filter,$ui->subtreeACL,$this->selectedBase,array("ou","description","cn"),GL_SIZELIMIT);
+
/* Add departments, to be able to switch into them
*/
- while($attrs = $ldap->fetch()){
-
+ foreach($res as $attrs){
+
$key = $attrs['dn'] ;
$val = $attrs['ou'][0];
+
+ if(count($this->allowedBases) != 0){
+ if(!isset($this->allowedBases[$key])){
+ continue;
+ break;
+ }
+ }
/* Append description */
if(isset($attrs['description'][0])){
@@ -96,7 +114,7 @@ class baseSelectDialog extends MultiSelectWindow
$field1 = array("string" => "",
"attach" => "style='text-align:center;width:20px;'");
$field2 = array("string" => sprintf($link,base64_encode($key),$val), "attach" => "style=''");
- $field3 = array("string" => sprintf(" ",base64_encode($key)),
+ $field3 = array("string" => sprintf(" ",base64_encode($key)),
"attach" => "style='width:50px;border-right:0px;text-align:right;'");
$this->AddElement(array($field1,$field2,$field3));
}
@@ -105,17 +123,17 @@ class baseSelectDialog extends MultiSelectWindow
function Save()
{
MultiSelectWindow :: Save();
- $this->selectedBase = $this->selected_base;
+ $this->BaseToUse = $this->selectedBase;
}
function isSelected()
{
- return($this->selectedBase);
+ return($this->BaseToUse);
}
function setCurrentBase($base)
{
- $this->selected_base = $base;
+ $this->selectedBase = $base;
}
function save_object()
@@ -124,7 +142,7 @@ class baseSelectDialog extends MultiSelectWindow
MultiSelectWindow::save_object();
if(isset($_GET['open_dep'])){
- $this->selected_base = base64_decode($_GET['open_dep']);
+ $this->selectedBase = base64_decode($_GET['open_dep']);
}
$s_action ="";
@@ -139,31 +157,31 @@ class baseSelectDialog extends MultiSelectWindow
$tmp = preg_replace("/^usebase_/","",$key);
$tmp = preg_replace("/_.*$/","",$tmp);
$tmp = base64_decode($tmp);
- $this->selectedBase = $tmp;
+ $this->BaseToUse = $tmp;
}
}
$ui= get_userinfo();
/* Homebutton is posted */
if($s_action=="home"){
- $this->selected_base=(preg_replace("/^[^,]+,/","",$ui->dn));
- $this->selected_base=(preg_replace("/^[^,]+,/","",$this->selected_base));
+ $this->selectedBase=(preg_replace("/^[^,]+,/","",$ui->dn));
+ $this->selectedBase=(preg_replace("/^[^,]+,/","",$this->selectedBase));
}
/* back to the roots ^^ */
if($s_action=="root"){
- $this->selected_base=($this->config->current['BASE']);
+ $this->selectedBase=($this->config->current['BASE']);
}
/* If Backbutton is Posted */
if($s_action=="back"){
- $base_back = preg_replace("/^[^,]+,/","",$this->selected_base);
+ $base_back = preg_replace("/^[^,]+,/","",$this->selectedBase);
$base_back = convert_department_dn($base_back);
if(isset($this->config->departments[trim($base_back)])){
- $this->selected_base= $this->config->departments[trim($base_back)];
+ $this->selectedBase= $this->config->departments[trim($base_back)];
}else{
- $this->selected_base= $this->config->departments["/"];
+ $this->selectedBase= $this->config->departments["/"];
}
}
}