PluginProbe
wpForo Forum / 1.3.1
wpForo Forum v1.3.1
3.1.5 3.1.4 3.1.2 3.1.1 3.1.0 3.0.9 3.0.8 3.0.7 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.10 1.4.11 1.4.12 1.4.13 1.4.2 All 137 releases
wpforo / wpf-includes / class-usergroups.php

class-usergroups.php in wpForo Forum 1.3.1, at wpf-includes/class-usergroups.php

189 lines 6.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 // Exit if accessed directly
3 if( !defined( 'ABSPATH' ) ) exit;
4
5 class wpForoUsergroup{
6
7 private $wpforo;
8 static $cache = array( 'usergroup' => array(), 'user' => array() );
9
10 function __construct( $wpForo ){
11 if(!isset($this->wpforo)) $this->wpforo = $wpForo;
12 if( isset( $this->wpforo->general_options['lang'] ) && $this->wpforo->general_options['lang'] ){
13 $usergroups = $this->get_usergroups();
14 if(!empty($usergroups)){
15 foreach( $usergroups as $usergroup ){
16 $this->wpforo->usergroup[$usergroup['groupid']] = $usergroup['name'];
17 }
18 }
19 }
20 }
21
22 function usergroup_list_data(){
23 $ugroups = $this->wpforo->db->get_results('SELECT `groupid`, `name` FROM '.$this->wpforo->db->prefix.'wpforo_usergroups ORDER BY `name` ', ARRAY_A);
24 foreach($ugroups as $ugroup){
25 $user_count = $this->wpforo->db->get_var('SELECT COUNT(userid) FROM '.$this->wpforo->db->prefix.'wpforo_profiles WHERE `groupid` = ' . intval($ugroup['groupid']));
26 $ugdata[$ugroup['groupid']]['groupid'] = $ugroup['groupid'];
27 $ugdata[$ugroup['groupid']]['name'] = wpforo_phrase($ugroup['name'], FALSE);
28 $ugdata[$ugroup['groupid']]['count'] = intval($user_count);
29 }
30 return $ugdata;
31 }
32
33 function add($title, $cans = array(), $description = '' ){
34 $i = 2;
35 while( $this->wpforo->db->get_var(
36 $this->wpforo->db->prepare(
37 "SELECT name FROM ".$this->wpforo->db->prefix."wpforo_usergroups
38 WHERE name = %s", sanitize_text_field($title) )))
39 {
40 $title = $title . '-' . $i;
41 $i++;
42 }
43 $default = array_map('intval', $this->wpforo->usergroup_cans);
44 $cans = wpforo_parse_args( $cans, $default );
45
46 if( $this->wpforo->db->insert(
47 $this->wpforo->db->prefix . 'wpforo_usergroups',
48 array(
49 'name' => sanitize_text_field($title),
50 'cans' => serialize( $cans ),
51 'description' => $description
52 ),
53 array(
54 '%s',
55 '%s',
56 '%s'
57 )
58 )
59 ){
60 $ugid = $this->wpforo->db->insert_id;
61 $forums = $this->wpforo->forum->get_forums();
62 if(!empty($forums) && $ugid){
63 $new_permission = array();
64 foreach($forums as $forum){
65 if(isset($forum['permissions'])){
66 $permissions = unserialize($forum['permissions']);
67 if(!empty($permissions)){
68 $permissions[$ugid] = 'standard';
69 $permissions = serialize($permissions);
70 $this->wpforo->db->update( $this->wpforo->db->prefix . 'wpforo_forums', array('permissions' => $permissions), array('forumid' => $forum['forumid']), array('%s'), array('%d') );
71 }
72 }
73 }
74 }
75 $this->wpforo->notice->add('User group successfully added', 'success');
76 return $this->wpforo->db->insert_id;
77 }
78
79 $this->wpforo->notice->add('User group add error', 'error');
80 return FALSE;
81 }
82
83 function edit( $groupid, $title, $cans, $description = '' ){
84
85 if( $groupid == 1 ) return false;
86 if( !current_user_can('administrator') ){
87 $this->wpforo->notice->add('Permission denied', 'error');
88 return FALSE;
89 }
90
91 $default = array_map('intval', $this->wpforo->usergroup_cans);
92 $cans = wpforo_parse_args( $cans, $default );
93
94 if( FALSE !== $this->wpforo->db->update(
95 $this->wpforo->db->prefix . 'wpforo_usergroups',
96 array(
97 'name' => sanitize_text_field($title),
98 'cans' => serialize( $cans ),
99 'description' => $description
100 ),
101 array( 'groupid' => intval($groupid) ),
102 array(
103 '%s',
104 '%s',
105 '%s'
106 ),
107 array( '%d' ))
108 ){
109 $this->wpforo->notice->add('User group successfully edited', 'success');
110 return $groupid;
111 }
112
113 $this->wpforo->notice->add('User group edit error', 'error');
114 return FALSE;
115 }
116
117 function delete(){
118
119 if( !current_user_can('administrator') ){
120 $this->wpforo->notice->add('Permission denied', 'error');
121 return FALSE;
122 }
123
124 if( isset($_GET['action']) && $_GET['action'] == 'del' && isset($_GET['gid']) && $_GET['gid'] != 1 && $_GET['gid'] != 4 ){
125 $status = FALSE;
126 extract($_POST['usergroup'], EXTR_OVERWRITE);
127 $mergeid = intval($mergeid);
128 $insert_gid = $_GET['gid'];
129 #################################################### USERS
130 if(isset($mergeid)){
131 $status = $this->wpforo->db->query("UPDATE `".$this->wpforo->db->prefix ."wpforo_profiles` SET `groupid` = " . intval($mergeid) . " WHERE `groupid` = " . intval($insert_gid) );
132 $notice = wpforo_phrase('Usergroup has been successfully deleted. All users of this usergroup have been moved to the usergroup you\'ve chosen', false);
133 }else{
134 $status = $this->wpforo->db->query("UPDATE `".$this->wpforo->db->prefix ."wpforo_profiles` SET `status` = 'trashed' WHERE `groupid` = " . intval($insert_gid) );
135 $notice = wpforo_phrase('Usergroup has been successfully deleted.');
136 }
137 #################################################### END USERS
138 if( $status !== FALSE ){
139 if( $this->wpforo->db->query("DELETE FROM `".$this->wpforo->db->prefix ."wpforo_usergroups` WHERE `groupid` = " . intval($insert_gid) ) ){
140 $this->wpforo->notice->add($notice, 'success');
141 return TRUE;
142 }
143 }
144 }
145 $this->wpforo->notice->add('Can\'t delete this Usergroup', 'error');
146 return FALSE;
147 }
148
149 function get_usergroup( $groupid = 4 ){
150 // Guest UsergroupID = 4
151 $cache = $this->wpforo->cache->on('memory_cashe');
152 if( $cache && isset(self::$cache['usergroup'][$groupid]) ){
153 return self::$cache['usergroup'][$groupid];
154 }
155 $usergroup = $this->wpforo->db->get_row("SELECT * FROM `".$this->wpforo->db->prefix."wpforo_usergroups` WHERE `groupid` = ".intval($groupid), ARRAY_A);
156 if($cache && isset($groupid)){
157 self::$cache['usergroup'][$groupid] = $usergroup;
158 }
159 return $usergroup;
160 }
161
162 function get_usergroups(){
163 return $this->wpforo->db->get_results("SELECT * FROM `".$this->wpforo->db->prefix."wpforo_usergroups`", ARRAY_A);
164 }
165
166 function get_groupid_by_userid( $userid ){
167 $cache = $this->wpforo->cache->on('memory_cashe');
168 if( $cache && isset(self::$cache['user'][$userid]) ){
169 return self::$cache['user'][$userid];
170 }
171 $groupid = $this->wpforo->db->get_var("SELECT `groupid` FROM `".$this->wpforo->db->prefix ."wpforo_profiles` WHERE `userid` = " . intval($userid));
172 if($cache && isset($groupid)){
173 self::$cache['user'][$userid] = $groupid;
174 }
175 return $groupid;
176 }
177
178 function show_selectbox( $groupid = 0, $exclude = array() ){
179 if( !$groupid = intval($groupid) ) $groupid = (isset($_POST['usergroup']['groupid'])) ? intval($_POST['usergroup']['groupid']) : 0;
180 if( !$groupid ) $groupid = $this->wpforo->default_groupid;
181 if( empty($exclude) && isset($_GET['gid']) && intval($_GET['gid']) ) $exclude[] = intval($_GET['gid']);
182 $ugroups = $this->usergroup_list_data();
183 foreach($ugroups as $ugroup){
184 if( in_array($ugroup['groupid'], $exclude) ) continue;
185 echo '<option value="'.esc_attr($ugroup['groupid']).'" '.($groupid == $ugroup['groupid'] ? 'selected' : '').'>' . esc_html( __($ugroup['name'], 'wpforo') ) . '</option>';
186 }
187 }
188 }
189 ?>