Wordpress 2.0.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 ?>