本文整理汇总了PHP中JInstaller::setOverwrite方法的典型用法代码示例。如果您正苦于以下问题:PHP JInstaller::setOverwrite方法的具体用法?PHP JInstaller::setOverwrite怎么用?PHP JInstaller::setOverwrite使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JInstaller
的用法示例。
在下文中一共展示了JInstaller::setOverwrite方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testGetAndSetOverwrite
/**
* @todo Implement testGetOverwrite().
*/
public function testGetAndSetOverwrite()
{
$this->saveFactoryState();
$newDbo = $this->getMock('test');
JFactory::$database = &$newDbo;
$this->object = JInstaller::getInstance();
$this->object->setOverwrite(false);
$this->assertThat(
$this->object->getOverwrite(),
$this->equalTo(false),
'Get or Set overwrite failed'
);
$this->assertThat(
$this->object->setOverwrite(true),
$this->equalTo(false),
'setOverwrite did not return the old value properly.'
);
$this->assertThat(
$this->object->getOverwrite(),
$this->equalTo(true),
'getOverwrite did not return the expected value.'
);
$this->restoreFactoryState();
}
示例2: testIsAndSetOverwrite
/**
* Test...
*
* @covers JInstaller::setOverwrite
* @covers JInstaller::isOverwrite
*
* @return void
*/
public function testIsAndSetOverwrite()
{
$this->object->setOverwrite(false);
$this->assertThat($this->object->isOverwrite(), $this->equalTo(false), 'Get or Set overwrite failed');
$this->assertThat($this->object->setOverwrite(true), $this->equalTo(false), 'setOverwrite did not return the old value properly.');
$this->assertThat($this->object->isOverwrite(), $this->equalTo(true), 'getOverwrite did not return the expected value.');
}
示例3: installExtensions
function installExtensions($extPath = null)
{
//if no path defined, use default path
if ($extPath == null) {
$extPath = dirname(__FILE__) . DS . 'extensions';
}
if (!JFolder::exists($extPath)) {
return false;
}
$extensions = JFolder::folders($extPath);
//no apps there to install
if (empty($extensions)) {
return true;
}
//get instance of installer
$installer = new JInstaller();
$installer->setOverwrite(true);
//install all apps
foreach ($extensions as $ext) {
$msg = "Supportive Plugin/Module {$ext} Installed Successfully";
// Install the packages
if ($installer->install($extPath . DS . $ext) == false) {
$msg = "Supportive Plugin/Module {$ext} Installation Failed";
}
//enque the message
JFactory::getApplication()->enqueueMessage($msg);
}
return true;
}
示例4: install
function install()
{
$pkg_path = JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . $this->com . DIRECTORY_SEPARATOR . 'extensions' . DIRECTORY_SEPARATOR;
if (JFolder::exists($pkg_path . 'nextend')) {
$librariesPath = defined('JPATH_LIBRARIES') ? JPATH_LIBRARIES : JPATH_PLATFORM;
JFolder::copy($pkg_path . 'nextend', $librariesPath . DIRECTORY_SEPARATOR . 'nextend', '', true);
JFolder::delete($pkg_path . 'nextend');
}
$extensions = array_merge(JFolder::folders($pkg_path, '^(?!com_)\\w+$'), JFolder::folders($pkg_path, '^com_\\w+$'));
if (version_compare(JVERSION, '3.0.0', 'ge')) {
foreach ($extensions as $pkg) {
$f = $pkg_path . DIRECTORY_SEPARATOR . $pkg;
$xmlfiles = JFolder::files($f, '.xml$', 1, true);
foreach ($xmlfiles as $xmlf) {
$file = file_get_contents($xmlf);
file_put_contents($xmlf, preg_replace("/<\\/install/", "</extension", preg_replace("/<install/", "<extension", $file)));
}
}
}
foreach ($extensions as $pkg) {
$installer = new JInstaller();
$installer->setOverwrite(true);
if ($success = $installer->install($pkg_path . DIRECTORY_SEPARATOR . $pkg)) {
$msgcolor = "#E0FFE0";
$name = version_compare(JVERSION, '1.6.0', 'l') ? $installer->getManifest()->document->name[0]->data() : $installer->getManifest()->name;
$msgtext = $name . " successfully installed.";
} else {
$msgcolor = "#FFD0D0";
$msgtext = "ERROR: Could not install the {$pkg}. Please contact us on our support page: http://www.nextendweb.com/help/support";
}
?>
<table bgcolor="<?php
echo $msgcolor;
?>
" width ="100%">
<tr style="height:30px">
<td><font size="2"><b><?php
echo $msgtext;
?>
</b></font></td>
</tr>
</table><?php
if ($success && file_exists("{$pkg_path}/{$pkg}/install.php")) {
require_once "{$pkg_path}/{$pkg}/install.php";
$com = new $pkg();
$com->install();
}
}
$db = JFactory::getDBO();
if (version_compare(JVERSION, '1.6.0', 'lt')) {
$db->setQuery("UPDATE #__plugins SET published=1 WHERE name LIKE '%nextend%'");
} else {
$db->setQuery("UPDATE #__extensions SET enabled=1 WHERE name LIKE '%nextend%' AND type='plugin'");
}
$db->query();
if (JFolder::exists(JPATH_SITE . DIRECTORY_SEPARATOR . 'media' . DIRECTORY_SEPARATOR . 'dojo' . DIRECTORY_SEPARATOR)) {
JFolder::delete(JPATH_SITE . DIRECTORY_SEPARATOR . 'media' . DIRECTORY_SEPARATOR . 'dojo' . DIRECTORY_SEPARATOR);
JFolder::create(JPATH_SITE . DIRECTORY_SEPARATOR . 'media' . DIRECTORY_SEPARATOR . 'dojo' . DIRECTORY_SEPARATOR);
}
}
示例5: installGiantExtensionsPlugin
private function installGiantExtensionsPlugin()
{
$pluginPath = dirname(__FILE__) . '/plg_content_giantcontent.zip';
$installResult = JInstallerHelper::unpack($pluginPath);
if (empty($installResult)) {
$app = JFactory::getApplication();
$app->enqueueMessage('Giant Content can not install "Content - Giant Content" plugin. Please install plugin manually inside package.', 'error');
return false;
}
$installer = new JInstaller();
$installer->setOverwrite(true);
if (!$installer->install($installResult['extractdir'])) {
$app = JFactory::getApplication();
$app->enqueueMessage('Giant Content can not install "Content - Giant Content" plugin. Please install plugin manually inside package.', 'error');
return false;
}
$db = JFactory::getDBO();
$db->setQuery('UPDATE #__extensions SET enabled = 1 WHERE type = "plugin" AND folder = "content" AND element = "giantcontent"');
$db->query();
if ($db->getErrorNum()) {
$app = JFactory::getApplication();
$app->enqueueMessage('Giant Content can not enable "Content - Giant Content" plugin. Please enable plugin manually in the plugin manager.', 'warning');
}
return true;
}
示例6: update
/**
* Generic update method for extensions
*
* @return boolean True on success
*
* @since 3.4
*/
public function update()
{
// Set the overwrite setting
$this->parent->setOverwrite(true);
$this->parent->setUpgrade(true);
// And make sure the route is set correctly
$this->setRoute('update');
// Now jump into the install method to run the update
return $this->install();
}
示例7: install
function install()
{
$pkg_path = JPATH_ADMINISTRATOR . DS . 'components' . DS . $this->com . DS . 'extensions' . DS;
$extensions = array_merge(JFolder::folders($pkg_path, '^(?!com_)\\w+$'), JFolder::folders($pkg_path, '^com_\\w+$'));
$v3 = version_compare(JVERSION, '3.0.0', 'ge');
if ($v3) {
foreach ($extensions as $pkg) {
$f = $pkg_path . DS . $pkg;
$xmlfiles = JFolder::files($f, '.xml$', 1, true);
foreach ($xmlfiles as $xmlf) {
$file = file_get_contents($xmlf);
file_put_contents($xmlf, preg_replace("/<\\/install/", "</extension", preg_replace("/<install/", "<extension", $file)));
}
}
}
foreach ($extensions as $pkg) {
if ($pkg == 'plg_offlajnjoomla3compat' && !$v3 || $pkg == 'plg_sticky_toolbar' && !$v3) {
continue;
}
$installer = new JInstaller();
$installer->setOverwrite(true);
if ($success = $installer->install($pkg_path . DS . $pkg)) {
$msgcolor = "#E0FFE0";
$msgtext = "{$pkg} successfully installed.";
} else {
$msgcolor = "#FFD0D0";
$msgtext = "ERROR: Could not install the {$pkg}. Please contact us on our support page: http://offlajn.com/support.html";
}
?>
<table bgcolor="<?php
echo $msgcolor;
?>
" width ="100%">
<tr style="height:30px">
<td><font size="2"><b><?php
echo $msgtext;
?>
</b></font></td>
</tr>
</table><?php
if ($success && file_exists("{$pkg_path}/{$pkg}/install.php")) {
require_once "{$pkg_path}/{$pkg}/install.php";
$com = new $pkg();
$com->install();
}
}
$db = JFactory::getDBO();
if (version_compare(JVERSION, '1.6.0', 'lt')) {
$db->setQuery("UPDATE #__plugins SET published=1 WHERE name LIKE '%offlajn%' OR name LIKE 'Nextend Joomla 3.0 compatibility' OR name LIKE 'Nextend Dojo Loader'");
} else {
$db->setQuery("UPDATE #__extensions SET enabled=1 WHERE (name LIKE '%offlajn%' OR name LIKE 'Nextend Joomla 3.0 compatibility' OR name LIKE 'Nextend Dojo Loader') AND type='plugin'");
}
$db->query();
}
示例8: install
function install()
{
$installer = new JInstaller();
$installer->setOverwrite(true);
$pkg_path = JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_universal_ajax_live_search' . DS . 'extensions' . DS;
$pkgs = array('mod_universal_ajaxlivesearch' => 'Ajax Live Search', 'mod_ajaxlivesearchresult' => 'AJAX Live Search results', 'offlajnjoomla3compat' => 'joomla3compat');
$v3 = version_compare(JVERSION, '3.0.0', 'ge');
if ($v3) {
foreach ($pkgs as $pkg => $pkgname) {
$f = $pkg_path . DS . $pkg;
$xmlfiles = JFolder::files($f, '.xml$', 1, true);
foreach ($xmlfiles as $xmlf) {
$file = file_get_contents($xmlf);
file_put_contents($xmlf, preg_replace("/<\\/install/", "</extension", preg_replace("/<install/", "<extension", $file)));
}
}
}
foreach ($pkgs as $pkg => $pkgname) {
if ($installer->install($pkg_path . DS . $pkg)) {
$msgcolor = "#E0FFE0";
$msgtext = "{$pkgname} successfully installed.";
} else {
$msgcolor = "#FFD0D0";
$msgtext = "ERROR: Could not install the {$pkgname}. Please contact us on our support page: http://offlajn.com/support.html";
}
?>
<table bgcolor="<?php
echo $msgcolor;
?>
" width ="100%">
<tr style="height:30px">
<td width="50px"><img src="/administrator/images/tick.png" height="20px" width="20px"></td>
<td><font size="2"><b><?php
echo $msgtext;
?>
</b></font></td>
</tr>
</table>
<?php
}
$db = JFactory::getDBO();
if (version_compare(JVERSION, '1.6.0', 'lt')) {
$db->setQuery("UPDATE #__plugins SET published=1 WHERE name LIKE '%offlajn%' OR name LIKE 'Nextend Joomla 3.0 compatibility' OR name LIKE 'Nextend Dojo Loader'");
} else {
$db->setQuery("UPDATE #__extensions SET enabled=1 WHERE (name LIKE '%offlajn%' OR name LIKE 'Nextend Joomla 3.0 compatibility' OR name LIKE 'Nextend Dojo Loader') AND type='plugin'");
}
$db->query();
}
示例9: install
function install()
{
$pkg_path = str_replace('/', DIRECTORY_SEPARATOR, JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . $this->com . DIRECTORY_SEPARATOR);
if (JFolder::exists($pkg_path . 'libraries')) {
$librariesPath = defined('JPATH_LIBRARIES') ? JPATH_LIBRARIES : JPATH_PLATFORM;
$target = $librariesPath . DIRECTORY_SEPARATOR . 'nextend2';
if (JFolder::exists($target)) {
JFolder::delete($target);
}
JFolder::copy($pkg_path . 'libraries/nextend2', $target, '', true);
JFolder::delete($pkg_path . 'libraries');
}
$extensions = array_merge(JFolder::folders($pkg_path . 'components', '.', false, true), JFolder::folders($pkg_path . 'modules', '.', false, true), JFolder::folders($pkg_path . 'plugins/system', '.', false, true));
foreach ($extensions as $path) {
$installer = new JInstaller();
$installer->setOverwrite(true);
if ($success = $installer->install($path)) {
} else {
$msgcolor = "#FFD0D0";
$msgtext = "ERROR: Could not install the {$path}. Please contact us on our support page: http://www.nextendweb.com/help/support";
?>
<table bgcolor="<?php
echo $msgcolor;
?>
" width="100%">
<tr style="height:30px">
<td><font size="2"><b><?php
echo $msgtext;
?>
</b></font></td>
</tr>
</table>
<?php
}
if ($success && file_exists($path . "/install.php")) {
require_once $path . "/install.php";
}
if ($success && file_exists($path . "/message.php")) {
include $path . "/message.php";
}
}
$db = JFactory::getDBO();
$db->setQuery("UPDATE #__extensions SET enabled=1 WHERE name LIKE '%nextend%' AND type='plugin'");
$db->query();
}
示例10: install
public function install($element, $path)
{
// Get Joomla's installer instance
$installer = new JInstaller();
// Allow overwriting existing modules
$installer->setOverwrite(true);
// Install the module
$state = $installer->install($path);
if (!$state) {
return false;
}
$db = EB::db();
$query = array();
$query[] = 'UPDATE ' . $db->qn('#__extensions') . ' SET ' . $db->qn('access') . '=' . $db->Quote(1);
$query[] = 'WHERE ' . $db->qn('type') . '=' . $db->Quote('module');
$query[] = 'AND ' . $db->qn('element') . '=' . $db->Quote($element);
$query[] = 'AND ' . $db->qn('access') . '=' . $db->Quote(0);
$query = implode(' ', $query);
$db->setQuery($query);
$db->Query();
// Check if this module already exists on module_menu
$query = array();
$query[] = 'SELECT a.' . $db->qn('id') . ', b.' . $db->qn('moduleid') . ' FROM ' . $db->qn('#__modules') . ' AS a';
$query[] = 'LEFT JOIN ' . $db->qn('#__modules_menu') . ' AS b ON a.' . $db->qn('id') . ' = b.' . $db->qn('moduleid');
$query[] = 'WHERE a.' . $db->qn('module') . ' = ' . $db->Quote($element);
$query[] = 'AND b.' . $db->qn('moduleid') . ' IS NULL';
$query = implode(' ', $query);
$db->setQuery($query);
$result = $db->loadObjectList();
if (!$result) {
return false;
}
foreach ($result as $row) {
$mod = new stdClass();
$mod->moduleid = $row->id;
$mod->menuid = 0;
$db->insertObject('#__modules_menu', $mod);
}
return true;
}
示例11: com_install
/**
* 安装程序
*/
function com_install()
{
if (version_compare(JVERSION, '1.6.0', 'ge')) {
return;
}
$msg = array();
$COM_NAME = 'com_weibo';
// 从已经安装到com_weibo组件的文件中,找出zip文件
$files = JFolder::files(JPATH_ADMINISTRATOR . DS . 'components' . DS . $COM_NAME, 'zip', true, true);
if ($files) {
foreach ($files as $file) {
// 对于每个zip文件
// 解压zip文件,取得安装包的相关信息
$dest = dirname($file) . DS . JFile::stripExt(basename($file));
JArchive::extract($file, $dest);
$package = getPackageFromFolder($dest);
// 使用JInstaller对象
$installer = new JInstaller();
$installer->setOverwrite(true);
// 安装相应的ZIP包
if (!$installer->install($package['dir'])) {
// 如果有错,将错误信息加入信息列表中
$msg[] = '<span style="color:#FF0000">' . basename($file) . ': ' . JText::sprintf('INSTALLERR', JText::_($package['type']), ' - ' . JText::_('ERROR')) . '</span>';
$result = false;
} else {
// 安装成功,也将成功信息加入信息列表中
$msg[] = basename($file) . ': ' . JText::sprintf('INSTALLOK', JText::_($package['type']), JText::_('Success'));
$result = true;
}
}
}
$path = JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_weibo' . DS . 'mod_weibologin';
if (!JFolder::delete($path)) {
$msg[] = JText::_('DELETETMPERROR');
}
$path = JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_weibo' . DS . 'plg_authentication_weibo';
if (!JFolder::delete($path)) {
$msg[] = JText::_('DELETETMPERROR');
}
$path = JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_weibo' . DS . 'plg_content_weibo';
if (!JFolder::delete($path)) {
$msg[] = JText::_('DELETETMPERROR');
}
// 数据库的创立
$db =& JFactory::getDBO();
$sql = 'CREATE TABLE IF NOT EXISTS `#__weibo_auth` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`oauth_token` varchar(255) NOT NULL,
`oauth_token_secret` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`type` varchar(10),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
';
$db->setQuery($sql);
$db->query() or die("数据库创立错误");
// 加上这段话是因为在%VERSION%以前的版本中,这个字段没有AUTO_INCREMEN
$sql = 'ALTER TABLE `#__weibo_auth` CHANGE `id` `id` INT( 11 ) NOT NULL AUTO_INCREMENT ';
$db->setQuery($sql);
$db->query() or die("数据库创立错误");
// 输出结果
if (count($msg)) {
echo '<dt>安装结果:</dt>';
foreach ($msg as $m) {
echo '<dd> - ' . $m . '</dd>';
}
echo '</dl>';
}
}
示例12: InstallExtras
function InstallExtras($source)
{
global $install_status;
$pkg_path = $source . DS . 'admin' . DS . 'extensions' . DS;
if ($dir = opendir($pkg_path)) {
while (($file = readdir($dir)) !== false) {
if ($file == "." || $file == "..") {
continue;
}
if (stripos($file, ".zip") < 1) {
continue;
}
$installer = new JInstaller();
$installer->setOverwrite(true);
$status = new Status();
$status->status = $status->STATUS_FAIL;
$package = JInstallerHelper::unpack($pkg_path . $file);
if ($installer->install($package['dir'])) {
$status->status = $status->STATUS_SUCCESS;
} else {
$status->errmsg[] = JText::_("UNABLE_TO_INSTALL_{$PKGNAME}");
}
$install_status[$file] = $status;
JInstallerHelper::cleanupInstall($pkg_path . $file, $package['dir']);
}
}
}
示例13: installDependencies
/**
* Installs all dependencies.
*
* @param JAdapterInstance $parent
*/
private function installDependencies($parent)
{
$installed = array();
$installer = new JInstaller();
$installer->setOverwrite(true);
$src = $parent->getParent()->getPath('source');
foreach ($this->dependencies as $type => $extension) {
foreach ($extension as $name => $params) {
$packageZip = $src . '/' . $type . '/' . $name . '.zip';
if (JFile::exists($packageZip)) {
if ($package = JInstallerHelper::unpack($packageZip)) {
$doInstall = true;
$path = $this->getInstalledManifest($type, $name, $params);
$oldManifest = null;
if (JFile::exists($path)) {
$oldManifest = $installer->parseXMLInstallFile($path);
}
$dir = JArrayHelper::getValue($package, 'dir') . '/';
$path = $this->getExtractedManifest($dir, $type, $name);
$newManifest = $installer->parseXMLInstallFile($path);
if ($oldManifest) {
$oldVersion = JArrayHelper::getValue($oldManifest, 'version');
$newVersion = JArrayHelper::getValue($newManifest, 'version');
if (version_compare($oldVersion, $newVersion, 'ge')) {
$doInstall = false;
}
}
$success = true;
if ($doInstall) {
if ($success = $installer->install($dir)) {
$installed[$name] = array('status' => 1);
} else {
$installed[$name] = array('status' => 0);
}
} else {
$installed[$name] = array('status' => 2);
}
if ($success) {
// post installation configuration.
if ($type == 'modules') {
$this->configureModule($name, $params);
}
}
JInstallerHelper::cleanupInstall($packageZip, $dir);
}
}
}
}
return $installed;
}
示例14: install_sub_extensions
/**
* Installs subextensions (modules, plugins) bundled with the main extension
*/
private function install_sub_extensions($parent)
{
$src = $parent->getParent()->getPath('source');
$db = JFactory::getDbo();
// The subextension installation status
$status = new JObject();
$status->modules = array();
$status->plugins = array();
// Modules installation
if (isset($this->installation_queue['modules']) and is_array($this->installation_queue['modules'])) {
foreach ($this->installation_queue['modules'] as $folder => $modules) {
if (is_array($modules)) {
foreach ($modules as $module => $module_preferences) {
//Look for the temporary installation folder
$path = $src . '/modules/' . $folder . '/' . $module;
if (!is_dir($path)) {
$path = $src . '/modules/' . $folder . '/mod_' . $module;
}
if (!is_dir($path)) {
$path = $src . '/modules/' . $module;
}
if (!is_dir($path)) {
$path = $src . '/modules/mod_' . $module;
}
if (!is_dir($path)) {
$path = $src . '/mod_' . $module;
}
if (!is_dir($path)) {
continue;
}
// Was the module already installed?
$sql = $db->getQuery(true)->select('COUNT(*)')->from('#__modules')->where($db->qn('module') . ' = ' . $db->q('mod_' . $module));
$db->setQuery($sql);
$count = $db->loadResult();
//Install
$installer = new JInstaller();
$installer->setOverwrite(true);
$result = $installer->install($path);
//Store status
$status->modules[] = array('name' => 'mod_' . $module, 'client' => $folder, 'result' => $result);
// Modify where it's published and its published state
if (!$count) {
// Flags
$module_position = isset($module_preferences['position']) ? $module_preferences['position'] : 1;
$module_published = !empty($module_preferences['published']);
$module_showtitle = !empty($module_preferences['showtitle']);
// Position
$sql = $db->getQuery(true)->update($db->qn('#__modules'))->set($db->qn('position') . ' = ' . $db->q($module_position))->where($db->qn('module') . ' = ' . $db->q('mod_' . $module));
// Published
if ($module_published) {
$sql->set($db->qn('published') . ' = ' . $db->q('1'));
}
// Do not display the title?
if (!$module_showtitle) {
$sql->set($db->qn('showtitle') . ' = ' . $db->q('0'));
}
$db->setQuery($sql);
$db->query();
// Change the ordering of back-end modules to 1 + max ordering
if ($folder == 'admin') {
$query = $db->getQuery(true);
$query->select('MAX(' . $db->qn('ordering') . ')')->from($db->qn('#__modules'))->where($db->qn('position') . '=' . $db->q($module_position));
$db->setQuery($query);
$position = $db->loadResult();
$position++;
$query = $db->getQuery(true);
$query->update($db->qn('#__modules'))->set($db->qn('ordering') . ' = ' . $db->q($position))->where($db->qn('module') . ' = ' . $db->q('mod_' . $module));
$db->setQuery($query);
$db->query();
}
// Link to all pages
$query = $db->getQuery(true);
$query->select('id')->from($db->qn('#__modules'))->where($db->qn('module') . ' = ' . $db->q('mod_' . $module));
$db->setQuery($query);
$moduleid = $db->loadResult();
$query = $db->getQuery(true);
$query->select('*')->from($db->qn('#__modules_menu'))->where($db->qn('moduleid') . ' = ' . $db->q($moduleid));
$db->setQuery($query);
$assignments = $db->loadObjectList();
$isAssigned = !empty($assignments);
if (!$isAssigned) {
$o = (object) array('moduleid' => $moduleid, 'menuid' => 0);
$db->insertObject('#__modules_menu', $o);
}
}
}
}
}
}
// Plugins installation
if (isset($this->installation_queue['plugins']) and is_array($this->installation_queue['plugins'])) {
foreach ($this->installation_queue['plugins'] as $folder => $plugins) {
if (is_array($plugins)) {
foreach ($plugins as $plugin => $plugin_preferences) {
//Look for the temporary installation folder
$path = $src . '/plugins/' . $folder . '/$plugin';
if (!is_dir($path)) {
//.........这里部分代码省略.........
示例15: doInstall
public static function doInstall(JInstallerComponent &$component)
{
// fix joomla 1.5 bug
$component->parent->getDBO = $component->parent->getDBO();
// initialize zoo framework
require_once $component->parent->getPath('source') . '/admin/config.php';
// sanatize table indexes
$index_sql_path = $component->parent->getPath('source') . '/admin/installation/index.sql';
if (JFile::exists($index_sql_path)) {
$db = YDatabase::getInstance();
// read index.sql
$buffer = JFile::read($index_sql_path);
// Create an array of queries from the sql file
jimport('joomla.installer.helper');
$queries = JInstallerHelper::splitSql($buffer);
if (!empty($queries)) {
foreach ($queries as $query) {
// replace table prefixes
$query = $db->replacePrefix($query);
// parse table name
preg_match('/ALTER\\s*TABLE\\s*`(.*)`/i', $query, $result);
if (count($result) < 2) {
continue;
}
$table = $result[1];
// get existing indexes
$indexes = $db->queryObjectList('SHOW INDEX FROM ' . $table);
// drop existing indexes
$removed = array();
foreach ($indexes as $index) {
if (in_array($index->Key_name, $removed)) {
continue;
}
if ($index->Key_name != 'PRIMARY') {
$db->query('DROP INDEX ' . $index->Key_name . ' ON ' . $table);
$removed[] = $index->Key_name;
}
}
// add new indexes
$db->query($query);
}
}
}
// applications
if (!JFolder::exists(ZOO_APPLICATION_PATH)) {
JFolder::create(ZOO_APPLICATION_PATH);
}
$applications = array();
foreach (JFolder::folders($component->parent->getPath('source') . '/applications', '.', false, true) as $folder) {
try {
if ($manifest = InstallHelper::findManifest($folder)) {
$name = InstallHelper::getName($manifest);
$status = InstallHelper::installApplicationFromFolder($folder);
$applications[] = compact('name', 'status');
}
} catch (YException $e) {
$name = basename($folder);
$status = false;
$applications[] = compact('name', 'status');
}
}
self::displayResults($applications, 'Applications', 'Application');
// additional extensions
// init vars
$error = false;
$extensions = array();
// get plugin files
$plugin_files = array();
foreach (YFile::readDirectoryFiles(JPATH_PLUGINS, JPATH_PLUGINS . '/', '/\\.php$/', true) as $file) {
$plugin_files[] = basename($file);
}
// get extensions
if (isset($component->manifest->additional[0])) {
$add = $component->manifest->additional[0];
if (count($add->children())) {
$exts = $add->children();
foreach ($exts as $ext) {
$installer = new JInstaller();
$installer->setOverwrite(true);
$update = false;
if ($ext->name() == 'module' && JFolder::exists(JPATH_ROOT . '/modules/' . $ext->attributes('name')) || $ext->name() == 'plugin' && in_array($ext->attributes('name') . '.php', $plugin_files)) {
$update = true;
}
$folder = $component->parent->getPath('source') . '/' . $ext->attributes('folder');
$folder = rtrim($folder, "\\/") . '/';
if (JFolder::exists($folder)) {
if ($update) {
foreach (YFile::readDirectoryFiles($folder, $folder, '/positions\\.config$/', true) as $file) {
JFile::delete($file);
}
}
$extensions[] = array('name' => $ext->data(), 'type' => $ext->name(), 'folder' => $folder, 'installer' => $installer, 'status' => false, 'update' => $update);
}
}
}
}
// install additional extensions
for ($i = 0; $i < count($extensions); $i++) {
if (is_dir($extensions[$i]['folder'])) {
if (@$extensions[$i]['installer']->install($extensions[$i]['folder'])) {
//.........这里部分代码省略.........