本文整理汇总了PHP中rex_addon::exists方法的典型用法代码示例。如果您正苦于以下问题:PHP rex_addon::exists方法的具体用法?PHP rex_addon::exists怎么用?PHP rex_addon::exists使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rex_addon
的用法示例。
在下文中一共展示了rex_addon::exists方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: exists
/**
* Returns if the package exists.
*
* @param string $packageId Package ID
*
* @return bool
*/
public static function exists($packageId)
{
$package = explode('/', $packageId);
if (isset($package[1])) {
return rex_plugin::exists($package[0], $package[1]);
}
return rex_addon::exists($package[0]);
}
示例2: checkPreConditions
protected function checkPreConditions()
{
if (!rex_addon::exists($this->addonkey)) {
throw new rex_api_exception(sprintf('AddOn "%s" does not exist!', $this->addonkey));
}
$this->addon = rex_addon::get($this->addonkey);
if (!rex_string::versionCompare($this->file['version'], $this->addon->getVersion(), '>')) {
throw new rex_api_exception(sprintf('Existing version of AddOn "%s" (%s) is newer than %s', $this->addonkey, $this->addon->getVersion(), $this->file['version']));
}
}
示例3: getMyPackages
public static function getMyPackages()
{
if (is_array(self::$myPackages)) {
return self::$myPackages;
}
self::$myPackages = self::getPackages('?only_my=1');
foreach (self::$myPackages as $key => $addon) {
if (!rex_addon::exists($key)) {
unset(self::$myPackages[$key]);
}
}
return self::$myPackages;
}
示例4: checkPreConditions
protected function checkPreConditions()
{
if (rex_addon::exists($this->addonkey)) {
throw new rex_api_exception(sprintf('AddOn "%s" already exist!', $this->addonkey));
}
}
示例5: execute
public function execute()
{
if (!rex::getUser()->isAdmin()) {
throw new rex_api_exception('You do not have the permission!');
}
$installAddon = rex_addon::get('install');
$versions = self::getVersions();
$versionId = rex_request('version_id', 'int');
if (!isset($versions[$versionId])) {
return null;
}
$version = $versions[$versionId];
if (!rex_string::versionCompare($version['version'], rex::getVersion(), '>')) {
throw new rex_api_exception(sprintf('Existing version of Core (%s) is newer than %s', rex::getVersion(), $version['version']));
}
try {
$archivefile = rex_install_webservice::getArchive($version['path']);
} catch (rex_functional_exception $e) {
throw new rex_api_exception($e->getMessage());
}
$message = '';
$temppath = rex_path::coreCache('.new.core/');
try {
if ($version['checksum'] != md5_file($archivefile)) {
throw new rex_functional_exception($installAddon->i18n('warning_zip_wrong_checksum'));
}
if (!rex_install_archive::extract($archivefile, $temppath)) {
throw new rex_functional_exception($installAddon->i18n('warning_core_zip_not_extracted'));
}
if (!is_dir($temppath . 'core')) {
throw new rex_functional_exception($installAddon->i18n('warning_zip_wrong_format'));
}
$coreAddons = [];
/** @var rex_addon[] $updateAddons */
$updateAddons = [];
if (is_dir($temppath . 'addons')) {
foreach (rex_finder::factory($temppath . 'addons')->dirsOnly() as $dir) {
$addonkey = $dir->getBasename();
$addonPath = $dir->getRealPath() . '/';
if (!file_exists($addonPath . rex_package::FILE_PACKAGE)) {
continue;
}
$config = rex_file::getConfig($addonPath . rex_package::FILE_PACKAGE);
if (!isset($config['version']) || rex_addon::exists($addonkey) && rex_string::versionCompare($config['version'], rex_addon::get($addonkey)->getVersion(), '<')) {
continue;
}
$coreAddons[$addonkey] = $addonkey;
if (rex_addon::exists($addonkey)) {
$updateAddons[$addonkey] = rex_addon::get($addonkey);
$updateAddonsConfig[$addonkey] = $config;
}
}
}
//$config = rex_file::getConfig($temppath . 'core/default.config.yml');
//foreach ($config['system_addons'] as $addonkey) {
// if (is_dir($temppath . 'addons/' . $addonkey) && rex_addon::exists($addonkey)) {
// $updateAddons[$addonkey] = rex_addon::get($addonkey);
// }
//}
$this->checkRequirements($temppath, $version['version'], $updateAddonsConfig);
if (file_exists($temppath . 'core/update.php')) {
include $temppath . 'core/update.php';
}
foreach ($updateAddons as $addonkey => $addon) {
if ($addon->isInstalled() && file_exists($file = $temppath . 'addons/' . $addonkey . '/' . rex_package::FILE_UPDATE)) {
try {
$addon->includeFile($file);
if ($msg = $addon->getProperty('updatemsg', '')) {
throw new rex_functional_exception($msg);
}
if (!$addon->getProperty('update', true)) {
throw new rex_functional_exception(rex_i18n::msg('package_no_reason'));
}
} catch (rex_functional_exception $e) {
throw new rex_functional_exception($addonkey . ': ' . $e->getMessage(), $e);
} catch (rex_sql_exception $e) {
throw new rex_functional_exception($addonkey . ': SQL error: ' . $e->getMessage(), $e);
}
}
}
// create backup
$installConfig = rex_file::getCache($installAddon->getDataPath('config.json'));
if (isset($installConfig['backups']) && $installConfig['backups']) {
rex_dir::create($installAddon->getDataPath());
$archive = $installAddon->getDataPath(strtolower(preg_replace('/[^a-z0-9-_.]/i', '_', rex::getVersion())) . '.zip');
rex_install_archive::copyDirToArchive(rex_path::core(), $archive);
foreach ($updateAddons as $addonkey => $addon) {
rex_install_archive::copyDirToArchive($addon->getPath(), $archive, 'addons/' . $addonkey);
}
}
// copy plugins to new addon dirs
foreach ($updateAddons as $addonkey => $addon) {
foreach ($addon->getRegisteredPlugins() as $plugin) {
$pluginPath = $temppath . 'addons/' . $addonkey . '/plugins/' . $plugin->getName();
if (!is_dir($pluginPath)) {
rex_dir::copy($plugin->getPath(), $pluginPath);
} elseif ($plugin->isInstalled() && is_dir($pluginPath . '/assets')) {
rex_dir::copy($pluginPath . '/assets', $plugin->getAssetsPath());
}
}
//.........这里部分代码省略.........
示例6: synchronizeWithFileSystem
/**
* Synchronizes the packages with the file system.
*/
public static function synchronizeWithFileSystem()
{
$config = rex::getConfig('package-config');
$addons = self::readPackageFolder(rex_path::src('addons'));
$registeredAddons = array_keys(rex_addon::getRegisteredAddons());
foreach (array_diff($registeredAddons, $addons) as $addonName) {
$manager = rex_addon_manager::factory(rex_addon::get($addonName));
$manager->_delete(true);
unset($config[$addonName]);
}
foreach ($addons as $addonName) {
if (!rex_addon::exists($addonName)) {
$config[$addonName]['install'] = false;
$config[$addonName]['status'] = false;
$registeredPlugins = [];
} else {
$addon = rex_addon::get($addonName);
$config[$addonName]['install'] = $addon->isInstalled();
$config[$addonName]['status'] = $addon->isAvailable();
$registeredPlugins = array_keys($addon->getRegisteredPlugins());
}
$plugins = self::readPackageFolder(rex_path::addon($addonName, 'plugins'));
foreach (array_diff($registeredPlugins, $plugins) as $pluginName) {
$manager = rex_plugin_manager::factory(rex_plugin::get($addonName, $pluginName));
$manager->_delete(true);
unset($config[$addonName]['plugins'][$pluginName]);
}
foreach ($plugins as $pluginName) {
$plugin = rex_plugin::get($addonName, $pluginName);
$config[$addonName]['plugins'][$pluginName]['install'] = $plugin->isInstalled();
$config[$addonName]['plugins'][$pluginName]['status'] = $plugin->getProperty('status');
}
if (isset($config[$addonName]['plugins']) && is_array($config[$addonName]['plugins'])) {
ksort($config[$addonName]['plugins']);
}
}
ksort($config);
rex::setConfig('package-config', $config);
rex_addon::initialize();
}
示例7: foreach
</div>
';
$content = '
<table class="table table-striped table-hover" id="rex-js-table-install-packages-addons">
<thead>
<tr>
<th class="rex-table-icon"><a href="' . rex_url::currentBackendPage(['func' => 'reload']) . '" title="' . $this->i18n('reload') . '"><i class="rex-icon rex-icon-refresh"></i></a></th>
<th>' . $this->i18n('key') . '</th>
<th>' . $this->i18n('name') . ' / ' . $this->i18n('author') . '</th>
<th>' . $this->i18n('shortdescription') . '</th>
<th class="rex-table-action">' . $this->i18n('header_function') . '</th>
</tr>
</thead>
<tbody>';
foreach ($addons as $key => $addon) {
if (rex_addon::exists($key)) {
$content .= '
<tr>
<td class="rex-table-icon"><i class="rex-icon rex-icon-package"></i></td>
<td data-title="' . $this->i18n('key') . '">' . $key . '</td>
<td data-title="' . $this->i18n('name') . '"><b>' . $addon['name'] . '</b><br /><span class="text-muted">' . $addon['author'] . '</span></td>
<td data-title="' . $this->i18n('shortdescription') . '">' . nl2br($addon['shortdescription']) . '</td>
<td class="rex-table-action"><span class="text-nowrap"><i class="rex-icon rex-icon-package-exists"></i> ' . $this->i18n('addon_already_exists') . '</span></td>
</tr>';
} else {
$url = rex_url::currentBackendPage(['addonkey' => $key]);
$content .= '
<tr>
<td class="rex-table-icon"><a href="' . $url . '"><i class="rex-icon rex-icon-package"></i></a></td>
<td data-title="' . $this->i18n('key') . '"><a href="' . $url . '">' . $key . '</a></td>
<td data-title="' . $this->i18n('name') . '"><b>' . $addon['name'] . '</b><br /><span class="text-muted">' . $addon['author'] . '</span></td>
示例8: exists
/**
* Returns if the plugin exists.
*
* @param string $addon Name of the addon
* @param string $plugin Name of the plugin
*
* @return bool
*/
public static function exists($addon, $plugin = null)
{
return rex_addon::exists($addon) && rex_addon::get($addon)->pluginExists($plugin);
}