コード例 #1
0
ファイル: helper.php プロジェクト: rafarubert/megafiltros
 /**
  * Uploads a sql script and executes it. Script can be text file or zip/gz packed
  *
  * @static
  * @param array The installation variables
  * @param boolean true if the script is a migration script
  * @return string Success or error messages
  * @since 1.5
  */
 function uploadSql(&$args, $migration = false, $preconverted = false)
 {
     global $mainframe;
     $archive = '';
     $script = '';
     /*
      * Check for iconv
      */
     if ($migration && !$preconverted && !function_exists('iconv')) {
         return JText::_('WARNICONV');
     }
     /*
      * Get the uploaded file information
      */
     if ($migration) {
         $sqlFile = JRequest::getVar('migrationFile', '', 'files', 'array');
     } else {
         $sqlFile = JRequest::getVar('sqlFile', '', 'files', 'array');
     }
     /*
      * Make sure that file uploads are enabled in php
      */
     if (!(bool) ini_get('file_uploads')) {
         return JText::_('WARNINSTALLFILE');
     }
     /*
      * Make sure that zlib is loaded so that the package can be unpacked
      */
     if (!extension_loaded('zlib')) {
         return JText::_('WARNINSTALLZLIB');
     }
     /*
      * If there is no uploaded file, we have a problem...
      */
     if (!is_array($sqlFile) || $sqlFile['size'] < 1) {
         return JText::_('WARNNOFILE');
     }
     /*
      * Move uploaded file
      */
     // Set permissions for tmp dir
     JInstallationHelper::_chmod(JPATH_SITE . DS . 'tmp', 0777);
     jimport('joomla.filesystem.file');
     $uploaded = JFile::upload($sqlFile['tmp_name'], JPATH_SITE . DS . 'tmp' . DS . $sqlFile['name']);
     if (!$uploaded) {
         return JText::_('WARNUPLOADFAILURE');
     }
     if (!eregi('.sql$', $sqlFile['name'])) {
         $archive = JPATH_SITE . DS . 'tmp' . DS . $sqlFile['name'];
     } else {
         $script = JPATH_SITE . DS . 'tmp' . DS . $sqlFile['name'];
     }
     // unpack archived sql files
     if ($archive) {
         $package = JInstallationHelper::unpack($archive, $args);
         if ($package === false) {
             return JText::_('WARNUNPACK');
         }
         $script = $package['folder'] . DS . $package['script'];
     }
     $db =& JInstallationHelper::getDBO($args['DBtype'], $args['DBhostname'], $args['DBuserName'], $args['DBpassword'], $args['DBname'], $args['DBPrefix']);
     /*
      * If migration perform manipulations on script file before population
      */
     if ($migration) {
         $script = JInstallationHelper::preMigrate($script, $args, $db);
         if ($script == false) {
             return JText::_('Script operations failed');
         }
     }
     $errors = null;
     $msg = '';
     $result = JInstallationHelper::populateDatabase($db, $script, $errors);
     /*
      * If migration, perform post population manipulations (menu table construction)
      */
     $migErrors = null;
     if ($migration) {
         $migResult = JInstallationHelper::postMigrate($db, $migErrors, $args);
         if ($migResult != 0) {
             /*
              * Merge populate and migrate processing errors
              */
             if ($result == 0) {
                 $result = $migResult;
                 $errors = $migErrors;
             } else {
                 $result += $migResult;
                 $errors = array_merge($errors, $migErrors);
             }
         }
     }
     /*
      * prepare sql error messages if returned from populate and migrate
      */
     if (!is_null($errors)) {
         foreach ($errors as $error) {
             $msg .= stripslashes($error['msg']);
             $msg .= chr(13) . "-------------" . chr(13);
             $txt = '<textarea cols="40" rows="4" name="instDefault" readonly="readonly" >' . JText::_("Database Errors Reported") . chr(13) . $msg . '</textarea>';
         }
     } else {
         // consider other possible errors from populate
         $msg = $result == 0 ? JText::_('SQL script installed successfully') : JText::_('Error installing SQL script');
         $txt = '<input size="50" value="' . $msg . '" readonly="readonly" />';
     }
     /*
      * Clean up
      */
     if ($archive) {
         JFile::delete($archive);
         JFolder::delete($package['folder']);
     } else {
         JFile::delete($script);
     }
     return $txt;
 }
コード例 #2
0
ファイル: model.php プロジェクト: kumarsivarajan/jaderp
 function checkUpload()
 {
     // pie
     $vars =& $this->getVars();
     //print_r($vars);
     $sqlFile = JRequest::getVar('sqlFile', '', 'files', 'array');
     if (JRequest::getVar('sqlUploaded', 0, 'post', 'bool') == false) {
         /*
          * Move uploaded file
          */
         // Set permissions for tmp dir
         JInstallationHelper::_chmod(JPATH_SITE . DS . 'tmp', 0777);
         jimport('joomla.filesystem.file');
         $uploaded = JFile::upload($sqlFile['tmp_name'], JPATH_SITE . DS . 'tmp' . DS . $sqlFile['name']);
         if (!$uploaded) {
             $this->setError(JText::_('WARNUPLOADFAILURE'));
             return false;
         }
         if (!eregi('.sql$', $sqlFile['name'])) {
             $archive = JPATH_SITE . DS . 'tmp' . DS . $sqlFile['name'];
         } else {
             $script = JPATH_SITE . DS . 'tmp' . DS . $sqlFile['name'];
         }
         // unpack archived sql files
         if (isset($archive) && $archive) {
             $package = JInstallationHelper::unpack($archive, $vars);
             if ($package === false) {
                 $this->setError(JText::_('WARNUNPACK'));
                 return false;
             }
             $script = $package['folder'] . DS . $package['script'];
         }
     } else {
         $script = JPATH_BASE . DS . 'sql' . DS . 'migration' . DS . 'migrate.sql';
     }
     $migration = JRequest::getVar('migration', 0, 'post', 'bool');
     /*
      * If migration perform manipulations on script file before population
      */
     if ($migration == true) {
         $db =& JInstallationHelper::getDBO($vars['DBtype'], $vars['DBhostname'], $vars['DBuserName'], $vars['DBpassword'], $vars['DBname'], $vars['DBPrefix']);
         $script = JInstallationHelper::preMigrate($script, $vars, $db);
         if ($script == false) {
             $this->setError(JText::_('Script operations failed'));
             return false;
         }
     }
     // Disable in testing */
     // Ensure the script is always in the same location
     if ($script != JPATH_BASE . DS . 'sql' . DS . 'migration' . DS . 'migrate.sql') {
         JFile::move($script, JPATH_BASE . DS . 'sql' . DS . 'migration' . DS . 'migrate.sql');
     }
     //$this->setData('scriptpath',$script);
     $vars['dataloaded'] = '1';
     $vars['loadchecked'] = '1';
     $vars['migration'] = $migration;
     return true;
 }