Beispiel #1
0
 /**
  * Backup
  * 
  * @param string $host
  * @param string $name
  * @param string $pass
  * @param string $db
  * @param string $charset
  * @param array  $tables
  * @return mixed
  */
 public function backup($host = null, $name = null, $pass = null, $db = '', $charset = null, $tables = array())
 {
     $connect = $this->_connect($host, $name, $pass, $db, $charset);
     if (is_object($connect)) {
         $this->_resource = $connect;
     } else {
         return $connect;
     }
     $true = $false = '';
     if ($tables) {
         if ($tables['tables']) {
             foreach ($tables['tables'] as $f) {
                 $q = $this->_resource->query('SHOW CREATE TABLE `' . str_replace('`', '``', $f) . '`;');
                 if ($q) {
                     $tmp = $q->fetch_row();
                     $true .= $tmp[1] . ";\n\n";
                 } else {
                     $false .= $this->_resource->error . "\n";
                 }
             }
         }
         if ($tables['data']) {
             foreach ($tables['data'] as $f) {
                 $q = $this->_resource->query('SELECT * FROM `' . str_replace('`', '``', $f) . '`;');
                 if ($q) {
                     if ($q->num_rows) {
                         $true .= 'INSERT INTO `' . str_replace('`', '``', $f) . '` VALUES';
                         while ($row = $q->fetch_row()) {
                             $true .= "\n(";
                             foreach ($row as $v) {
                                 $true .= $v === null ? 'NULL,' : "'" . str_replace("'", "''", $v) . "',";
                             }
                             $true = rtrim($true, ',') . '),';
                         }
                         $true = rtrim($true, ',') . ";\n\n";
                     }
                 } else {
                     $false .= $this->_resource->error . "\n";
                 }
             }
         }
         if ($true) {
             $dir = dirname($tables['file']);
             if (!Gmanager::getInstance()->is_dir($dir)) {
                 Gmanager::getInstance()->mkdir($dir);
             }
             if (!Gmanager::getInstance()->file_put_contents($tables['file'], $true)) {
                 $false .= Errors::get() . "\n";
             }
         }
         if ($false) {
             return Helper_View::message(Language::get('sql_backup_false') . '<pre>' . trim($false) . '</pre>', Helper_View::MESSAGE_ERROR);
         } else {
             return Helper_View::message(Language::get('sql_backup_true'), Helper_View::MESSAGE_SUCCESS);
         }
     } else {
         $q = $this->_resource->query('SHOW TABLES;');
         if ($q) {
             while ($row = $q->fetch_row()) {
                 $true .= '<option value="' . rawurlencode($row[0]) . '">' . htmlspecialchars($row[0], ENT_NOQUOTES) . '</option>';
             }
             return $true;
         }
     }
     return false;
 }
Beispiel #2
0
 /**
  * setEditFile
  *
  * @param string $f
  * @param string $text
  * @return string
  */
 public function setEditFile($f = '', $text = '')
 {
     Registry::set('setEditFile', $f);
     $tmp = Config::getTemp() . '/GmanagerArchivers' . GMANAGER_REQUEST_TIME . '.tmp';
     $fp = fopen($tmp, 'w');
     if (!$fp) {
         return Helper_View::message(Language::get('fputs_file_false') . '<br/>' . Errors::get(), Helper_View::MESSAGE_ERROR_EMAIL);
     }
     fputs($fp, $text);
     fclose($fp);
     $zip = $this->_open();
     $comment = $zip->properties();
     $comment = $comment['comment'];
     if ($zip->delete(PCLZIP_OPT_BY_NAME, $f) == 0) {
         if (Config::get('Gmanager', 'mode') == 'FTP') {
             Gmanager::getInstance()->ftpArchiveEnd();
         }
         unlink($tmp);
         return Helper_View::message(Language::get('fputs_file_false') . '<br/>' . $zip->errorInfo(true), Helper_View::MESSAGE_ERROR_EMAIL);
     }
     function pclzip_pre_add($p_event, &$p_header)
     {
         $p_header['stored_filename'] = Registry::get('setEditFile');
         return 1;
     }
     $fl = $zip->add($tmp, PCLZIP_CB_PRE_ADD, 'pclzip_pre_add', PCLZIP_OPT_COMMENT, $comment);
     unlink($tmp);
     if (Config::get('Gmanager', 'mode') == 'FTP') {
         Gmanager::getInstance()->ftpArchiveEnd($this->_name);
     }
     if ($fl) {
         return Helper_View::message(Language::get('fputs_file_true'), Helper_View::MESSAGE_SUCCESS);
     } else {
         return Helper_View::message(Language::get('fputs_file_false'), Helper_View::MESSAGE_ERROR_EMAIL);
     }
 }
Beispiel #3
0
 /**
  * Backup
  * 
  * @param string $host (not used)
  * @param string $name (not used)
  * @param string $pass (not used)
  * @param string $db
  * @param string $charset (not used)
  * @param array  $tables
  * @return string|bool
  */
 public function backup($host = null, $name = null, $pass = null, $db = '', $charset = null, $tables = array())
 {
     $connect = $this->_connect($db);
     if ($connect instanceof PDO) {
         $this->_resource = $connect;
     } else {
         return $connect;
     }
     $true = $false = '';
     if ($tables) {
         if ($tables['tables']) {
             foreach ($tables['tables'] as $f) {
                 $q = $this->_resource->query('PRAGMA table_info(`' . str_replace('`', '``', $f) . '`);');
                 if ($q) {
                     $true .= 'CREATE TABLE `' . str_replace('`', '``', $f) . '` (' . "\n";
                     foreach ($q->fetchAll(PDO::FETCH_ASSOC) as $v) {
                         $true .= '    ' . $v['name'] . ' ' . $v['type'] . ($v['notnull'] ? ' NOT NULL' : '') . ' DEFAULT ' . ($v['dflt_value'] === null || $v['dflt_value'] == 'NULL' ? 'NULL' : '"' . $v['dflt_value'] . '"') . ($v['pk'] ? ' PRIMARY KEY' : '') . ",\n";
                     }
                     $true = trim($true, ",\n") . "\n" . ');' . "\n\n";
                 } else {
                     $tmp = $this->_resource->errorInfo();
                     $false .= $tmp[2] . "\n";
                 }
             }
         }
         if ($tables['data']) {
             foreach ($tables['data'] as $f) {
                 $q = $this->_resource->query('SELECT * FROM `' . str_replace('`', '``', $f) . '`;');
                 if ($q) {
                     if ($q->columnCount()) {
                         $true .= 'INSERT INTO `' . str_replace('`', '``', $f) . '` VALUES';
                         while ($row = $q->fetch(PDO::FETCH_NUM)) {
                             $true .= "\n(";
                             foreach ($row as $v) {
                                 $true .= $v === null ? 'NULL,' : "'" . str_replace("'", "''", $v) . "',";
                             }
                             $true = rtrim($true, ',') . '),';
                         }
                         $true = rtrim($true, ',') . ";\n\n";
                     }
                 } else {
                     $tmp = $this->_resource->errorInfo();
                     $false .= $tmp[2] . "\n";
                 }
             }
         }
         if ($true) {
             $dir = dirname($tables['file']);
             if (!Gmanager::getInstance()->is_dir($dir)) {
                 Gmanager::getInstance()->mkdir($dir, null, true);
             }
             if (!Gmanager::getInstance()->file_put_contents($tables['file'], $true)) {
                 $false .= Errors::get() . "\n";
             }
         }
         if ($false) {
             return Helper_View::message(Language::get('sql_backup_false') . '<pre>' . htmlspecialchars(trim($false), ENT_NOQUOTES) . '</pre>', Helper_View::MESSAGE_ERROR);
         } else {
             return Helper_View::message(Language::get('sql_backup_true'), Helper_View::MESSAGE_SUCCESS);
         }
     } else {
         $q = $this->_resource->query('SELECT name FROM sqlite_master WHERE type = "table" ORDER BY name;');
         if ($q) {
             while ($row = $q->fetch(PDO::FETCH_NUM)) {
                 $true .= '<option value="' . rawurlencode($row[0]) . '">' . htmlspecialchars($row[0], ENT_NOQUOTES) . '</option>';
             }
             return $true;
         }
     }
     return false;
 }
Beispiel #4
0
 /**
  * Backup
  * 
  * @param string $host
  * @param string $name
  * @param string $pass
  * @param string $db
  * @param string $charset
  * @param array  $tables
  * @return string|bool
  */
 public function backup($host = null, $name = null, $pass = null, $db = '', $charset = null, $tables = array())
 {
     $connect = $this->_connect($host, $name, $pass, $db, $charset);
     if ($connect instanceof PDO) {
         $this->_resource = $connect;
     } else {
         return $connect;
     }
     $true = $false = '';
     if ($tables) {
         if ($tables['tables']) {
             foreach ($tables['tables'] as $f) {
                 $out = array();
                 exec(escapeshellcmd(Config::get('Postgres', 'path')) . ' -U ' . escapeshellarg($name) . ' -F p -b -s -t ' . escapeshellarg($f) . ' ' . escapeshellarg($db), $out);
                 if ($out) {
                     $true .= implode("\n", $out);
                 } else {
                     $false .= Language::get('sql_schema_error') . htmlspecialchars($f, ENT_NOQUOTES) . "\n";
                 }
             }
         }
         if ($tables['data']) {
             foreach ($tables['data'] as $f) {
                 $q = $this->_resource->query('SELECT * FROM ' . str_replace(array('"', "'"), array('""', "''"), $f) . ';');
                 if ($q) {
                     if ($q->columnCount()) {
                         $true .= 'INSERT INTO ' . str_replace(array('"', "'"), array('""', "''"), $f) . ' VALUES';
                         while ($row = $q->fetch(PDO::FETCH_NUM)) {
                             $true .= "\n(";
                             foreach ($row as $v) {
                                 $true .= $v === null ? 'NULL,' : "'" . str_replace("'", "''", $v) . "',";
                             }
                             $true = rtrim($true, ',') . '),';
                         }
                         $true = rtrim($true, ',') . ";\n\n";
                     }
                 } else {
                     $tmp = $this->_resource->errorInfo();
                     $false .= $tmp[2] . "\n";
                 }
             }
         }
         if ($true) {
             $dir = dirname($tables['file']);
             if (!Gmanager::getInstance()->is_dir($dir)) {
                 Gmanager::getInstance()->mkdir($dir, null, true);
             }
             if (!Gmanager::getInstance()->file_put_contents($tables['file'], $true)) {
                 $false .= Errors::get() . "\n";
             }
         }
         if ($false) {
             return Helper_View::message(Language::get('sql_backup_false') . '<pre>' . trim($false) . '</pre>', Helper_View::MESSAGE_ERROR);
         } else {
             return Helper_View::message(Language::get('sql_backup_true'), Helper_View::MESSAGE_SUCCESS);
         }
     } else {
         $q = $this->_resource->query('SELECT * FROM information_schema.tables;');
         if ($q) {
             while ($row = $q->fetch(PDO::FETCH_ASSOC)) {
                 $true .= '<option value="' . rawurlencode($row['table_name']) . '">' . htmlspecialchars($row['table_name'], ENT_NOQUOTES) . '</option>';
             }
             return $true;
         }
     }
     return false;
 }
Beispiel #5
0
 /**
  * fname
  * 
  * @param string $f
  * @param string $name
  * @param int    $register
  * @param int    $i
  * @param bool   $overwrite
  * @return string
  */
 public function fname($f = '', $name = '', $register = 0, $i = 0, $overwrite = false)
 {
     // [replace=from,to] - replace
     // [n=0] - meter
     // [f] - type
     // [name] - name
     // [date] - date
     // [rand=8,16] - random
     // $f = rawurldecode($f);
     $info = pathinfo($f);
     $info['dirname'] = IOWrapper::get($info['dirname']);
     $info['basename'] = IOWrapper::get($info['basename']);
     $info['extension'] = IOWrapper::get($info['extension']);
     $info['filename'] = IOWrapper::get($info['filename']);
     if (preg_match_all('/\\[replace=([^,]),([^\\]])/U', $name, $arr, PREG_SET_ORDER)) {
         foreach ($arr as $var) {
             $name = str_replace($var[1], $var[2], $info['filename'] . '.' . $info['extension']);
         }
     }
     if (preg_match_all('/\\[n=*(\\d*)\\]/U', $name, $arr, PREG_SET_ORDER)) {
         foreach ($arr as $var) {
             $name = str_replace($var[0], $var[1] + $i, $name);
         }
     }
     if (preg_match_all('/\\[rand=*(\\d*),*(\\d*)\\]/U', $name, $arr, PREG_SET_ORDER)) {
         foreach ($arr as $var) {
             $name = str_replace($var[0], mb_substr(str_shuffle(Config::get('Gmanager', 'rand')), 0, mt_rand(!empty($var[1]) ? $var[1] : 8, !empty($var[2]) ? $var[2] : 16)), $name);
         }
     }
     $name = str_replace('[f]', $info['extension'], $name);
     $name = str_replace('[name]', $info['filename'], $name);
     $name = str_replace('[date]', strftime('%d_%m_%Y'), $name);
     if ($register == 1) {
         $tmp = mb_strtolower($name);
     } elseif ($register == 2) {
         $tmp = mb_strtoupper($name);
     } else {
         $tmp = $name;
     }
     if (!$overwrite && self::$_instance->file_exists($info['dirname'] . '/' . $tmp)) {
         return Helper_View::message(Language::get('overwrite_false') . ' (' . htmlspecialchars($info['dirname'] . '/' . $tmp, ENT_NOQUOTES) . ')', Helper_View::MESSAGE_ERROR);
     }
     if (self::$_instance->rename($f, $info['dirname'] . '/' . $tmp)) {
         return Helper_View::message($info['basename'] . ' - ' . $tmp, Helper_View::MESSAGE_SUCCESS);
     } else {
         return Helper_View::message(Errors::get() . ' ' . $info['basename'] . ' -&gt; ' . $tmp, Helper_View::MESSAGE_ERROR_EMAIL);
     }
 }