X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_SnapShotDialog.inc;h=00e1f870d53a952be0c7e13b33dd28575c79aabf;hb=387a8ff163da84a9885feaa4fb936031c93eebf5;hp=c2e0f8f864ecd06fbc247d82f4397d8faa13029e;hpb=3464d85128dd95256986bffcd94db0ac7584acbf;p=gosa.git
diff --git a/include/class_SnapShotDialog.inc b/include/class_SnapShotDialog.inc
index c2e0f8f86..00e1f870d 100755
--- a/include/class_SnapShotDialog.inc
+++ b/include/class_SnapShotDialog.inc
@@ -4,18 +4,35 @@
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;
+ var $dns = array();
+ var $snap_shot_bases = array();
+ var $last_list = array();
+
- function SnapShotDialog($config,$dn,$parent)
+ function SnapShotDialog(&$config, $dn, &$parent)
{
- plugin::plugin($config,$dn);
- $this->parent = $parent;
+ plugin::plugin($config,$dn);
+ $this->parent = &$parent;
+ $this->ui = get_userinfo();
}
+
+
+ /* Show deleted snapshots from these bases */
+ function set_snapshot_bases($bases)
+ {
+ $this->snap_shot_bases = $bases;
+ }
/* Display snapshot dialog */
@@ -24,47 +41,100 @@ class SnapShotDialog extends plugin
plugin::execute();
$smarty = get_smarty();
- /* We must restore a snapshot, so get snapshots */
- if($this->Restore){
+ $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));
+
+ $found = false;
+ foreach($this->last_list as $t_stamp => $obj){
+ if($obj['dn'] == $entry){
+ $found = true;
+ break;
+ }
+ }
+
+ if($found){
+ $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')));
+ }
+ }
+ }
+
+ /* Remove snapshot */
+ if(isset($_POST['delete_confirm']) && !empty($this->del_dn)){
+ $this->remove_snapshot($this->del_dn);
+ $this->del_dn = "";
+ }
+
+ /* 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(is_array($this->dn)){
- $tmp = array();
- foreach($this->dn as $dn){
+ $tmp = array();
+ if($this->display_all_removed_objects){
+ if(count($this->snap_shot_bases)){
+ foreach($this->snap_shot_bases as $dn){
$tmp = array_merge($tmp,$this->getAllDeletedSnapshots($dn,true));
}
}else{
- $tmp = $this->getAllDeletedSnapshots($this->dn,true);
+ $tmp = $this->getAllDeletedSnapshots($this->snap_shot_bases,true);
}
}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 */
+ $this->last_list = $list_of_elements;
+ 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 +144,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 +164,5 @@ class SnapShotDialog extends plugin
}
}
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>