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'])); } } } } }
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); } } } } }