예제 #1
0
 /**
  * Restores a database backup with the given backup file. Note that all tables and data in the database will be
  * deleted before the backup file is executed.
  *
  * @param $filePath The file path of the database backup to restore.
  *
  * @throws Exception
  * @return null
  */
 public function restore($filePath)
 {
     if (!IOHelper::fileExists($filePath)) {
         throw new Exception(Craft::t('Could not find the SQL file to restore: {filePath}', array('filePath' => $filePath)));
     }
     $sql = IOHelper::getFileContents($filePath, true);
     if ($sql) {
         array_walk($sql, array($this, 'trimValue'));
         $sql = array_filter($sql);
         $statements = $this->_buildSQLStatements($sql);
         if (!empty($statements)) {
             $this->_nukeDb();
             foreach ($statements as $key => $statement) {
                 Craft::log('Executing SQL statement: ' . $statement, LogLevel::Info, true);
                 $statement = craft()->db->getPdoInstance()->prepare($statement);
                 $statement->execute();
             }
         } else {
             Craft::log('Could not parse any SQL statements from the database backup file: ' . $filePath, LogLevel::Info, true);
         }
     } else {
         Craft::log('Tried to restore database from a backup, but the file is empty: ' . $filePath, LogLevel::Info, true);
     }
     // Re-enable.
     Craft::getLogger()->autoDump = true;
 }
예제 #2
0
 /**
  * Restores a database backup with the given backup file. Note that all tables and data in the database will be
  * deleted before the backup file is executed.
  *
  * @param $filePath The file path of the database backup to restore.
  *
  * @throws Exception
  * @return null
  */
 public function restore($filePath)
 {
     if (!IOHelper::fileExists($filePath)) {
         throw new Exception(Craft::t('Could not find the SQL file to restore: {filePath}', array('filePath' => $filePath)));
     }
     $this->_nukeDb();
     $sql = IOHelper::getFileContents($filePath, true);
     array_walk($sql, array($this, 'trimValue'));
     $sql = array_filter($sql);
     $statements = $this->_buildSQLStatements($sql);
     foreach ($statements as $key => $statement) {
         Craft::log('Executing SQL statement: ' . $statement);
         $command = craft()->db->createCommand($statement);
         $command->execute();
     }
     // Re-enable.
     Craft::getLogger()->autoDump = true;
 }