Ejemplo n.º 1
0
 protected function _processQueries(array $entries)
 {
     $iaDb =& $this->iaDb;
     $iaDbControl = $this->iaCore->factory('dbcontrol', iaCore::ADMIN);
     require_once IA_INCLUDES . 'utils' . IA_DS . 'pclzip.lib.php';
     $mysqlOptions = 'ENGINE=MyISAM DEFAULT CHARSET=utf8';
     $pathsMap = array(self::TYPE_PLUGIN => IA_PLUGINS, self::TYPE_PACKAGE => IA_PACKAGES);
     $path = isset($pathsMap[$this->itemData['type']]) ? $pathsMap[$this->itemData['type']] : IA_HOME;
     $versionInstalled = $iaDb->one_bind('version', '`name` = :name', array('name' => $this->itemData['name']), self::getTable());
     foreach ($entries as $version => $entry) {
         if ($versionInstalled && version_compare($versionInstalled, $version, '>')) {
             continue;
         }
         foreach ($entry as $data) {
             if ($data['external']) {
                 $filePath = str_replace(array('{DIRECTORY_SEPARATOR}', '{DS}'), IA_DS, $data['query']);
                 $fileFullPath = $path . $this->itemData['name'] . IA_DS . $filePath;
                 if (iaUtil::isZip($fileFullPath)) {
                     $archive = new PclZip($fileFullPath);
                     $files = $archive->extract(PCLZIP_OPT_PATH, IA_TMP);
                     if (0 == $files) {
                         continue;
                     }
                     foreach ($files as $file) {
                         $iaDbControl->splitSQL($file['filename']);
                         iaUtil::deleteFile($file['filename']);
                     }
                 } else {
                     $iaDbControl->splitSQL($fileFullPath);
                 }
             } else {
                 if ($data['query']) {
                     $iaDb->query(str_replace(array('{prefix}', '{mysql_version}'), array($iaDb->prefix, $mysqlOptions), $data['query']));
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
 protected function _processQueries($type, $stage, $ignoreNonVersionedQueries = false)
 {
     if (!isset($this->itemData['sql'][$type][$stage])) {
         return;
     }
     $iaDb =& $this->iaDb;
     $iaDbControl = $this->iaCore->factory('dbcontrol', iaCore::ADMIN);
     require_once IA_INCLUDES . 'utils' . IA_DS . 'pclzip.lib.php';
     $mysqlOptions = 'ENGINE=MyISAM DEFAULT CHARSET=utf8';
     $path = isset($this->_extrasTypePaths[$this->itemData['type']]) ? $this->_extrasTypePaths[$this->itemData['type']] : IA_HOME;
     $extrasVersion = $this->itemData['info']['version'];
     foreach ($this->itemData['sql'][$type][$stage] as $version => $entries) {
         if ($ignoreNonVersionedQueries && self::VERSION_EMPTY == $version) {
             continue;
         }
         if (self::VERSION_EMPTY != $version && version_compare($version, $extrasVersion) > 0) {
             continue;
         }
         foreach ($entries as $entry) {
             if ($entry['external']) {
                 $filePath = str_replace('{DS}', IA_DS, $entry['query']);
                 $fileFullPath = $path . $this->itemData['name'] . IA_DS . $filePath;
                 if (iaUtil::isZip($fileFullPath)) {
                     $archive = new PclZip($fileFullPath);
                     $files = $archive->extract(PCLZIP_OPT_PATH, IA_TMP);
                     if (0 == $files) {
                         continue;
                     }
                     foreach ($files as $file) {
                         $iaDbControl->splitSQL($file['filename']);
                         iaUtil::deleteFile($file['filename']);
                     }
                 } else {
                     $iaDbControl->splitSQL($fileFullPath);
                 }
             } else {
                 if ($entry['query']) {
                     $query = str_replace(array('{prefix}', '{mysql_version}'), array($iaDb->prefix, $mysqlOptions), $entry['query']);
                     $iaDb->query($query);
                 }
             }
         }
     }
 }