XPressME Integration Kit

Trac

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

Last change on this file since 583 was 583, checked in by toemon, 14 years ago

xoops_mod_wordpress060_alphaの複製モジュールからのアップデート対応 fixes#335

File size: 12.8 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                KEY post_id (post_id)
113                )$charset_collate;";
114        dbDelta($views_queries);
115        $ret[] = "$d3forum_link table of XPressME was made.<br />";
116       
117        $group_role = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_group_role' ;
118        $views_queries ="CREATE TABLE $group_role (
119                groupid smallint(5) unsigned NOT NULL default '0',
120                blog_id bigint(20) unsigned NOT NULL default '0',
121                name varchar(50)  NOT NULL default '' ,
122                description text  NOT NULL default '',
123                group_type varchar(50)  NOT NULL default '' ,
124                role varchar(20)  NOT NULL default '' ,
125                login_all smallint(5) unsigned NOT NULL default '0' ,
126                KEY groupid (groupid)
127                )$charset_collate;";
128        dbDelta($views_queries);
129        $ret[] = "$group_role table of XPressME was made.<br />";
130       
131        $notify_reserve = XOOPS_DB_PREFIX . '_' . $xp_prefix .'_notify_reserve' ;
132        $queries ="CREATE TABLE $notify_reserve (
133                notify_reserve_id bigint(20) NOT NULL AUTO_INCREMENT ,
134                notify_reserve_status varchar(20)  NOT NULL default '' ,
135                category text  NOT NULL default '',
136                item_id bigint(20) unsigned NOT NULL default '0',
137                event varchar(20) NOT NULL default '',
138                extra_tags_arry longtext NOT NULL default '' ,
139                user_list_arry longtext NOT NULL default '' ,
140                module_id smallint(5) unsigned NOT NULL default '0' ,
141                omit_user_id varchar(20) NOT NULL default '' ,
142                KEY notify_reserve_id (notify_reserve_id)
143                )TYPE=MyISAM";
144        dbDelta($queries);
145        $ret[] = "$notify_reserve table of XPressME was made.<br />";
146
147        $sql = "INSERT INTO $group_role (groupid, role) VALUES (1, 'administrator')";
148        $wpdb->query($sql);
149       
150// make templates
151        include_once XOOPS_ROOT_PATH . '/modules/' . $mydirname . '/include/xpress_templates_make.php' ;
152        $t_mess = xpress_templates_make($mid,$mydirname);
153       
154// Admin User Data write
155        // Change uid field
156        $wpdb->query("ALTER TABLE $wpdb->posts CHANGE `post_author` `post_author` mediumint(8) NOT NULL DEFAULT '0'");
157        $user_name = is_object($GLOBALS["xoopsUser"])?$GLOBALS["xoopsUser"]->getVar("uname"):'admin';
158        $email = is_object($GLOBALS["xoopsUser"])?$GLOBALS["xoopsUser"]->getVar("email"):'foo@exsample.com';
159        $pass_md5 = is_object($GLOBALS["xoopsUser"])?$GLOBALS["xoopsUser"]->getVar("pass"):'';
160       
161        if (!function_exists('username_exists')){
162                require_once($mydirpath . '/wp-includes/registration-functions.php');
163        }
164        $user_id = username_exists($user_name);
165        if ( !$user_id ) {
166                $random_password = 'admin';
167                $user_id = wp_create_user($user_name, $random_password, $email);
168        } else {
169                $random_password = __('User already exists.  Password inherited.');
170        }
171
172        $user = new WP_User($user_id);
173        $user->set_role('administrator');
174        'User ' . $user_name . ' of the administrator was made.';
175        // over write xoops md5 password
176        $sql = "UPDATE $wpdb->users SET user_pass ='$pass_md5' WHERE ID = $user_id";
177        $wpdb->query($sql);
178        $ret[] = 'The password of XOOPS was copied.<br />';
179       
180       
181// Set Default data
182        // make WordPress Default data 
183        if (function_exists('wp_install_defaults')){
184                wp_install_defaults($user_id);
185        } else {
186                wp_install_old_defaults($user_id);
187        }
188       
189        $ret[] = 'The first sample post & comment was written.<br />';
190       
191        // Rewrite Option for Xpress
192        if (WPLANG == 'ja_EUC') {
193                $setup_charset = 'EUC-JP';
194        } elseif(WPLANG == 'ja_SJIS') {
195                $setup_charset = 'Shift_JIS';
196        } else {
197                $setup_charset = 'UTF-8';
198        }
199        update_option("blog_charset", $setup_charset);
200
201        update_option('blogname', $site_name );
202        update_option('blogdescription', 'WordPress for XOOPS');
203        update_option("admin_email", $GLOBALS["xoopsConfig"]['adminmail']);
204        update_option("ping_sites", "http://rpc.pingomatic.com/\nhttp://ping.xoopsforge.com/");
205        update_option("home", $site_url);
206        update_option("siteurl", $site_url);
207        update_option("what_to_show", "posts");
208        update_option('default_pingback_flag', 0);
209        $ret[] = 'The initial data was written in the data base of wordpress.<br />';
210       
211        update_option("template", "xpress_default");
212        update_option("stylesheet", "xpress_default");
213        $ret[] = 'The default theme of wordpress was set to xpress_default.<br />';
214//      update_option('uploads_use_yearmonth_folders', 1);
215        update_option('upload_path', 'wp-content/uploads');
216                       
217// activate the xpressme plugin
218        require_once dirname( __FILE__ ).'/xpress_active_plugin.php';
219        if (xpress_pulugin_activation('xpressme/xpressme.php')){
220                $ret[] = 'The xpressme plug-in was activated.<br />';
221        } else {
222                $GLOBALS["err_log"][] =  '<span style="color:#ff0000;">failed in the activation of xpressme plug-in.</span><br />';
223                return false;
224        }
225
226        $ret = array_merge($ret,$t_mess);
227
228        return true ;
229}
230endif;
231
232if( ! function_exists( 'xpress_message_append_oninstall' ) ) :
233function xpress_message_append_oninstall( &$module_obj , &$log )
234{
235        if( is_array( @$GLOBALS['ret'] ) ) {
236                foreach( $GLOBALS['ret'] as $message ) {
237                        $log->add( strip_tags( $message ) ) ;
238                }
239        }
240
241        // use mLog->addWarning() or mLog->addError() if necessary
242}
243endif;
244
245if( ! function_exists( 'xpress_message_append_oninstall_err' ) ) :
246function xpress_message_append_oninstall_err( &$module_obj , &$log )
247{
248        if( is_array( @$GLOBALS["err_log"] ) ) {
249                foreach( $GLOBALS["err_log"] as $message ) {
250                        $log->add( strip_tags($message)) ;
251                }
252        }
253
254        // use mLog->addWarning() or mLog->addError() if necessary
255}
256endif;
257
258
259if( ! function_exists( 'wp_install_old_defaults' ) ) :
260function wp_install_old_defaults($user_id) {
261        global $wpdb;
262
263        // Now drop in some default links
264        $wpdb->query("INSERT INTO $wpdb->linkcategories (cat_id, cat_name) VALUES (1, '".$wpdb->escape(__('Blogroll'))."')");
265        $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/', '');");
266        $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/', '');");
267        $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/', '');");
268        $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/', '');");
269        $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/', '');");
270        $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', '');");
271        $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/', '');");
272
273        // Default category
274        $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', '')");
275
276        // First post
277        $now = date('Y-m-d H:i:s');
278        $now_gmt = gmdate('Y-m-d H:i:s');
279        $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', '', '', '')");
280
281        $wpdb->query( "INSERT INTO $wpdb->post2cat (`rel_id`, `post_id`, `category_id`) VALUES (1, 1, 1)" );
282
283        // Default comment
284        $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.'))."')");
285
286        // First Page
287
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, 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', '', '', '')");
289}
290endif;
291?>
Note: See TracBrowser for help on using the repository browser.