XPressME Integration Kit

Trac

source: branches/Ver2.4/xpressme_integration_kit/include/oninstall.php @ 814

Last change on this file since 814 was 814, checked in by toemon, 12 years ago

_notify_reserveと_group_roleテーブルが作成されないバグを修正 Fixes#415

File size: 13.4 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 = preg_replace('/wordpress/','wp',$mydirname);
89        $views_table = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_views' ;
90
91        $charset_collate = '';
92        if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
93                if ( ! empty($wpdb->charset) )
94                        $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
95                if ( ! empty($wpdb->collate) )
96                        $charset_collate .= " COLLATE $wpdb->collate";
97        }
98        $views_queries ="CREATE TABLE $views_table (
99                blog_id bigint(20) unsigned NOT NULL default '0',
100                post_id bigint(20) unsigned NOT NULL default '0',
101                post_views bigint(20) unsigned NOT NULL default '0',
102                KEY post_id (post_id)
103                )$charset_collate;";
104        dbDelta($views_queries);
105        $ret[] = "$views_table table of XPressME was made.<br />";
106       
107        $d3forum_link = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_d3forum_link' ;
108        $views_queries ="CREATE TABLE $d3forum_link (
109                comment_ID bigint(20) unsigned NOT NULL default '0',
110                post_id int(10) unsigned NOT NULL default '0' ,
111                wp_post_ID bigint(20) unsigned NOT NULL default '0',
112                forum_id bigint(20) unsigned NOT NULL default '0',
113                blog_id bigint(20) unsigned NOT NULL default '0',
114                KEY post_id (post_id)
115                )$charset_collate;";
116        dbDelta($views_queries);
117        $ret[] = "$d3forum_link table of XPressME was made.<br />";
118       
119        $group_role = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_group_role' ;
120        $views_queries ="CREATE TABLE $group_role (
121                groupid smallint(5) unsigned NOT NULL default '0',
122                blog_id bigint(20) unsigned NOT NULL default '0',
123                name varchar(50)  NOT NULL default '' ,
124                description text ,
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 ,
138                item_id bigint(20) unsigned NOT NULL default '0',
139                event varchar(20) NOT NULL default '',
140                extra_tags_arry longtext NOT NULL ,
141                user_list_arry longtext NOT NULL ,
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        add_filter('sanitize_user', "sanitize_user_multibyte" ,10,3);
164       
165        if (!function_exists('username_exists')){
166                require_once($mydirpath . '/wp-includes/registration-functions.php');
167        }
168        $user_id = username_exists($user_name);
169        if ( !$user_id ) {
170                $random_password = 'admin';
171                $user_id = wp_create_user($user_name, $random_password, $email);
172        } else {
173                $random_password = __('User already exists.  Password inherited.');
174        }
175
176        $user = new WP_User($user_id);
177        $user->set_role('administrator');
178        'User ' . $user_name . ' of the administrator was made.';
179        // over write xoops md5 password
180        $sql = "UPDATE $wpdb->users SET user_pass ='$pass_md5' WHERE ID = $user_id";
181        $wpdb->query($sql);
182        $ret[] = 'The password of XOOPS was copied.<br />';
183       
184       
185// Set Default data
186        // make WordPress Default data 
187        if (function_exists('wp_install_defaults')){
188                wp_install_defaults($user_id);
189        } else {
190                wp_install_old_defaults($user_id);
191        }
192       
193        $ret[] = 'The first sample post & comment was written.<br />';
194       
195        // Rewrite Option for Xpress
196        $xoops_config_tbl = XOOPS_DB_PREFIX . '_config' ;
197        $sql = "SELECT conf_value FROM  $xoops_config_tbl WHERE `conf_name` = 'default_TZ'";
198        $xoops_default_TZ = $wpdb->get_var($sql);
199        update_option('gmt_offset', $xoops_default_TZ);
200
201        if (WPLANG == 'ja_EUC') {
202                $setup_charset = 'EUC-JP';
203        } elseif(WPLANG == 'ja_SJIS') {
204                $setup_charset = 'Shift_JIS';
205        } else {
206                $setup_charset = 'UTF-8';
207        }
208        update_option("blog_charset", $setup_charset);
209
210        update_option('blogname', $site_name );
211        update_option('blogdescription', 'WordPress for XOOPS');
212        update_option("admin_email", $GLOBALS["xoopsConfig"]['adminmail']);
213        update_option("ping_sites", "http://rpc.pingomatic.com/\nhttp://ping.xoopsforge.com/");
214        update_option("home", $site_url);
215        update_option("siteurl", $site_url);
216        update_option("what_to_show", "posts");
217        update_option('default_pingback_flag', 0);
218        $ret[] = 'The initial data was written in the data base of wordpress.<br />';
219       
220        update_option("template", "xpress_default");
221        update_option("stylesheet", "xpress_default");
222        $ret[] = 'The default theme of wordpress was set to xpress_default.<br />';
223//      update_option('uploads_use_yearmonth_folders', 1);
224        update_option('upload_path', 'wp-content/uploads');
225                       
226// activate the xpressme plugin
227        require_once dirname( __FILE__ ).'/xpress_active_plugin.php';
228        if (xpress_pulugin_activation('xpressme/xpressme.php')){
229                $ret[] = 'The xpressme plug-in was activated.<br />';
230        } else {
231                $GLOBALS["err_log"][] =  '<span style="color:#ff0000;">failed in the activation of xpressme plug-in.</span><br />';
232                return false;
233        }
234
235        $ret = array_merge($ret,$t_mess);
236
237        return true ;
238}
239endif;
240
241if( ! function_exists( 'xpress_message_append_oninstall' ) ) :
242function xpress_message_append_oninstall( &$module_obj , &$log )
243{
244        if( is_array( @$GLOBALS['ret'] ) ) {
245                foreach( $GLOBALS['ret'] as $message ) {
246                        $log->add( strip_tags( $message ) ) ;
247                }
248        }
249
250        // use mLog->addWarning() or mLog->addError() if necessary
251}
252endif;
253
254if( ! function_exists( 'xpress_message_append_oninstall_err' ) ) :
255function xpress_message_append_oninstall_err( &$module_obj , &$log )
256{
257        if( is_array( @$GLOBALS["err_log"] ) ) {
258                foreach( $GLOBALS["err_log"] as $message ) {
259                        $log->add( strip_tags($message)) ;
260                }
261        }
262
263        // use mLog->addWarning() or mLog->addError() if necessary
264}
265endif;
266
267
268if( ! function_exists( 'wp_install_old_defaults' ) ) :
269function wp_install_old_defaults($user_id) {
270        global $wpdb;
271
272        // Now drop in some default links
273        $wpdb->query("INSERT INTO $wpdb->linkcategories (cat_id, cat_name) VALUES (1, '".$wpdb->escape(__('Blogroll'))."')");
274        $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/', '');");
275        $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/', '');");
276        $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/', '');");
277        $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/', '');");
278        $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/', '');");
279        $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', '');");
280        $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/', '');");
281
282        // Default category
283        $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', '')");
284
285        // First post
286        $now = date('Y-m-d H:i:s');
287        $now_gmt = gmdate('Y-m-d H:i:s');
288        $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', '', '', '')");
289
290        $wpdb->query( "INSERT INTO $wpdb->post2cat (`rel_id`, `post_id`, `category_id`) VALUES (1, 1, 1)" );
291
292        // Default comment
293        $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.'))."')");
294
295        // First Page
296
297        $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', '', '', '')");
298}
299endif;
300if( ! function_exists( 'sanitize_user_multibyte' ) ) :
301function sanitize_user_multibyte($username, $raw_username, $strict){
302        if ($raw_username !== "" && $username !== $raw_username){
303                return $raw_username;
304        }
305        return $username;
306}
307endif;
308?>
Note: See TracBrowser for help on using the repository browser.