X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_SnapShotDialog.inc;h=315d1525de8e90c3bb4b8e627b4a7a33c7471c5e;hb=d0e6a1983bf4887f5c47dc5f5ddc134083363a20;hp=bdaac544ff93e8c0b400c799c2fb62b3ec378ac4;hpb=6b08ffcaafe0d9755aca07c6b9f624c3775c2dd0;p=gosa.git diff --git a/gosa-core/include/class_SnapShotDialog.inc b/gosa-core/include/class_SnapShotDialog.inc index bdaac544f..315d1525d 100644 --- a/gosa-core/include/class_SnapShotDialog.inc +++ b/gosa-core/include/class_SnapShotDialog.inc @@ -23,165 +23,169 @@ /* Snap shot dialog class */ 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 $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(); - } - - - /* Show deleted snapshots from these bases */ - function set_snapshot_bases($bases) - { - $this->snap_shot_bases = $bases; - } - - - /* Display snapshot dialog */ - function execute() - { - 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)); - - $found = false; - foreach($this->last_list as $t_stamp => $obj){ - if($obj['dn'] == $entry){ - $found = true; - break; - } + 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 $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(); + + // Prepare lists + $this->snapList = new sortableListing(); + $this->snapList->setDeleteable(false); + $this->snapList->setEditable(false); + $this->snapList->setWidth("100%"); + $this->snapList->setHeight("200px"); + $this->snapList->setHeader(array(_("Date"), _("Name") )); + $this->snapList->setColspecs(array('140px','*','60px')); + $this->snapList->setDefaultSortColumn(0); + + } + + + /* Show deleted snapshots from these bases */ + function set_snapshot_bases($bases) + { + $this->snap_shot_bases = $bases; + } + + + /* Display snapshot dialog */ + function execute() + { + plugin::execute(); + $smarty = get_smarty(); + + $ui = get_userinfo(); + $once = true; + foreach($_POST as $name => $value){ + if((preg_match("/^RemoveSnapShot_/",$name)) && ($once)){ + $once = false; + $entry = preg_replace("/^RemoveSnapShot_/","",$name); + $entry = base64_decode($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("info", sprintf(_("You are about to delete the snapshot %s."), bold(LDAP::fix($this->del_dn)))); + return($smarty->fetch (get_template_path('removeSnapshots.tpl'))); + } + } } - 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'))); + /* 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(); + $tmp = array(); + $handler = new SnapshotHandler($this->config); + + if($this->display_all_removed_objects){ + if(count($this->snap_shot_bases)){ + foreach($this->snap_shot_bases as $dn){ + $tmp = array_merge($tmp,$handler->getAllDeletedSnapshots($dn,true)); + } + }else{ + $tmp = $handler->getAllDeletedSnapshots($this->snap_shot_bases,true); + } + }else{ + $tmp = $handler->Available_SnapsShots($this->dn,true); + } + + $this->snapList->setAcl('rwcdm'); + + $list_of_elements = array(); + + /* Walk through all entries and setup the display text */ + foreach($tmp as $key => $entry){ + + /* Check permissions */ + $TimeStamp = $entry['gosaSnapshotTimestamp'][0]; + $list_of_elements[$TimeStamp] = $entry; + } + + /* Sort generated list */ + krsort($list_of_elements); + + /* Add Elements to list */ + $this->last_list = $list_of_elements; + + $data = $lData = array(); + foreach($list_of_elements as $entry){ + $actions= image('images/lists/restore.png','RestoreSnapShot_%KEY',_("Restore snapshot")); + $actions.= image('images/lists/trash.png','RemoveSnapShot_%KEY',_("Delete snapshot")); + $time_stamp = date(_("Y-m-d, H:i:s"),preg_replace("/\-.*$/","",$entry['gosaSnapshotTimestamp'][0])); + $display_data = $entry['description'][0]; + $data[$entry['dn']] = $entry; + $lData[$entry['dn']] = array('data'=> + array( + $time_stamp, + htmlentities(utf8_decode(LDAP::fix($display_data))), + str_replace("%KEY",base64_encode($entry['dn']), $actions))); + } + + $this->snapList->setListData($data, $lData); + $this->snapList->update(); + $smarty->assign("SnapShotList",$this->snapList->render()); + $smarty->assign("CountSnapShots",count($list_of_elements)); } - } + + $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",LDAP::fix($this->dn)); + $smarty->assign("CurrentDescription",$this->CurrentDescription); + return($smarty->fetch(get_template_path("snapshotdialog.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(); - $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->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){ - $TimeStamp = $entry['gosaSnapshotTimestamp'][0]; - $list_of_elements[$TimeStamp] = $entry; - } - - /* Sort generated list */ - krsort($list_of_elements); - - /* 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]; - } - - $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("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"))); - } - - - function check() - { - $message = plugin::check(); - if(!$this->display_restore_dialog){ - if(empty($this->CurrentDescription)){ - $message[]= msgPool::invalid(_("Description")); - } - } - return($message); - } - - - function save_object() - { - plugin::save_object(); - foreach($this->attributes as $name){ - if(isset($_POST[$name])){ - $this->$name = stripslashes($_POST[$name]); - } - } - } + + function check() + { + $message = plugin::check(); + if(!$this->display_restore_dialog){ + if(empty($this->CurrentDescription)){ + $message[]= msgPool::invalid(_("Description")); + } + } + return($message); + } + + + function save_object() + { +// plugin::save_object(); + foreach($this->attributes as $name){ + if(isset($_POST[$name])){ + $this->$name = stripslashes($_POST[$name]); + } + } + } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: