PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.12.2
Independent Analytics – WordPress Analytics Plugin v2.12.2
2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / Migrations / Migration_1_8.php
independent-analytics / IAWP / Migrations Last commit date
Creates_Reports.php 1 year ago Migration.php 1 year ago Migration_10.php 2 years ago Migration_11.php 2 years ago Migration_12.php 1 year ago Migration_13.php 2 years ago Migration_14.php 2 years ago Migration_15.php 2 years ago Migration_16.php 2 years ago Migration_17.php 1 year ago Migration_18.php 2 years ago Migration_19.php 2 years ago Migration_1_0.php 2 years ago Migration_1_6.php 2 years ago Migration_1_8.php 2 years ago Migration_1_9.php 2 years ago Migration_2.php 2 years ago Migration_20.php 2 years ago Migration_21.php 2 years ago Migration_22.php 2 years ago Migration_23.php 1 year ago Migration_24.php 2 years ago Migration_25.php 2 years ago Migration_26.php 2 years ago Migration_27.php 2 years ago Migration_28.php 2 years ago Migration_29.php 2 years ago Migration_3.php 2 years ago Migration_30.php 2 years ago Migration_31.php 2 years ago Migration_32.php 2 years ago Migration_33.php 2 years ago Migration_34.php 1 year ago Migration_35.php 1 year ago Migration_36.php 1 year ago Migration_37.php 1 year ago Migration_38.php 1 year ago Migration_39.php 1 year ago Migration_4.php 2 years ago Migration_40.php 1 year ago Migration_41.php 1 year ago Migration_42.php 1 year ago Migration_43.php 1 year ago Migration_5.php 2 years ago Migration_6.php 2 years ago Migration_7.php 1 year ago Migration_8.php 2 years ago Migration_9.php 2 years ago Migration_Job.php 1 year ago Migrations.php 1 year ago Step_Migration.php 1 year ago
Migration_1_8.php
54 lines
1 <?php
2
3 namespace IAWP\Migrations;
4
5 use IAWP\Known_Referrers;
6 use IAWP\Query;
7 use IAWP\Utils\URL;
8 /** @internal */
9 class Migration_1_8 extends \IAWP\Migrations\Migration
10 {
11 /**
12 * @var string
13 */
14 protected $database_version = '1.8';
15 /**
16 * @return void
17 */
18 protected function migrate() : void
19 {
20 global $wpdb;
21 $charset_collate = $wpdb->get_charset_collate();
22 $views_table = Query::get_table_name(Query::VIEWS);
23 $resources_table = Query::get_table_name(Query::RESOURCES);
24 $referrer_groups_table = Query::get_table_name(Query::REFERRER_GROUPS);
25 $referrers_table = Query::get_table_name(Query::REFERRERS);
26 $known_referrers = Known_Referrers::referrers();
27 // Create the groups table
28 $wpdb->query("DROP TABLE IF EXISTS {$referrer_groups_table}");
29 $wpdb->query("CREATE TABLE {$referrer_groups_table} (\n referrer_group_id bigint(20) UNSIGNED AUTO_INCREMENT,\n name varchar(2048) NOT NULL,\n domain varchar(2048) NOT NULL,\n domain_to_match varchar(2048) NOT NULL,\n type ENUM ('Search', 'Social') NOT NULL,\n PRIMARY KEY (referrer_group_id)\n ) {$charset_collate}");
30 // Insert predefined groups
31 foreach ($known_referrers as $group) {
32 foreach ($group['domains'] as $domain) {
33 $wpdb->insert($referrer_groups_table, ['name' => $group['name'], 'domain' => $group['domains'][0], 'domain_to_match' => $domain, 'type' => $group['type']]);
34 }
35 }
36 $wpdb->query("\n ALTER TABLE {$referrers_table} CHANGE COLUMN url domain varchar(2048) NOT NULL;\n ");
37 $rows = $wpdb->get_results("SELECT * FROM {$referrers_table}");
38 foreach ($rows as $row) {
39 $potential_url = new URL($row->domain);
40 if ($potential_url->is_valid_url()) {
41 $wpdb->query($wpdb->prepare("UPDATE {$referrers_table} SET domain = %s WHERE id = %d", $potential_url->get_domain(), $row->id));
42 }
43 }
44 // add a new page field to view table
45 $wpdb->query("\n ALTER TABLE {$views_table} ADD COLUMN page bigint(20) UNSIGNED NOT NULL DEFAULT 1;\n ");
46 // move the page number to the view and set the resource_id to first of similar resources
47 $wpdb->query("\n UPDATE {$views_table} AS views\n INNER JOIN {$resources_table} AS resources ON views.resource_id = resources.id\n INNER JOIN\n (\n SELECT MIN({$resources_table}.id) as resource_id,\n resource,\n singular_id,\n author_id,\n date_archive,\n search_query,\n post_type,\n term_id,\n not_found_url\n FROM {$views_table}\n INNER JOIN {$resources_table}\n ON {$resources_table}.id = {$views_table}.resource_id\n GROUP BY resource, singular_id, author_id, date_archive, search_query, post_type, term_id, not_found_url\n ) AS matcher ON resources.resource = matcher.resource\n AND (resources.singular_id = matcher.singular_id OR resources.singular_id IS NULL OR matcher.singular_id IS NULL)\n AND (resources.author_id = matcher.author_id OR resources.author_id IS NULL OR matcher.author_id IS NULL)\n AND (resources.date_archive = matcher.date_archive OR resources.date_archive IS NULL OR matcher.date_archive IS NULL)\n AND (resources.search_query = matcher.search_query OR resources.search_query IS NULL OR matcher.search_query IS NULL)\n AND (resources.post_type = matcher.post_type OR resources.post_type IS NULL OR matcher.post_type IS NULL)\n AND (resources.term_id = matcher.term_id OR resources.term_id IS NULL OR matcher.term_id IS NULL)\n AND (resources.not_found_url = matcher.not_found_url OR resources.not_found_url IS NULL OR matcher.not_found_url IS NULL)\n AND resources.id != matcher.resource_id\n SET views.resource_id = matcher.resource_id, views.page = resources.page\n ");
48 // delete the extra duplicate resources (or don't?)
49 $wpdb->query("\n DELETE resources FROM {$resources_table} AS resources \n LEFT JOIN {$views_table} AS views ON resources.id = views.resource_id\n WHERE views.id IS NULL\n ");
50 // remove the page column from resources
51 $wpdb->query("\n ALTER TABLE {$resources_table} DROP COLUMN page;\n ");
52 }
53 }
54