Welcome to mirror list, hosted at ThFree Co, Russian Federation.

1.2-rc1.php « Updates « core - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: b7636a1225c085dfe7a67d16208dec7d5321d221 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?php
/**
 * Piwik - Open source web analytics
 *
 * @link http://piwik.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 *
 * @category Piwik
 * @package Updates
 */
use Piwik\Common;

/**
 * @package Updates
 */
class Piwik_Updates_1_2_rc1 extends Piwik_Updates
{
    static function getSql($schema = 'Myisam')
    {
        return array(
            // Various performance improvements schema updates
            'ALTER TABLE `' . Common::prefixTable('log_visit') . '`
			    DROP `visit_server_date`,
			    DROP INDEX `index_idsite_date_config`,
			    DROP INDEX `index_idsite_datetime_config`,
		    	ADD `visit_entry_idaction_name` INT UNSIGNED NOT NULL AFTER `visit_entry_idaction_url`,
			    ADD `visit_exit_idaction_name` INT UNSIGNED NOT NULL AFTER `visit_exit_idaction_url`,
			    CHANGE `visit_exit_idaction_url` `visit_exit_idaction_url` INT UNSIGNED NOT NULL, 
			    CHANGE `visit_entry_idaction_url` `visit_entry_idaction_url` INT UNSIGNED NOT NULL,
			    CHANGE `referer_type` `referer_type` TINYINT UNSIGNED NULL DEFAULT NULL,
			    ADD `idvisitor` BINARY(8) NOT NULL AFTER `idsite`, 
			    ADD visitor_count_visits SMALLINT(5) UNSIGNED NOT NULL AFTER `visitor_returning`,
			    ADD visitor_days_since_last SMALLINT(5) UNSIGNED NOT NULL,
			    ADD visitor_days_since_first SMALLINT(5) UNSIGNED NOT NULL,
			    ADD `config_id` BINARY(8) NOT NULL AFTER `config_md5config`,
			    ADD custom_var_k1 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_v1 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_k2 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_v2 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_k3 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_v3 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_k4 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_v4 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_k5 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_v5 VARCHAR(100) DEFAULT NULL
			   '                                                                                                                                                  => false,
            'ALTER TABLE `' . Common::prefixTable('log_link_visit_action') . '`
				ADD `idsite` INT( 10 ) UNSIGNED NOT NULL AFTER `idlink_va` , 
				ADD `server_time` DATETIME AFTER `idsite`,
				ADD `idvisitor` BINARY(8) NOT NULL AFTER `idsite`,
				ADD `idaction_name_ref` INT UNSIGNED NOT NULL AFTER `idaction_name`,
				ADD INDEX `index_idsite_servertime` ( `idsite` , `server_time` )
			   '                                                               => false,

            'ALTER TABLE `' . Common::prefixTable('log_conversion') . '`
			    DROP `referer_idvisit`,
			    ADD `idvisitor` BINARY(8) NOT NULL AFTER `idsite`,
			    ADD visitor_count_visits SMALLINT(5) UNSIGNED NOT NULL,
			    ADD visitor_days_since_first SMALLINT(5) UNSIGNED NOT NULL,
			    ADD custom_var_k1 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_v1 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_k2 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_v2 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_k3 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_v3 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_k4 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_v4 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_k5 VARCHAR(100) DEFAULT NULL,
    			ADD custom_var_v5 VARCHAR(100) DEFAULT NULL
			   '                                                                      => false,

            // Migrate 128bits IDs inefficiently stored as 8bytes (256 bits) into 64bits
            'UPDATE ' . Common::prefixTable('log_visit') . '
    			SET idvisitor = binary(unhex(substring(visitor_idcookie,1,16))),
    				config_id = binary(unhex(substring(config_md5config,1,16)))
	   			'                                                                             => false,
            'UPDATE ' . Common::prefixTable('log_conversion') . '
    			SET idvisitor = binary(unhex(substring(visitor_idcookie,1,16)))
	   			'                                                                        => false,

            // Drop migrated fields
            'ALTER TABLE `' . Common::prefixTable('log_visit') . '`
		    	DROP visitor_idcookie, 
		    	DROP config_md5config
		    	'                                                                          => false,
            'ALTER TABLE `' . Common::prefixTable('log_conversion') . '`
		    	DROP visitor_idcookie
		    	'                                                                     => false,

            // Recreate INDEX on new field
            'ALTER TABLE `' . Common::prefixTable('log_visit') . '`
		    	ADD INDEX `index_idsite_datetime_config` (idsite, visit_last_action_time, config_id)
		    	'                                                                          => false,

            // Backfill action logs as best as we can
            'UPDATE ' . Common::prefixTable('log_link_visit_action') . ' as action,
				  	' . Common::prefixTable('log_visit') . '  as visit
                SET action.idsite = visit.idsite, 
                	action.server_time = visit.visit_last_action_time, 
                	action.idvisitor = visit.idvisitor
                WHERE action.idvisit=visit.idvisit
                ' => false,

            'ALTER TABLE `' . Common::prefixTable('log_link_visit_action') . '`
				CHANGE `server_time` `server_time` DATETIME NOT NULL
			   '                                                               => false,

            // New index used max once per request, in case this table grows significantly in the future
            'ALTER TABLE `' . Common::prefixTable('option') . '` ADD INDEX ( `autoload` ) '                                                                 => false,

            // new field for websites
            'ALTER TABLE `' . Common::prefixTable('site') . '` ADD `group` VARCHAR( 250 ) NOT NULL'                                                         => false,
        );
    }

    static function update()
    {
        // first we disable the plugins and keep an array of warnings messages
        $pluginsToDisableMessage = array(
            'GeoIP'     => "GeoIP plugin was disabled, because it is not compatible with the new Piwik 1.2. \nYou can download the latest version of the plugin, compatible with Piwik 1.2.\n<a target='_blank' href='?module=Proxy&action=redirect&url=http://dev.piwik.org/trac/ticket/45'>Click here.</a>",
            'EntryPage' => "EntryPage plugin is not compatible with this version of Piwik, it was disabled.",
        );
        $disabledPlugins = array();
        foreach ($pluginsToDisableMessage as $pluginToDisable => $warningMessage) {
            if (PluginsManager::getInstance()->isPluginActivated($pluginToDisable)) {
                PluginsManager::getInstance()->deactivatePlugin($pluginToDisable);
                $disabledPlugins[] = $warningMessage;
            }
        }

        // Run the SQL
        Piwik_Updater::updateDatabase(__FILE__, self::getSql());

        // Outputs warning message, pointing users to the plugin download page
        if (!empty($disabledPlugins)) {
            throw new Exception("The following plugins were disabled during the upgrade:"
                . "<ul><li>" .
                implode('</li><li>', $disabledPlugins) .
                "</li></ul>");
        }

    }
}