XPressME Integration Kit

Trac

source: trunk/xpressme_integration_kit/include/oninstall.php @ 502

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

WP2.9との統合で新規インストール時エラーが発生するバグを修正 Fixes#255

File size: 13.6 KB
Line 
1<?php
2$mydirpath = dirname(dirname(__FILE__));
3$mydirname = basename($mydirpath);
4$lang = @$GLOBALS["xoopsConfig"]['language'];
5global $wp_db_version,$wp_rewrite;
6include_once $mydirpath .'/wp-includes/version.php' ;
7
8// language file (modinfo.php)
9
10if( file_exists( $mydirpath .'/language/'.$lang.'/modinfo.php' ) ) {
11        include_once $mydirpath .'/language/'.$lang.'/modinfo.php' ;
12} else if( file_exists(  $mydirpath .'/language/english/modinfo.php' ) ) {
13        include_once $mydirpath .'/language/english/modinfo.php' ;
14}
15
16
17eval( ' function xoops_module_install_'.$mydirname.'( $module ) { return xpress_oninstall_base( $module , "'.$mydirname.'" ) ; } ' ) ;
18
19
20if( ! function_exists( 'xpress_oninstall_base' ) ) :
21function xpress_oninstall_base( $module , $mydirname )
22{
23        // transations on module install
24
25        global $ret ; // TODO :-D
26
27        // for Cube 2.1
28        if( defined( 'XOOPS_CUBE_LEGACY' ) ) {
29                $root =& XCube_Root::getSingleton();
30                $root->mDelegateManager->add( 'Legacy.Admin.Event.ModuleInstall.' . ucfirst($mydirname) . '.Success' , 'xpress_message_append_oninstall' ) ;
31                $root->mDelegateManager->add( 'Legacy.Admin.Event.ModuleInstall.' . ucfirst($mydirname) . '.Fail' , 'xpress_message_append_oninstall_err' ) ;
32                $ret = array() ;
33        } else {
34                if( ! is_array( $ret ) ) $ret = array() ;
35        }
36
37        $db =& Database::getInstance() ;
38        $mid = $module->getVar('mid') ;
39
40        if( defined( 'XOOPS_CUBE_LEGACY' ) ) {
41                $ret[] = "********************************* Install Log ********************************<br />";
42        } else {
43                $ret[] = '<h4 style="border-bottom: 1px dashed rgb(0, 0, 0); text-align: left; margin-bottom: 0px;">Install Log</h4>';
44    }
45
46//xpress
47        global $wpdb,$wp_rewrite, $wp_queries, $table_prefix, $wp_db_version, $wp_roles, $wp_query,$wp_embed;
48        global $xoops_config;
49               
50        define("WP_INSTALLING", true);
51        define('WP_FIRST_INSTALL', true); // For WPMU2.8
52       
53        $site_url= XOOPS_URL."/modules/".$mydirname;
54        $mydirpath = XOOPS_ROOT_PATH . '/modules/' . $mydirname;
55        $path = $mydirpath . '/';
56        $site_name = ucfirst($mydirname) . ' ' . _MI_XP2_NAME;
57       
58// permission and wordpress files check
59        require_once ($path . 'include/pre_check.php');
60        if(! xp_permission_check($mydirname, $mydirpath)){
61                if( ! defined( 'XOOPS_CUBE_LEGACY' ) ) {
62                        $ret = $GLOBALS["err_log"];
63                        $ret[] = "<br /><span style=\"color:#ff0000;\">The uninstallation of the module is executed now. </span><br />";
64                        $ret[] = xoops_module_uninstall($mydirname);
65                }
66                return false;
67        }
68       
69// install WordPress
70        if (file_exists($path . 'wp-load.php')) {
71                require_once $path . 'wp-load.php';
72        } else {
73                require_once $path . 'wp-config.php';
74        }
75        include_once($mydirpath . '/wp-admin/upgrade-functions.php');
76        wp_cache_flush();
77        make_db_current_silent();
78        $ret[] = "The data base of wordpress was made by prefix $table_prefix.<br />";
79       
80        $option_desc = __('WordPress web address');
81        $wpdb->query("INSERT INTO $wpdb->options (blog_id, option_name,option_value, autoload) VALUES ('0', 'siteurl','$site_url', 'yes')");   
82        $wpdb->query("INSERT INTO $wpdb->options (blog_id, option_name,option_value, autoload) VALUES ('0', 'home','$site_url', 'yes')");
83
84        populate_options();
85        populate_roles();
86       
87// create XPressME table
88        $xp_prefix = $mydirname;
89        if ($xp_prefix == 'wordpress'){
90                $xp_prefix = 'wp';
91        }
92        $views_table = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_views' ;
93
94        $charset_collate = '';
95        if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
96                if ( ! empty($wpdb->charset) )
97                        $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
98                if ( ! empty($wpdb->collate) )
99                        $charset_collate .= " COLLATE $wpdb->collate";
100        }
101        $views_queries ="CREATE TABLE $views_table (
102                blog_id bigint(20) unsigned NOT NULL default '0',
103                post_id bigint(20) unsigned NOT NULL default '0',
104                post_views bigint(20) unsigned NOT NULL default '0',
105                KEY post_id (post_id)
106                )$charset_collate;";
107        dbDelta($views_queries);
108        $ret[] = "$views_table table of XPressME was made.<br />";
109       
110        $d3forum_link = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_d3forum_link' ;
111        $views_queries ="CREATE TABLE $d3forum_link (
112                comment_ID bigint(20) unsigned NOT NULL default '0',
113                post_id int(10) unsigned NOT NULL default '0' ,
114                wp_post_ID bigint(20) unsigned NOT NULL default '0',
115                KEY post_id (post_id)
116                )$charset_collate;";
117        dbDelta($views_queries);
118        $ret[] = "$d3forum_link table of XPressME was made.<br />";
119       
120        $group_role = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_group_role' ;
121        $views_queries ="CREATE TABLE $group_role (
122                groupid smallint(5) unsigned NOT NULL default '0',
123                name varchar(50)  NOT NULL default '' ,
124                description text  NOT NULL default '',
125                group_type varchar(50)  NOT NULL default '' ,
126                role varchar(20)  NOT NULL default '' ,
127                login_all smallint(5) unsigned NOT NULL default '0' ,
128                KEY groupid (groupid)
129                )$charset_collate;";
130        dbDelta($views_queries);
131        $ret[] = "$group_role table of XPressME was made.<br />";
132       
133        $notify_reserve = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_notify_reserve' ;
134        $queries ="CREATE TABLE $notify_reserve (
135                notify_reserve_id bigint(20) NOT NULL AUTO_INCREMENT ,
136                notify_reserve_status varchar(20)  NOT NULL default '' ,
137                category text  NOT NULL default '',
138                item_id bigint(20) unsigned NOT NULL default '0',
139                event varchar(20) NOT NULL default '',
140                extra_tags_arry longtext NOT NULL default '' ,
141                user_list_arry longtext NOT NULL default '' ,
142                module_id smallint(5) unsigned NOT NULL default '0' ,
143                omit_user_id varchar(20) NOT NULL default '' ,
144                KEY notify_reserve_id (notify_reserve_id)
145                )TYPE=MyISAM";
146        dbDelta($queries);
147        $ret[] = "$notify_reserve table of XPressME was made.<br />";
148
149        $sql = "INSERT INTO $group_role (groupid, role) VALUES (1, 'administrator')";
150        $wpdb->query($sql);
151       
152// make templates
153        include_once XOOPS_ROOT_PATH . '/modules/' . $mydirname . '/include/xpress_templates_make.php' ;
154        $t_mess = xpress_templates_make($mid,$mydirname);
155       
156// Admin User Data write
157        // Change uid field
158        $wpdb->query("ALTER TABLE $wpdb->posts CHANGE `post_author` `post_author` mediumint(8) NOT NULL DEFAULT '0'");
159        $user_name = is_object($GLOBALS["xoopsUser"])?$GLOBALS["xoopsUser"]->getVar("uname"):'admin';
160        $email = is_object($GLOBALS["xoopsUser"])?$GLOBALS["xoopsUser"]->getVar("email"):'foo@exsample.com';
161        $pass_md5 = is_object($GLOBALS["xoopsUser"])?$GLOBALS["xoopsUser"]->getVar("pass"):'';
162       
163        if (!function_exists('username_exists')){
164                require_once($mydirpath . '/wp-includes/registration-functions.php');
165        }
166        $user_id = username_exists($user_name);
167        if ( !$user_id ) {
168                $random_password = 'admin';
169                if (!$xoops_config->is_wpmu){
170                        $user_id = wp_create_user($user_name, $random_password, $email);
171                } else {
172                        $user_id = wpmu_create_user($user_name, $random_password, $email);
173                }
174        } else {
175                $random_password = __('User already exists.  Password inherited.');
176        }
177
178        $user = new WP_User($user_id);
179        $user->set_role('administrator');
180        'User ' . $user_name . ' of the administrator was made.';
181        // over write xoops md5 password
182        $sql = "UPDATE $wpdb->users SET user_pass ='$pass_md5' WHERE ID = $user_id";
183        $wpdb->query($sql);
184        $ret[] = 'The password of XOOPS was copied.<br />';
185       
186       
187// Set Default data
188        if (!$xoops_config->is_wpmu){   // for WordPress
189                // make WordPress Default data 
190                if (function_exists('wp_install_defaults')){
191                        wp_install_defaults($user_id);
192                } else {
193                        wp_install_old_defaults($user_id);
194                }
195               
196                $ret[] = 'The first sample post & comment was written.<br />';
197               
198                // Rewrite Option for Xpress
199                        if (WPLANG == 'ja_EUC') {
200                                $setup_charset = 'EUC-JP';
201                        } elseif(WPLANG == 'ja_SJIS') {
202                                $setup_charset = 'Shift_JIS';
203                        } else {
204                                $setup_charset = 'UTF-8';
205                        }
206                        update_option("blog_charset", $setup_charset);
207
208                        update_option('blogname', $site_name );
209                        update_option('blogdescription', 'WordPress for XOOPS');
210                        update_option("admin_email", $GLOBALS["xoopsConfig"]['adminmail']);
211                        update_option("ping_sites", "http://rpc.pingomatic.com/\nhttp://ping.xoopsforge.com/");
212                        update_option("home", $site_url);
213                        update_option("siteurl", $site_url);
214                        update_option("what_to_show", "posts");
215                        update_option('default_pingback_flag', 0);
216                        $ret[] = 'The initial data was written in the data base of wordpress.<br />';
217                       
218                        update_option("template", "xpress_default");
219                        update_option("stylesheet", "xpress_default");
220                        $ret[] = 'The default theme of wordpress was set to xpress_default.<br />';
221                //      update_option('uploads_use_yearmonth_folders', 1);
222                        update_option('upload_path', 'wp-content/uploads');
223                       
224        } else {        // for WordPress MU
225                global $base,$current_site, $dirs, $wpmu_version;
226               
227                $base =  $xoops_config->mu_path_current_site;
228                $domain = $xoops_config->mu_domain_current_site;
229                $admin_email = $GLOBALS["xoopsConfig"]['adminmail'];
230                $admin_user_name = $user_name;
231                $admin_user_id = $user_id;
232                include_once($mydirpath . '/include/xpress_mu_function.php');
233               
234                do_htaccess( $xoops_config->module_path . '/htaccess.dist', $xoops_config->module_path . '/.htaccess', $base, '');
235                xpress_mu_install_defaults($domain,$base,$site_name,$admin_user_id,$admin_user_name,$admin_email);
236        }
237       
238// activate the xpressme plugin
239        require_once dirname( __FILE__ ).'/xpress_active_plugin.php';
240        if (xpress_pulugin_activation('xpressme/xpressme.php')){
241                $ret[] = 'The xpressme plug-in was activated.<br />';
242        } else {
243                $GLOBALS["err_log"][] =  '<span style="color:#ff0000;">failed in the activation of xpressme plug-in.</span><br />';
244                return false;
245        }
246
247        $ret = array_merge($ret,$t_mess);
248
249        return true ;
250}
251endif;
252
253if( ! function_exists( 'xpress_message_append_oninstall' ) ) :
254function xpress_message_append_oninstall( &$module_obj , &$log )
255{
256        if( is_array( @$GLOBALS['ret'] ) ) {
257                foreach( $GLOBALS['ret'] as $message ) {
258                        $log->add( strip_tags( $message ) ) ;
259                }
260        }
261
262        // use mLog->addWarning() or mLog->addError() if necessary
263}
264endif;
265
266if( ! function_exists( 'xpress_message_append_oninstall_err' ) ) :
267function xpress_message_append_oninstall_err( &$module_obj , &$log )
268{
269        if( is_array( @$GLOBALS["err_log"] ) ) {
270                foreach( $GLOBALS["err_log"] as $message ) {
271                        $log->add( strip_tags($message)) ;
272                }
273        }
274
275        // use mLog->addWarning() or mLog->addError() if necessary
276}
277endif;
278
279
280if( ! function_exists( 'wp_install_old_defaults' ) ) :
281function wp_install_old_defaults($user_id) {
282        global $wpdb;
283
284        // Now drop in some default links
285        $wpdb->query("INSERT INTO $wpdb->linkcategories (cat_id, cat_name) VALUES (1, '".$wpdb->escape(__('Blogroll'))."')");
286        $wpdb->query("INSERT INTO $wpdb->links (link_url, link_name, link_category, link_rss, link_notes) VALUES ('http://blogs.linux.ie/xeer/', 'Donncha', 1, 'http://blogs.linux.ie/xeer/feed/', '');");
287        $wpdb->query("INSERT INTO $wpdb->links (link_url, link_name, link_category, link_rss, link_notes) VALUES ('http://zengun.org/weblog/', 'Michel', 1, 'http://zengun.org/weblog/feed/', '');");
288        $wpdb->query("INSERT INTO $wpdb->links (link_url, link_name, link_category, link_rss, link_notes) VALUES ('http://boren.nu/', 'Ryan', 1, 'http://boren.nu/feed/', '');");
289        $wpdb->query("INSERT INTO $wpdb->links (link_url, link_name, link_category, link_rss, link_notes) VALUES ('http://photomatt.net/', 'Matt', 1, 'http://xml.photomatt.net/feed/', '');");
290        $wpdb->query("INSERT INTO $wpdb->links (link_url, link_name, link_category, link_rss, link_notes) VALUES ('http://zed1.com/journalized/', 'Mike', 1, 'http://zed1.com/journalized/feed/', '');");
291        $wpdb->query("INSERT INTO $wpdb->links (link_url, link_name, link_category, link_rss, link_notes) VALUES ('http://www.alexking.org/', 'Alex', 1, 'http://www.alexking.org/blog/wp-rss2.php', '');");
292        $wpdb->query("INSERT INTO $wpdb->links (link_url, link_name, link_category, link_rss, link_notes) VALUES ('http://dougal.gunters.org/', 'Dougal', 1, 'http://dougal.gunters.org/feed/', '');");
293
294        // Default category
295        $wpdb->query("INSERT INTO $wpdb->categories (cat_ID, cat_name, category_nicename, category_count, category_description) VALUES ('0', '".$wpdb->escape(__('Uncategorized'))."', '".sanitize_title(__('Uncategorized'))."', '1', '')");
296
297        // First post
298        $now = date('Y-m-d H:i:s');
299        $now_gmt = gmdate('Y-m-d H:i:s');
300        $wpdb->query("INSERT INTO $wpdb->posts (post_author, post_date, post_date_gmt, post_content, post_excerpt, post_title, post_category, post_name, post_modified, post_modified_gmt, comment_count, to_ping, pinged, post_content_filtered) VALUES ('1', '$now', '$now_gmt', '".$wpdb->escape(__('Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!'))."', '', '".$wpdb->escape(__('Hello world!'))."', '0', '".$wpdb->escape(__('hello-world'))."', '$now', '$now_gmt', '1', '', '', '')");
301
302        $wpdb->query( "INSERT INTO $wpdb->post2cat (`rel_id`, `post_id`, `category_id`) VALUES (1, 1, 1)" );
303
304        // Default comment
305        $wpdb->query("INSERT INTO $wpdb->comments (comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_date, comment_date_gmt, comment_content) VALUES ('1', '".$wpdb->escape(__('Mr WordPress'))."', '', 'http://wordpress.org/', '$now', '$now_gmt', '".$wpdb->escape(__('Hi, this is a comment.<br />To delete a comment, just log in and view the post&#039;s comments. There you will have the option to edit or delete them.'))."')");
306
307        // First Page
308
309        $wpdb->query("INSERT INTO $wpdb->posts (post_author, post_date, post_date_gmt, post_content, post_excerpt, post_title, post_category, post_name, post_modified, post_modified_gmt, post_status, to_ping, pinged, post_content_filtered) VALUES ('1', '$now', '$now_gmt', '".$wpdb->escape(__('This is an example of a WordPress page, you could edit this to put information about yourself or your site so readers know where you are coming from. You can create as many pages like this one or sub-pages as you like and manage all of your content inside of WordPress.'))."', '', '".$wpdb->escape(__('About'))."', '0', '".$wpdb->escape(__('about'))."', '$now', '$now_gmt', 'static', '', '', '')");
310}
311endif;
312?>
Note: See TracBrowser for help on using the repository browser.