Code

Updated to regex support
[gosa.git] / include / class_SnapShotDialog.inc
index 4d44f0b708e5983a162d5c55e9488db3e28a289a..66211bfd029c91e024cf433d78f4d7cee8691317 100755 (executable)
@@ -4,23 +4,35 @@
 class SnapShotDialog extends plugin 
 {
        var $config;
-       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 $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)
        {
-               plugin::plugin($config,$dn);
-               $this->parent   = $parent;
-               $this->ui               = get_userinfo();
+    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 */
@@ -28,7 +40,7 @@ class SnapShotDialog extends plugin
        {
                plugin::execute();
                $smarty = get_smarty();
-       
+
                $once = true;
                foreach($_POST as $name => $value){
                        if((preg_match("/^RemoveSnapShot_/",$name)) && ($once)){
@@ -37,31 +49,27 @@ class SnapShotDialog extends plugin
                                $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 snap shot!"));
-                               }
-                       }
-               }
-
-               /* 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 = "";
-                       }       
+        $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 */
@@ -70,14 +78,14 @@ class SnapShotDialog extends plugin
                        /* Should we only display all snapshots of already deleted objects 
                 or the snapshots for the given object dn */
                        $res = array();
+                       $tmp = array();
                        if($this->display_all_removed_objects){
-                               if(is_array($this->dn)){
-                                       $tmp = array();
-                                       foreach($this->dn as $dn){
+                               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);
@@ -98,14 +106,15 @@ class SnapShotDialog extends plugin
                        krsort($list_of_elements);
        
                        /* Add Elements to divlist */   
+      $this->last_list = $list_of_elements;
                        foreach($list_of_elements as $entry){
 
-                               $actions = "<input type='image' src='images/edittrash.png' name='RemoveSnapShot_%KEY' 
-                                                               class='center' title='"._("Remove snapshot")."'>&nbsp;";
-                               $actions.= "<input type='image' src='images/restore.png' name='RestoreSnapShot_%KEY' 
+                               $actions= "<input type='image' src='images/restore.png' name='RestoreSnapShot_%KEY' 
                                                                class='center' title='"._("Restore snapshot")."'>&nbsp;";
+                               $actions.= "<input type='image' src='images/edittrash.png' name='RemoveSnapShot_%KEY' 
+                                                               class='center' title='"._("Remove snapshot")."'>&nbsp;";
 
-                               $time_stamp     = date("d.m.Y H.i.s",preg_replace("/\-.*$/","",$entry['gosaSnapshotTimestamp'][0]));
+                               $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){
@@ -125,7 +134,7 @@ class SnapShotDialog extends plugin
 
                $smarty->assign("restore_deleted",$this->display_all_removed_objects);
                $smarty->assign("RestoreMode",$this->display_restore_dialog);
-               $smarty->assign("CurrentDate",date("d.m.Y H:i"));
+               $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")));
@@ -155,4 +164,5 @@ class SnapShotDialog extends plugin
        }
 }
 
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
 ?>