diff --git a/plugins/admin/ogroups/class_ogroupManagement.inc b/plugins/admin/ogroups/class_ogroupManagement.inc
index 2cb1f755a1b30980e5131e093ffeef432af61d86..82550f477e61818cad138804579339fca8bb9070 100644 (file)
var $CopyPasteHandler = NULL;
var $DivListOGroup = NULL;
+ var $start_pasting_copied_objects = FALSE;
function ogroupManagement ($config, $dn= NULL)
{
$s_entry = preg_replace("/^cut_/i","",$key);
}elseif(preg_match("/^remove_multiple_ogroups/",$key)){
$s_action="del_multiple";
+ }elseif(preg_match("/^multiple_cut_ogroups/",$key)){
+ $s_action = "cut_multiple";
+ }elseif(preg_match("/^multiple_copy_ogroups/",$key)){
+ $s_action = "copy_multiple";
}elseif(preg_match("/_group_edit_/",$key)){
$type = preg_replace("/_group_edit_.*$/","",$key);
$s_action="edit";
****************/
/* Display the copy & paste dialog, if it is currently open */
- $ret = $this->copyPasteHandling($s_action,$s_entry);
+ $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry);
if($ret){
return($ret);
}
- /****************
+
+ /***************
Create a new object group
****************/
/* Delete request is permitted, perform LDAP action */
$this->ogroup= new ogrouptabs($this->config,$this->config->data['TABS']['OGROUPTABS'], $dn);
$this->ogroup->delete ();
- gosa_log ("Object group'".$dn."' has been removed");
unset ($this->ogroup);
$this->ogroup= NULL;
} else {
/* Normally this shouldn't be reached, send some extra
logs to notify the administrator */
print_red (_("You are not allowed to delete this object group!"));
- gosa_log ("Warning: '".$this->ui->uid."' tried to trick group deletion.");
+ new log("security","ogroups/".get_class($this),$dn,array(),"Tried to trick deletion.");
}
/* Remove lock file after successfull deletion */
del_lock ($dn);
$this->ogroup= new ogrouptabs($this->config,
$this->config->data['TABS']['OGROUPTABS'], $this->dn);
$this->ogroup->delete ();
- gosa_log ("Object group'".$this->dn."' has been removed");
unset ($this->ogroup);
$this->ogroup= NULL;
} else {
/* Normally this shouldn't be reached, send some extra
logs to notify the administrator */
print_red (_("You are not allowed to delete this object group!"));
- gosa_log ("Warning: '".$this->ui->uid."' tried to trick group deletion.");
+ new log("security","ogroups/".get_class($this),$dn,array(),"Tried to trick deletion.");
}
/* Remove lock file after successfull deletion */
/* Save user data to ldap */
$this->ogroup->save();
- gosa_log ("Object group'".$this->dn."' has been saved");
if (!isset($_POST['edit_apply'])){
/* Group has been saved successfully, remove lock from
}
- function copyPasteHandling($s_action,$s_entry)
+ function copyPasteHandling_from_queue($s_action,$s_entry)
{
- if($this->CopyPasteHandler){
-
- /* Paste copied/cutted object in here
- */
- if(($s_action == "editPaste") || ($this->CopyPasteHandler->stillOpen())){
- $this->CopyPasteHandler->save_object();
- $this->CopyPasteHandler->SetVar("base", $this->DivListOGroup->selectedBase);
- return($this->CopyPasteHandler->execute());
- }
+ /* Check if Copy & Paste is disabled */
+ if(!is_object($this->CopyPasteHandler)){
+ return("");
+ }
- /* Copy current object to CopyHandler
- */
- if($s_action == "copy"){
-
+ /* Add a single entry to queue */
+ if($s_action == "cut" || $s_action == "copy"){
+
+ /* Cleanup object queue */
+ $this->CopyPasteHandler->cleanup_queue();
+ $dn = $this->ogrouplist[$s_entry]['dn'];
+ $this->CopyPasteHandler->add_to_queue($dn,$s_action,"ogrouptabs","OGROUPTABS","ogroups");
+ }
- $this->CopyPasteHandler->Clear();
- $dn = $this->ogrouplist[$s_entry]['dn'];
- /* Check acls */
- $acl_all= $this->ui->has_complete_category_acls($dn,"ogroups");
- if(preg_match("/(c.*w|w.*c)/",$acl_all)){
- $obj = new ogrouptabs($this->config, $this->config->data['TABS']['OGROUPTABS'], $dn);
- $objNew = new ogrouptabs($this->config, $this->config->data['TABS']['OGROUPTABS'], "new");
+ /* Add entries to queue */
+ if($s_action == "copy_multiple" || $s_action == "cut_multiple"){
- $types_of_tabs = $obj->by_object['ogroup']->gosaGroupObjects;
- $objNew->by_object['ogroup']->gosaGroupObjects = $types_of_tabs;
- $objNew->reload($types_of_tabs);
+ /* Cleanup object queue */
+ $this->CopyPasteHandler->cleanup_queue();
- $this->CopyPasteHandler->Copy($obj,$objNew);
+ /* Add new entries to CP queue */
+ foreach($this->list_get_selected_items() as $id){
+ $dn = $this->ogrouplist[$id]['dn'];
+
+ if($s_action == "copy_multiple"){
+ $this->CopyPasteHandler->add_to_queue($dn,"copy","ogrouptabs","OGROUPTABS","ogroups");
+ }
+ if($s_action == "cut_multiple"){
+ $this->CopyPasteHandler->add_to_queue($dn,"cut","ogrouptabs","OGROUPTABS","ogroups");
}
}
+ }
- /* Copy current object to CopyHandler
- */
- if($s_action == "cut"){
- $this->CopyPasteHandler->Clear();
- $dn = $this->ogrouplist[$s_entry]['dn'];
-
- /* Check acls */
- $acl_all= $this->ui->has_complete_category_acls($dn,"ogroups");
- if(preg_match("/(c.*w|w.*c)/",$acl_all)){
- $obj = new ogrouptabs($this->config, $this->config->data['TABS']['OGROUPTABS'], $dn);
- $this->CopyPasteHandler->Cut($obj);
- }
+ /* Start pasting entries */
+ if($s_action == "editPaste"){
+ $this->start_pasting_copied_objects = TRUE;
+ }
+
+ /* Return C&P dialog */
+ if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){
+
+ /* Load entry from queue and set base */
+ $this->CopyPasteHandler->load_entry_from_queue();
+ $this->CopyPasteHandler->SetVar("base",$this->DivListOGroup->selectedBase);
+
+ /* Get dialog */
+ $data = $this->CopyPasteHandler->execute();
+
+ /* Return dialog data */
+ if(!empty($data)){
+ return($data);
}
}
+ /* Automatically disable status for pasting */
+ if(!$this->CopyPasteHandler->entries_queued()){
+ $this->start_pasting_copied_objects = FALSE;
+ }
+ return("");
}