ImpressCMS/impresscms

View on GitHub
upgrade/cnt-2.3.x-to-2.0.x/index.php

Summary

Maintainability
B
5 hrs
Test Coverage
<?php
/**
 * Upgrader from 2.3 to 2.0.x
 *
 * @copyright    http://www.impresscms.org/ The ImpressCMS Project
 * @license        http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License (GPL)
 * @package     upgrader
 * @since       1.1
 * @author        Sina Asghari <pesian_stranger@users.sourceforge.net>
 * @version     $Id$
 */

class upgrade_230
{
    var $usedFiles = array ();
    var $tasks = array('config');
    var $updater;

    function isApplied()
    {
        if (!isset($_SESSION[__CLASS__]) || !is_array($_SESSION[__CLASS__])) {
            $_SESSION[__CLASS__] = array();
        }
        foreach ($this->tasks as $task) {
            if (!in_array($task, $_SESSION[__CLASS__])) {
                if (!$res = $this->{"check_{$task}"}()) {
                    $_SESSION[__CLASS__][] = $task;
                }
            }
        }
        return empty($_SESSION[__CLASS__]) ? true : false;
    }
    function apply()
    {
        $tasks = $_SESSION[__CLASS__];
        foreach ($tasks as $task) {
            $res = $this->{"apply_{$task}"}();
            if (!$res) return false;
            array_shift($_SESSION[__CLASS__]);
        }
        return true;
    }


    /**
     * Check if cache model table already converted
     *
     */
    function check_config()
    {
        $sql = "SHOW TABLES LIKE '" . $GLOBALS['xoopsDB']->prefix("cache_model") . "'";
        $result = $GLOBALS['xoopsDB']->queryF($sql);
        if (!$result) return true;
        if ($GLOBALS['xoopsDB']->getRowsNum($result) > 0) return false;
        return true;
    }

    /**
     * Removes data insterted since 2.0.18.1
     *
     */
    function apply_config()
    {
        $db = $GLOBALS['xoopsDB'];
        // remove configuration items
        $db->queryF("DELETE FROM `" . $db->prefix('config') . "` WHERE conf_name='cpanel'");
        $db->queryF("DELETE FROM `" . $db->prefix('config') . "` WHERE conf_name='welcome_type'");
        $db->queryF("DELETE FROM `" . $db->prefix('configoption') . "` WHERE confop_name='_NO'");
        $db->queryF("DELETE FROM `" . $db->prefix('configoption') . "` WHERE confop_name='_MD_AM_WELCOMETYPE_EMAIL'");
        $db->queryF("DELETE FROM `" . $db->prefix('configoption') . "` WHERE confop_name='_MD_AM_WELCOMETYPE_PM'");
        $db->queryF("DELETE FROM `" . $db->prefix('configoption') . "` WHERE confop_name='_MD_AM_WELCOMETYPE_BOTH'");
        $db->queryF("UPDATE `" . $db->prefix('config') . "` SET conf_value = 'iTheme' WHERE conf_name = 'theme_set'");
        // remove cache_model table
        $db->queryF("DROP TABLE " . $db->prefix("cache_model"));
        $sql = "ALTER TABLE `" . $db->prefix('block_module_link') . "` DROP PRIMARY KEY";
        if (!$result = $db->queryF($sql)) {
            icms_core_Debug::message('An error occurred while executing "' . $sql . '" - ' . $db->error());
            return false;
        }

        $sql = "ALTER IGNORE TABLE `" . $db->prefix('block_module_link') . "` ADD KEY module_id (module_id)";
        if (!$result = $db->queryF($sql)) {
            icms_core_Debug::message('An error occurred while executing "' . $sql . '" - ' . $db->error());
            return false;
        }

        $sql = "ALTER IGNORE TABLE `" . $db->prefix('block_module_link') . "` ADD KEY block_id (block_id)";
        if (!$result = $db->queryF($sql)) {
            icms_core_Debug::message('An error occurred while executing "' . $sql . '" - ' . $db->error());
            return false;
        }

        $sql = "ALTER TABLE `" . $db->prefix('newblocks') . "` MODIFY content text NOT NULL";
        if (!$result = $db->queryF($sql)) {
            icms_core_Debug::message('An error occurred while executing "' . $sql . '" - ' . $db->error());
            return false;
        }

        return true;
    }
}

$upg = new upgrade_230();
return $upg;

?>