XPressME Integration Kit

Trac

source: trunk/include/onupdate.php @ 80

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

インストール時やVer2.X以前のXPressMEからのアップデート時の初期値としてXOOPS管理者グループに、WordPress管理者権限を設定するようにした。

File size: 7.2 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
14        // for Cube 2.1
15        if( defined( 'XOOPS_CUBE_LEGACY' ) ) {
16                $root =& XCube_Root::getSingleton();
17                $root->mDelegateManager->add( 'Legacy.Admin.Event.ModuleUpdate.' . ucfirst($mydirname) . '.Success', 'xpress_message_append_onupdate' ) ;
18                $msgs = array() ;
19        } else {
20                if( ! is_array( $msgs ) ) $msgs = array() ;
21        }
22
23        $db =& Database::getInstance() ;
24        $mid = $module->getVar('mid') ;
25
26//XPress TABLE UPGRADE
27        global $wpdb,$wp_rewrite, $wp_queries, $table_prefix, $wp_db_version, $wp_roles,$wp_query;
28        define('WP_INSTALLING', true);
29        $mydirpath = XOOPS_ROOT_PATH . '/modules/' . $mydirname;
30        $path = $mydirpath . '/';
31        if (file_exists($path . 'wp-load.php')) {
32                require_once $path . 'wp-load.php';
33        } else {
34                require_once $path . 'wp-config.php';
35        }
36        require_once($mydirpath . '/wp-admin/upgrade-functions.php');
37
38        if ( get_db_version($mydirname) != $wp_db_version ){
39                if( function_exists( 'wp_upgrade' ) )   {       
40                        wp_upgrade();
41                } else {
42                        wp_cache_flush();
43                        make_db_current_silent();
44                        upgrade_all();
45                        wp_cache_flush();
46                }                               
47        }
48        /* activate the tag plugin */
49        $plugin_current = "xpressme/xpressme.php";
50        update_option('active_plugins', array($plugin_current));
51        include_once(dirname(__FILE__) . '/../wp-content/plugins/'.$plugin_current);
52        do_action('activate_'.$plugin_current);
53       
54//      update_option("blog_charset", wp_blog_charset());
55        $xpress_version = $module->modinfo['version'];
56       
57        if (! enhanced_table_check($mydirname,'views')){
58                $xp_prefix = $mydirname;
59                if ($xp_prefix == 'wordpress'){
60                        $xp_prefix = 'wp';
61                }
62               
63                $charset_collate = '';
64                if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
65                        if ( ! empty($wpdb->charset) )
66                        $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
67                        if ( ! empty($wpdb->collate) )
68                        $charset_collate .= " COLLATE $wpdb->collate";
69                }
70                $views_table = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_views' ;
71                $views_queries ="CREATE TABLE $views_table (
72                post_id bigint(20) unsigned NOT NULL default '0',
73                post_views bigint(20) unsigned NOT NULL default '0',
74                KEY post_id (post_id)
75                )$charset_collate;";
76
77                dbDelta($views_queries);
78        }
79       
80        if (! enhanced_table_check($mydirname,'d3forum_link')){
81                $xp_prefix = $mydirname;
82                if ($xp_prefix == 'wordpress'){
83                        $xp_prefix = 'wp';
84                }
85               
86                $charset_collate = '';
87                if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
88                        if ( ! empty($wpdb->charset) )
89                        $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
90                        if ( ! empty($wpdb->collate) )
91                        $charset_collate .= " COLLATE $wpdb->collate";
92                }
93       
94                $d3forum_link = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_d3forum_link' ;
95                $queries ="CREATE TABLE $d3forum_link (
96                        comment_ID bigint(20) unsigned NOT NULL default '0',
97                        post_id int(10) unsigned NOT NULL default '0' ,
98                        wp_post_ID bigint(20) unsigned NOT NULL default '0',
99                        KEY post_id (post_id)
100                        )$charset_collate;";
101                dbDelta($queries);
102        }
103
104        if (! enhanced_table_check($mydirname,'group_role')){
105                $xp_prefix = $mydirname;
106                if ($xp_prefix == 'wordpress'){
107                        $xp_prefix = 'wp';
108                }
109               
110                $charset_collate = '';
111                if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
112                        if ( ! empty($wpdb->charset) )
113                        $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
114                        if ( ! empty($wpdb->collate) )
115                        $charset_collate .= " COLLATE $wpdb->collate";
116                }
117       
118                $group_role = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_group_role' ;
119                $views_queries ="CREATE TABLE $group_role (
120                        groupid smallint(5) unsigned NOT NULL default '0',
121                        name varchar(50)  NOT NULL default '' ,
122                        description text  NOT NULL default '',
123                        group_type varchar(10)  NOT NULL default '' ,
124                        role varchar(20)  NOT NULL default '' ,
125                        KEY groupid (groupid)
126                        )$charset_collate;";
127                dbDelta($views_queries);
128                $sql = "INSERT INTO $group_role (groupid, role) VALUES (1, 'administrator')";
129                $wpdb->query($sql);
130
131        }
132       
133        clean_template($mydirname,$xpress_version);
134
135        // update templates
136//      include_once XOOPS_ROOT_PATH . '/modules/' . $mydirname . '/include/xpress_templates.php' ;
137//      $msgs = xpress_update_templates($mid,$mydirname);
138       
139        return true ;
140}
141endif;
142
143if( ! function_exists( 'xpress_message_append_onupdate' ) ) :
144function xpress_message_append_onupdate( &$module_obj , &$log )
145{
146        if( is_array( @$GLOBALS['msgs'] ) ) {
147                foreach( $GLOBALS['msgs'] as $message ) {
148                        $log->add( strip_tags( $message ) ) ;
149                }
150        }
151
152        // use mLog->addWarning() or mLog->addError() if necessary
153}
154endif;
155
156if( ! function_exists( 'get_db_version' ) ) :
157function get_db_version($mydirname){
158                global $xoopsModule;
159                $wp_prefix = $mydirname;
160                if ($wp_prefix == 'wordpress'){
161                        $wp_prefix = 'wp';
162                }
163                $xoopsDB =& Database::getInstance();
164                $db_xpress_option = $xoopsDB->prefix($wp_prefix . '_options');
165
166                $sql = "SELECT option_value FROM $db_xpress_option WHERE option_name = 'db_version'";
167                $res = $xoopsDB->query($sql, 0, 0);
168                if ($res === false){
169                        return false;
170                } else {
171                        $row = $xoopsDB->fetchArray($res);
172                        return $row['option_value'];
173                }
174}
175endif;
176
177if( ! function_exists( 'clean_template' ) ) :
178function clean_template($mydirname,$xpress_ver){
179                global $xoopsModule;
180               
181                $var = floatval($xpress_ver);
182                switch ($var){
183                        case ($var >= 0.62):
184                                $temp_file = "'". $mydirname . "_home.html','" . $mydirname. "_index.html','" . $mydirname . "_search.html','" . $mydirname . "_single.html'";
185                                break;
186                        case ($var >= 0.60):
187                                $temp_file = "'xpress_header.html','xpress_home.html','xpress_index.html','xpress_search.html','xpress_sidebar.html'";
188                                break;
189                        default:
190                                $temp_file = 'all';
191                }
192               
193                if ($temp_file != 'all'){                       
194                        $xoopsDB =& Database::getInstance();
195                        $db_tplfile = $xoopsDB->prefix('tplfile');
196                        $db_tplsource = $xoopsDB->prefix('tplsource');
197
198                        $sql = "SELECT * FROM $db_tplfile WHERE tpl_module = '$mydirname' AND NOT tpl_file IN($temp_file)";
199                        $res = $xoopsDB->query($sql, 0, 0);
200                        if ($res === false){
201                                return false;
202                        } else {
203                                $del_array = '';
204                                $i=0;
205                                while($row = $xoopsDB->fetchArray($res)){
206                                        if (!empty($del_array))
207                                        $del_array .= ',';
208                                        $del_array .= $row['tpl_id'];
209                                }
210                                if(!empty($del_array)){
211                                        $del_tplfile  = "DELETE FROM $db_tplfile WHERE tpl_id IN ($del_array)";
212                                        $result = $xoopsDB->query($del_tplfile, 0, 0);
213                                        $del_tplsource  = "DELETE FROM $del_tplsource WHERE tpl_id IN ($del_array)";
214                                        $result = $xoopsDB->query($del_tplfile, 0, 0);
215                                }
216                        }
217                }
218}
219endif;
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
246?>
Note: See TracBrowser for help on using the repository browser.