Marius Burkard
2016-04-20 4569cae57f127afd093794310ccd290d2d9fdf36
interface/lib/classes/plugin_backuplist.inc.php
@@ -30,109 +30,144 @@
class plugin_backuplist extends plugin_base {
        var $module;
        var $form;
        var $tab;
        var $record_id;
        var $formdef;
        var $options;
   var $module;
   var $form;
   var $tab;
   var $record_id;
   var $formdef;
   var $options;
        function onShow() {
   function onShow() {
                global $app;
            $listTpl = new tpl;
                $listTpl->newTemplate('templates/web_backup_list.htm');
            //* Loading language file
                $lng_file = "lib/lang/".$_SESSION["s"]["language"]."_web_backup_list.lng";
                include($lng_file);
                $listTpl->setVar($wb);
            $message = '';
            $error = '';
            if(isset($_GET['backup_action'])) {
               $backup_id = intval($_GET['backup_id']);
               if($_GET['backup_action'] == 'download' && $backup_id > 0) {
                  $sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = 'backup_download' AND action_param = '$backup_id'";
                  $tmp = $app->db->queryOneRecord($sql);
                  if($tmp['number'] == 0) {
                     $message .= $wb['download_info_txt'];
                     $sql =    "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) " .
                        "VALUES (".
                        (int)$this->form->dataRecord['server_id'] . ", " .
                        time() . ", " .
                        "'backup_download', " .
                        "'".$backup_id."', " .
                        "'pending', " .
                        "''" .
                        ")";
                     $app->db->query($sql);
                  } else {
                     $error .= $wb['download_pending_txt'];
                  }
               }
               if($_GET['backup_action'] == 'restore' && $backup_id > 0) {
                  $sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = 'backup_restore' AND action_param = '$backup_id'";
                  $tmp = $app->db->queryOneRecord($sql);
                  if($tmp['number'] == 0) {
                     $message .= $wb['restore_info_txt'];
                     $sql =    "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) " .
                        "VALUES (".
                        (int)$this->form->dataRecord['server_id'] . ", " .
                        time() . ", " .
                        "'backup_restore', " .
                        "'".$backup_id."', " .
                        "'pending', " .
                        "''" .
                        ")";
                  $app->db->query($sql);
                  } else {
                     $error .= $wb['restore_pending_txt'];
                  }
               }
      global $app;
      $listTpl = new tpl;
      $listTpl->newTemplate('templates/web_backup_list.htm');
      //* Loading language file
      $lng_file = "lib/lang/".$_SESSION["s"]["language"]."_web_backup_list.lng";
      include $lng_file;
      $listTpl->setVar($wb);
      $message = '';
      $error = '';
      if(isset($_GET['backup_action'])) {
         $backup_id = $app->functions->intval($_GET['backup_id']);
         //* check if the user is  owner of the parent domain
         $domain_backup = $app->db->queryOneRecord("SELECT parent_domain_id FROM web_backup WHERE backup_id = ?", $backup_id);
         $check_perm = 'u';
         if($_GET['backup_action'] == 'download') $check_perm = 'r'; // only check read permissions on download, not update permissions
         $get_domain = $app->db->queryOneRecord("SELECT domain_id FROM web_domain WHERE domain_id = ? AND ".$app->tform->getAuthSQL($check_perm), $domain_backup["parent_domain_id"]);
         if(empty($get_domain) || !$get_domain) {
            $app->error($app->tform->lng('no_domain_perm'));
         }
         if($_GET['backup_action'] == 'download' && $backup_id > 0) {
            $server_id = $this->form->dataRecord['server_id'];
            $backup = $app->db->queryOneRecord("SELECT * FROM web_backup WHERE backup_id = ?", $backup_id);
            if($backup['server_id'] > 0) $server_id = $backup['server_id'];
            $sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = 'backup_download' AND action_param = ?";
            $tmp = $app->db->queryOneRecord($sql, $backup_id);
            if($tmp['number'] == 0) {
               $message .= $wb['download_info_txt'];
               $sql =  "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) " .
                  "VALUES (?, UNIX_TIMESTAMP(), 'backup_download', ?, 'pending', '')";
               $app->db->query($sql, $server_id, $backup_id);
            } else {
               $error .= $wb['download_pending_txt'];
            }
            //* Get the data
            $sql = "SELECT * FROM web_backup WHERE parent_domain_id = ".$this->form->id." ORDER BY tstamp DESC, backup_type ASC";
                $records = $app->db->queryAllRecords($sql);
         }
         if($_GET['backup_action'] == 'restore' && $backup_id > 0) {
            $server_id = $this->form->dataRecord['server_id'];
            $backup = $app->db->queryOneRecord("SELECT * FROM web_backup WHERE backup_id = ?", $backup_id);
            if($backup['server_id'] > 0) $server_id = $backup['server_id'];
            $sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = 'backup_restore' AND action_param = ?";
            $tmp = $app->db->queryOneRecord($sql, $backup_id);
            if($tmp['number'] == 0) {
               $message .= $wb['restore_info_txt'];
               $sql =  "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) " .
                  "VALUES (?, UNIX_TIMESTAMP(), 'backup_restore', ?, 'pending', '')";
               $app->db->query($sql, $server_id, $backup_id);
            } else {
               $error .= $wb['restore_pending_txt'];
            }
         }
         if($_GET['backup_action'] == 'delete' && $backup_id > 0) {
            $server_id = $this->form->dataRecord['server_id'];
            $backup = $app->db->queryOneRecord("SELECT * FROM web_backup WHERE backup_id = ?", $backup_id);
            if($backup['server_id'] > 0) $server_id = $backup['server_id'];
            $sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = 'backup_delete' AND action_param = ?";
            $tmp = $app->db->queryOneRecord($sql, $backup_id);
            if($tmp['number'] == 0) {
               $message .= $wb['delete_info_txt'];
               $sql =  "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) " .
                  "VALUES (?, UNIX_TIMESTAMP(), 'backup_delete', ?, 'pending', '')";
               $app->db->query($sql, $server_id, $backup_id);
            } else {
               $error .= $wb['delete_pending_txt'];
            }
         }
                $bgcolor = "#FFFFFF";
                if(is_array($records)) {
                        foreach($records as $rec) {
      }
                                // Change of color
                                $bgcolor = ($bgcolor == "#FFFFFF")?"#EEEEEE":"#FFFFFF";
                                $rec["bgcolor"] = $bgcolor;
                        $rec['date'] = date($app->lng('conf_format_datetime'),$rec['tstamp']);
                        $rec['backup_type'] = $wb[('backup_type_'.$rec['backup_type'])];
      //* Get the data
      $server_ids = array();
      $web = $app->db->queryOneRecord("SELECT server_id FROM web_domain WHERE domain_id = ?", $this->form->id);
      $databases = $app->db->queryAllRecords("SELECT server_id FROM web_database WHERE parent_domain_id = ?", $this->form->id);
      if($app->functions->intval($web['server_id']) > 0) $server_ids[] = $app->functions->intval($web['server_id']);
      if(is_array($databases) && !empty($databases)){
         foreach($databases as $database){
            if($app->functions->intval($database['server_id']) > 0) $server_ids[] = $app->functions->intval($database['server_id']);
         }
      }
      $server_ids = array_unique($server_ids);
      $sql = "SELECT * FROM web_backup WHERE parent_domain_id = ? AND server_id IN ? ORDER BY tstamp DESC, backup_type ASC";
      $records = $app->db->queryAllRecords($sql, $this->form->id, $server_ids);
                                $records_new[] = $rec;
                        }
                }
      $bgcolor = "#FFFFFF";
      if(is_array($records)) {
         foreach($records as $rec) {
                $listTpl->setLoop('records',@$records_new);
            // Change of color
            $bgcolor = ($bgcolor == "#FFFFFF")?"#EEEEEE":"#FFFFFF";
            $rec["bgcolor"] = $bgcolor;
            $rec['date'] = date($app->lng('conf_format_datetime'), $rec['tstamp']);
            $rec['backup_type'] = $wb[('backup_type_'.$rec['backup_type'])];
            
            $listTpl->setVar('parent_id',$this->form->id);
            $listTpl->setVar('msg',$message);
            $listTpl->setVar('error',$error);
            $rec['download_available'] = true;
            if($rec['server_id'] != $web['server_id']) $rec['download_available'] = false;
            
            // Setting Returnto information in the session
                $list_name = 'backup_list';
                // $_SESSION["s"]["list"][$list_name]["parent_id"] = $app->tform_actions->id;
            $_SESSION["s"]["list"][$list_name]["parent_id"] = $this->form->id;
            $_SESSION["s"]["list"][$list_name]["parent_name"] = $app->tform->formDef["name"];
                $_SESSION["s"]["list"][$list_name]["parent_tab"] = $_SESSION["s"]["form"]["tab"];
                $_SESSION["s"]["list"][$list_name]["parent_script"] = $app->tform->formDef["action"];
                $_SESSION["s"]["form"]["return_to"] = $list_name;
            return $listTpl->grab();
        }
            if($rec['filesize'] > 0){
               $rec['filesize'] = $app->functions->currency_format($rec['filesize']/(1024*1024), 'client').' MB';
            }
            $records_new[] = $rec;
         }
      }
      $listTpl->setLoop('records', @$records_new);
      $listTpl->setVar('parent_id', $this->form->id);
      $listTpl->setVar('msg', $message);
      $listTpl->setVar('error', $error);
      // Setting Returnto information in the session
      $list_name = 'backup_list';
      // $_SESSION["s"]["list"][$list_name]["parent_id"] = $app->tform_actions->id;
      $_SESSION["s"]["list"][$list_name]["parent_id"] = $this->form->id;
      $_SESSION["s"]["list"][$list_name]["parent_name"] = $app->tform->formDef["name"];
      $_SESSION["s"]["list"][$list_name]["parent_tab"] = $_SESSION["s"]["form"]["tab"];
      $_SESSION["s"]["list"][$list_name]["parent_script"] = $app->tform->formDef["action"];
      $_SESSION["s"]["form"]["return_to"] = $list_name;
      return $listTpl->grab();
   }
}
?>
?>