X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_SnapShotDialog.inc;h=4dd1466360bfce1857096b691f3c71737f30a170;hb=41b3851a98576e3cd9b843a63353a9e669c4f501;hp=c2e0f8f864ecd06fbc247d82f4397d8faa13029e;hpb=3464d85128dd95256986bffcd94db0ac7584acbf;p=gosa.git diff --git a/include/class_SnapShotDialog.inc b/include/class_SnapShotDialog.inc index c2e0f8f86..4dd146636 100755 --- a/include/class_SnapShotDialog.inc +++ b/include/class_SnapShotDialog.inc @@ -4,17 +4,23 @@ class SnapShotDialog extends plugin { var $config; - var $attributes = array("CurrentDescription"); - var $CurrentDescription = ""; - var $parent = NULL; - var $Restore = false; /* Defines the restore mode */ - var $DeletedOnes = false; /* Specifies which objects will be listed */ - var $dialog = true; + var $attributes= array("CurrentDescription"); + var $CurrentDescription= ""; + var $parent= NULL; + var $display_restore_dialog= false; /* Defines the restore mode */ + var $display_all_removed_objects= false; /* Specifies which objects will be listed, all + snapshots for a single entry or all snapshots + of already deleted objects */ + var $dialog= true; + var $del_dn= ""; + var $ui; + var $acl; function SnapShotDialog($config,$dn,$parent) { plugin::plugin($config,$dn); - $this->parent = $parent; + $this->parent = $parent; + $this->ui = get_userinfo(); } @@ -23,14 +29,49 @@ class SnapShotDialog extends plugin { plugin::execute(); $smarty = get_smarty(); + + $once = true; + foreach($_POST as $name => $value){ + if((preg_match("/^RemoveSnapShot_/",$name)) && ($once)){ + $once = false; + + $entry = preg_replace("/^RemoveSnapShot_/","",$name); + $entry = base64_decode(preg_replace("/_[xy]$/","",$entry)); + + $acl = get_permissions ($entry, $this->ui->subtreeACL); + $this->acl = get_module_permission($acl, "snapshot", $entry ); + + if (chkacl($this->acl, "delete") == ""){ + $this->del_dn = $entry; + $smarty= get_smarty(); + $smarty->assign("intro", sprintf(_("You're about to delete the snapshot '%s'."), @LDAP::fix($this->del_dn))); + return($smarty->fetch (get_template_path('remove.tpl'))); + } else { + + /* Obviously the user isn't allowed to delete. Show message and + clean session. */ + print_red (_("You are not allowed to delete this snapshot!")); + } + } + } + + /* Remove snapshot */ + if(isset($_POST['delete_confirm']) && !empty($this->del_dn)){ + $acl = get_permissions ($this->del_dn, $this->ui->subtreeACL); + $this->acl = get_module_permission($acl, "snapshot", $this->del_dn); + if (chkacl($this->acl, "delete") == ""){ + $this->remove_snapshot($this->del_dn); + $this->del_dn = ""; + } + } - /* We must restore a snapshot, so get snapshots */ - if($this->Restore){ + /* We must restore a snapshot */ + if($this->display_restore_dialog){ /* Should we only display all snapshots of already deleted objects or the snapshots for the given object dn */ $res = array(); - if($this->DeletedOnes){ + if($this->display_all_removed_objects){ if(is_array($this->dn)){ $tmp = array(); foreach($this->dn as $dn){ @@ -42,29 +83,50 @@ class SnapShotDialog extends plugin }else{ $tmp = $this->Available_SnapsShots($this->dn,true); } - + + $DivListSnapShots = new DivSelectBox("SnapShotRestore"); + $DivListSnapShots->SetHeight(180); + + $list_of_elements = array(); + /* Walk through all entries and setup the display text */ foreach($tmp as $key => $entry){ - - $data = $entry['description'][0]; - $date = date("d.m.Y H.i.s",preg_replace("/\-.*$/","",$entry['gosaSnapshotTimestamp'][0])); - if($this->DeletedOnes){ - $data.= " - ".$entry['gosaSnapshotDN'][0]; - } + $TimeStamp = $entry['gosaSnapshotTimestamp'][0]; + $list_of_elements[$TimeStamp] = $entry; + } + + /* Sort generated list */ + krsort($list_of_elements); - if(strlen($data) > 83){ - $data= substr($data,0,80)." ..."; + /* Add Elements to divlist */ + foreach($list_of_elements as $entry){ + + $actions= " "; + $actions.= " "; + + $time_stamp = date(_("Y-m-d, H:i:s"),preg_replace("/\-.*$/","",$entry['gosaSnapshotTimestamp'][0])); + $display_data = $entry['description'][0]; + + if($this->display_all_removed_objects){ + $display_data.= " - ".$entry['gosaSnapshotDN'][0]; } - - $res[base64_encode($entry['dn'])] = $date." - ".$data; - } - natcasesort($res); - $smarty->assign("SnapShots",array_reverse($res)); - $smarty->assign("CountSnapShots",count($res)); + + $field0 = array("string"=> $time_stamp , "attach"=> "style='vertical-align:top;width:120px;'"); + $field1 = array("string"=> htmlentities (utf8_decode($display_data)), "attach"=> ""); + $field2 = array("string"=> preg_replace("/%KEY/",base64_encode($entry['dn']),$actions) , + "attach"=> "style='border-right:0px;vertical-align:top;width:40px;text-align:right;'"); + $DivListSnapShots->AddEntry(array($field0,$field1,$field2)); + } + + $smarty->assign("SnapShotDivlist",$DivListSnapShots->DrawList()); + $smarty->assign("CountSnapShots",count($list_of_elements)); } - $smarty->assign("RestoreMode",$this->Restore); - $smarty->assign("CurrentDate",date("d.m.Y H:i")); + $smarty->assign("restore_deleted",$this->display_all_removed_objects); + $smarty->assign("RestoreMode",$this->display_restore_dialog); + $smarty->assign("CurrentDate",date(_("Y-m-d, H:i:s"))); $smarty->assign("CurrentDN",$this->dn); $smarty->assign("CurrentDescription",$this->CurrentDescription); return($smarty->fetch(get_template_path("snapshotdialog.tpl"))); @@ -74,7 +136,7 @@ class SnapShotDialog extends plugin function check() { $message = plugin::check(); - if(!$this->Restore){ + if(!$this->display_restore_dialog){ if(empty($this->CurrentDescription)){ $message[] = _("Please specify a valid description for this snapshot."); } @@ -94,4 +156,5 @@ class SnapShotDialog extends plugin } } +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>