+ added missing db-sync for one of the user input tables
[sfa:postrank.git] / samarbeid-postrank.php
1 <?php
2 /*
3 Plugin Name: Samarbeid for Arbeid PostRank
4 Plugin URI: http://www.bouvet.no
5 Description: Manages and outputs feed listings with PostRank data.
6 Version: 1.5.2
7 Author: Bouvet ASA
8 Author URI: http://www.bouvet.no
9 */
10 /*  Copyright 2010  Bouvet ASA  (email : sam@bouvet.no)
11
12     This program is free software; you can redistribute it and/or modify
13     it under the terms of the GNU General Public License, version 2, as 
14     published by the Free Software Foundation.
15
16     This program is distributed in the hope that it will be useful,
17     but WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19     GNU General Public License for more details.
20
21     You should have received a copy of the GNU General Public License
22     along with this program; if not, write to the Free Software
23     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
24 */
25
26
27 global $wpdb;
28
29 define("BVT_SFA_DB_VERSION", 24);
30 define("BVT_SFA_DB_FEED_TABLE", $wpdb->prefix . "samarbeid_feeds");
31 define("BVT_SFA_DB_FEED_DATA_TABLE", $wpdb->prefix . "samarbeid_feed_data");
32 define("BVT_SFA_DB_NONCE_TABLE", $wpdb->prefix . "samarbeid_nonce");
33 define("BVT_SFA_DB_NONCE_VOTE_TABLE", $wpdb->prefix . "samarbeid_nonce_vote");
34 define("BVT_SFA_TOPICS_CATEGORY_ID", 4);
35 define("BVT_SFA_FEED_CACHE_TIME", 300);
36 define("BVT_SFA_FEED_TIMEOUT", 2);
37 define("BVT_SFA_POSTRANK_TIMEOUT", 3);
38 define("BVT_SFA_PAGINATOR_BUFFER", 2);
39
40 // Register plugin hooks
41
42 register_activation_hook(__FILE__, 'bvt_sfa_install');
43 add_action('wp_footer', 'bvt_sfa_voting_js');
44 add_action('wp_ajax_bvt_sfa_vote', 'bvt_sfa_voting_ajax_callback');
45 add_action('wp_ajax_nopriv_bvt_sfa_vote', 'bvt_sfa_voting_ajax_callback');
46
47
48 // Load dependencies
49
50 $path = dirname(__FILE__) . '/samarbeid-postrank';
51 set_include_path(get_include_path() . PATH_SEPARATOR . $path);
52
53 require_once("samarbeid-postrank/feed-functions.php");
54 require_once("samarbeid-postrank/vote-functions.php");
55 require_once("samarbeid-postrank/admin-functions.php");
56
57
58 /**
59  * Handler for plugin installation
60  */
61 function bvt_sfa_install() {
62
63     global $wpdb;
64
65     require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
66
67     /*
68
69     // This block is meant to be commented; it is here for convenience while
70     // developing, but should NOT be enabled in production since it will wipe
71     // all feed settings from the database!
72
73     if ($wpdb->get_var("SHOW TABLES LIKE '" . BVT_SFA_DB_FEED_TABLE . "'")
74             == BVT_SFA_DB_FEED_TABLE) {
75
76         $wpdb->query("DROP TABLE " . BVT_SFA_DB_FEED_TABLE);
77     }
78
79     if ($wpdb->get_var("SHOW TABLES LIKE '" . BVT_SFA_DB_FEED_DATA_TABLE . "'")
80             == BVT_SFA_DB_FEED_DATA_TABLE) {
81
82         $wpdb->query("DROP TABLE " . BVT_SFA_DB_FEED_DATA_TABLE);
83     }
84
85     */
86
87     if (get_option("BVT_SFA_DB_VERSION") < 16) {
88
89         // dbDelta doesn't seem to cope with adding auto_increment fields
90
91         $wpdb->query("
92             ALTER TABLE " . BVT_SFA_DB_FEED_DATA_TABLE . "
93                 ADD COLUMN post_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
94                 ADD KEY key_post_id (post_id)");
95     }
96
97     $sql =
98         "CREATE TABLE " . BVT_SFA_DB_FEED_TABLE . " (
99             category_id INT(11) NOT NULL,
100             feed_url CHAR(150) NOT NULL,
101             postrank_url CHAR(150) NOT NULL,
102             last_update DATETIME NOT NULL,
103             cache_time INT(11),
104             PRIMARY KEY  category_id (category_id)
105         ) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
106
107     $sql .=
108         "CREATE TABLE " . BVT_SFA_DB_FEED_DATA_TABLE . " (
109             category_id INT(11) NOT NULL,
110             post_link CHAR(255) NOT NULL,
111             post_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
112             post_title CHAR(140) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
113             post_selected_date DATETIME NOT NULL,
114             post_publish_date DATETIME NOT NULL,
115             post_author CHAR(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
116             post_postrank TINYINT(3) UNSIGNED NOT NULL DEFAULT 10,
117             post_postrank_metrics TEXT NOT NULL,
118             post_content TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci,
119             post_publish_status TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,
120             post_votes_agree INT(11) UNSIGNED NOT NULL DEFAULT 0,
121             post_votes_disagree INT(11) UNSIGNED NOT NULL DEFAULT 0,
122             post_manually_created TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
123             PRIMARY KEY  key_primary (category_id,post_link),
124             KEY key_post_id (post_id),
125             KEY key_category_id_date (category_id,post_selected_date),
126             KEY key_category_postrank (category_id,post_postrank),
127             KEY key_date (post_selected_date),
128             KEY key_postrank (post_postrank),
129             FULLTEXT KEY key_fulltext (post_title,post_author,post_content)
130         ) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
131
132     $sql .=
133         "CREATE TABLE " . BVT_SFA_DB_NONCE_TABLE . " (
134             nonce_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
135             nonce_value CHAR(32) NOT NULL,
136             nonce_expires DATETIME NOT NULL,
137             PRIMARY KEY  key_primary (nonce_value),
138             KEY key_nonce_id (nonce_id)
139         ) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
140
141     $sql .=
142         "CREATE TABLE " . BVT_SFA_DB_NONCE_VOTE_TABLE . " (
143             nvote_nonce_id INT(11) UNSIGNED NOT NULL,
144             nvote_post_id INT(11) UNSIGNED NOT NULL,
145             PRIMARY KEY  key_primary (nvote_nonce_id,nvote_post_id)
146         ) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
147
148     dbDelta($sql);
149
150     update_option("BVT_SFA_DB_VERSION", BVT_SFA_DB_VERSION);
151     add_option("BVT_SFA_TOPICS_CATEGORY_ID", BVT_SFA_TOPICS_CATEGORY_ID);
152     add_option("BVT_SFA_FEED_INTRO_HEADING", "Heading");
153     add_option("BVT_SFA_FEED_INTRO_BODY", "Lorem ipsum... [category]");
154     add_option("BVT_SFA_FEED_INTRO_BODY_HOMEPAGE", "Lorem ipsum... (home page)");
155     add_option("BVT_SFA_METRICS_ITEMS", "twitter,delicious,bookmarks,clicks");
156 }
157
158 ?>