diff --git a/src/docs/CHANGELOG b/src/docs/CHANGELOG index dd05a3c58e..3d65ca4813 100644 --- a/src/docs/CHANGELOG +++ b/src/docs/CHANGELOG @@ -4,6 +4,7 @@ CHANGELOG - ZIKULA 1.3.10 - Added missing hook area registration for HTML blocks - Show registration errors in current language - Improved language detection when using short urls +- Fixed error messages with new module that is not compatible (#1641) CHANGELOG - ZIKULA 1.3.9 ------------------------ diff --git a/src/system/Extensions/lib/Extensions/Api/Admin.php b/src/system/Extensions/lib/Extensions/Api/Admin.php index 188bcc281d..e426438663 100644 --- a/src/system/Extensions/lib/Extensions/Api/Admin.php +++ b/src/system/Extensions/lib/Extensions/Api/Admin.php @@ -543,21 +543,21 @@ public function getfilemodules() $moddependencies = serialize(array()); } //if (!isset($args['name'])) { - $filemodules[$name] = array( - 'directory' => $dir, - 'name' => $name, - 'type' => $moduletype, - 'displayname' => $displayname, - 'url' => $url, - 'oldnames' => $oldnames, - 'version' => $version, - 'capabilities' => $capabilities, - 'description' => $description, - 'securityschema' => $securityschema, - 'dependencies' => $moddependencies, - 'core_min' => $core_min, - 'core_max' => $core_max, - ); + $filemodules[$name] = array( + 'directory' => $dir, + 'name' => $name, + 'type' => $moduletype, + 'displayname' => $displayname, + 'url' => $url, + 'oldnames' => $oldnames, + 'version' => $version, + 'capabilities' => $capabilities, + 'description' => $description, + 'securityschema' => $securityschema, + 'dependencies' => $moddependencies, + 'core_min' => $core_min, + 'core_max' => $core_max, + ); // important: unset modversion and modtype, otherwise the // following modules will have some values not defined in @@ -621,39 +621,41 @@ public function regenerate($args) if (isset($modinfo['oldnames']) && !empty($modinfo['oldnames'])) { $tables = DBUtil::getTables(); foreach ($dbmodules as $dbname => $dbmodinfo) { - if (in_array($dbmodinfo['name'], (array)$modinfo['oldnames'])) { - // migrate its modvars - $cols = $tables['module_vars_column']; - $save = array('modname' => $modinfo['name']); - DBUtil::updateObject($save, 'module_vars', "{$cols['modname']} = '$dbname'"); - - // rename the module register - $save = $dbmodules[$dbname]; - $save['name'] = $modinfo['name']; - unset($dbmodules[$dbname]); - $dbname = $modinfo['name']; - $dbmodules[$dbname] = $save; - DBUtil::updateObject($dbmodules[$dbname], 'modules'); - - // rename hooks in the hooks table. - $hooksColumns = $tables['hooks_column']; - $hooks = DBUtil::selectObjectArray('hooks', "$hooksColumns[smodule] = '$save[name]'"); - if ($hooks) { - foreach ($hooks as $hook) { - $hook['smodule'] = $dbmodinfo['name']; - DBUtil::updateObject($hook, 'hooks'); + if (isset($dbmodinfo['name'])) { + if (in_array($dbmodinfo['name'], (array)$modinfo['oldnames'])) { + // migrate its modvars + $cols = $tables['module_vars_column']; + $save = array('modname' => $modinfo['name']); + DBUtil::updateObject($save, 'module_vars', "{$cols['modname']} = '$dbname'"); + + // rename the module register + $save = $dbmodules[$dbname]; + $save['name'] = $modinfo['name']; + unset($dbmodules[$dbname]); + $dbname = $modinfo['name']; + $dbmodules[$dbname] = $save; + DBUtil::updateObject($dbmodules[$dbname], 'modules'); + + // rename hooks in the hooks table. + $hooksColumns = $tables['hooks_column']; + $hooks = DBUtil::selectObjectArray('hooks', "$hooksColumns[smodule] = '$save[name]'"); + if ($hooks) { + foreach ($hooks as $hook) { + $hook['smodule'] = $dbmodinfo['name']; + DBUtil::updateObject($hook, 'hooks'); + } } - } - $hooks = DBUtil::selectObjectArray('hooks', "$hooksColumns[tmodule] = '$save[name]'"); - if ($hooks) { - foreach ($hooks as $hook) { - $hook['tmodule'] = $dbmodinfo['name']; - DBUtil::updateObject($hook, 'hooks'); + $hooks = DBUtil::selectObjectArray('hooks', "$hooksColumns[tmodule] = '$save[name]'"); + if ($hooks) { + foreach ($hooks as $hook) { + $hook['tmodule'] = $dbmodinfo['name']; + DBUtil::updateObject($hook, 'hooks'); + } } - } - DBUtil::deleteObjectByID('hooks', $modinfo['name'], 'tmodule'); + DBUtil::deleteObjectByID('hooks', $modinfo['name'], 'tmodule'); + } } } unset($tables); @@ -689,9 +691,11 @@ public function regenerate($args) $maxok = version_compare($filemodules[$name]['core_max'], $coreVersion); } - if ($minok == -1 || $maxok == -1) { - $dbmodules[$name]['state'] = $dbmodules[$name]['state'] + 20; - $this->setState(array('id' => $dbmodules[$name]['id'], 'state' => $dbmodules[$name]['state'])); + if (isset($dbmodules[$name])) { + if ($minok == -1 || $maxok == -1) { + $dbmodules[$name]['state'] = $dbmodules[$name]['state'] + 20; + $this->setState(array('id' => $dbmodules[$name]['id'], 'state' => $dbmodules[$name]['state'])); + } } if (isset($dbmodules[$name]['state'])) { $filemodules[$name]['state'] = $dbmodules[$name]['state']; @@ -735,6 +739,15 @@ public function regenerate($args) if (!$modinfo['version']) { $modinfo['state'] = ModUtil::STATE_INVALID; } + if (!empty($modinfo['core_min'])) { + $minok = version_compare($coreVersion, $modinfo['core_min']); + } + if (!empty($modinfo['core_max'])) { + $maxok = version_compare($modinfo['core_max'], $coreVersion); + } + if ($minok == -1 || $maxok == -1) { + $modinfo['state'] = $modinfo['state'] + 20; + } if ($this->serviceManager['multisites.enabled'] == 1) { // only the main site can regenerate the modules list if (($this->serviceManager['multisites.mainsiteurl'] == FormUtil::getPassedValue('sitedns', null, 'GET') && $this->serviceManager['multisites.based_on_domains'] == 0) || ($this->serviceManager['multisites.mainsiteurl'] == $_SERVER['HTTP_HOST'] && $this->serviceManager['multisites.based_on_domains'] == 1)) { @@ -753,10 +766,14 @@ public function regenerate($args) $modinfo = array_merge($modinfo, array('id' => $dbmodules[$name]['id'], 'state' => ModUtil::STATE_UNINITIALISED)); DBUtil::updateObject($modinfo, 'modules'); } - if ($dbmodules[$name]['version'] != $modinfo['version']) { - if ($dbmodules[$name]['state'] != ModUtil::STATE_UNINITIALISED && - $dbmodules[$name]['state'] != ModUtil::STATE_INVALID) { - $this->setState(array('id' => $dbmodules[$name]['id'], 'state' => ModUtil::STATE_UPGRADED)); + if (isset($dbmodinfo['version'])) { + if ($dbmodules[$name]['version'] != $modinfo['version']) { + if ($dbmodules[$name]['state'] != ModUtil::STATE_UNINITIALISED && + $dbmodules[$name]['state'] != ModUtil::STATE_INVALID && + $dbmodules[$name]['state'] != ModUtil::STATE_NOTALLOWED && + $dbmodules[$name]['state'] < 10) { + $this->setState(array('id' => $dbmodules[$name]['id'], 'state' => ModUtil::STATE_UPGRADED)); + } } } } @@ -1188,49 +1205,49 @@ public function getlinks() 'text' => $this->__('Modules list'), 'class' => 'z-icon-es-view', 'links' => array( - array('url' => ModUtil::url('Extensions', 'admin', 'view'), - 'text' => $this->__('All')), - array('url' => ModUtil::url('Extensions', 'admin', 'view', array('state'=>ModUtil::STATE_UNINITIALISED)), - 'text' => $this->__('Not installed')), - array('url' => ModUtil::url('Extensions', 'admin', 'view', array('state'=>ModUtil::STATE_INACTIVE)), - 'text' => $this->__('Inactive')), - array('url' => ModUtil::url('Extensions', 'admin', 'view', array('state'=>ModUtil::STATE_ACTIVE)), - 'text' => $this->__('Active')), - array('url' => ModUtil::url('Extensions', 'admin', 'view', array('state'=>ModUtil::STATE_MISSING)), - 'text' => $this->__('Files missing')), - array('url' => ModUtil::url('Extensions', 'admin', 'view', array('state'=>ModUtil::STATE_UPGRADED)), - 'text' => $this->__('New version uploaded')), - array('url' => ModUtil::url('Extensions', 'admin', 'view', array('state'=>ModUtil::STATE_INVALID)), - 'text' => $this->__('Invalid structure')) - )); + array('url' => ModUtil::url('Extensions', 'admin', 'view'), + 'text' => $this->__('All')), + array('url' => ModUtil::url('Extensions', 'admin', 'view', array('state'=>ModUtil::STATE_UNINITIALISED)), + 'text' => $this->__('Not installed')), + array('url' => ModUtil::url('Extensions', 'admin', 'view', array('state'=>ModUtil::STATE_INACTIVE)), + 'text' => $this->__('Inactive')), + array('url' => ModUtil::url('Extensions', 'admin', 'view', array('state'=>ModUtil::STATE_ACTIVE)), + 'text' => $this->__('Active')), + array('url' => ModUtil::url('Extensions', 'admin', 'view', array('state'=>ModUtil::STATE_MISSING)), + 'text' => $this->__('Files missing')), + array('url' => ModUtil::url('Extensions', 'admin', 'view', array('state'=>ModUtil::STATE_UPGRADED)), + 'text' => $this->__('New version uploaded')), + array('url' => ModUtil::url('Extensions', 'admin', 'view', array('state'=>ModUtil::STATE_INVALID)), + 'text' => $this->__('Invalid structure')) + )); $links[] = array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins'), 'text' => $this->__('Plugins list'), 'class' => 'z-icon-es-gears', 'links' => array( - array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins'), - 'text' => $this->__('All')), - array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('state'=>PluginUtil::NOTINSTALLED)), - 'text' => $this->__('Not installed')), - array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('state'=>PluginUtil::DISABLED)), - 'text' => $this->__('Inactive')), - array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('state'=>PluginUtil::ENABLED)), - 'text' => $this->__('Active')) - )); - + array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins'), + 'text' => $this->__('All')), + array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('state'=>PluginUtil::NOTINSTALLED)), + 'text' => $this->__('Not installed')), + array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('state'=>PluginUtil::DISABLED)), + 'text' => $this->__('Inactive')), + array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('state'=>PluginUtil::ENABLED)), + 'text' => $this->__('Active')) + )); + $links[] = array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('systemplugins' => true)), 'text' => $this->__('System Plugins'), 'class' => 'z-icon-es-gears', 'links' => array( - array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('systemplugins' => true)), - 'text' => $this->__('All')), - array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('systemplugins' => true, 'state'=>PluginUtil::NOTINSTALLED)), - 'text' => $this->__('Not installed')), - array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('systemplugins' => true, 'state'=>PluginUtil::DISABLED)), - 'text' => $this->__('Inactive')), - array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('systemplugins' => true, 'state'=>PluginUtil::ENABLED)), - 'text' => $this->__('Active')) - )); + array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('systemplugins' => true)), + 'text' => $this->__('All')), + array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('systemplugins' => true, 'state'=>PluginUtil::NOTINSTALLED)), + 'text' => $this->__('Not installed')), + array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('systemplugins' => true, 'state'=>PluginUtil::DISABLED)), + 'text' => $this->__('Inactive')), + array('url' => ModUtil::url('Extensions', 'admin', 'viewPlugins', array('systemplugins' => true, 'state'=>PluginUtil::ENABLED)), + 'text' => $this->__('Active')) + )); $legacyHooks = DBUtil::selectObjectArray('hooks'); if (System::isLegacyMode() && $legacyHooks) {