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;
}
}
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();
$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[] = _("Please specify a valid description for this snapshot.");
}
}
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:
?>