XPressME Integration Kit

Trac


Ignore:
Timestamp:
Mar 10, 2010, 4:47:23 PM (15 years ago)
Author:
toemon
Message:

グループ権限のMultiBlog対応 Fixes #298

Location:
trunk/xpressme_integration_kit/wp-content/plugins/xpressme
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/xpressme_integration_kit/wp-content/plugins/xpressme/include/custom_functions.php

    r531 r534  
    4444        global $xoops_config; 
    4545         
    46         if (defined('MULTISITE')) return MULTISITE; 
     46        if (function_exists('is_multisite') && is_multisite()) return true; 
    4747        return false; 
    4848} 
     
    5050function xpress_is_multiblog_root() { 
    5151        global $blog_id; 
    52         if (defined('MULTISITE') && MULTISITE && $blog_id == 1){ 
     52        if ( xpress_is_multiblog() && $blog_id == 1){ 
    5353                return true; 
    5454        } else { 
  • trunk/xpressme_integration_kit/wp-content/plugins/xpressme/include/user_sync_xoops.php

    r417 r534  
    2626*/ 
    2727function get_xoops_group_role($uid=0){ 
    28         $ans = array(); 
    2928        if ($uid == 0){ 
    3029                return ''; 
     
    3231         
    3332        global $xoops_db; 
     33         
    3434        $db_groups_users_link = get_xoops_prefix() . 'groups_users_link'; 
    3535        $db_group_role = get_wp_prefix() . 'group_role'; 
    3636        $db_groups = get_xoops_prefix() . 'groups'; 
    37          
    38         $sql  = "SELECT * "; 
    39         $sql .= "FROM $db_groups_users_link "; 
    40         $sql .= "LEFT JOIN $db_group_role ON $db_groups_users_link.groupid = $db_group_role.groupid "; 
    41         $sql .= "LEFT JOIN $db_groups ON $db_groups_users_link.groupid = $db_groups.groupid "; 
    42         $sql .= "WHERE  uid = $uid"; 
    43         $user_groups = $xoops_db->get_results($sql); 
    44         $ans['capabillities'] = ''; 
    45         $ans['allway_update'] = 0; 
    46          
    47         foreach($user_groups as $user_group){ 
    48                 if ($user_group->group_type == 'Admin'){ 
    49                         $ans['capabillities'] = 'administrator'; 
    50                         if ($user_group->groupid =1){ 
    51                                 //It always rewrites it as WordPress adninistrator for an initial admin group of XOOPS.  
    52                                 $ans['allway_update'] = 1; 
    53                         } else { 
    54                                 // admin groups other than initial admin group of XOOPS  
    55                                 // It group rewrites group_type of the data base in Admin. 
    56                                 $ans['allway_update'] = $user_group->login_all;  
    57                         } 
    58                         break; 
    59                 } 
    60                 $before_level = get_role_level($ans['capabillities']); 
     37 
     38        $blog_id_list = array(); 
     39         
     40        if (function_exists('is_multisite') && is_multisite()){ 
     41                $blog_id_sql = "SELECT blog_id FROM $db_group_role GROUP BY blog_id"; 
     42                $blog_id_list = $xoops_db->get_results($blog_id_sql); 
     43        } else { 
     44                $std = new stdClass(); 
     45                $std->blog_id = 1; 
     46                $blog_id_list[] = $std; 
     47        } 
     48         
     49        $ans_array = array(); 
     50        foreach($blog_id_list as $blog_id){ 
     51                $ans = array(); 
     52                $sql  = "SELECT * "; 
     53                $sql .= "FROM $db_groups_users_link "; 
     54                $sql .= "LEFT JOIN $db_group_role ON $db_groups_users_link.groupid = $db_group_role.groupid "; 
     55                $sql .= "LEFT JOIN $db_groups ON $db_groups_users_link.groupid = $db_groups.groupid "; 
     56                $sql .= "WHERE  uid = $uid AND $db_group_role.blog_id = $blog_id->blog_id"; 
     57                $user_groups = $xoops_db->get_results($sql); 
    6158                 
    62                 $now_level = get_role_level($user_group->role); 
    63                 if ($now_level > $before_level){ 
    64                         $ans['capabillities'] = $user_group->role; 
    65                         $ans['allway_update'] = $user_group->login_all; 
    66                 } 
    67         } 
    68         return $ans; 
    69 } 
    70          
     59                //default value set 
     60                $ans['blog_id'] = $blog_id->blog_id; 
     61                $ans['capabillities'] = ''; 
     62                $ans['allway_update'] = 0; 
     63                 
     64                //get maximum role 
     65                foreach($user_groups as $user_group){ 
     66                        if ($user_group->group_type == 'Admin'){ 
     67                                $ans['capabillities'] = 'administrator'; 
     68                                if ($user_group->groupid =1){ 
     69                                        //It always rewrites it as WordPress adninistrator for an initial admin group of XOOPS.  
     70                                        $ans['allway_update'] = 1; 
     71                                } else { 
     72                                        // admin groups other than initial admin group of XOOPS  
     73                                        // It group rewrites group_type of the data base in Admin. 
     74                                        $ans['allway_update'] = $user_group->login_all;  
     75                                } 
     76                                break; 
     77                        } 
     78                        $before_level = get_role_level($ans['capabillities']); 
     79                         
     80                        $now_level = get_role_level($user_group->role); 
     81                        if ($now_level > $before_level){ 
     82                                $ans['capabillities'] = $user_group->role; 
     83                                $ans['allway_update'] = $user_group->login_all; 
     84                        } 
     85                } 
     86                $ans_array[] = $ans; 
     87        } 
     88        return $ans_array; 
     89} 
     90 
     91// for Multi Blog group_role delete 
     92function blog_group_role_delete($blog_id,$drop = false) { 
     93        global $xoops_db; 
     94         
     95        $db_group_role = get_wp_prefix() . 'group_role'; 
     96        if ($drop){ 
     97                $delsql = "DELETE FROM $db_group_role WHERE blog_id = $blog_id"; 
     98                $xoops_db->query($delsql); 
     99        } 
     100} 
     101 
     102// for Multi Blog group_role add 
     103function blog_group_role_add($blog_id,$uid = 0) { 
     104        global $xoops_db,$xpress_config; 
     105        $xpress_config->GroupeRoleCheck($blog_id); 
     106} 
     107 
     108// check user has groupe role 
     109function has_group_role($uid = 0) { 
     110        if (empty($uid)) return false; 
     111        $user_roles = get_xoops_group_role($uid); 
     112        foreach ($user_roles as $user_role){ 
     113                if (!empty($user_role['capabillities'])) 
     114                        return true; 
     115        } 
     116        return false; 
     117} 
     118 
     119/* 
     120 * WP User ID exists is checked..  
     121*/ 
     122function set_user_role($uid=0,$new_user = false){ 
     123        $roles = get_xoops_group_role($uid); 
     124         
     125        foreach($roles as $role){ 
     126                $b_id = $role['blog_id']; 
     127                $capabillities_name = $role['capabillities']; 
     128                $allway_update = $role['allway_update']; 
     129                if ($allway_update || $new_user ){ 
     130                        $sycc_user = new WP_User($uid); 
     131                        if (function_exists('is_multisite') && is_multisite()){ 
     132                                $sycc_user->for_blog($b_id);    // for Multi blog 
     133                        } 
     134                        // check user role is admin 
     135                        $is_blog_admin = false; 
     136                        $user_roles = $sycc_user->roles; 
     137                        foreach ($user_roles as $user_role){ 
     138                                if (strcmp($user_role , 'administrator') == 0){ 
     139                                        $is_blog_admin = true; 
     140                                        break; 
     141                                } 
     142                        } 
     143                        if (!$is_blog_admin){   // admin not change role 
     144                                $sycc_user->set_role($capabillities_name); 
     145                        } 
     146                } 
     147//              $message .= '...UPDATE ' . $xoops_user->uname . '(' . $capabillities_name . ')'; 
     148//              $message .= '...INSERT ' . $user_login_name . '(' . $capabillities_name . ')'; 
     149        } 
     150 
     151} 
     152 
    71153/* 
    72154 * Get User ID of WordPress from the login name.  
     
    118200 
    119201        foreach($xoops_users as $xoops_user){ 
    120                 $role = get_xoops_group_role($xoops_user->uid); 
    121                 $capabillities_name = $role['capabillities']; 
    122                 $allway_update = $role['allway_update']; 
    123202                 
    124203                $wp_user_id = get_wp_user_id($xoops_user->uname) ; 
    125                  
    126                 if (empty($capabillities_name)){ 
     204 
     205 
     206                $has_role = has_group_role($xoops_user->uid); 
     207                if (!$has_role){ 
    127208                        if ($sync_uid != 0){ 
    128209                                if ($wp_user_id) { 
     
    148229                 
    149230                if ($wp_user_id){ 
     231                        $add_user =  true; 
    150232                        $wu_sql  =      "UPDATE $db_xpress_users "; 
    151233                        $wu_sql .=      'SET '; 
     
    159241 
    160242                        $xoops_db->query($wu_sql); 
    161                         if ($allway_update){ 
    162                                 $sycc_user = new WP_User($wp_user_id); 
    163                                 $sycc_user->set_role($capabillities_name); 
    164                                 $message .= '...UPDATE ' . $xoops_user->uname . '(' . $capabillities_name . ')'; 
    165  
    166                         } else { 
    167                                 $message .= '...UPDATE ' . $xoops_user->uname . '(Level Not Change)'; 
    168                         } 
     243                         
     244                        $message .= set_user_role($wp_user_id,$add_user); 
     245 
    169246                        if (!check_user_meta_prefix($wp_user_id)){ 
    170247                                repair_user_meta_prefix(); 
     
    173250                        $is_update = true; 
    174251                }else{ 
     252                        $add_user =  false; 
    175253                        if (is_used_wp_user_id($xoops_user->uid) ) { // WP User ID has already been used.  
    176254                                $wu_sql  =      "INSERT INTO $db_xpress_users "; 
     
    192270                                $wp_user_id = $xoops_user->uid; 
    193271                        } 
    194                         $sycc_user = new WP_User($wp_user_id); 
    195                         $sycc_user->set_role($capabillities_name);                                               
    196                         $message .= '...INSERT ' . $user_login_name . '(' . $capabillities_name . ')'; 
     272                        $message .= set_user_role($wp_user_id,$add_user); 
    197273                } 
    198274                 
  • trunk/xpressme_integration_kit/wp-content/plugins/xpressme/xpressme.php

    r532 r534  
    9696add_action('profile_update', 'user_sync_to_xoops'); 
    9797add_action('user_register', 'user_sync_to_xoops'); 
     98add_action('delete_blog', 'blog_group_role_delete',10,2);       //at multi blog delete 
     99add_action('wpmu_new_blog', 'blog_group_role_add',10,2);        //at multi blog delete 
     100 
    98101//require_once('../include/custom_functions.php'); 
    99102 
     
    141144add_action('wpmu_new_blog','my_new_blog_template',0,1); 
    142145 
    143  
    144146function redirect_xoops_admin() 
    145147{ 
     
    193195function integration_option_page() 
    194196{ 
    195         global $xoops_config,$xpress_config; 
     197        global $xoops_config,$xpress_config,$blog_id; 
    196198         
    197199                $xoops_admin_url = $xoops_config->module_url . '/admin/index.php'; 
     
    214216                }                
    215217                 
    216                 $xpress_config->GroupeRoleCheck(); 
     218                $xpress_config->GroupeRoleCheck($blog_id); 
    217219                echo    '<div class="wrap">'."\n"; 
    218220                echo            '<div id="icon-options-general" class="icon32"><br /></div>'."\n"; 
     
    229231                                                                                                xpress_is_multiblog() 
    230232                                                                                                ); 
    231                 $lock = ($xoops_config->module_url != get_bloginfo('url')); 
     233//              $lock = ($xoops_config->module_url != get_bloginfo('url')); 
     234                $lock = false; 
    232235                echo                            $xpress_config->groupe_role_option($lock);       
    233236                echo                            $xpress_config->d3forum_option($do_message);             
  • trunk/xpressme_integration_kit/wp-content/plugins/xpressme/xpressme_class.php

    r531 r534  
    156156         
    157157        function GroupeRoleRead() { 
     158                global $xoops_db, $blog_id; 
     159                 
     160                if (empty($blog_id)) $blog_id = 1; 
     161                $table = get_wp_prefix() . 'group_role'; 
     162                 
     163                $sql=  "SELECT * FROM $table WHERE blog_id = $blog_id ORDER BY groupid"; 
     164                $this->groupe_role =  $xoops_db->get_results($sql); 
     165        } 
     166 
     167        function GroupeRoleCheck($blog_id = 1) { 
    158168                global $xoops_db; 
    159169                 
    160                 $table = get_wp_prefix() . 'group_role'; 
    161                  
    162                 $sql=  "SELECT * FROM $table"; 
    163                 $this->groupe_role =  $xoops_db->get_results($sql); 
    164         } 
    165  
    166         function GroupeRoleCheck() { 
    167                 global $xoops_db; 
     170                if (empty($blog_id)) $blog_id = 1; 
    168171                 
    169172                $module_id = get_xpress_modid(); 
     
    173176                $xoops_group_permission_table = get_xoops_prefix() . 'group_permission'; 
    174177                 
    175  
    176                  
    177178                $sql =  "SELECT *  FROM $xoops_group_permission_table WHERE gperm_itemid = $module_id"; 
    178179                $gperms = $xoops_db->get_results($sql); 
    179180                 
    180                 $sql =  "SELECT * FROM $xoops_group_table WHERE group_type <> 'Anonymous'"; 
     181                $sql =  "SELECT * FROM $xoops_group_table WHERE group_type <> 'Anonymous' ORDER BY groupid"; 
    181182                $groupes = $xoops_db->get_results($sql); 
    182183 
     
    194195                } 
    195196                 
    196                 $sql =  "SELECT *  FROM $group_role_table"; 
     197                $sql =  "SELECT *  FROM $group_role_table WHERE blog_id = $blog_id"; 
    197198                $groupes_role = $xoops_db->get_results($sql); 
    198199                 
     
    214215                                        if ($group_type == 'module_admin') $role = 'administrator'; 
    215216                                        if ($group_type == 'module_inhibit') $role = ''; 
    216                                         $edit_sql = "UPDATE $group_role_table SET group_type='$group_type',role='$role' WHERE groupid = $groupe->groupid"; 
     217                                        $edit_sql = "UPDATE $group_role_table SET group_type='$group_type',role='$role' WHERE groupid = $groupe->groupid AND blog_id = $blog_id"; 
    217218                                        $found = true; 
    218219                                        break; 
     
    224225 
    225226                                $edit_sql  = "INSERT INTO  $group_role_table "; 
    226                                 $edit_sql .= "(groupid , name , description , group_type , role , login_all) "; 
     227                                $edit_sql .= "(groupid , blog_id , name , description , group_type , role , login_all) "; 
    227228                                $edit_sql .= "VALUES ("; 
    228229                                $edit_sql .= $groupe->groupid . ', '; 
     230                                $edit_sql .= $blog_id . ', '; 
    229231                                $edit_sql .= "'" . $groupe->name . "' , "; 
    230232                                $edit_sql .= "'" . $groupe->description . "' , "; 
    231                                 $edit_sql .= "'" . $parmission . "' , "; 
     233                                $edit_sql .= "'" . $group_type . "' , "; 
    232234                                $edit_sql .= "'" . $role . "' , '"; 
    233235                                $edit_sql .= $login_all . "')"; 
     
    252254        function ReadPostData($post_data = null) 
    253255        { 
    254                 global $xoops_db; 
    255                  
     256                global $xoops_db, $blog_id; 
     257                 
     258                if (empty($blog_id)) $blog_id = 1; 
    256259                foreach ( (array) $post_data as $index_key => $value ){ 
    257260                        if (preg_match('/^ch_/',$index_key)){  // case ch_ 
     
    322325                                $update_sql .= "role  = '$role' , "; 
    323326                                $update_sql .= "login_all  = $login_all "; 
    324                                 $update_sql .= "WHERE (groupid = '$groupe->groupid' )"; 
     327                                $update_sql .= "WHERE (groupid = '$groupe->groupid' AND blog_id = $blog_id)"; 
    325328                                $xoops_db->query($update_sql);   
    326329                        }                
Note: See TracChangeset for help on using the changeset viewer.