Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Install/Upgrade/1020010-120a.php
<?php

namespace XF\Install\Upgrade;

class
Version1020010 extends AbstractUpgrade
{
    public function
getVersionName()
    {
        return
'1.2.0 Alpha';
    }

    public function
step1()
    {
       
$this->executeUpgradeQuery('
            DROP TABLE IF EXISTS xf_permission_cache_content_type
        '
);
       
$this->executeUpgradeQuery('
            DROP TABLE IF EXISTS xf_permission_cache_global_group
        '
);

       
$this->executeUpgradeQuery("
            CREATE TABLE xf_deferred (
                deferred_id int(10) unsigned NOT NULL auto_increment,
                unique_key VARBINARY(50) default NULL,
                execute_class varchar(75) NOT NULL,
                execute_data mediumblob NOT NULL,
                manual_execute tinyint(4) NOT NULL,
                trigger_date int(11) NOT NULL,
                PRIMARY KEY  (deferred_id),
                UNIQUE KEY unique_key (unique_key),
                KEY trigger_date (trigger_date),
                KEY manual_execute_date (manual_execute,trigger_date)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE `xf_draft` (
                `draft_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
                `draft_key` VARBINARY(75) NOT NULL,
                `user_id` int(10) unsigned NOT NULL,
                `last_update` int(10) unsigned NOT NULL,
                `message` mediumtext NOT NULL,
                `extra_data` mediumblob NOT NULL,
                PRIMARY KEY (`draft_id`),
                UNIQUE KEY `draft_key_user` (`draft_key`,`user_id`),
                KEY `last_update` (`last_update`)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE xf_edit_history (
                edit_history_id int(10) unsigned NOT NULL auto_increment,
                content_type VARBINARY(25) NOT NULL,
                content_id int(10) unsigned NOT NULL,
                edit_user_id int(10) unsigned NOT NULL,
                edit_date int(10) unsigned NOT NULL,
                old_text mediumtext NOT NULL,
                PRIMARY KEY  (edit_history_id),
                KEY content_type (content_type,content_id,edit_date),
                KEY edit_date (edit_date)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE xf_forum_watch (
                `user_id` int(10) unsigned NOT NULL,
                `node_id` int(10) unsigned NOT NULL,
                `notify_on` enum('','thread','message') NOT NULL,
                `send_alert` tinyint(3) unsigned NOT NULL,
                `send_email` tinyint(3) unsigned NOT NULL,
                PRIMARY KEY (`user_id`,`node_id`),
                KEY `node_id_notify_on` (`node_id`,`notify_on`)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE xf_registration_spam_cache (
                cache_key VARBINARY(128) NOT NULL DEFAULT '',
                decision VARCHAR(25) NOT NULL DEFAULT '',
                timeout INT UNSIGNED NOT NULL DEFAULT 0,
                PRIMARY KEY (cache_key)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE `xf_content_spam_cache` (
                `spam_cache_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
                `content_type` VARBINARY(25) NOT NULL,
                `content_id` int(10) unsigned NOT NULL,
                `spam_params` mediumblob NOT NULL,
                `insert_date` int(11) NOT NULL,
                PRIMARY KEY (`spam_cache_id`),
                UNIQUE KEY `content_type` (`content_type`,`content_id`),
                KEY `insert_date` (`insert_date`)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE xf_bb_code_parse_cache (
                bb_code_parse_cache_id int(10) unsigned NOT NULL AUTO_INCREMENT,
                content_type VARBINARY(25) NOT NULL,
                content_id int(10) unsigned NOT NULL,
                parse_tree mediumblob NOT NULL,
                cache_version int(10) unsigned NOT NULL,
                cache_date int(10) unsigned NOT NULL DEFAULT '0',
                PRIMARY KEY (bb_code_parse_cache_id),
                UNIQUE KEY content_type_id (content_type,content_id),
                KEY cache_version (cache_version),
                KEY cache_date (cache_date)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE `xf_route_filter` (
                `route_filter_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
                `route_type` VARBINARY(25) NOT NULL,
                `prefix` varchar(25) NOT NULL,
                `find_route` varchar(255) NOT NULL,
                `replace_route` varchar(255) NOT NULL,
                `enabled` tinyint(3) unsigned NOT NULL DEFAULT '0',
                `url_to_route_only` tinyint(3) unsigned NOT NULL DEFAULT '0',
                PRIMARY KEY (`route_filter_id`),
                KEY `route_type_prefix` (`route_type`,`prefix`)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE `xf_mail_queue` (
                `mail_queue_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
                `mail_data` mediumblob NOT NULL,
                `queue_date` int(10) unsigned NOT NULL,
                PRIMARY KEY (`mail_queue_id`),
                KEY `queue_date` (`queue_date`)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
       
$this->executeUpgradeQuery("
            CREATE TABLE xf_template_history (
                `template_history_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
                `title` VARBINARY(50) NOT NULL,
                `style_id` int(11) unsigned NOT NULL,
                `template` mediumtext NOT NULL,
                `edit_date` int(11) unsigned NOT NULL,
                `log_date` int(11) unsigned NOT NULL,
                PRIMARY KEY (`template_history_id`),
                KEY `log_date` (`log_date`),
                KEY `style_id_title` (`style_id`,`title`),
                KEY `title` (`title`)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE `xf_template_modification` (
                `modification_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
                `addon_id` VARBINARY(25) NOT NULL,
                `template` VARBINARY(50) NOT NULL,
                `modification_key` VARBINARY(50) NOT NULL,
                `description` varchar(255) NOT NULL,
                `execution_order` int(10) unsigned NOT NULL,
                `enabled` tinyint(3) unsigned NOT NULL,
                `action` varchar(25) NOT NULL,
                `find` text NOT NULL,
                `replace` text NOT NULL,
                PRIMARY KEY (`modification_id`),
                UNIQUE KEY `modification_key` (`modification_key`),
                KEY `addon_id` (`addon_id`),
                KEY `template_order` (`template`,`execution_order`)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE `xf_template_modification_log` (
                `template_id` int(10) unsigned NOT NULL,
                `modification_id` int(10) unsigned NOT NULL,
                `status` varchar(25) NOT NULL,
                `apply_count` int(10) unsigned NOT NULL DEFAULT '0',
                PRIMARY KEY (`template_id`,`modification_id`),
                KEY `modification_id` (`modification_id`)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE `xf_admin_template_modification` (
                `modification_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
                `addon_id` VARBINARY(25) NOT NULL,
                `template` VARBINARY(50) NOT NULL,
                `modification_key` VARBINARY(50) NOT NULL,
                `description` varchar(255) NOT NULL,
                `execution_order` int(10) unsigned NOT NULL,
                `enabled` tinyint(3) unsigned NOT NULL,
                `action` varchar(25) NOT NULL,
                `find` text NOT NULL,
                `replace` text NOT NULL,
                PRIMARY KEY (`modification_id`),
                UNIQUE KEY `modification_key` (`modification_key`),
                KEY `addon_id` (`addon_id`),
                KEY `template_order` (`template`,`execution_order`)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE `xf_admin_template_modification_log` (
                `template_id` int(10) unsigned NOT NULL,
                `modification_id` int(10) unsigned NOT NULL,
                `status` varchar(25) NOT NULL,
                `apply_count` int(10) unsigned NOT NULL DEFAULT '0',
                PRIMARY KEY (`template_id`,`modification_id`),
                KEY `modification_id` (`modification_id`)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE `xf_email_template_modification` (
                `modification_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
                `addon_id` VARBINARY(25) NOT NULL,
                `template` VARBINARY(50) NOT NULL,
                `modification_key` VARBINARY(50) NOT NULL,
                `description` varchar(255) NOT NULL,
                `execution_order` int(10) unsigned NOT NULL,
                `enabled` tinyint(3) unsigned NOT NULL,
                `search_location` varchar(25) NOT NULL,
                `action` varchar(25) NOT NULL,
                `find` text NOT NULL,
                `replace` text NOT NULL,
                PRIMARY KEY (`modification_id`),
                UNIQUE KEY `modification_key` (`modification_key`),
                KEY `addon_id` (`addon_id`),
                KEY `template_order` (`template`,`execution_order`)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);
       
$this->executeUpgradeQuery("
            CREATE TABLE `xf_email_template_modification_log` (
                `template_id` int(10) unsigned NOT NULL,
                `modification_id` int(10) unsigned NOT NULL,
                `status` varchar(25) NOT NULL,
                `apply_count` int(10) unsigned NOT NULL DEFAULT '0',
                PRIMARY KEY (`template_id`,`modification_id`),
                KEY `modification_id` (`modification_id`)
            ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci
        "
);

        return
true;
    }

    public function
step2()
    {
       
$this->applyGlobalPermission('general', 'editProfile');
       
$this->applyGlobalPermission('forum', 'editOwnThreadTitle', 'forum', 'editOwnPost');
       
$this->applyGlobalPermission('signature', 'basicText', 'general', 'editSignature');
       
$this->applyGlobalPermission('signature', 'extendedText', 'general', 'editSignature');
       
$this->applyGlobalPermission('signature', 'align', 'general', 'editSignature');
       
$this->applyGlobalPermission('signature', 'list', 'general', 'editSignature');
       
$this->applyGlobalPermission('signature', 'image', 'general', 'editSignature');
       
$this->applyGlobalPermission('signature', 'link', 'general', 'editSignature');
       
$this->applyGlobalPermission('signature', 'basicText', 'general', 'editSignature');
       
$this->applyGlobalPermission('signature', 'media', 'general', 'editSignature');
       
$this->applyGlobalPermission('signature', 'block', 'general', 'editSignature');
       
$this->applyGlobalPermissionInt('signature', 'maxPrintable', -1, 'general', 'editSignature');
       
$this->applyGlobalPermissionInt('signature', 'maxLines', -1, 'general', 'editSignature');
       
$this->applyGlobalPermissionInt('signature', 'maxLinks', -1, 'general', 'editSignature');
       
$this->applyGlobalPermissionInt('signature', 'maxImages', -1, 'general', 'editSignature');
       
$this->applyGlobalPermissionInt('signature', 'maxSmilies', -1, 'general', 'editSignature');
       
$this->applyGlobalPermissionInt('signature', 'maxTextSize', -1, 'general', 'editSignature');
       
$this->applyGlobalPermissionInt('general', 'maxTaggedUsers', 5, 'forum', 'postReply');

       
$this->executeUpgradeQuery("
            INSERT INTO xf_content_type
                (content_type, addon_id, fields)
            VALUES
                ('page',  'XenForo', '')
        "
);

       
$this->executeUpgradeQuery("
            INSERT IGNORE INTO xf_content_type_field
                (content_type, field_name, field_value)
            VALUES
                ('post', 'edit_history_handler_class', 'XenForo_EditHistoryHandler_Post'),
                ('page', 'search_handler_class', 'XenForo_Search_DataHandler_Page'),
                ('conversation', 'spam_handler_class', 'XenForo_SpamHandler_Conversation')
        "
);

        return
true;
    }

    public function
step3()
    {
       
$this->executeUpgradeQuery("
            ALTER TABLE `xf_session_activity` ADD `robot_key` VARBINARY(25) NOT NULL DEFAULT ''
        "
);

       
$this->executeUpgradeQuery("
            ALTER TABLE  `xf_template`
                ADD `disable_modifications` TINYINT UNSIGNED NOT NULL DEFAULT  '0',
                ADD  `last_edit_date` INT UNSIGNED NOT NULL DEFAULT  '0'
        "
);

       
$this->executeUpgradeQuery("
            ALTER TABLE xf_ban_email CHANGE banned_email banned_email VARCHAR(120) NOT NULL
        "
);

       
$this->executeUpgradeQuery("
            ALTER TABLE  `xf_user_group`
                ADD  `banner_css_class` VARCHAR( 75 ) NOT NULL DEFAULT  '',
                ADD  `banner_text` VARCHAR( 100 ) NOT NULL DEFAULT  ''
        "
);

        return
true;
    }

    public function
step4()
    {
       
$this->executeUpgradeQuery("
            ALTER TABLE `xf_node` ADD `breadcrumb_data` BLOB NULL DEFAULT NULL
        "
);

       
$this->executeUpgradeQuery("
            ALTER TABLE xf_forum
                ADD require_prefix TINYINT UNSIGNED NOT NULL DEFAULT '0',
                ADD allowed_watch_notifications VARCHAR(10) NOT NULL DEFAULT 'all',
                ADD default_sort_order VARCHAR(25) NOT NULL DEFAULT 'last_post_date',
                ADD default_sort_direction VARCHAR(5) NOT NULL DEFAULT 'desc'
        "
);

       
$this->executeUpgradeQuery("
            ALTER TABLE xf_code_event_listener ADD hint VARCHAR(255) NOT NULL DEFAULT ''
        "
);

       
$this->executeUpgradeQuery("
            ALTER TABLE xf_option
                CHANGE edit_format edit_format ENUM('textbox','spinbox','onoff','radio','select','checkbox','template','callback','onofftextbox') NOT NULL
        "
);

        return
true;
    }

    public function
step5()
    {
       
$this->executeUpgradeQuery("
            ALTER TABLE  `xf_report` ADD  `report_count` INT UNSIGNED NOT NULL DEFAULT  '0'
        "
);
       
$this->executeUpgradeQuery("
            ALTER TABLE `xf_report_comment` ADD  `is_report` TINYINT UNSIGNED NOT NULL DEFAULT  '1'
        "
);

       
$ids = $this->db()->fetchAllColumn("(SELECT user_id FROM xf_moderator) UNION (SELECT user_id FROM xf_admin)");
        if (
$ids)
        {
           
$this->executeUpgradeQuery("
                UPDATE xf_report_comment SET is_report = 0 WHERE user_id IN ("
. $this->db()->quote($ids) . ")
            "
);
        }

        return
true;
    }

    public function
step6()
    {
       
$this->executeUpgradeQuery("
            ALTER TABLE `xf_liked_content` ADD INDEX `like_user_content_type_id` (`like_user_id`, `content_type`, `content_id`)
        "
);

        return
true;
    }

    public function
step7()
    {
       
$this->executeUpgradeQuery("
            ALTER TABLE  `xf_user`
                ADD `is_staff` TINYINT UNSIGNED NOT NULL DEFAULT  '0',
                ADD INDEX message_count (  `message_count` ),
                ADD INDEX trophy_points (  `trophy_points` ),
                ADD INDEX like_count (  `like_count` ),
                ADD INDEX register_date (  `register_date` ),
                ADD INDEX `staff_username` (  `is_staff` ,  `username` )
        "
);

        return
true;
    }

    public function
step8()
    {
       
$this->executeUpgradeQuery("
            ALTER TABLE `xf_user_profile` ADD INDEX  `dob` (  `dob_month` ,  `dob_day` ,  `dob_year` )
        "
);
       
$this->executeUpgradeQuery("
            ALTER TABLE xf_user_option ADD enable_flash_uploader TINYINT UNSIGNED NOT NULL DEFAULT 1
        "
);

       
$this->executeUpgradeQuery("
            UPDATE xf_moderator AS moderator
            INNER JOIN xf_user AS user ON (moderator.user_id = user.user_id)
            SET user.is_staff = 1
        "
);

        return
true;
    }

    public function
step9()
    {
       
$this->executeUpgradeQuery("
            UPDATE xf_user_upgrade
            SET description = REPLACE(REPLACE(description, '\r', ''), '\n', '<br />\n')
        "
);

       
$this->executeUpgradeQuery("
            ALTER TABLE xf_user_upgrade_expired
                ADD extra MEDIUMBLOB NOT NULL,
                ADD original_end_date INT UNSIGNED NOT NULL DEFAULT 0
        "
);

       
$this->executeUpgradeQuery("
            ALTER TABLE xf_user_upgrade_log
                ADD subscriber_id VARCHAR(50) NOT NULL DEFAULT '',
                ADD INDEX subscriber_id (subscriber_id)
        "
);

        return
true;
    }

    public function
step10()
    {
       
$this->executeUpgradeQuery("
            ALTER TABLE xf_conversation_master
                ADD recipients mediumblob NOT NULL,
                ADD INDEX user_id (user_id)
        "
);

       
$this->executeUpgradeQuery("
            ALTER TABLE xf_conversation_user
                ADD is_starred TINYINT UNSIGNED NOT NULL DEFAULT '0',
                ADD INDEX owner_starred_date (owner_user_id, is_starred, last_message_date)
        "
);

        return
true;
    }

    public function
step11()
    {
       
$this->executeUpgradeQuery('
            ALTER TABLE xf_post
                ADD last_edit_date INT UNSIGNED NOT NULL DEFAULT 0,
                ADD last_edit_user_id INT UNSIGNED NOT NULL DEFAULT 0,
                ADD edit_count INT UNSIGNED NOT NULL DEFAULT 0
        '
);

        return
true;
    }

    public function
step12()
    {
       
$this->executeUpgradeQuery("
            ALTER TABLE `xf_ip` ADD INDEX log_date (`log_date`)
        "
);

       
$this->executeUpgradeQuery("
            INSERT IGNORE INTO xf_option
                (option_id, option_value, default_value, edit_format, edit_format_params, data_type, sub_options,
                can_backup, validation_class, validation_method, addon_id)
            VALUES
                ('ipLogCleanUp', 'a:2:{s:7:\"enabled\";b:0;s:5:\"delay\";b:0;}', '', '', '', '', '',
                1, '', '', 'XenForo')
        "
);

        return
true;
    }

    public function
step13()
    {
       
$this->executeUpgradeQuery("
            ALTER TABLE `xf_thread`
                DROP INDEX node_id_sticky_last_post_date,
                ADD INDEX  `node_id_sticky_state_last_post` (  `node_id` ,  `sticky` ,  `discussion_state` , `last_post_date` )
        "
);

        return
true;
    }
}