PluginProbe
wpForo Forum / 1.2.0
wpForo Forum v1.2.0
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.2.0, at wpf-includes/class-usergroups.php

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