/[drupal]/contributions/modules/relatedlinks/relatedlinks.install
ViewVC logotype

Contents of /contributions/modules/relatedlinks/relatedlinks.install

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.19 - (show annotations) (download) (as text)
Mon Feb 26 17:26:10 2007 UTC (2 years, 9 months ago) by karthik
Branch: MAIN
CVS Tags: DRUPAL-5--2-2-BETA, DRUPAL-5--2-2, DRUPAL-5--2-0, DRUPAL-5--2-1, DRUPAL-5--1-0-BETA, DRUPAL-6--1-0-ALPHA0, DRUPAL-5--1-1, DRUPAL-5--1-0, HEAD
Branch point for: DRUPAL-5--2, DRUPAL-5, DRUPAL-6--1
Changes since 1.18: +11 -2 lines
File MIME type: text/x-php
D5 port.
1 <?php
2 // $Id: relatedlinks.install,v 1.18 2006/11/13 21:47:34 karthik Exp $
3
4 /**
5 * Implementation of hook_install().
6 */
7 function relatedlinks_install() {
8 $ret = array();
9
10 switch ($GLOBALS['db_type']) {
11 case 'mysqli':
12 case 'mysql':
13 db_query("CREATE TABLE {relatedlinks} (
14 lid int(11) unsigned NOT NULL auto_increment,
15 nid int(11) unsigned NOT NULL default 0,
16 url varchar(255) NOT NULL default '',
17 title varchar(255) default NULL,
18 type tinyint(4) unsigned NOT NULL default 1,
19 PRIMARY KEY (lid),
20 KEY nid (nid),
21 KEY nid_type (nid, type))
22 COMMENT = 'Relatedlinks module: store manual and parsed links.'
23 /*!40100 default CHARACTER SET utf8 */"
24 );
25 db_query("CREATE TABLE {relatedlinks_tracker} (
26 nid int(11) UNSIGNED NOT NULL,
27 keywords varchar(255) NULL,
28 updated int(11) NOT NULL default 0,
29 PRIMARY KEY (nid),
30 KEY (updated))
31 COMMENT = 'Table keeping track of discovered links.'
32 /*!40100 default CHARACTER SET utf8 */"
33 );
34 break;
35 case 'pgsql':
36 db_query("CREATE TABLE {relatedlinks} (
37 lid serial,
38 nid integer NOT NULL default 0,
39 url varchar(255) NOT NULL default '',
40 title varchar(255) default NULL,
41 type smallint NOT NULL default 1
42 PRIMARY KEY (lid))"
43 );
44 db_query("CREATE INDEX {relatedlinks}_nid_idx ON {relatedlinks}(nid)");
45 db_query("CREATE INDEX {relatedlinks}_nid_type_idx ON {relatedlinks}(nid, type)");
46 db_query("CREATE TABLE {relatedlinks_tracker} (
47 nid integer NOT NULL default 0,
48 keywords varchar(255) NULL,
49 updated integer NOT NULL default 0
50 PRIMARY KEY (nid))"
51 );
52 db_query("CREATE INDEX {relatedlinks_tracker}_updated_idx ON {relatedlinks_tracker}(updated)");
53 }
54 drupal_set_message(t('The relatedlinks module installation script has completed.'));
55 if (!module_exists('taxonomy') && !module_exists('search')) {
56 drupal_set_message(t('The discovered links feature of the relatedlinks module requires one of the following modules:
57 <ul>
58 <li>Taxonomy</li>
59 <li>Search</li>
60 </ul>'));
61 }
62
63 return $ret;
64 }
65
66 /**
67 * Convert existing variables from strings to internal constants used in the
68 * module.
69 */
70 function relatedlinks_update_2() {
71 define('RELATEDLINKS_PARSED', 1);
72 define('RELATEDLINKS_MANUAL', 2);
73 // RELATEDLINKS_TAXONOMY is now named RELATEDLINKS_DISCOVERED.
74 define('RELATEDLINKS_TAXONOMY', 3);
75
76 $types = variable_get('relatedlinks_types', array());
77 $types_converted = array();
78 $i = 1;
79 foreach ($types as $type) {
80 $name = $type == 'taxonomy'? 'Discovered links' : ucfirst($type) .' links';
81 $types_converted[constant('RELATEDLINKS_'. strtoupper($type))] = array(
82 'name' => ucfirst($type) .' links',
83 'enabled' => TRUE,
84 'block' => TRUE,
85 'title' => ucfirst($type) .' links',
86 'max' => 5,
87 'weight' => $i++
88 );
89 }
90
91 variable_set('relatedlinks_types', $types_converted);
92
93 return array();
94 }
95
96 /**
97 * Convert table to hold links as url, title.
98 */
99 function relatedlinks_update_3() {
100 $ret = array();
101
102 switch ($GLOBALS['db_type']) {
103 case 'mysqli':
104 case 'mysql':
105 $ret[] = update_sql("ALTER TABLE {relatedlinks} ADD lid int(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST");
106 $ret[] = update_sql("ALTER TABLE {relatedlinks} CHANGE link url varchar(255) NOT NULL default ''");
107 $ret[] = update_sql("ALTER TABLE {relatedlinks} ADD title varchar(255) DEFAULT NULL AFTER url");
108 // nid and type are UNSIGNED fields.
109 $ret[] = update_sql("ALTER TABLE {relatedlinks} CHANGE nid nid int(11) UNSIGNED NOT NULL DEFAULT 0");
110 $ret[] = update_sql("ALTER TABLE {relatedlinks} CHANGE type type tinyint(4) UNSIGNED NOT NULL DEFAULT 1");
111 $ret[] = update_sql("ALTER TABLE {relatedlinks} ADD INDEX nid_type (nid, type)");
112 break;
113 case 'pgsql':
114 // Needs testing. Field ordering needs to be added.
115 db_add_column($ret, 'relatedlinks', 'lid', 'serial');
116 db_change_column($ret, 'relatedlinks', 'link', 'url', 'varchar(255)', array('default' => "''", 'not null' => TRUE));
117 db_add_column($ret, 'relatedlinks', 'title', 'varchar(255)', array('default' => "NULL"));
118 $ret[] = update_sql("CREATE INDEX {relatedlinks}_nid_type_idx ON {relatedlinks}(nid, type)");
119 break;
120 }
121
122 $result = db_query("SELECT * FROM {relatedlinks}");
123 while ($link = db_fetch_array($result)) {
124 preg_match("!<\s*a\s*href\s*=\s*(?:\"([^\">]+)\"[^>]*|([^\" >]+?)[^>]*)>(.*)\s*<\s*/\s*a\s*>!Uis", $link['url'], $matches);
125 if (count($matches[1])) {
126 // Using db_query instead of update_sql to ease validation.
127 db_query("UPDATE {relatedlinks} SET url = '%s', title = '%s' WHERE lid = %d", $matches[1], trim($matches[3]), $link['lid']);
128 }
129 }
130
131 return $ret;
132 }
133
134 /**
135 * Add relatedlinks_tracker table and initialise with existing relatedlink nids.
136 */
137 function relatedlinks_update_4() {
138 $ret = array();
139
140 switch ($GLOBALS['db_type']) {
141 case 'mysqli':
142 case 'mysql':
143 $ret[] = update_sql("CREATE TABLE {relatedlinks_tracker} (
144 nid int(11) UNSIGNED NOT NULL,
145 keywords varchar(255) NULL,
146 updated int(11) NOT NULL default 0,
147 PRIMARY KEY (nid),
148 KEY (updated))
149 COMMENT = 'Table keeping track of discovered links.'
150 /*!40100 default CHARACTER SET utf8 */"
151 );
152 break;
153 case 'pgsql':
154 $ret[] = update_sql("CREATE TABLE {relatedlinks_tracker} (
155 nid integer NOT NULL default 0,
156 keywords varchar(255) NULL,
157 updated integer NOT NULL default 0
158 PRIMARY KEY (nid))"
159 );
160 $ret[] = update_sql("CREATE INDEX {relatedlinks_tracker}_updated_idx ON {relatedlinks_tracker}(updated)");
161 }
162
163 $ret[] = update_sql("INSERT INTO {relatedlinks_tracker} (nid) SELECT DISTINCT(nid) FROM {relatedlinks}");
164
165 return $ret;
166 }
167
168 /**
169 * Implementation of hook_uninstall().
170 */
171 function relatedlinks_uninstall() {
172 db_query('DROP TABLE {relatedlinks_tracker}, {relatedlinks}');
173 variable_del('relatedlinks_types');
174 variable_del('relatedlinks_node_types');
175 }

  ViewVC Help
Powered by ViewVC 1.1.2