コード例 #1
0
ファイル: helper.php プロジェクト: rafarubert/megafiltros
 /**
  * Performs pre-populate conversions on a migration script
  *
  * @static
  * @param string $scriptName The uploaded / unpacked script file
  * $param array $args The installation varibables
  * @return converted filename on success, False on error
  * @since 1.5
  */
 function preMigrate($scriptName, &$args, $db)
 {
     $maxread = 0;
     jimport('joomla.filesystem.file');
     if (function_exists('memory_get_usage')) {
         $memlimit = JInstallationHelper::return_bytes(ini_get('memory_limit'));
         $maxread = $memlimit / 16;
         // Read only a eigth of our max amount of memory, we could be up to a lot by now
         // By default this pegs us at 0.5MB
     }
     $buffer = '';
     $newPrefix = $args['DBPrefix'];
     /*
      * search and replace table prefixes
      */
     $oldPrefix = trim($args['oldPrefix']);
     $oldPrefix = rtrim($oldPrefix, '_') . '_';
     $srcEncoding = $args['srcEncoding'];
     if (!is_file($scriptName)) {
         return false;
     }
     // not a file?
     $newFile = dirname($scriptName) . DS . 'converted.sql';
     $tfilesize = filesize($scriptName);
     if ($maxread > 0 && $tfilesize > 0 && $maxread < $tfilesize) {
         $parts = ceil($tfilesize / $maxread);
         file_put_contents($newFile, '');
         // cleanse the file first
         for ($i = 0; $i < $parts; $i++) {
             $buffer = JFile::read($scriptName, false, $maxread, $maxread, $i * $maxread);
             // Lets try and read a portion of the file
             JInstallationHelper::replaceBuffer($buffer, $oldPrefix, $newPrefix, $srcEncoding);
             JInstallationHelper::appendFile($buffer, $newFile);
             unset($buffer);
         }
         JFile::delete($scriptName);
     } else {
         /*
          * read script file into buffer
          */
         if (is_file($scriptName)) {
             $buffer = file_get_contents($scriptName);
         } else {
             return false;
         }
         if ($buffer == false) {
             return false;
         }
         JInstallationHelper::replaceBuffer($buffer, $oldPrefix, $newPrefix, $srcEncoding);
         /*
          * write to file
          */
         //$newFile = dirname( $scriptName ).DS.'converted.sql';
         $ret = file_put_contents($newFile, $buffer);
         unset($buffer);
         // Release the memory used by the buffer
         jimport('joomla.filesystem.file');
         JFile::delete($scriptName);
     }
     /*
      * Create two empty temporary tables
      */
     $query = 'DROP TABLE IF EXISTS ' . $newPrefix . 'modules_migration';
     $db->setQuery($query);
     $db->query();
     $query = 'DROP TABLE IF EXISTS ' . $newPrefix . 'menu_migration';
     $db->setQuery($query);
     $db->query();
     $query = 'CREATE TABLE ' . $newPrefix . 'modules_migration SELECT * FROM ' . $newPrefix . 'modules WHERE 0';
     $db->setQuery($query);
     $db->query();
     $query = 'CREATE TABLE ' . $newPrefix . 'modules_migration_menu SELECT * FROM ' . $newPrefix . 'modules_menu WHERE 0';
     $db->setQuery($query);
     $db->Query();
     $query = 'CREATE TABLE ' . $newPrefix . 'menu_migration SELECT * FROM ' . $newPrefix . 'menu WHERE 0';
     $db->setQuery($query);
     $db->query();
     return $newFile;
 }