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

160 lines 5.8 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_map('intval', $this->wpforo->usergroup_cans);
35 $cans = wpforo_parse_args( $cans, $default );
36
37 if( $this->wpforo->db->insert(
38 $this->wpforo->db->prefix . 'wpforo_usergroups',
39 array(
40 'name' => sanitize_text_field($title),
41 'cans' => serialize( $cans ),
42 'description' => $description
43 ),
44 array(
45 '%s',
46 '%s',
47 '%s'
48 )
49 )
50 ){
51 $ugid = $this->wpforo->db->insert_id;
52 $forums = $this->wpforo->forum->get_forums();
53 if(!empty($forums) && $ugid){
54 $new_permission = array();
55 foreach($forums as $forum){
56 if(isset($forum['permissions'])){
57 $permissions = unserialize($forum['permissions']);
58 if(!empty($permissions)){
59 $permissions[$ugid] = 'standard';
60 $permissions = serialize($permissions);
61 $this->wpforo->db->update( $this->wpforo->db->prefix . 'wpforo_forums', array('permissions' => $permissions), array('forumid' => $forum['forumid']), array('%s'), array('%d') );
62 }
63 }
64 }
65 }
66 $this->wpforo->notice->add('User group successfully added', 'success');
67 return $this->wpforo->db->insert_id;
68 }
69
70 $this->wpforo->notice->add('User group add error', 'error');
71 return FALSE;
72 }
73
74 function edit( $groupid, $title, $cans ){
75
76 if( $groupid == 1 ) return false;
77 if( !current_user_can('administrator') ){
78 $this->wpforo->notice->add('Permission denied', 'error');
79 return FALSE;
80 }
81
82 $default = array_map('intval', $this->wpforo->usergroup_cans);
83 $cans = wpforo_parse_args( $cans, $default );
84
85 if( FALSE !== $this->wpforo->db->update(
86 $this->wpforo->db->prefix . 'wpforo_usergroups',
87 array(
88 'name' => sanitize_text_field($title),
89 'cans' => serialize( $cans ),
90 'description' => $description
91 ),
92 array( 'groupid' => intval($groupid) ),
93 array(
94 '%s',
95 '%s',
96 '%s'
97 ),
98 array( '%d' ))
99 ){
100 $this->wpforo->notice->add('User group successfully edited', 'success');
101 return $groupid;
102 }
103
104 $this->wpforo->notice->add('User group edit error', 'error');
105 return FALSE;
106 }
107
108 function delete(){
109
110 if( !current_user_can('administrator') ){
111 $this->wpforo->notice->add('Permission denied', 'error');
112 return FALSE;
113 }
114
115 if( isset($_GET['action']) && $_GET['action'] == 'del' && isset($_GET['gid']) && $_GET['gid'] != 1 && $_GET['gid'] != 4 ){
116 $status = FALSE;
117 extract($_POST['usergroup'], EXTR_OVERWRITE);
118 $mergeid = intval($mergeid);
119 $insert_gid = $_GET['gid'];
120 #################################################### USERS
121 if(isset($mergeid)){
122 $status = $this->wpforo->db->query("UPDATE `".$this->wpforo->db->prefix ."wpforo_profiles` SET `groupid` = " . intval($mergeid) . " WHERE `groupid` = " . intval($insert_gid) );
123 $notice = wpforo_phrase('Usergroup has been successfully deleted. All users of this usergroup have been moved to the usergroup you\'ve chosen', false);
124 }else{
125 $status = $this->wpforo->db->query("UPDATE `".$this->wpforo->db->prefix ."wpforo_profiles` SET `status` = 'trashed' WHERE `groupid` = " . intval($insert_gid) );
126 $notice = wpforo_phrase('Usergroup has been successfully deleted.');
127 }
128 #################################################### END USERS
129 if( $status !== FALSE ){
130 if( $this->wpforo->db->query("DELETE FROM `".$this->wpforo->db->prefix ."wpforo_usergroups` WHERE `groupid` = " . intval($insert_gid) ) ){
131 $this->wpforo->notice->add($notice, 'success');
132 return TRUE;
133 }
134 }
135 }
136 $this->wpforo->notice->add('Can\'t delete this Usergroup', 'error');
137 return FALSE;
138 }
139
140 function get_usergroup( $groupid = 4 ){
141 // 4 is a guest's id
142 return $this->wpforo->db->get_row("SELECT * FROM `".$this->wpforo->db->prefix."wpforo_usergroups` WHERE `groupid` = ".intval($groupid), ARRAY_A);
143 }
144
145 function get_usergroups(){
146 return $this->wpforo->db->get_results("SELECT * FROM `".$this->wpforo->db->prefix."wpforo_usergroups`", ARRAY_A);
147 }
148
149 function show_selectbox( $groupid = 0, $exclude = array() ){
150 if( !$groupid = intval($groupid) ) $groupid = (isset($_POST['usergroup']['groupid'])) ? intval($_POST['usergroup']['groupid']) : 0;
151 if( !$groupid ) $groupid = $this->wpforo->default_groupid;
152 if( empty($exclude) && isset($_GET['gid']) && intval($_GET['gid']) ) $exclude[] = intval($_GET['gid']);
153 $ugroups = $this->usergroup_list_data();
154 foreach($ugroups as $ugroup){
155 if( in_array($ugroup['groupid'], $exclude) ) continue;
156 echo '<option value="'.esc_attr($ugroup['groupid']).'" '.($groupid == $ugroup['groupid'] ? 'selected' : '').'>' . esc_html( __($ugroup['name'], 'wpforo') ) . '</option>';
157 }
158 }
159 }
160 ?>