PluginProbe
wpForo Forum / 1.0.0
wpForo Forum v1.0.0
3.1.6 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 All 138 releases
wpforo / wpf-includes / class-usergroups.php

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

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