XPressME Integration Kit

Trac

source: trunk/include/onupdate.php @ 187

Last change on this file since 187 was 187, checked in by toemon, 15 years ago

#110 2.8-bleeding-edgeを使用したときのモジュールアップデートエラー 回避

File size: 7.9 KB
Line 
1<?php
2$mydirname = basename( dirname( dirname( __FILE__ ) ) ) ;
3
4eval( ' function xoops_module_update_'.$mydirname.'( $module ) { return xpress_onupdate_base( $module , "'.$mydirname.'" ) ; } ' ) ;
5
6
7if( ! function_exists( 'xpress_onupdate_base' ) ) :
8function xpress_onupdate_base( $module , $mydirname )
9{
10        // transations on module update
11
12        global $msgs ; // TODO :-D
13        // for Cube 2.1
14        if( defined( 'XOOPS_CUBE_LEGACY' ) ) {
15                $root =& XCube_Root::getSingleton();
16                $root->mDelegateManager->add( 'Legacy.Admin.Event.ModuleUpdate.' . ucfirst($mydirname) . '.Success', 'xpress_message_append_onupdate' ) ;
17                $msgs = array() ;
18        } else {
19                if( ! is_array( $msgs ) ) $msgs = array() ;
20        }
21
22        $db =& Database::getInstance() ;
23        $mid = $module->getVar('mid') ;
24
25// XPressME orignal table updayte
26        if (! enhanced_table_check($mydirname,'views')){
27                $xp_prefix = $mydirname;
28                if ($xp_prefix == 'wordpress'){
29                        $xp_prefix = 'wp';
30                }
31               
32                $charset_collate = '';
33                if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
34                        if ( ! empty($wpdb->charset) )
35                        $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
36                        if ( ! empty($wpdb->collate) )
37                        $charset_collate .= " COLLATE $wpdb->collate";
38                }
39                $views_table = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_views' ;
40                $views_queries ="CREATE TABLE $views_table (
41                post_id bigint(20) unsigned NOT NULL default '0',
42                post_views bigint(20) unsigned NOT NULL default '0',
43                KEY post_id (post_id)
44                )$charset_collate;";
45
46                dbDelta($views_queries);
47                $msgs[] = "$views_table table of XPressME was made.";
48        }
49       
50        if (! enhanced_table_check($mydirname,'d3forum_link')){
51                $xp_prefix = $mydirname;
52                if ($xp_prefix == 'wordpress'){
53                        $xp_prefix = 'wp';
54                }
55               
56                $charset_collate = '';
57                if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
58                        if ( ! empty($wpdb->charset) )
59                        $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
60                        if ( ! empty($wpdb->collate) )
61                        $charset_collate .= " COLLATE $wpdb->collate";
62                }
63       
64                $d3forum_link = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_d3forum_link' ;
65                $queries ="CREATE TABLE $d3forum_link (
66                        comment_ID bigint(20) unsigned NOT NULL default '0',
67                        post_id int(10) unsigned NOT NULL default '0' ,
68                        wp_post_ID bigint(20) unsigned NOT NULL default '0',
69                        KEY post_id (post_id)
70                        )$charset_collate;";
71                dbDelta($queries);
72                $msgs[] = "$d3forum_link table of XPressME was made.";
73        }
74
75        if (! enhanced_table_check($mydirname,'group_role')){
76                $xp_prefix = $mydirname;
77                if ($xp_prefix == 'wordpress'){
78                        $xp_prefix = 'wp';
79                }
80               
81                $charset_collate = '';
82                if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
83                        if ( ! empty($wpdb->charset) )
84                        $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
85                        if ( ! empty($wpdb->collate) )
86                        $charset_collate .= " COLLATE $wpdb->collate";
87                }
88       
89                $group_role = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_group_role' ;
90                $views_queries ="CREATE TABLE $group_role (
91                        groupid smallint(5) unsigned NOT NULL default '0',
92                        name varchar(50)  NOT NULL default '' ,
93                        description text  NOT NULL default '',
94                        group_type varchar(50)  NOT NULL default '' ,
95                        role varchar(20)  NOT NULL default '' ,
96                        login_all smallint(5) unsigned NOT NULL default '0' ,
97                        KEY groupid (groupid)
98                        )$charset_collate;";
99                dbDelta($views_queries);
100                $sql = "INSERT INTO $group_role (groupid, role) VALUES (1, 'administrator')";
101                $wpdb->query($sql);
102                $msgs[] = "$group_role table of XPressME was made.";
103        }
104        if ( xpress_block_check($mydirname)) {
105                $msgs[] = '<span style="color:#ff0000;">Block Check OK</span>';
106        } else {
107                $msgs[] = "Block Check NG.  You need Repar Block on This Mobule 'Block Check' Menu";
108        }
109
110// make templates
111        include_once XOOPS_ROOT_PATH . '/modules/' . $mydirname . '/include/xpress_templates_make.php' ;
112        $t_mess = xpress_templates_make($mid,$mydirname);
113       
114        $msgs = array_merge($msgs,$t_mess);
115
116
117//Wordpress TABLE UPGRADE
118        global $wpdb,$wp_rewrite, $wp_queries, $table_prefix, $wp_db_version, $wp_roles,$wp_query;
119        define('WP_INSTALLING', true);
120        $mydirpath = XOOPS_ROOT_PATH . '/modules/' . $mydirname;
121        $path = $mydirpath . '/';
122       
123/*
124 * xpress_put_siteurl($mydirname,'');
125 * Call to a member function register() The on a non-object error is evaded.
126 * It happens by register_widget() that exists in wp-includes/widgets.php.
127 * The blog is not installed. It is cheating to function wp_maybe_load_widgets().
128 * As a result, default-widgets.php is not loaded.
129 */
130        xpress_put_siteurl($mydirname,'');                              // Site_url is temporarily deleted.
131       
132        if (file_exists($path . 'wp-load.php')) {
133                require_once $path . 'wp-load.php';
134        } else {
135                require_once $path . 'wp-config.php';
136        }
137       
138        $site_url= XOOPS_URL."/modules/".$mydirname;           
139        update_option("home", $site_url);                               // Site_url is set again.
140        update_option("siteurl", $site_url);
141
142        require_once($mydirpath . '/wp-admin/upgrade-functions.php');
143
144        if ( get_db_version($mydirname) != $wp_db_version ){
145                if( function_exists( 'wp_upgrade' ) )   {       
146                        wp_upgrade();                   
147                } else {
148                        wp_cache_flush();
149                        make_db_current_silent();
150                        upgrade_all();
151                        wp_cache_flush();
152                }                               
153                        $msgs[] = 'Upgrade Wordpress Database Ver.' . get_db_version($mydirname) .' to' . $wp_db_version;
154        }
155
156        /* activate the xpressme plugin */
157        require_once dirname( __FILE__ ).'/xpress_active_plugin.php';
158        if (xpress_pulugin_activation('xpressme/xpressme.php')){
159                $msgs[] = 'The xpressme plug-in was activated.';
160        }
161       
162//      update_option("blog_charset", wp_blog_charset());
163        $xpress_version = $module->modinfo['version'];
164       
165
166       
167        return true ;
168}
169endif;
170
171if( ! function_exists( 'xpress_put_siteurl' ) ) :
172function xpress_put_siteurl($mydirname,$url){
173                global $xoopsModule;
174                $wp_prefix = $mydirname;
175                if ($wp_prefix == 'wordpress'){
176                        $wp_prefix = 'wp';
177                }
178                $xoopsDB =& Database::getInstance();
179                $db_xpress_option = $xoopsDB->prefix($wp_prefix . '_options');
180
181                $sql = "UPDATE $db_xpress_option SET option_value = '$url' WHERE option_name = 'siteurl'";
182                $res = $xoopsDB->queryF($sql, 0, 0);
183}
184endif;
185
186if( ! function_exists( 'xpress_message_append_onupdate' ) ) :
187function xpress_message_append_onupdate( &$module_obj , &$log )
188{
189        if( is_array( @$GLOBALS['msgs'] ) ) {
190                foreach( $GLOBALS['msgs'] as $message ) {
191                        $log->add( strip_tags( $message ) ) ;
192                }
193        }
194
195        // use mLog->addWarning() or mLog->addError() if necessary
196}
197endif;
198
199if( ! function_exists( 'get_db_version' ) ) :
200function get_db_version($mydirname){
201                global $xoopsModule;
202                $wp_prefix = $mydirname;
203                if ($wp_prefix == 'wordpress'){
204                        $wp_prefix = 'wp';
205                }
206                $xoopsDB =& Database::getInstance();
207                $db_xpress_option = $xoopsDB->prefix($wp_prefix . '_options');
208
209                $sql = "SELECT option_value FROM $db_xpress_option WHERE option_name = 'db_version'";
210                $res = $xoopsDB->query($sql, 0, 0);
211                if ($res === false){
212                        return false;
213                } else {
214                        $row = $xoopsDB->fetchArray($res);
215                        return $row['option_value'];
216                }
217}
218endif;
219
220
221if( ! function_exists( 'enhanced_table_check' ) ) :
222function enhanced_table_check($mydirname,$table_name){
223                global $xoopsModule;
224               
225                $xoopsDB =& Database::getInstance();
226                if ($mydirname == 'wordpress'){
227                        $xpress_prefix=  $xoopsDB->prefix('wp_');
228                } else {
229                        $xpress_prefix=  $xoopsDB->prefix($mydirname . '_');
230                }
231                $db_enhanced = $xpress_prefix . $table_name;
232
233                $sql = "show tables like '$db_enhanced'";
234                $res = $xoopsDB->query($sql, 0, 0);
235                if ($res === false){
236                        return false;
237                } else {
238                        if ($xoopsDB->getRowsNum($res)  > 0)
239                                return true;
240                        else
241                                return false;
242                }
243}
244endif;
245
246if( ! function_exists( 'xpress_block_check' ) ) :
247function xpress_block_check($mydirname){
248        include_once(dirname(dirname(__FILE__)) . '/class/check_blocks_class.php');
249
250        $xoops_block_check =& xoops_block_check::getInstance();
251
252        if ( !$xoops_block_check->is_admin() )
253        {
254                $cont = 'Block Check Pass';
255                return cont;
256        }
257
258        switch ( $xoops_block_check->get_op() )
259        {
260                case "remove_block":
261                        $cont = $xoops_block_check->remove_block();
262                        break;
263
264                default:
265                        $cont = $xoops_block_check->check_blocks($mydirname);
266                        break;
267        }
268        return $cont;
269}
270endif;
271
272
273?>
Note: See TracBrowser for help on using the repository browser.