XPressME Integration Kit

Trac

source: trunk/include/pluggable-override.php @ 36

Last change on this file since 36 was 23, checked in by toemon, 16 years ago

XOOPSユーザ情報を使ったWordPressへのログイン処理追加
ユーザ情報の同期処理は未着手なので、新規ユーザ追加はまだ出来ません

File size: 5.9 KB
Line 
1<?php
2/**
3 * XPress - WordPress for XOOPS
4 *
5 * Adding multi-author features to XPressME
6 *
7 * @copyright   The XPressME project
8 * @license             http://www.fsf.org/copyleft/gpl.html GNU public license
9 * @author              toemon
10 * @since               2.05
11 * @version             $Id$
12 * @package             module::xpress
13 */
14
15// ***********************************  Start Pluggable Function Edit (wp-include/pluggable.php) ************************************
16
17if ( !function_exists('get_currentuserinfo') ) :
18function get_currentuserinfo() {
19        global $current_user;
20
21        if (is_root_index_page_call()){
22                if ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST )
23                        return false;
24
25                if ( ! empty($current_user) )
26                        return;
27
28                if (check_xpress_auth_cookie()){
29                        if ( $user = wp_validate_auth_cookie() ) {
30                                wp_set_current_user($user);
31                                return ;
32                        }
33                }                               
34                xpress_login();         
35        }else {
36                // WP2.7 original
37                if ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST )
38                        return false;
39
40                if ( ! empty($current_user) )
41                        return;
42
43                if ( ! $user = wp_validate_auth_cookie() ) {
44                         if ( empty($_COOKIE[LOGGED_IN_COOKIE]) || !$user = wp_validate_auth_cookie($_COOKIE[LOGGED_IN_COOKIE], 'logged_in') ) {
45                                wp_set_current_user(0);
46                                return false;
47                         }
48                }
49
50                wp_set_current_user($user);
51        }
52}
53endif;
54
55function xpress_login(){
56        global $current_user;
57       
58                        if(is_object($GLOBALS["xoopsUser"])){
59                                $u_name = $GLOBALS["xoopsUser"]->getVar("uname");
60                                $u_pass_md5 = $GLOBALS["xoopsUser"]->getVar("pass");           
61                                if ( ! empty($u_name) && ! empty($u_pass_md5) ) {               
62//                                      include_once dirname( __FILE__ ).'/xpress_user.php';
63//                                      $mess = xpress_user_sync($GLOBALS["xoopsUser"]->getVar("uid"));
64//                                      if ($mess != 'NOT XPRESS USER'){
65                                                $user = new WP_User(0, $u_name);
66                                                if ( wp_login($u_name, $u_pass_md5, true) ) {
67                                                        wp_setcookie($u_name, $u_pass_md5, true, '', '', false);
68                                                        do_action('wp_login', $u_name);
69                                                        wp_set_current_user($user->ID);
70                                                        return  true;
71                                                }
72//                                      }
73                                }
74                        }
75                wp_set_current_user(0);
76                return 0;       
77}
78
79function check_xpress_auth_cookie() {           // for wp2.5
80        if ( empty($_COOKIE[AUTH_COOKIE]) ){
81                return false;
82        }
83        $cookie = $_COOKIE[AUTH_COOKIE];
84
85        $cookie_elements = explode('|', $cookie);
86        if ( count($cookie_elements) != 3 ){
87                        return false;
88        }
89                                       
90        if(is_object($GLOBALS["xoopsModule"]) && WP_BLOG_DIRNAME == $GLOBALS["xoopsModule"]->getVar("dirname")){
91                if(is_object($GLOBALS["xoopsUser"])){
92                        $u_name = $GLOBALS["xoopsUser"]->getVar("uname");
93                        list($username, $expiration, $hmac) = $cookie_elements;
94                        if ($u_name == $username) {
95                                return true;
96                        }
97                }
98        } else {
99                $mydirname = basename( dirname( dirname( __FILE__ ) ) ) ;
100                $org_url = $_SERVER['REQUEST_URI'];
101                $needle = '/modules/' . $mydirname . '/wp-admin/';
102                if (strstr($org_url , $needle)){
103                        return true;                           
104                }
105        }
106        return false;
107}
108
109
110/*
111
112function wp_login($username, $password, $already_md5 = false) {
113        global $wpdb, $error;
114
115        $username = sanitize_user($username);
116
117        if ( '' == $username )
118                return false;
119
120        if ( '' == $password ) {
121                $error = __('<strong>ERROR</strong>: The password field is empty.');
122                return false;
123        }
124
125        $login = get_userdatabylogin($username);
126        //$login = $wpdb->get_row("SELECT ID, user_login, user_pass FROM $wpdb->users WHERE user_login = '$username'");
127
128        if (!$login) {
129                $error = __('<strong>ERROR</strong>: Invalid username.');
130                return false;
131        } else {
132                if ($login->user_login == $username) {
133                                if ($login->user_pass == $password) return true;
134                                if ($login->user_pass == md5($password)) return true;
135                }
136
137                $error = __('<strong>ERROR</strong>: Incorrect password.');
138                $pwd = '';
139                return false;
140        }
141}
142*/
143
144// for wordpress2.5
145function wp_check_password($password, $hash, $user_id = '') {
146        global $wp_hasher;
147
148        // If the hash is still md5...
149        if ( strlen($hash) <= 32 ) {
150                if (( $hash == md5($password)) || ($hash == $password)) {
151                        $check = true;
152                } else {
153                        $check = false;
154                }
155
156                if ( $check && $user_id ) {
157                        // Rehash using new hash.
158                        wp_set_password($password, $user_id);
159                        $hash = wp_hash_password($password);
160                }
161
162                return apply_filters('check_password', $check, $password, $hash, $user_id);
163        }
164
165        // If the stored hash is longer than an MD5, presume the
166        // new style phpass portable hash.
167        if ( empty($wp_hasher) ) {
168                require_once( ABSPATH . 'wp-includes/class-phpass.php');
169                // By default, use the portable hash from phpass
170                $wp_hasher = new PasswordHash(8, TRUE);
171        }
172
173        $check = $wp_hasher->CheckPassword($password, $hash);
174
175        return apply_filters('check_password', $check, $password, $hash, $user_id);
176}
177
178
179/*
180
181function wp_mail($to, $subject, $message, $from_email="", $from_name="") {
182    $xoopsMailer =& getMailer();
183    $xoopsMailer->useMail();
184    $xoopsMailer->setToEmails($to);
185    $xoopsMailer->setFromEmail( empty($from_email) ? $GLOBALS["xoopsConfig"]['adminmail'] : $from_email);
186    $xoopsMailer->setFromName( empty($from_name) ? $GLOBALS["xoopsConfig"]['sitename'] : $from_name );
187    $xoopsMailer->setSubject($subject);
188    $xoopsMailer->setBody($message);
189    return $xoopsMailer->send();
190}
191
192*/
193/*
194function auth_redirect($force = false, $message = "") {
195        if(!is_object($GLOBALS["xoopsUser"])){
196                header('Expires: Wed, 11 Jan 1984 05:00:00 GMT');
197                header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
198                header('Cache-Control: no-cache, must-revalidate, max-age=0');
199                header('Pragma: no-cache');
200       
201                header('Location: ' . get_settings('siteurl') . '/wp-login.php?redirect_to=' . urlencode($_SERVER['REQUEST_URI']));
202                exit();
203        }elseif(!empty($force)){
204                $redirect = xoops_getenv("HTTP_REFERER");
205                $redirect = (strpos($redirect, XOOPS_URL) === 0)? $redirect: XOOPS_URL."/".$redirect;
206                redirect_header($redirect, 2, $message);
207        }
208}
209*/
210// ***********************************  End Of Pluggable Function Edit (wp-include/pluggable.php) ************************************
211
212?>
Note: See TracBrowser for help on using the repository browser.