Wordpress 2.3.2
[autoinstalls/wordpress.git] / wp-admin / install-helper.php
1 <?php
2 require_once('../wp-config.php');
3 $debug = 0;
4
5 /**
6  ** maybe_create_table()
7  ** Create db table if it doesn't exist.
8  ** Returns:  true if already exists or on successful completion
9  **           false on error
10  */
11 function maybe_create_table($table_name, $create_ddl) {
12         global $wpdb;
13         foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) {
14                 if ($table == $table_name) {
15                         return true;
16                 }
17         }
18         //didn't find it try to create it.
19         $q = $wpdb->query($create_ddl);
20         // we cannot directly tell that whether this succeeded!
21         foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) {
22                 if ($table == $table_name) {
23                         return true;
24                 }
25         }
26         return false;
27 }
28
29 /**
30  ** maybe_add_column()
31  ** Add column to db table if it doesn't exist.
32  ** Returns:  true if already exists or on successful completion
33  **           false on error
34  */
35 function maybe_add_column($table_name, $column_name, $create_ddl) {
36         global $wpdb, $debug;
37         foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
38                 if ($debug) echo("checking $column == $column_name<br />");
39                         if ($column == $column_name) {
40                                 return true;
41                         }
42         }
43         //didn't find it try to create it.
44         $q = $wpdb->query($create_ddl);
45         // we cannot directly tell that whether this succeeded!
46         foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
47                 if ($column == $column_name) {
48                         return true;
49                 }
50         }
51         return false;
52 }
53
54
55 /**
56  ** maybe_drop_column()
57  ** Drop column from db table if it exists.
58  ** Returns:  true if it doesn't already exist or on successful drop
59  **           false on error
60  */
61 function maybe_drop_column($table_name, $column_name, $drop_ddl) {
62         global $wpdb;
63         foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
64                 if ($column == $column_name) {
65                         //found it try to drop it.
66                         $q = $wpdb->query($drop_ddl);
67                         // we cannot directly tell that whether this succeeded!
68                         foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
69                                 if ($column == $column_name) {
70                                         return false;
71                                 }
72                         }
73                 }
74         }
75         // else didn't find it
76         return true;
77 }
78
79
80 /**
81  ** check_column()
82  ** Check column matches passed in criteria.
83  ** Pass in null to skip checking that criteria
84  ** Returns:  true if it matches
85  **           false otherwise
86  ** (case sensitive) Column names returned from DESC table are:
87  **      Field
88  **      Type
89  **      Null
90  **      Key
91  **      Default
92  **      Extra
93  */
94 function check_column($table_name, $col_name, $col_type, $is_null = null, $key = null, $default = null, $extra = null) {
95         global $wpdb, $debug;
96         $diffs = 0;
97         $results = $wpdb->get_results("DESC $table_name");
98
99         foreach ($results as $row ) {
100                 if ($debug > 1) print_r($row);
101                         if ($row->Field == $col_name) {
102                                 // got our column, check the params
103                                 if ($debug) echo ("checking $row->Type against $col_type\n");
104                                 if (($col_type != null) && ($row->Type != $col_type)) {
105                                         ++$diffs;
106                                 }
107                                 if (($is_null != null) && ($row->Null != $is_null)) {
108                                         ++$diffs;
109                                 }
110                                 if (($key != null) && ($row->Key  != $key)) {
111                                         ++$diffs;
112                                 }
113                                 if (($default != null) && ($row->Default != $default)) {
114                                         ++$diffs;
115                                 }
116                                 if (($extra != null) && ($row->Extra != $extra)) {
117                                         ++$diffs;
118                                 }
119                                 if ($diffs > 0) {
120                                         if ($debug) echo ("diffs = $diffs returning false\n");
121                                         return false;
122                                 }
123                                 return true;
124                         } // end if found our column
125         }
126         return false;
127 }
128
129 /*
130 echo "<p>testing</p>";
131 echo "<pre>";
132
133 //check_column('wp_links', 'link_description', 'mediumtext');
134 //if (check_column($wpdb->comments, 'comment_author', 'tinytext'))
135 //    echo "ok\n";
136 $error_count = 0;
137 $tablename = $wpdb->links;
138 // check the column
139 if (!check_column($wpdb->links, 'link_description', 'varchar(255)'))
140 {
141         $ddl = "ALTER TABLE $wpdb->links MODIFY COLUMN link_description varchar(255) NOT NULL DEFAULT '' ";
142         $q = $wpdb->query($ddl);
143 }
144 if (check_column($wpdb->links, 'link_description', 'varchar(255)')) {
145         $res .= $tablename . ' - ok <br />';
146 } else {
147         $res .= 'There was a problem with ' . $tablename . '<br />';
148         ++$error_count;
149 }
150 echo "</pre>";
151 */
152 ?>