Exemple #1
0
    /**
     * upgrade
     *
     * @todo recode using DBUtil
     */
    public function Upgrade($oldversion) {

        switch ($oldversion) {
            case '0.2':
                // Create the system init hook (previous versions are for Zikula 1.2)
                EventUtil::registerPersistentModuleHandler('IWstats', 'core.postinit', array('IWstats_Listeners', 'coreinit'));

            case '3.0.0':
                // Add new fields. Stop in case of error
                if (!DBUtil::changeTable('IWstats')) {
                    return false;
                }

                // Create indexes. Don't stop in case of error
                $table = pnDBGetTables();
                $c = $table['IWstats_column'];
                DBUtil::createIndex($c['ipForward'], 'IWstats', 'ipForward');
                DBUtil::createIndex($c['ipClient'], 'IWstats', 'ipClient');
                DBUtil::createIndex($c['userAgent'], 'IWstats', 'userAgent');

                break;
        }

        // Update successful
        return true;
    }
Exemple #2
0
 /**
  * upgrade the Search module from an old version
  *
  * This function must consider all the released versions of the module!
  * If the upgrade fails at some point, it returns the last upgraded version.
  *
  * @param        string   $oldVersion   version number string to upgrade from
  * @return       mixed    true on success, last valid version string or false if fails
  */
 public function upgrade($oldversion)
 {
     // Upgrade dependent on old version number
     switch ($oldversion) {
         case '1.5.1':
             // register event handler to activate new modules in the search block
             EventUtil::registerPersistentModuleHandler('Search', 'installer.module.installed', array('Search_EventHandlers', 'moduleInstall'));
         case '1.5.2':
             // future upgrade routines
     }
     // Update successful
     return true;
 }
Exemple #3
0
 /**
  * @return bool
  */
 public function install()
 {
     try {
         DoctrineHelper::createSchema($this->entityManager, array('Dashboard_Entity_Widget', 'Dashboard_Entity_UserWidget'));
     } catch (Exception $e) {
         return false;
     }
     $this->setVar('widgets_per_row', 5);
     $this->setVar('available_per_row', 5);
     $this->setVar('new_user', 1);
     EventUtil::registerPersistentModuleHandler($this->name, 'installer.module.uninstalled', array('Dashboard_Listener_UninstallListener', 'onUninstallModule'));
     EventUtil::registerPersistentModuleHandler($this->name, 'user.account.create', array('Dashboard_Listener_CreateUserListener', 'onCreateUser'));
     EventUtil::registerPersistentModuleHandler($this->name, 'user.account.delete', array('Dashboard_Listener_RemoveUserListener', 'onRemoveUser'));
     return true;
 }
Exemple #4
0
    /**
     * initialise the module
     *
     * @author Francesc Bassas i Bullich
     * @return bool true on success, false otherwise
     */
    public function Install() {

        // Set default module variables
        $this->setVar('enabled', 0)
                ->setVar('idApp', 'SIRIUS')
                ->setVar('replyAddress', System::getVar('adminmail'))
                ->setVar('sender', 'educacio')
                ->setVar('environment', 'PRO') // Referent a l'entorn (INT, ACC, PRO, FRM)
                ->setVar('contenttype', 2)
                ->setVar('log', 0)
                ->setVar('debug', 0)
                ->setVar('logpath', '');

        EventUtil::registerPersistentModuleHandler('SiriusXtecMailer', 'module.mailer.api.sendmessage', array('SiriusXtecMailer_Listeners', 'sendMail'));

        // Initialisation successful
        return true;
    }
Exemple #5
0
    public function upgrade($oldversion)
    {
        switch ($oldVersion) {
            case '1.0.0':
                EventUtil::registerPersistentModuleHandler('SiriusXtecAuth', 'module.users.ui.logout.succeeded', array('SiriusXtecAuth_Listeners', 'logoutXtecApps'));
                $this->setVars(array('loginXtecApps' => false,
                                    'logoutXtecApps' => false,
                                    'gtafURL' => 'aplitic.xtec.cat/pls/gafoas/pk_for_mod_menu.p_for_opcions_menu?p_perfil=RES',
                                    'e13URL' => 'aplitic.xtec.cat/pls/e13_formacio_gaf/formacio_gaf.inici',
									'loginTime' => 200,
							 		'logoutTime' => 200));
            case '1.0.1':
                $this->setVars(array('gtafProtocol' => 'http',
                                     'e13Protocol' => 'http'));
            case '1.0.2':
                //This is the current version. Here next changes will be added
        }        
        return true;
    }
Exemple #6
0
    /**
     * Upgrade the module from an old version.
     *
     * This function must consider all the released versions of the module!
     * If the upgrade fails at some point, it returns the last upgraded version.
     *
     * @param string $oldVersion Version number string to upgrade from.
     *
     * @return boolean|string True on success, last valid version string or false if fails.
     */
    public function upgrade($oldversion)
    {
        // Upgrade dependent on old version number
        switch ($oldversion) {
            case '3.6':
            case '3.7':
                // legacy is no longer supported
                System::delVar('loadlegacy');
                DBUtil::changeTable('modules');
            case '3.7.4':
            case '3.7.5':
            case '3.7.6':
            case '3.7.8':
                // create the new hooks tables
                Doctrine_Core::createTablesFromArray(array('Zikula_Doctrine_Model_HookArea', 'Zikula_Doctrine_Model_HookProvider', 'Zikula_Doctrine_Model_HookSubscriber', 'Zikula_Doctrine_Model_HookBinding', 'Zikula_Doctrine_Model_HookRuntime'));
                EventUtil::registerPersistentModuleHandler('Extensions', 'controller.method_not_found', array('Extensions_HookUI', 'hooks'));
                EventUtil::registerPersistentModuleHandler('Extensions', 'controller.method_not_found', array('Extensions_HookUI', 'moduleservices'));
            case '3.7.9':
                // increase length of some hook table fields from 60 to 100
                $commands = array();
                $commands[] = "ALTER TABLE hook_area CHANGE areaname areaname VARCHAR(100) NOT NULL";
                $commands[] = "ALTER TABLE hook_runtime CHANGE eventname eventname VARCHAR(100) NOT NULL";
                $commands[] = "ALTER TABLE hook_subscriber CHANGE eventname eventname VARCHAR(100) NOT NULL";

                // Load DB connection
                $dbEvent = new Zikula_Event('doctrine.init_connection');
                $connection = $this->eventManager->notify($dbEvent)->getData();

                foreach ($commands as $sql) {
                    $stmt = $connection->prepare($sql);
                    $stmt->execute();
                }

            case '3.7.10':
                // future upgrade routines

        }

        // Update successful
        return true;
    }
Exemple #7
0
 /**
  * Upgrade the module from an old version.
  *
  * This function must consider all the released versions of the module!
  * If the upgrade fails at some point, it returns the last upgraded version.
  *
  * @param string $oldVersion Version number string to upgrade from.
  *
  * @return  boolean|string True on success, last valid version string or false if fails.
  */
 public function upgrade($oldversion)
 {
     // Upgrade dependent on old version number
     switch ($oldversion) {
         case '3.6':
         case '3.7':
             // legacy is no longer supported
             System::delVar('loadlegacy');
             DBUtil::changeTable('modules');
         case '3.7.4':
         case '3.7.5':
         case '3.7.6':
         case '3.7.8':
             // create the new hooks tables
             Doctrine_Core::createTablesFromArray(array('Zikula_Doctrine_Model_HookArea', 'Zikula_Doctrine_Model_HookProvider', 'Zikula_Doctrine_Model_HookSubscriber', 'Zikula_Doctrine_Model_HookBinding', 'Zikula_Doctrine_Model_HookRuntime'));
             EventUtil::registerPersistentModuleHandler('Extensions', 'controller.method_not_found', array('Extensions_HookUI', 'hooks'));
             EventUtil::registerPersistentModuleHandler('Extensions', 'controller.method_not_found', array('Extensions_HookUI', 'moduleservices'));
         case '3.7.9':
             // future upgrade routines
     }
     // Update successful
     return true;
 }
Exemple #8
0
 /**
  * Register persistent event handlers.
  * These are listeners for external events of the core and other modules.
  */
 protected function registerPersistentEventHandlers()
 {
     // core ->
     EventUtil::registerPersistentModuleHandler('Reviews', 'api.method_not_found', array('Reviews_Listener_Core', 'apiMethodNotFound'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'core.preinit', array('Reviews_Listener_Core', 'preInit'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'core.init', array('Reviews_Listener_Core', 'init'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'core.postinit', array('Reviews_Listener_Core', 'postInit'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'controller.method_not_found', array('Reviews_Listener_Core', 'controllerMethodNotFound'));
     // front controller -> Reviews_Listener_FrontController
     EventUtil::registerPersistentModuleHandler('Reviews', 'frontcontroller.predispatch', array('Reviews_Listener_FrontController', 'preDispatch'));
     // installer -> Reviews_Listener_Installer
     EventUtil::registerPersistentModuleHandler('Reviews', 'installer.module.installed', array('Reviews_Listener_Installer', 'moduleInstalled'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'installer.module.upgraded', array('Reviews_Listener_Installer', 'moduleUpgraded'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'installer.module.uninstalled', array('Reviews_Listener_Installer', 'moduleUninstalled'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'installer.subscriberarea.uninstalled', array('Reviews_Listener_Installer', 'subscriberAreaUninstalled'));
     // modules -> Reviews_Listener_ModuleDispatch
     EventUtil::registerPersistentModuleHandler('Reviews', 'module_dispatch.postloadgeneric', array('Reviews_Listener_ModuleDispatch', 'postLoadGeneric'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'module_dispatch.preexecute', array('Reviews_Listener_ModuleDispatch', 'preExecute'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'module_dispatch.postexecute', array('Reviews_Listener_ModuleDispatch', 'postExecute'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'module_dispatch.custom_classname', array('Reviews_Listener_ModuleDispatch', 'customClassname'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'module_dispatch.service_links', array('Reviews_Listener_ModuleDispatch', 'serviceLinks'));
     // mailer -> Reviews_Listener_Mailer
     EventUtil::registerPersistentModuleHandler('Reviews', 'module.mailer.api.sendmessage', array('Reviews_Listener_Mailer', 'sendMessage'));
     // page -> Reviews_Listener_Page
     EventUtil::registerPersistentModuleHandler('Reviews', 'pageutil.addvar_filter', array('Reviews_Listener_Page', 'pageutilAddvarFilter'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'system.outputfilter', array('Reviews_Listener_Page', 'systemOutputfilter'));
     // errors -> Reviews_Listener_Errors
     EventUtil::registerPersistentModuleHandler('Reviews', 'setup.errorreporting', array('Reviews_Listener_Errors', 'setupErrorReporting'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'systemerror', array('Reviews_Listener_Errors', 'systemError'));
     // theme -> Reviews_Listener_Theme
     EventUtil::registerPersistentModuleHandler('Reviews', 'theme.preinit', array('Reviews_Listener_Theme', 'preInit'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'theme.init', array('Reviews_Listener_Theme', 'init'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'theme.load_config', array('Reviews_Listener_Theme', 'loadConfig'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'theme.prefetch', array('Reviews_Listener_Theme', 'preFetch'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'theme.postfetch', array('Reviews_Listener_Theme', 'postFetch'));
     // view -> Reviews_Listener_View
     EventUtil::registerPersistentModuleHandler('Reviews', 'view.init', array('Reviews_Listener_View', 'init'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'view.postfetch', array('Reviews_Listener_View', 'postFetch'));
     // user login -> Reviews_Listener_UserLogin
     EventUtil::registerPersistentModuleHandler('Reviews', 'module.users.ui.login.started', array('Reviews_Listener_UserLogin', 'started'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'module.users.ui.login.veto', array('Reviews_Listener_UserLogin', 'veto'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'module.users.ui.login.succeeded', array('Reviews_Listener_UserLogin', 'succeeded'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'module.users.ui.login.failed', array('Reviews_Listener_UserLogin', 'failed'));
     // user logout -> Reviews_Listener_UserLogout
     EventUtil::registerPersistentModuleHandler('Reviews', 'module.users.ui.logout.succeeded', array('Reviews_Listener_UserLogout', 'succeeded'));
     // user -> Reviews_Listener_User
     EventUtil::registerPersistentModuleHandler('Reviews', 'user.gettheme', array('Reviews_Listener_User', 'getTheme'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'user.account.create', array('Reviews_Listener_User', 'create'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'user.account.update', array('Reviews_Listener_User', 'update'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'user.account.delete', array('Reviews_Listener_User', 'delete'));
     // registration -> Reviews_Listener_UserRegistration
     EventUtil::registerPersistentModuleHandler('Reviews', 'module.users.ui.registration.started', array('Reviews_Listener_UserRegistration', 'started'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'module.users.ui.registration.succeeded', array('Reviews_Listener_UserRegistration', 'succeeded'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'module.users.ui.registration.failed', array('Reviews_Listener_UserRegistration', 'failed'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'user.registration.create', array('Reviews_Listener_UserRegistration', 'create'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'user.registration.update', array('Reviews_Listener_UserRegistration', 'update'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'user.registration.delete', array('Reviews_Listener_UserRegistration', 'delete'));
     // users module -> Reviews_Listener_Users
     EventUtil::registerPersistentModuleHandler('Reviews', 'module.users.config.updated', array('Reviews_Listener_Users', 'configUpdated'));
     // group -> Reviews_Listener_Group
     EventUtil::registerPersistentModuleHandler('Reviews', 'group.create', array('Reviews_Listener_Group', 'create'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'group.update', array('Reviews_Listener_Group', 'update'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'group.delete', array('Reviews_Listener_Group', 'delete'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'group.adduser', array('Reviews_Listener_Group', 'addUser'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'group.removeuser', array('Reviews_Listener_Group', 'removeUser'));
     // special purposes and 3rd party api support -> Reviews_Listener_ThirdParty
     EventUtil::registerPersistentModuleHandler('Reviews', 'get.pending_content', array('Reviews_Listener_ThirdParty', 'pendingContentListener'));
     EventUtil::registerPersistentModuleHandler('Reviews', 'module.content.gettypes', array('Reviews_Listener_ThirdParty', 'contentGetTypes'));
 }
Exemple #9
0
 public function upgrade($oldversion)
 {
     switch ($oldversion) {
         case '1.0':
             // no changes made
         // no changes made
         case '1.1':
             // delete old paths
             $this->delVar('xinha_path');
             $this->delVar('tinymce_path');
             // set new path
             $this->setVar('editors_path', 'javascript/scribite_editors');
         case '1.2':
             if (!DBUtil::createTable('scribite')) {
                 return false;
             }
             // create the default data for the module
             scribite_defaultdata();
             // del old module vars
             $this->delVar('editor');
             $this->delVar('editor_activemodules');
         case '1.21':
             // create new values
             $this->setVar('openwysiwyg_barmode', 'full');
             $this->setVar('openwysiwyg_width', '400');
             $this->setVar('openwysiwyg_height', '300');
             $this->setVar('xinha_statusbar', 1);
         case '1.3':
             // create new values
             $this->setVar('openwysiwyg_barmode', 'full');
             $this->setVar('openwysiwyg_width', '400');
             $this->setVar('openwysiwyg_height', '300');
             $this->setVar('xinha_statusbar', 1);
         case '2.0':
             // create new values
             $this->setVar('DefaultEditor', '-');
             $this->setVar('nicedit_fullpanel', 1);
             // fill some vars with defaults
             if (!$this->getVar('xinha_converturls')) {
                 $this->setVar('xinha_converturls', 1);
             }
             if (!$this->getVar('xinha_showloading')) {
                 $this->setVar('xinha_showloading', 1);
             }
             if (!$this->getVar('xinha_activeplugins')) {
                 $this->setVar('xinha_activeplugins', 'a:2:{i:0;s:7:"GetHtml";i:1;s:12:"SmartReplace";}');
             }
             if (!$this->getVar('tinymce_activeplugins')) {
                 $this->setVar('tinymce_activeplugins', '');
             }
             if (!$this->getVar('fckeditor_autolang')) {
                 $this->setVar('fckeditor_autolang', 1);
             }
             //create new module vars for crpCalendar
             $item = array('modname' => 'crpCalendar', 'modfuncs' => 'a:2:{i:0;s:3:"new";i:1;s:6:"modify";}', 'modareas' => 'a:1:{i:0;s:22:"crpcalendar_event_text";}', 'modeditor' => '-');
             if (!DBUtil::insertObject($item, 'scribite', false, 'mid')) {
                 LogUtil::registerError($this->__('Error! Could not update module configuration.'));
                 return '2.0';
             }
         case '2.1':
             //create new module vars for Content
             $record = array(array('modname' => 'content', 'modfuncs' => 'a:1:{i:0;s:5:"dummy";}', 'modareas' => 'a:1:{i:0;s:5:"dummy";}', 'modeditor' => '-'));
             DBUtil::insertObjectArray($record, 'scribite', 'mid');
         case '2.2':
             //create new module vars for Blocks #14
             $record = array(array('modname' => 'Blocks', 'modfuncs' => 'a:1:{i:0;s:6:"modify";}', 'modareas' => 'a:1:{i:0;s:14:"blocks_content";}', 'modeditor' => '-'));
             DBUtil::insertObjectArray($record, 'scribite', 'mid');
             // check for Zikula 1.1.x version
             if (Zikula_Core::VERSION_NUM < '1.1.0') {
                 LogUtil::registerError($this->__('This version from scribite! only works with Zikula 1.1.x and higher. Please upgrade your Zikula version or use scribite! version 2.x .'));
                 return '2.2';
             }
             // create systeminit hook - new in Zikula 1.1.0
             if (!ModUtil::registerHook('zikula', 'systeminit', 'GUI', 'scribite', 'user', 'run')) {
                 LogUtil::registerError($this->__('Error creating Hook!'));
                 return '2.2';
             }
             ModUtil::apiFunc('Modules', 'admin', 'enablehooks', array('callermodname' => 'zikula', 'hookmodname' => 'scribite'));
             LogUtil::registerStatus($this->__('<strong>scribite!</strong> was activated as core hook. You can check settings <a href="index.php?module=Modules&type=admin&func=hooks&id=0">here</a>!<br />The template plugin from previous versions of scribite! can be removed from templates.'));
         case '3.0':
             //create new module vars for Newsletter and Web_Links
             $record = array(array('modname' => 'Newsletter', 'modfuncs' => 'a:1:{i:0;s:11:"add_message";}', 'modareas' => 'a:1:{i:0;s:7:"message";}', 'modeditor' => '-'), array('modname' => 'crpVideo', 'modfuncs' => 'a:2:{i:0;s:3:"new";i:1;s:6:"modify";}', 'modareas' => 'a:1:{i:0;s:13:"video_content";}', 'modeditor' => '-'), array('modname' => 'Web_Links', 'modfuncs' => 'a:3:{i:0;s:8:"linkview";i:1;s:7:"addlink";i:2;s:17:"modifylinkrequest";}', 'modareas' => 'a:1:{i:0;s:11:"description";}', 'modeditor' => '-'));
             DBUtil::insertObjectArray($record, 'scribite', 'mid');
             // set vars for YUI Rich Text Editor
             if (!$this->getVar('yui_type')) {
                 $this->setVar('yui_type', 'Simple');
             }
             if (!$this->getVar('yui_width')) {
                 $this->setVar('yui_width', 'auto');
             }
             if (!$this->getVar('yui_height')) {
                 $this->setVar('yui_height', '300');
             }
             if (!$this->getVar('yui_dombar')) {
                 $this->setVar('yui_dombar', true);
             }
             if (!$this->getVar('yui_animate')) {
                 $this->setVar('yui_animate', true);
             }
             if (!$this->getVar('yui_collapse')) {
                 $this->setVar('yui_collapse', true);
             }
         case '3.1':
             // modify Profile module
             $originalconfig = ModUtil::apiFunc('Scribite', 'user', 'getModuleConfig', array('modulename' => "Profile"));
             $newconfig = array('mid' => $originalconfig['mid'], 'modulename' => 'Profile', 'modfuncs' => "modify", 'modareas' => "prop_signature,prop_extrainfo,prop_yinterests", 'modeditor' => $originalconfig['modeditor']);
             $modupdate = ModUtil::apiFunc('Scribite', 'admin', 'editmodule', $newconfig);
         case '3.2':
             // set new editors folder
             $this->setVar('editors_path', 'modules/scribite/pnincludes');
             LogUtil::registerStatus($this->__('<strong>Caution!</strong><br />All editors have moved to /modules/scribite/pnincludes in preparation for upcoming features of Zikula. Please check all your settings!<br />If you have adapted files from editors you have to check them too.<br /><br /><strong>Dropped support for FCKeditor and TinyMCE</strong><br />For security reasons these editors will not be supported anymore. Please change editors to an other editor.'));
         case '4.0':
         case '4.1':
         case '4.2':
             $this->setVar('nicedit_xhtml', 1);
         case '4.2.1':
             if (!$this->getVar('ckeditor_language')) {
                 $this->setVar('ckeditor_language', 'en');
             }
             if (!$this->getVar('ckeditor_barmode')) {
                 $this->setVar('ckeditor_barmode', 'Full');
             }
             if (!$this->getVar('ckeditor_width')) {
                 $this->setVar('ckeditor_width', '"70%"');
             }
             if (!$this->getVar('ckeditor_height')) {
                 $this->setVar('ckeditor_height', '400');
             }
         case '4.2.2':
             // this renames the table and the columns per new z1.3.0 standards
             $this->renameColumns();
             EventUtil::registerPersistentModuleHandler('Scribite', 'core.postinit', array('Scribite_Listeners', 'coreinit'));
             $this->setVar('editors_path', 'modules/Scribite/includes');
             LogUtil::registerStatus($this->__('<strong>Caution!</strong><br />All editors have moved to /modules/Scribite/includes.<br />If you have adapted files from editors you have to check them too.'));
         case '4.2.3':
             //set vars for markitup
             if (!$this->getVar('markitup_width')) {
                 $this->setVar('markitup_width', '650px');
             }
             if (!$this->getVar('markitup_height')) {
                 $this->setVar('markitup_height', '400px');
             }
             // remove fckeditor (was deprecated in 4.1)
             $this->delVar('fckeditor_language');
             $this->delVar('fckeditor_barmode');
             $this->delVar('fckeditor_width');
             $this->delVar('fckeditor_height');
             $this->delVar('fckeditor_autolang');
             // update module assignments to correct removed and deprecated editors
             $dbtable = DBUtil::getTables();
             $columns = $dbtable['scribite_column'];
             $sql = "UPDATE `{$dbtable['scribite']}` SET `{$columns['modeditor']}`='-' WHERE `{$columns['modeditor']}`='fckeditor' OR `{$columns['modeditor']}`='tinymce' OR `{$columns['modeditor']}`='openwysiwyg'";
             DBUtil::executeSQL($sql);
             // reset modules
             $this->resetModuleConfig('News');
             $this->resetModuleConfig('Pages');
             $this->resetModuleConfig('ContentExpress');
             $this->resetModuleConfig('Mediashare');
             // correct possible serialized data corruption
             if (!DataUtil::is_serialized($this->getVar('xinha_activeplugins'))) {
                 $this->delVar('xinha_activeplugins');
             }
             // relocate xinha styles
             $this->setVar('xinha_style', 'modules/Scribite/style/xinha/editor.css');
             // remove content settings
             DBUtil::deleteObjectById('scribite', 'content', 'modname');
         case '4.3.0':
             /* reimplement TinyMCE */
             // future updates
             // notice - remove openwysiwyg vars @>4.3.0
     }
     return true;
 }
Exemple #10
0
    /**
     * Upgrade the module from a prior version.
     *
     * This function must consider all the released versions of the module!
     * If the upgrade fails at some point, it returns the last upgraded version.
     *
     * @param string $oldVersion The version number string from which the upgrade starting.
     *
     * @return boolean|string True if the module is successfully upgraded to the current version; last valid version string or false if the upgrade fails.
     */
    function upgrade($oldVersion)
    {
        // Upgrade dependent on old version number
        switch ($oldVersion)
        {
            case '1.1':
                // Upgrade 1.1 -> 1.2
                $this->setVar('termsofuse', true);
                $this->setVar('privacypolicy', true);
                $this->setVar('accessibilitystatement', true);

            case '1.2':
                // Upgrade 1.2 -> 1.3
                // Nothing to do.

            case '1.3':
                // Upgrade 1.3 -> 2.0.0
                // Convert the module variables to the new names
                $this->setVar(Legal_Constant::MODVAR_TERMS_ACTIVE, $this->getVar('termsofuse', true));
                $this->delVar('termsofuse');
                $this->setVar(Legal_Constant::MODVAR_PRIVACY_ACTIVE, $this->getVar('privacypolicy', true));
                $this->delVar('privacypolicy');
                $this->setVar(Legal_Constant::MODVAR_ACCESSIBILITY_ACTIVE, $this->getVar('accessibilitystatement', true));
                $this->delVar('accessibilitystatement');

                // Set the new module variable -- but if Users set it for us during its upgrade, then don't overwrite it
                $this->setVar(Legal_Constant::MODVAR_MINIMUM_AGE, $this->getVar(Legal_Constant::MODVAR_MINIMUM_AGE, 0));

                // Set up the new persistent event handler, and any other event-related features.
                EventUtil::registerPersistentModuleHandler($this->name, 'user.login.veto', array('Legal_Listener_UsersLoginVeto', 'acceptPoliciesListener'));
                EventUtil::registerPersistentEventHandlerClass($this->name, 'Legal_Listener_UsersUiHandler');

            case '2.0.0':
                // Upgrade 2.0.0 -> 2.0.1
                // add vars for new document types
                $this->setVar(Legal_Constant::MODVAR_LEGALNOTICE_ACTIVE, false);
                $this->setVar(Legal_Constant::MODVAR_CANCELLATIONRIGHTPOLICY_ACTIVE, false);
                $this->setVar(Legal_Constant::MODVAR_TRADECONDITIONS_ACTIVE, false);

                // add vars for optional custom urls
                $this->setVar(Legal_Constant::MODVAR_LEGALNOTICE_URL, '');
                $this->setVar(Legal_Constant::MODVAR_TERMS_URL, '');
                $this->setVar(Legal_Constant::MODVAR_PRIVACY_URL, '');
                $this->setVar(Legal_Constant::MODVAR_ACCESSIBILITY_URL, '');
                $this->setVar(Legal_Constant::MODVAR_CANCELLATIONRIGHTPOLICY_URL, '');
                $this->setVar(Legal_Constant::MODVAR_TRADECONDITIONS_URL, '');

            case '2.0.1':
                // Upgrade 2.0.1 -> ?.?.?

                // The following break should be the only one in the switch, and should appear immediately prior to the default case.
                break;
            default:
                $this->registerError($this->__f('Upgrading the Legal module from version %1$s to %2$s is not supported.', array($oldVersion, $this->version->getVersion())));
                return $oldVersion;
        }

        // Update successful
        return true;
    }
Exemple #11
0
    /**
     * Upgrade the users module from an older version.
     *
     * This function must consider all the released versions of the module!
     * If the upgrade fails at some point, it returns the last upgraded version.
     *
     * @param string $oldVersion Version number string to upgrade from.
     *
     * @return mixed True on success, last valid version string or false if fails.
     */
    public function upgrade($oldVersion)
    {
        // $oldversion 1.9 and 1.10 handled by Zikula 1.2.
        if (version_compare($oldVersion, '1.11') === -1) {
            return $oldVersion;
        }
        // Versions 1.14 through 2.1.0 were development versions that were released only to developers, and many changes
        // over the course of those versions regarding database structure were radically modified. Upgrading from any of
        // those versions is not possible.
        if ((version_compare($oldVersion, '1.13') === 1) && (version_compare($oldVersion, '2.2.0') === -1)) {
            return $oldVersion;
        }

        // Upgrade dependent on old version number
        switch ($oldVersion) {
            case '1.11':
                // upgrade 1.11 to 1.12
                $this->upgrade_migrateSerialisedUserTemp();
            case '1.12':
                // upgrade 1.12 to 1.13

                // Do modvar renames and moves here, but new modvars and modvar removals are done below for all versions
                $this->setVar(Users_Constant::MODVAR_AVATAR_IMAGE_PATH, Users_Constant::MODVAR_AVATAR_IMAGE_PATH);
                // lowercaseuname Removed in 2.0.0
                //$this->setVar('lowercaseuname', 1);

                // **************************************************************
                // 1.12->1.13 is the last known upgrade of Users for Zikula 1.2.x
                // Users module 1.13 is the last known 1.2.x version released.
                // If the 1.2.x branch gets a new version, this must be updated.
                // **************************************************************
            case '1.13':
                // upgrade 1.13 to 2.2.0

                // Do modvar renames and moves here, but new modvars and modvar removals are done below for all versions

                // Check if the hash method is md5. If so, it is not used any more. Change it to the new default.
                if ($this->getVar(Users_Constant::MODVAR_HASH_METHOD, false) == 'md5') {
                    $this->setVar(Users_Constant::MODVAR_HASH_METHOD, Users_Constant::DEFAULT_HASH_METHOD);
                }

                // Convert the banned user names to a comma separated list.
                $bannedUnames = $this->getVar(Users_Constant::MODVAR_REGISTRATION_ILLEGAL_UNAMES, '');
                $bannedUnames = preg_split('/\s+/', $bannedUnames);
                $bannedUnames = implode(', ', $bannedUnames);
                $this->setVar(Users_Constant::MODVAR_REGISTRATION_ILLEGAL_UNAMES, $bannedUnames);

                // System-generated passwords are deprecated since 1.3.0. Change it to
                // User-generated passwords.
                $regVerifyEmail = $this->getVar(Users_Constant::MODVAR_REGISTRATION_VERIFICATION_MODE, Users_Constant::VERIFY_NO);
                if ($regVerifyEmail == Users_Constant::VERIFY_SYSTEMPWD) {
                    $this->setVar(Users_Constant::MODVAR_REGISTRATION_VERIFICATION_MODE, Users_Constant::VERIFY_USERPWD);
                }

                // IDN domains setting moving to system settings.
                System::setVar('idnnames', (bool)$this->getVar('idnnames', true));

                // Minimum age is moving to Legal
                ModUtil::setVar('Legal', 'minimumAge', $this->getVar('minage', 0));

                if (!$this->upgrade113XTablesTo220Tables($oldVersion)) {
                    return '1.13';
                }

                EventUtil::registerPersistentModuleHandler($this->name, 'get.pending_content', array('Users_Listener_PendingContent', 'pendingContentListener'));
                EventUtil::registerPersistentModuleHandler($this->name, 'user.login.veto', array('Users_Listener_ForcedPasswordChange', 'forcedPasswordChangeListener'));
                EventUtil::registerPersistentModuleHandler($this->name, 'user.logout.succeeded', array('Users_Listener_ClearUsersNamespace', 'clearUsersNamespaceListener'));
                EventUtil::registerPersistentModuleHandler($this->name, 'frontcontroller.exception', array('Users_Listener_ClearUsersNamespace', 'clearUsersNamespaceListener'));
                HookUtil::registerSubscriberBundles($this->version->getHookSubscriberBundles());
                HookUtil::registerProviderBundles($this->version->getHookProviderBundles());
            case '2.2.0':
                // This s the current version: add 2.2.0 --> next when appropriate
        }

        $currentModVars = $this->getVars();
        $defaultModVars = $this->getDefaultModvars();

        // Remove modvars that are no longer defined.
        foreach ($currentModVars as $modVar => $currentValue) {
            if (!array_key_exists($modVar, $defaultModVars)) {
                $this->delVar($modVar);
            }
        }

        // Add modvars that are new to the version
        foreach ($defaultModVars as $modVar => $defaultValue) {
            if (!array_key_exists($modVar, $currentModVars)) {
                $this->setVar($modVar, $defaultValue);
            }
        }

        // Update successful
        return true;
    }
Exemple #12
0
 /**
  * Upgrade module
  *
  * @param   string    $oldversion
  * @return  boolean   true/false
  */
 public function upgrade($oldversion)
 {
     // upgrade dependent on old version number
     switch ($oldversion) {
         case '2.0':
             $table_prefix = 'phpbb_';
             $this->setVar('table_prefix', $table_prefix);
             $connection = Doctrine_Manager::getInstance()->getCurrentConnection();
             // drop system table prefix (depreciated)
             $stmt = $connection->prepare("SHOW TABLES LIKE '%" . $table_prefix . "_%'");
             try {
                 $stmt->execute();
             } catch (Exception $e) {
                 return LogUtil::registerError(__('Error: ') . $e->getMessage());
             }
             $items = $stmt->fetchAll(Doctrine_Core::FETCH_NUM);
             foreach ($items as $item) {
                 $pos = strpos($item[0], $table_prefix);
                 if ($pos > 0) {
                     $stmt = $connection->prepare('RENAME TABLE ' . $item[0] . " TO " . substr($item[0], $pos));
                     try {
                         $stmt->execute();
                     } catch (Exception $e) {
                         return LogUtil::registerError(__('Error: ') . $e->getMessage());
                     }
                 }
             }
             // Register hooks
             $sqlQueries = array();
             $sqlQueries[] = 'DELETE FROM `hook_area` WHERE `owner`="ZphpBB2"';
             $sqlQueries[] = 'DELETE FROM `hook_subscriber` WHERE `owner`="ZphpBB2"';
             foreach ($sqlQueries as $sql) {
                 $stmt = $connection->prepare($sql);
                 try {
                     $stmt->execute();
                 } catch (Exception $e) {
                 }
             }
             HookUtil::registerSubscriberBundles($this->version->getHookSubscriberBundles());
         case '2.1.0':
             // Register event handlers
             EventUtil::registerPersistentModuleHandler('ZphpBB2', 'user.account.create', array('ZphpBB2_Listener_UsersSynch', 'createAccountListener'));
             EventUtil::registerPersistentModuleHandler('ZphpBB2', 'user.account.update', array('ZphpBB2_Listener_UsersSynch', 'updateAccountListener'));
             EventUtil::registerPersistentModuleHandler('ZphpBB2', 'user.account.delete', array('ZphpBB2_Listener_UsersSynch', 'deleteAccountListener'));
         case '2.1.1':
             // future upgrade routines
     }
     return true;
 }
Exemple #13
0
 protected function contentUpgrade_4_0_0($oldVersion)
 {
     // remove table prefixes manually if needed
     $prefix = $this->serviceManager['prefix'];
     if (!empty($prefix)) {
         $connection = Doctrine_Manager::getInstance()->getConnection('default');
         $sqlStatements = array();
         // remove table prefix with SQL calls, there is no IF NOT EXISTS on RENAME
         $sqlStatements[] = 'RENAME TABLE ' . $prefix . '_content_content' . " TO content_content";
         $sqlStatements[] = 'RENAME TABLE ' . $prefix . '_content_history' . " TO content_history";
         $sqlStatements[] = 'RENAME TABLE ' . $prefix . '_content_page' . " TO content_page";
         $sqlStatements[] = 'RENAME TABLE ' . $prefix . '_content_pagecategory' . " TO content_pagecategory";
         $sqlStatements[] = 'RENAME TABLE ' . $prefix . '_content_searchable' . " TO content_searchable";
         $sqlStatements[] = 'RENAME TABLE ' . $prefix . '_content_translatedcontent' . " TO content_translatedcontent";
         $sqlStatements[] = 'RENAME TABLE ' . $prefix . '_content_translatedpage' . " TO content_translatedpage";
         foreach ($sqlStatements as $sql) {
             $statement = $connection->prepare($sql);
             try {
                 $statement->execute();
             } catch (Exception $e) {
                 LogUtil::registerStatus($this->__f('Table rename failed: %s.', array($e->getMessage())));
             }
         }
     }
     // update tables with new indexes
     if (!DBUtil::changeTable('content_page')) {
         return false;
     }
     if (!DBUtil::changeTable('content_content')) {
         return false;
     }
     if (!DBUtil::changeTable('content_translatedpage')) {
         return false;
     }
     if (!DBUtil::changeTable('content_translatedcontent')) {
         return false;
     }
     if (!DBUtil::changeTable('content_history')) {
         return false;
     }
     // upgrade Content's layoutTypes, if layouts do not exist in the new version return an error !
     if (!self::updateLayout()) {
         return false;
     }
     // upgrade the Content module's ContentTypes
     self::updateContentType();
     // upgrade other module's ContentTypes if available
     ModUtil::apiFunc('Content', 'admin', 'upgradecontenttypes');
     // Register for hook subscribing
     HookUtil::registerSubscriberBundles($this->version->getHookSubscriberBundles());
     // register handlers
     EventUtil::registerPersistentModuleHandler('Content', 'module.content.gettypes', array('Content_Util', 'getTypes'));
     return true;
 }
Exemple #14
0
 /**
  * upgrade the EZComments module from an old version
  *
  * This function upgrades the module to be used. It updates tables,
  * registers hooks,...
  *
  * @return boolean true on success, false otherwise.
  */
 public function upgrade($oldversion)
 {
     switch ($oldversion) {
         case '1.2':
             $this->setVar('enablepager', false);
             $this->setVar('commentsperpage', '25');
         case '1.3':
             $this->setVar('blacklinkcount', 5);
             $this->setVar('akismet', false);
         case '1.4':
             $this->setVar('anonusersrequirename', false);
             $this->setVar('akismetstatus', 1);
         case '1.5':
             if (!DBUtil::changeTable('EZComments')) {
                 return '1.5';
             }
             $this->setVar('template', 'Standard');
             $this->setVar('modifyowntime', 6);
             $this->setVar('useaccountpage', '1');
         case '1.6':
         case '1.61':
         case '1.62':
             $this->setVar('migrated', array('dummy' => true));
             $this->setVar('css', 'style.css');
         case '2.0.0':
         case '2.0.1':
             // register hooks
             HookUtil::registerSubscriberBundles($this->version->getHookSubscriberBundles());
             HookUtil::registerProviderBundles($this->version->getHookProviderBundles());
             // register the module delete hook
             EventUtil::registerPersistentModuleHandler('EZComments', 'installer.module.uninstalled', array('EZComments_EventHandlers', 'moduleDelete'));
             EventUtil::registerPersistentModuleHandler('EZComments', 'installer.subscriberarea.uninstalled', array('EZComments_EventHandlers', 'hookAreaDelete'));
             // drop table prefix
             $prefix = $this->serviceManager['prefix'];
             $connection = Doctrine_Manager::getInstance()->getConnection('default');
             $sql = 'RENAME TABLE ' . $prefix . '_ezcomments' . " TO ezcomments";
             $stmt = $connection->prepare($sql);
             try {
                 $stmt->execute();
             } catch (Exception $e) {
             }
             if (!DBUtil::changeTable('EZComments')) {
                 return LogUtil::registerError($this->__('Error updating the table.'));
             }
         case '3.0.0':
         case '3.0.1':
             // future upgrade routines
             break;
     }
     return true;
 }
Exemple #15
0
 function upgrade($oldversion)
 {
     $prefix = System::getVar('prefix');
     $prefix = $prefix ? $prefix . '_' : '';
     switch ($oldversion) {
         case '1.0':
             $sql = "ALTER TABLE " . $prefix . "addressbook_address ADD adr_geodata VARCHAR( 180 ) NULL AFTER adr_country";
             if (!DBUtil::executeSQL($sql, -1, -1, false, true)) {
                 return false;
             }
             // Upgrade successfull
             ModUtil::setVar('Addressbook', 'google_api_key', '');
             ModUtil::setVar('Addressbook', 'google_zoom', 15);
             return AddressBook_upgrade(1.1);
         case '1.1':
             $this->_addressbook_migratecategories();
             $this->_addressbook_migrateprefixes();
             ModUtil::delVar('Addressbook', 'name_order');
             ModUtil::delVar('Addressbook', 'zipbeforecity');
             return AddressBook_upgrade(1.2);
         case '1.2':
             ModUtil::delVar('Addressbook', 'textareawidth');
             ModUtil::delVar('Addressbook', 'dateformat');
             ModUtil::delVar('Addressbook', 'numformat');
             $this->_addressbook_upgradeto_1_3();
             return true;
         case '1.3':
         case '1.3.1':
             // drop table prefix
             if ($prefix) {
                 $connection = Doctrine_Manager::getInstance()->getConnection('default');
                 $sqlStatements = array();
                 $sqlStatements[] = 'RENAME TABLE ' . $prefix . 'addressbook_address' . " TO `addressbook_address`";
                 $sqlStatements[] = 'RENAME TABLE ' . $prefix . 'addressbook_customfields' . " TO `addressbook_customfields`";
                 $sqlStatements[] = 'RENAME TABLE ' . $prefix . 'addressbook_favourites' . " TO `addressbook_favourites`";
                 $sqlStatements[] = 'RENAME TABLE ' . $prefix . 'addressbook_labels' . " TO `addressbook_labels`";
                 foreach ($sqlStatements as $sql) {
                     $stmt = $connection->prepare($sql);
                     try {
                         $stmt->execute();
                     } catch (Exception $e) {
                     }
                 }
             }
         case '1.3.2':
             // Register hooks
             $connection = Doctrine_Manager::getInstance()->getConnection('default');
             $sqlQueries = array();
             $sqlQueries[] = 'DELETE FROM `hook_area` WHERE `owner`="AddressBook"';
             $sqlQueries[] = 'DELETE FROM `hook_subscriber` WHERE `owner`="AddressBook"';
             foreach ($sqlQueries as $sql) {
                 $stmt = $connection->prepare($sql);
                 try {
                     $stmt->execute();
                 } catch (Exception $e) {
                 }
             }
             HookUtil::registerSubscriberBundles($this->version->getHookSubscriberBundles());
         case '1.3.3':
             // Register event handlers
             if (ModUtil::available('Content')) {
                 Content_Installer::updateContentType('AddressBook');
             }
             EventUtil::registerPersistentModuleHandler('AddressBook', 'module.content.gettypes', array('AddressBook_EventHandler_Listeners', 'getContentTypes'));
             // default images directory and manager
             $this->setVar('images_dir', 'userdata/Addressbook');
             $this->setVar('images_manager', 'kcfinder');
         case '1.3.4':
             // Add language and status column
             DBUtil::changeTable('addressbook_address');
             // Assume language of created records is "All". Status set to active.
             $objArray = array('language' => '', 'status' => 1);
             DBUtil::updateObject($objArray, 'addressbook_address', 'WHERE 1');
             // Delete unused settings
             ModUtil::delVar('Addressbook', 'special_chars_1');
             ModUtil::delVar('Addressbook', 'special_chars_2');
             // Register new settings
             $this->setVar('addressbooktype', 1);
             // 1-people, 2-companies
             $this->setVar('showabcfilter', 1);
         case '1.3.5':
             // Register new settings
             $this->setVar('allowprivate', 0);
             return true;
         case '1.3.6':
             return true;
     }
 }
Exemple #16
0
    /**
     * upgrade the News module from an old version
     *
     * @return       bool       true on success, false otherwise
     */
    public function upgrade($oldversion)
    {
        // Upgrade dependent on old version number
        switch ($oldversion)
        {
            case '1.3':
            case '1.4':
                $this->setVar('storyhome', System::getVar('storyhome'));
                System::delVar('storyhome');
                $this->setVar('storyorder', System::getVar('storyorder'));
                System::delVar('storyorder');
                $this->setVar('itemsperpage', 25);

            case '1.5':
                $tables = DBUtil::getTables();
                $shorturlsep = System::getVar('shorturlsseparator');
                // move the data from the author uid to creator and updator uid
                $sqls = array();
                $sqls[] = "UPDATE $tables[stories] SET pn_cr_uid = pn_aid";
                $sqls[] = "UPDATE $tables[stories] SET pn_lu_uid = pn_aid";
                // move the data from the time field to the creation and update datestamp
                $sqls[] = "UPDATE $tables[stories] SET pn_cr_date = pn_time";
                $sqls[] = "UPDATE $tables[stories] SET pn_lu_date = pn_time";
                $sqls[] = "UPDATE $tables[stories] SET pn_urltitle = REPLACE(pn_title, ' ', '{$shorturlsep}')";
                foreach ($sqls as $sql) {
                    if (!DBUtil::executeSQL($sql)) {
                        LogUtil::registerError($this->__('Error! Could not update table.'));
                        return '1.5';
                    }
                }
                // drop the old columns
                DBUtil::dropColumn('stories', array('pn_aid'));
                DBUtil::dropColumn('stories', array('pn_time'));
                $this->setVar('permalinkformat', '%year%/%monthnum%/%day%/%storytitle%');

            case '2.0':
            // import autonews and queue articles
                if (!$this->_import_autonews_queue()) {
                    LogUtil::registerError($this->__('Error! Could not update articles.'));
                    return '2.0';
                }
                // migrate the comments to ezcomments
                if (ModUtil::available('Comments') || defined('_PNINSTALLVER')) {
                    // check for the ezcomments module
                    if (!ModUtil::available('EZComments')) {
                        LogUtil::registerError(__f('Error! The \'%s\' module is not installed.', 'EZComments'));
                        return '2.0';
                    }
                    //  drop the comments table if successful
                    if (ModUtil::apiFunc('EZComments', 'migrate', 'news')) {
                        // drop comments table after migration has succeeded
                        if (!DBUtil::dropTable('comments')) {
                            LogUtil::registerError($this->__('Error! Could not delete table.'));
                            return '2.0';
                        }
                        // remove the Comments module
                        ModUtil::apiFunc('Modules', 'admin', 'remove', array('id' => ModUtil::getIdFromName('Comments')));
                    }
                }
                // drop the autonews and queue tables, articles are already imported
                if (!DBUtil::dropTable('autonews')) {
                    LogUtil::registerError($this->__('Error! Could not delete table.'));
                    return '2.0';
                }
                if (!DBUtil::dropTable('queue')) {
                    LogUtil::registerError($this->__('Error! Could not delete table.'));
                    return '2.0';
                }
                // remove the AddStory and Submit_News modules
                ModUtil::apiFunc('Modules', 'admin', 'remove', array('id' => ModUtil::getIdFromName('AddStory')));
                ModUtil::apiFunc('Modules', 'admin', 'remove', array('id' => ModUtil::getIdFromName('Submit_News')));

            case '2.1':
                $this->setVar('enablecategorization', true);
                ModUtil::dbInfoLoad('News', 'News', true);

                if (!$this->_news_migratecategories()) {
                    LogUtil::registerError($this->__('Error! Could not migrate categories.'));
                    return '2.1';
                }

            case '2.2':
                $this->setVar('refereronprint', System::getVar('refereronprint', 0));

            case '2.3':
                $prefix = System::getVar('prefix');
                // when from is not set, put it to the creation date
                $sqls = array();
                $sqls[] = "UPDATE {$prefix}_stories SET pn_from = pn_cr_date WHERE pn_from IS NULL";
                // make sure we dont have an NULL hometext, since the tables permitted this before 2.4
                $sqls[] = "UPDATE {$prefix}_stories SET pn_hometext = '' WHERE pn_hometext IS NULL";
                foreach ($sqls as $sql) {
                    if (!DBUtil::executeSQL($sql)) {
                        LogUtil::registerError($this->__('Error! Could not update table.'));
                        return '2.3';
                    }
                }
                $this->setVar('enableattribution', false);
                // import the topicimagepath, variable tipath deletion is up to Topics module
                $this->setVar('catimagepath', System::getVar('tipath'));
                $this->setVar('enableajaxedit', false);
                // drop old legacy columns
                DBUtil::dropColumn('stories', 'pn_comments');
                DBUtil::dropColumn('stories', 'pn_themeoverride');
                // clear compiled templates and News cache (see #74)
                ModUtil::apiFunc('view', 'user', 'clear_compiled');
                ModUtil::apiFunc('view', 'user', 'clear_cache', array('module' => 'News'));

            case '2.4':
            case '2.4.1':
            // rename the database table from stories to news
                if (!DBUtil::renameTable('stories', 'news')) {
                    LogUtil::registerError($this->__('Error! Could not rename table.'));
                    return '2.4.1';
                }
            case '2.4.2':
            // rename several columns, tables holds the old names for backwards compatibility still
                $columns = array_keys(DBUtil::metaColumns('news', true));

                if (in_array('PN_WITHCOMM', $columns) && !DBUtil::renameColumn('news', 'pn_withcomm', 'disallowcomments')) {
                    LogUtil::registerError($this->__('Error! Could not rename column.'));
                    return '2.4.2';
                }
                if (in_array('PN_INFORMANT', $columns) && !DBUtil::renameColumn('news', 'pn_informant', 'contributor')) {
                    LogUtil::registerError($this->__('Error! Could not rename column.'));
                    return '2.4.2';
                }
                if (in_array('PN_IHOME', $columns) && !DBUtil::renameColumn('news', 'pn_ihome', 'hideonindex')) {
                    LogUtil::registerError($this->__('Error! Could not rename column.'));
                    return '2.4.2';
                }
            case '2.4.3':
            // update table for missing fields etc
                if (!DBUtil::changeTable('news')) {
                    return '2.4.3';
                }
                // update permissions with new scheme News::
                ModUtil::dbInfoLoad('Categories');
                $tables  = DBUtil::getTables();
                $grperms = $tables['group_perms_column'];

                $sqls   = array();
                $sqls[] = "UPDATE $tables[group_perms] SET $grperms[component] = 'News::' WHERE $grperms[component] = 'Stories::Story'";
                // update categories_mapobj and categories_registry with new tablename (categories tables not in $tables ?)
                $sqls[] = "UPDATE $tables[categories_mapobj] SET cmo_table='news' WHERE cmo_table='stories'";
                $sqls[] = "UPDATE $tables[categories_registry] SET crg_table='news' WHERE crg_table='stories'";
                foreach ($sqls as $sql) {
                    if (!DBUtil::executeSQL($sql)) {
                        LogUtil::registerError($this->__('Error! Could not update table.'));
                        return '2.4.3';
                    }
                }
                // Add new variable(s)
                $this->setVar('enablemorearticlesincat', false);
                $this->setVar('morearticlesincat', 0);
                $this->setVar('notifyonpending', false);
                $this->setVar('notifyonpending_fromname', '');
                $this->setVar('notifyonpending_fromaddress', '');
                $this->setVar('notifyonpending_toname', '');
                $this->setVar('notifyonpending_toaddress', '');
                $this->setVar('notifyonpending_subject', $this->__('A News Publisher article has been submitted for review'));
                $this->setVar('notifyonpending_html', true);
                $this->setVar('pdflink', false);
                $this->setVar('pdflink_tcpdfpath', 'config/classes/tcpdf/tcpdf.php');
                $this->setVar('pdflink_tcpdflang', 'config/classes/tcpdf/config/lang/eng.php');
                $this->setVar('pdflink_headerlogo', 'tcpdf_logo.jpg');
                $this->setVar('pdflink_headerlogo_width', '30');

                // clear compiled templates and News cache
                ModUtil::apiFunc('view', 'user', 'clear_compiled');
                ModUtil::apiFunc('view', 'user', 'clear_cache', array('module' => 'News'));

            case '2.5':
                // update table
                if (!DBUtil::changeTable('news')) {
                    return '2.5';
                }
            case '2.5.1':
            case '2.5.2':
                // add the new picture column and update the table
                if (!DBUtil::changeTable('news')) {
                    return '2.5.2';
                }
                // add new picture uploading variables
                $this->setVar('picupload_enabled', false);
                $this->setVar('picupload_allowext', 'jpg, gif, png');
                $this->setVar('picupload_index_float', 'left');
                $this->setVar('picupload_article_float', 'left');
                $this->setVar('picupload_maxfilesize', '500000');
                $this->setVar('picupload_maxpictures', '3');
                $this->setVar('picupload_sizing', '0');
                $this->setVar('picupload_picmaxwidth', '600');
                $this->setVar('picupload_picmaxheight', '600');
                $this->setVar('picupload_thumbmaxwidth', '150');
                $this->setVar('picupload_thumbmaxheight', '150');
                $this->setVar('picupload_thumb2maxwidth', '200');
                $this->setVar('picupload_thumb2maxheight', '200');
                $this->setVar('picupload_uploaddir', 'images/news_picupload');
                // add new category parameter
                $this->setVar('enablecategorybasedpermissions', true);

                // permalink format change story to article
                $this->setVar('permalinkformat', str_replace(array('storytitle', 'storyid'), array('articletitle', 'articleid'), $this->getVar('permalinkformat')));

                // clear compiled templates and News cache
                ModUtil::apiFunc('view', 'user', 'clear_compiled');
                ModUtil::apiFunc('view', 'user', 'clear_cache', array('module' => 'News'));

            case '2.6.0':
            case '2.6.1':
                $this->setVar('enabledescriptionvar', false);
                $this->setVar('descriptionvarchars', 250);
            case '2.6.2':
            case '2.6.3':
                // register handlers
                EventUtil::registerPersistentModuleHandler('News', 'get.pending_content', array('News_Handlers', 'pendingContent'));
                EventUtil::registerPersistentModuleHandler('News', 'module.content.gettypes', array('News_Handlers', 'getTypes'));
                $prefix = $this->serviceManager['prefix'];
                $connection = Doctrine_Manager::getInstance()->getConnection('default');
                $sqlStatements = array();
                // N.B. statements generated with PHPMyAdmin
                $sqlStatements[] = 'RENAME TABLE ' . $prefix . '_news' . " TO `news`";
                // this removes the prefixes but also changes hideonindex to displayonindex and disallowcomments to allowcomments
                // because 'from' and 'to' are reserved sql words, the column names are changed to ffrom and tto respectively
                $sqlStatements[] = "ALTER TABLE `news` 
CHANGE `pn_sid` `sid` INT( 11 ) NOT NULL AUTO_INCREMENT ,
CHANGE `pn_title` `title` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
CHANGE `pn_hometext` `hometext` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
CHANGE `pn_bodytext` `bodytext` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
CHANGE `pn_counter` `counter` INT( 11 ) NULL DEFAULT '0',
CHANGE `pn_contributor` `contributor` VARCHAR( 25 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
CHANGE `pn_notes` `notes` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
CHANGE `pn_hideonindex` `displayonindex` TINYINT( 4 ) NOT NULL DEFAULT '0',
CHANGE `pn_language` `language` VARCHAR( 30 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
CHANGE `pn_disallowcomments` `allowcomments` TINYINT( 4 ) NOT NULL DEFAULT '0' , 
CHANGE `pn_format_type` `format_type` TINYINT( 4 ) NOT NULL DEFAULT '0',
CHANGE `pn_urltitle` `urltitle` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
CHANGE `pn_published_status` `published_status` TINYINT( 4 ) NULL DEFAULT '0',
CHANGE `pn_from` `ffrom` DATETIME NULL DEFAULT NULL ,
CHANGE `pn_to` `tto` DATETIME NULL DEFAULT NULL ,
CHANGE `pn_obj_status` `obj_status` VARCHAR( 1 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'A',
CHANGE `pn_cr_date` `cr_date` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00' , 
CHANGE `pn_cr_uid` `cr_uid` INT( 11 ) NOT NULL DEFAULT '0',
CHANGE `pn_lu_date` `lu_date` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00',
CHANGE `pn_lu_uid` `lu_uid` INT( 11 ) NOT NULL DEFAULT '0',
CHANGE `pn_approver` `approver` INT( 11 ) NULL DEFAULT '0',
CHANGE `pn_weight` `weight` TINYINT( 4 ) NULL DEFAULT '0',
CHANGE `pn_pictures` `pictures` INT( 11 ) NULL DEFAULT '0'";
                foreach ($sqlStatements as $sql) {
                    $stmt = $connection->prepare($sql);
                    try {
                        $stmt->execute();
                    } catch (Exception $e) {
                    }   
                }

                if (!DBUtil::changeTable('news')) {
                    return '2.6.3';
                }
                HookUtil::registerSubscriberBundles($this->version->getHookSubscriberBundles());
                $this->delVar('pdflink_tcpdfpath');
                $this->delVar('pdflink_tcpdflang');
                $this->setVar('itemsperadminpage', 15);
                $this->setVar('pdflink_enablecache', true);
				// enable variable for old shorturl scheme (display and main func not shown)
				$this->setVar('shorturls26x', true);
                if (ModUtil::available('Content')) {
                    Content_Installer::updateContentType('News');
                }
                $this->_invertHideAndComments();
                $this->fixStartSettings();
            case '3.0.0':
                // nothing to do
            case '3.0.1':
                // future plans
        }

        // Update successful
        return true;
    }