thorsten /
phpMyFAQ
This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
| 1 | <?php |
||
| 2 | /** |
||
| 3 | * Displays the group management frontend. |
||
| 4 | * |
||
| 5 | * |
||
| 6 | * |
||
| 7 | * This Source Code Form is subject to the terms of the Mozilla Public License, |
||
| 8 | * v. 2.0. If a copy of the MPL was not distributed with this file, You can |
||
| 9 | * obtain one at http://mozilla.org/MPL/2.0/. |
||
| 10 | * |
||
| 11 | * @package phpMyFAQ |
||
| 12 | * @author Lars Tiedemann <[email protected]> |
||
| 13 | * @author Thorsten Rinne <[email protected]> |
||
| 14 | * @copyright 2005-2019 phpMyFAQ Team |
||
| 15 | * @license http://www.mozilla.org/MPL/2.0/ Mozilla Public License Version 2.0 |
||
| 16 | * @link https://www.phpmyfaq.de |
||
| 17 | * @since 2005-12-15 |
||
| 18 | */ |
||
| 19 | |||
| 20 | use phpMyFAQ\Filter; |
||
| 21 | use phpMyFAQ\User; |
||
| 22 | use phpMyFAQ\User\CurrentUser; |
||
| 23 | |||
| 24 | View Code Duplication | if (!defined('IS_VALID_PHPMYFAQ')) { |
|
| 25 | $protocol = 'http'; |
||
| 26 | if (isset($_SERVER['HTTPS']) && strtoupper($_SERVER['HTTPS']) === 'ON') { |
||
| 27 | $protocol = 'https'; |
||
| 28 | } |
||
| 29 | header('Location: '.$protocol.'://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['SCRIPT_NAME'])); |
||
| 30 | exit(); |
||
| 31 | } |
||
| 32 | |||
| 33 | if (!$user->perm->checkRight($user->getUserId(), 'editgroup') && |
||
| 34 | !$user->perm->checkRight($user->getUserId(), 'delgroup') && |
||
| 35 | !$user->perm->checkRight($user->getUserId(), 'addgroup')) { |
||
| 36 | exit(); |
||
| 37 | } |
||
| 38 | |||
| 39 | // set some parameters |
||
| 40 | $groupSelectSize = 10; |
||
| 41 | $memberSelectSize = 7; |
||
| 42 | $descriptionRows = 3; |
||
| 43 | $descriptionCols = 15; |
||
| 44 | $defaultGroupAction = 'list'; |
||
| 45 | $groupActionList = [ |
||
| 46 | 'update_members', |
||
| 47 | 'update_rights', |
||
| 48 | 'update_data', |
||
| 49 | 'delete_confirm', |
||
| 50 | 'delete', |
||
| 51 | 'addsave', |
||
| 52 | 'add', |
||
| 53 | 'list' |
||
| 54 | ]; |
||
| 55 | |||
| 56 | // what shall we do? |
||
| 57 | // actions defined by url: group_action= |
||
| 58 | $groupAction = Filter::filterInput(INPUT_GET, 'group_action', FILTER_SANITIZE_STRING, $defaultGroupAction); |
||
| 59 | |||
| 60 | // actions defined by submit button |
||
| 61 | if (isset($_POST['group_action_deleteConfirm'])) { |
||
| 62 | $groupAction = 'delete_confirm'; |
||
| 63 | } |
||
| 64 | if (isset($_POST['cancel'])) { |
||
| 65 | $groupAction = $defaultGroupAction; |
||
| 66 | } |
||
| 67 | |||
| 68 | if (!in_array($groupAction, $groupActionList)) { |
||
| 69 | // @Todo: implement Error message |
||
| 70 | } |
||
| 71 | |||
| 72 | // update group members |
||
| 73 | View Code Duplication | if ($groupAction == 'update_members' && $user->perm->checkRight($user->getUserId(), 'editgroup')) { |
|
| 74 | $message = ''; |
||
| 75 | $groupAction = $defaultGroupAction; |
||
| 76 | $groupId = Filter::filterInput(INPUT_POST, 'group_id', FILTER_VALIDATE_INT, 0); |
||
| 77 | $groupMembers = isset($_POST['group_members']) ? $_POST['group_members'] : []; |
||
| 78 | |||
| 79 | if ($groupId == 0) { |
||
| 80 | $message .= sprintf('<p class="alert alert-danger">%s</p>', $PMF_LANG['ad_user_error_noId']); |
||
| 81 | } else { |
||
| 82 | $user = new User($faqConfig); |
||
| 83 | $perm = $user->perm; |
||
| 84 | if (!$perm->removeAllUsersFromGroup($groupId)) { |
||
|
0 ignored issues
–
show
|
|||
| 85 | $message .= sprintf('<p class="alert alert-danger">%s</p>', $PMF_LANG['ad_msg_mysqlerr']); |
||
| 86 | } |
||
| 87 | foreach ($groupMembers as $memberId) { |
||
| 88 | $perm->addToGroup((int)$memberId, $groupId); |
||
|
0 ignored issues
–
show
The method
addToGroup does only exist in phpMyFAQ\Permission\MediumPermission, but not in phpMyFAQ\Permission\BasicPermission.
It seems like the method you are trying to call exists only in some of the possible types. Let’s take a look at an example: class A
{
public function foo() { }
}
class B extends A
{
public function bar() { }
}
/**
* @param A|B $x
*/
function someFunction($x)
{
$x->foo(); // This call is fine as the method exists in A and B.
$x->bar(); // This method only exists in B and might cause an error.
}
Available Fixes
Loading history...
|
|||
| 89 | } |
||
| 90 | $message .= sprintf('<p class="alert alert-success">%s <strong>%s</strong> %s</p>', |
||
| 91 | $PMF_LANG['ad_msg_savedsuc_1'], |
||
| 92 | $perm->getGroupName($groupId), |
||
|
0 ignored issues
–
show
The method
getGroupName does only exist in phpMyFAQ\Permission\MediumPermission, but not in phpMyFAQ\Permission\BasicPermission.
It seems like the method you are trying to call exists only in some of the possible types. Let’s take a look at an example: class A
{
public function foo() { }
}
class B extends A
{
public function bar() { }
}
/**
* @param A|B $x
*/
function someFunction($x)
{
$x->foo(); // This call is fine as the method exists in A and B.
$x->bar(); // This method only exists in B and might cause an error.
}
Available Fixes
Loading history...
|
|||
| 93 | $PMF_LANG['ad_msg_savedsuc_2']); |
||
| 94 | } |
||
| 95 | } |
||
| 96 | |||
| 97 | // update group rights |
||
| 98 | View Code Duplication | if ($groupAction == 'update_rights' && $user->perm->checkRight($user->getUserId(), 'editgroup')) { |
|
| 99 | $message = ''; |
||
| 100 | $groupAction = $defaultGroupAction; |
||
| 101 | $groupId = Filter::filterInput(INPUT_POST, 'group_id', FILTER_VALIDATE_INT, 0); |
||
| 102 | if ($groupId == 0) { |
||
| 103 | $message .= sprintf('<p class="alert alert-danger">%s</p>', $PMF_LANG['ad_user_error_noId']); |
||
| 104 | } else { |
||
| 105 | $user = new User($faqConfig); |
||
| 106 | $perm = $user->perm; |
||
| 107 | $groupRights = isset($_POST['group_rights']) ? $_POST['group_rights'] : []; |
||
| 108 | if (!$perm->refuseAllGroupRights($groupId)) { |
||
|
0 ignored issues
–
show
The method
refuseAllGroupRights does only exist in phpMyFAQ\Permission\MediumPermission, but not in phpMyFAQ\Permission\BasicPermission.
It seems like the method you are trying to call exists only in some of the possible types. Let’s take a look at an example: class A
{
public function foo() { }
}
class B extends A
{
public function bar() { }
}
/**
* @param A|B $x
*/
function someFunction($x)
{
$x->foo(); // This call is fine as the method exists in A and B.
$x->bar(); // This method only exists in B and might cause an error.
}
Available Fixes
Loading history...
|
|||
| 109 | $message .= sprintf('<p class="alert alert-danger">%s</p>', $PMF_LANG['ad_msg_mysqlerr']); |
||
| 110 | } |
||
| 111 | foreach ($groupRights as $rightId) { |
||
| 112 | $perm->grantGroupRight($groupId, (int)$rightId); |
||
|
0 ignored issues
–
show
The method
grantGroupRight does only exist in phpMyFAQ\Permission\MediumPermission, but not in phpMyFAQ\Permission\BasicPermission.
It seems like the method you are trying to call exists only in some of the possible types. Let’s take a look at an example: class A
{
public function foo() { }
}
class B extends A
{
public function bar() { }
}
/**
* @param A|B $x
*/
function someFunction($x)
{
$x->foo(); // This call is fine as the method exists in A and B.
$x->bar(); // This method only exists in B and might cause an error.
}
Available Fixes
Loading history...
|
|||
| 113 | } |
||
| 114 | $message .= sprintf('<p class="alert alert-success">%s <strong>%s</strong> %s</p>', |
||
| 115 | $PMF_LANG['ad_msg_savedsuc_1'], |
||
| 116 | $perm->getGroupName($groupId), |
||
| 117 | $PMF_LANG['ad_msg_savedsuc_2']); |
||
| 118 | } |
||
| 119 | } |
||
| 120 | |||
| 121 | // update group data |
||
| 122 | View Code Duplication | if ($groupAction == 'update_data' && $user->perm->checkRight($user->getUserId(), 'editgroup')) { |
|
| 123 | $message = ''; |
||
| 124 | $groupAction = $defaultGroupAction; |
||
| 125 | $groupId = Filter::filterInput(INPUT_POST, 'group_id', FILTER_VALIDATE_INT, 0); |
||
| 126 | if ($groupId == 0) { |
||
| 127 | $message .= sprintf('<p class="alert alert-danger">%s</p>', $PMF_LANG['ad_user_error_noId']); |
||
| 128 | } else { |
||
| 129 | $groupData = []; |
||
| 130 | $dataFields = array('name', 'description', 'auto_join'); |
||
| 131 | foreach ($dataFields as $field) { |
||
| 132 | $groupData[$field] = Filter::filterInput(INPUT_POST, $field, FILTER_SANITIZE_STRING, ''); |
||
| 133 | } |
||
| 134 | $user = new User($faqConfig); |
||
| 135 | $perm = $user->perm; |
||
| 136 | if (!$perm->changeGroup($groupId, $groupData)) { |
||
|
0 ignored issues
–
show
The method
changeGroup does only exist in phpMyFAQ\Permission\MediumPermission, but not in phpMyFAQ\Permission\BasicPermission.
It seems like the method you are trying to call exists only in some of the possible types. Let’s take a look at an example: class A
{
public function foo() { }
}
class B extends A
{
public function bar() { }
}
/**
* @param A|B $x
*/
function someFunction($x)
{
$x->foo(); // This call is fine as the method exists in A and B.
$x->bar(); // This method only exists in B and might cause an error.
}
Available Fixes
Loading history...
|
|||
| 137 | $message .= sprintf( |
||
| 138 | '<p class="alert alert-danger">%s<br>%s</p>', |
||
| 139 | $PMF_LANG['ad_msg_mysqlerr'], |
||
| 140 | $db->error() |
||
| 141 | ); |
||
| 142 | } else { |
||
| 143 | $message .= sprintf('<p class="alert alert-success">%s <strong>%s</strong> %s</p>', |
||
| 144 | $PMF_LANG['ad_msg_savedsuc_1'], |
||
| 145 | $perm->getGroupName($groupId), |
||
| 146 | $PMF_LANG['ad_msg_savedsuc_2']); |
||
| 147 | } |
||
| 148 | } |
||
| 149 | } |
||
| 150 | |||
| 151 | // delete group confirmation |
||
| 152 | View Code Duplication | if ($groupAction == 'delete_confirm' && $user->perm->checkRight($user->getUserId(), 'delgroup')) { |
|
| 153 | $message = ''; |
||
| 154 | $user = new CurrentUser($faqConfig); |
||
| 155 | $perm = $user->perm; |
||
| 156 | $groupId = Filter::filterInput(INPUT_POST, 'group_list_select', FILTER_VALIDATE_INT, 0); |
||
| 157 | if ($groupId <= 0) { |
||
| 158 | $message .= sprintf('<p class="alert alert-danger">%s</p>', $PMF_LANG['ad_user_error_noId']); |
||
| 159 | $groupAction = $defaultGroupAction; |
||
| 160 | } else { |
||
| 161 | $groupData = $perm->getGroupData($groupId); |
||
|
0 ignored issues
–
show
The method
getGroupData does only exist in phpMyFAQ\Permission\MediumPermission, but not in phpMyFAQ\Permission\BasicPermission.
It seems like the method you are trying to call exists only in some of the possible types. Let’s take a look at an example: class A
{
public function foo() { }
}
class B extends A
{
public function bar() { }
}
/**
* @param A|B $x
*/
function someFunction($x)
{
$x->foo(); // This call is fine as the method exists in A and B.
$x->bar(); // This method only exists in B and might cause an error.
}
Available Fixes
Loading history...
|
|||
| 162 | ?> |
||
| 163 | <header class="row"> |
||
| 164 | <div class="col-lg-12"> |
||
| 165 | <h2 class="page-header"> |
||
| 166 | <i aria-hidden="true" class="fas fa-users fa-fw"></i> |
||
| 167 | <?= $PMF_LANG['ad_group_deleteGroup'] ?> "<?= $groupData['name'] ?>" |
||
| 168 | </h2> |
||
| 169 | </div> |
||
| 170 | </header> |
||
| 171 | |||
| 172 | <div class="row"> |
||
| 173 | <div class="col-lg-12"> |
||
| 174 | <p><?= $PMF_LANG['ad_group_deleteQuestion'] ?></p> |
||
| 175 | <form action ="?action=group&group_action=delete" method="post"> |
||
| 176 | <input type="hidden" name="group_id" value="<?= $groupId ?>"> |
||
| 177 | <input type="hidden" name="csrf" value="<?= $user->getCsrfTokenFromSession()?>"> |
||
| 178 | <p> |
||
| 179 | <button class="btn btn-inverse" type="submit" name="cancel"> |
||
| 180 | <?= $PMF_LANG['ad_gen_cancel'] ?> |
||
| 181 | </button> |
||
| 182 | <button class="btn btn-primary" type="submit"> |
||
| 183 | <?= $PMF_LANG['ad_gen_save'] ?> |
||
| 184 | </button> |
||
| 185 | </p> |
||
| 186 | </form> |
||
| 187 | </div> |
||
| 188 | </div> |
||
| 189 | <?php |
||
| 190 | |||
| 191 | } |
||
| 192 | } |
||
| 193 | |||
| 194 | View Code Duplication | if ($groupAction == 'delete' && $user->perm->checkRight($user->getUserId(), 'delgroup')) { |
|
| 195 | $message = ''; |
||
| 196 | $user = new User($faqConfig); |
||
| 197 | $groupId = Filter::filterInput(INPUT_POST, 'group_id', FILTER_VALIDATE_INT, 0); |
||
| 198 | $csrfOkay = true; |
||
| 199 | $csrfToken = Filter::filterInput(INPUT_POST, 'csrf', FILTER_SANITIZE_STRING); |
||
| 200 | if (!isset($_SESSION['phpmyfaq_csrf_token']) || $_SESSION['phpmyfaq_csrf_token'] !== $csrfToken) { |
||
| 201 | $csrfOkay = false; |
||
| 202 | } |
||
| 203 | $groupAction = $defaultGroupAction; |
||
| 204 | if ($groupId <= 0) { |
||
| 205 | $message .= sprintf('<p class="alert alert-danger">%s</p>', $PMF_LANG['ad_user_error_noId']); |
||
| 206 | } else { |
||
| 207 | if (!$user->perm->deleteGroup($groupId) && !$csrfOkay) { |
||
|
0 ignored issues
–
show
The method
deleteGroup does only exist in phpMyFAQ\Permission\MediumPermission, but not in phpMyFAQ\Permission\BasicPermission.
It seems like the method you are trying to call exists only in some of the possible types. Let’s take a look at an example: class A
{
public function foo() { }
}
class B extends A
{
public function bar() { }
}
/**
* @param A|B $x
*/
function someFunction($x)
{
$x->foo(); // This call is fine as the method exists in A and B.
$x->bar(); // This method only exists in B and might cause an error.
}
Available Fixes
Loading history...
|
|||
| 208 | $message .= sprintf('<p class="alert alert-danger">%s</p>', $PMF_LANG['ad_group_error_delete']); |
||
| 209 | } else { |
||
| 210 | $message .= sprintf('<p class="alert alert-success">%s</p>', $PMF_LANG['ad_group_deleted']); |
||
| 211 | } |
||
| 212 | $userError = $user->error(); |
||
| 213 | if ($userError != '') { |
||
| 214 | $message .= sprintf('<p class="alert alert-danger">%s</p>', $userError); |
||
| 215 | } |
||
| 216 | } |
||
| 217 | } |
||
| 218 | |||
| 219 | if ($groupAction == 'addsave' && $user->perm->checkRight($user->getUserId(), 'addgroup')) { |
||
| 220 | $user = new User($faqConfig); |
||
| 221 | $message = ''; |
||
| 222 | $messages = []; |
||
| 223 | $groupName = Filter::filterInput(INPUT_POST, 'group_name', FILTER_SANITIZE_STRING, ''); |
||
| 224 | $groupDescription = Filter::filterInput(INPUT_POST, 'group_description', FILTER_SANITIZE_STRING, ''); |
||
| 225 | $groupAutoJoin = Filter::filterInput(INPUT_POST, 'group_auto_join', FILTER_SANITIZE_STRING, ''); |
||
| 226 | $csrfOkay = true; |
||
| 227 | $csrfToken = Filter::filterInput(INPUT_POST, 'csrf', FILTER_SANITIZE_STRING); |
||
| 228 | |||
| 229 | if (!isset($_SESSION['phpmyfaq_csrf_token']) || $_SESSION['phpmyfaq_csrf_token'] !== $csrfToken) { |
||
| 230 | $csrfOkay = false; |
||
| 231 | } |
||
| 232 | // check group name |
||
| 233 | if ($groupName == '') { |
||
| 234 | $messages[] = $PMF_LANG['ad_group_error_noName']; |
||
| 235 | } |
||
| 236 | // ok, let's go |
||
| 237 | if (count($messages) == 0 && $csrfOkay) { |
||
| 238 | // create group |
||
| 239 | $groupData = array( |
||
| 240 | 'name' => $groupName, |
||
| 241 | 'description' => $groupDescription, |
||
| 242 | 'auto_join' => $groupAutoJoin, |
||
| 243 | ); |
||
| 244 | |||
| 245 | if ($user->perm->addGroup($groupData) <= 0) { |
||
|
0 ignored issues
–
show
The method
addGroup does only exist in phpMyFAQ\Permission\MediumPermission, but not in phpMyFAQ\Permission\BasicPermission.
It seems like the method you are trying to call exists only in some of the possible types. Let’s take a look at an example: class A
{
public function foo() { }
}
class B extends A
{
public function bar() { }
}
/**
* @param A|B $x
*/
function someFunction($x)
{
$x->foo(); // This call is fine as the method exists in A and B.
$x->bar(); // This method only exists in B and might cause an error.
}
Available Fixes
Loading history...
|
|||
| 246 | $messages[] = $PMF_LANG['ad_adus_dberr']; |
||
| 247 | } |
||
| 248 | } |
||
| 249 | // no errors, show list |
||
| 250 | View Code Duplication | if (count($messages) == 0) { |
|
| 251 | $groupAction = $defaultGroupAction; |
||
| 252 | $message = sprintf('<p class="alert alert-success">%s</p>', $PMF_LANG['ad_group_suc']); |
||
| 253 | // display error messages and show form again |
||
| 254 | } else { |
||
| 255 | $groupAction = 'add'; |
||
| 256 | $message = '<p class="alert alert-danger">'; |
||
| 257 | foreach ($messages as $err) { |
||
| 258 | $message .= $err.'<br>'; |
||
| 259 | } |
||
| 260 | $message .= '</p>'; |
||
| 261 | } |
||
| 262 | } |
||
| 263 | |||
| 264 | if (!isset($message)) { |
||
| 265 | $message = ''; |
||
| 266 | } |
||
| 267 | |||
| 268 | // show new group form |
||
| 269 | if ($groupAction == 'add' && $user->perm->checkRight($user->getUserId(), 'addgroup')) { |
||
| 270 | $user = new CurrentUser($faqConfig); |
||
| 271 | ?> |
||
| 272 | |||
| 273 | <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom"> |
||
| 274 | <h1 class="h2"> |
||
| 275 | <i aria-hidden="true" class="fas fa-users"></i> |
||
| 276 | <?= $PMF_LANG['ad_group_add'] ?> |
||
| 277 | </h1> |
||
| 278 | </div> |
||
| 279 | |||
| 280 | <div class="row"> |
||
| 281 | <div class="col-lg-12"> |
||
| 282 | <div id="user_message"><?= $message ?></div> |
||
| 283 | <form name="group_create" action="?action=group&group_action=addsave" method="post"> |
||
| 284 | <input type="hidden" name="csrf" value="<?= $user->getCsrfTokenFromSession() ?>"> |
||
| 285 | |||
| 286 | <div class="form-group row"> |
||
| 287 | <label class="col-lg-2 col-form-label" for="group_name"><?= $PMF_LANG['ad_group_name'] ?></label> |
||
| 288 | <div class="col-lg-3"> |
||
| 289 | <input type="text" name="group_name" id="group_name" autofocus class="form-control" |
||
| 290 | value="<?=(isset($groupName) ? $groupName : '') ?>" tabindex="1"> |
||
| 291 | </div> |
||
| 292 | </div> |
||
| 293 | |||
| 294 | <div class="form-group row"> |
||
| 295 | <label class="col-lg-2 col-form-label" for="group_description"><?= $PMF_LANG['ad_group_description'] ?></label> |
||
| 296 | <div class="col-lg-3"> |
||
| 297 | <textarea name="group_description" id="group_description" cols="<?= $descriptionCols ?>" |
||
| 298 | rows="<?= $descriptionRows ?>" tabindex="2" class="form-control" |
||
| 299 | ><?=(isset($groupDescription) ? $groupDescription : '') ?></textarea> |
||
| 300 | </div> |
||
| 301 | </div> |
||
| 302 | |||
| 303 | <div class="form-group row"> |
||
| 304 | <label class="col-lg-2 col-form-label" for="group_auto_join"><?= $PMF_LANG['ad_group_autoJoin'] ?></label> |
||
| 305 | <div class="col-lg-3"> |
||
| 306 | <div class="checkbox"> |
||
| 307 | <label> |
||
| 308 | <input type="checkbox" name="group_auto_join" id="group_auto_join" value="1" tabindex="3" |
||
| 309 | <?=((isset($groupAutoJoin) && $groupAutoJoin) ? ' checked' : '') ?>> |
||
| 310 | </label> |
||
| 311 | </div> |
||
| 312 | </div> |
||
| 313 | </div> |
||
| 314 | |||
| 315 | <div class="form-group row"> |
||
| 316 | <div class="offset-lg-2 col-lg-3"> |
||
| 317 | <button class="btn btn-primary" type="submit"> |
||
| 318 | <?= $PMF_LANG['ad_gen_save'] ?> |
||
| 319 | </button> |
||
| 320 | <button class="btn btn-info" type="reset" name="cancel"> |
||
| 321 | <?= $PMF_LANG['ad_gen_cancel'] ?> |
||
| 322 | </button> |
||
| 323 | </div> |
||
| 324 | </div> |
||
| 325 | </form> |
||
| 326 | </div> |
||
| 327 | </div> |
||
| 328 | <?php |
||
| 329 | |||
| 330 | } // end if ($groupAction == 'add') |
||
| 331 | |||
| 332 | // show list of users |
||
| 333 | if ('list' === $groupAction) { |
||
| 334 | ?> |
||
| 335 | <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom"> |
||
| 336 | <h1 class="h2"> |
||
| 337 | <i aria-hidden="true" class="fas fa-users"></i> |
||
| 338 | <?= $PMF_LANG['ad_menu_group_administration'] ?> |
||
| 339 | </h1> |
||
| 340 | <div class="btn-toolbar mb-2 mb-md-0"> |
||
| 341 | <div class="btn-group mr-2"> |
||
| 342 | <a class="btn btn-sm btn-outline-success" href="?action=group&group_action=add"> |
||
| 343 | <?= $PMF_LANG['ad_group_add_link'] ?> |
||
| 344 | </a> |
||
| 345 | </div> |
||
| 346 | </div> |
||
| 347 | </div> |
||
| 348 | |||
| 349 | <script src="assets/js/user.js"></script> |
||
| 350 | <script src="assets/js/groups.js"></script> |
||
| 351 | |||
| 352 | <div id="user_message"><?= $message ?></div> |
||
| 353 | |||
| 354 | <div class="row"> |
||
| 355 | |||
| 356 | <div class="col-lg-4" id="group_list"> |
||
| 357 | <div class="card"> |
||
| 358 | <form id="group_select" name="group_select" action="?action=group&group_action=delete_confirm" |
||
| 359 | method="post"> |
||
| 360 | <div class="card-header"> |
||
| 361 | <?= $PMF_LANG['ad_groups'] ?> |
||
| 362 | </div> |
||
| 363 | <div class="card-body"> |
||
| 364 | <select name="group_list_select" id="group_list_select" class="form-control" |
||
| 365 | size="<?= $groupSelectSize ?>" tabindex="1"> |
||
| 366 | </select> |
||
| 367 | </div> |
||
| 368 | <div class="card-footer"> |
||
| 369 | <div class="card-button text-right"> |
||
| 370 | <button class="btn btn-danger" type="submit"> |
||
| 371 | <?= $PMF_LANG['ad_gen_delete'] ?> |
||
| 372 | </button> |
||
| 373 | </div> |
||
| 374 | </div> |
||
| 375 | </form> |
||
| 376 | </div> |
||
| 377 | |||
| 378 | <div id="group_data" class="card"> |
||
| 379 | <div class="card-header"> |
||
| 380 | <?= $PMF_LANG['ad_group_details'] ?> |
||
| 381 | </div> |
||
| 382 | <form action="?action=group&group_action=update_data" method="post"> |
||
| 383 | <input id="update_group_id" type="hidden" name="group_id" value="0"> |
||
| 384 | <div class="card-body"> |
||
| 385 | <div class="form-group row"> |
||
| 386 | <label class="col-lg-3 col-form-label" for="update_group_name"> |
||
| 387 | <?= $PMF_LANG['ad_group_name'] ?> |
||
| 388 | </label> |
||
| 389 | <div class="col-lg-9"> |
||
| 390 | <input id="update_group_name" type="text" name="name" class="form-control" |
||
| 391 | tabindex="1" value="<?= (isset($groupName) ? $groupName : '') ?>"> |
||
| 392 | </div> |
||
| 393 | </div> |
||
| 394 | <div class="form-group row"> |
||
| 395 | <label class="col-lg-3 col-form-label" for="update_group_description"> |
||
| 396 | <?= $PMF_LANG['ad_group_description'] ?> |
||
| 397 | </label> |
||
| 398 | <div class="col-lg-9"> |
||
| 399 | <textarea id="update_group_description" name="description" class="form-control" |
||
| 400 | rows="<?= $descriptionRows ?>" |
||
| 401 | tabindex="2"><?php |
||
| 402 | echo(isset($groupDescription) ? $groupDescription : '') ?></textarea> |
||
| 403 | </div> |
||
| 404 | </div> |
||
| 405 | <div class="form-group row"> |
||
| 406 | <div class="col-lg-offset-3 col-lg-9"> |
||
| 407 | <div class="checkbox"> |
||
| 408 | <label> |
||
| 409 | <input id="update_group_auto_join" type="checkbox" name="auto_join" value="1" |
||
| 410 | tabindex="3"<?php |
||
| 411 | echo((isset($groupAutoJoin) && $groupAutoJoin) ? ' checked' : '') ?>> |
||
| 412 | <?= $PMF_LANG['ad_group_autoJoin'] ?> |
||
| 413 | </label> |
||
| 414 | </div> |
||
| 415 | </div> |
||
| 416 | </div> |
||
| 417 | </div> |
||
| 418 | <div class="card-footer"> |
||
| 419 | <div class="card-button text-right"> |
||
| 420 | <button class="btn btn-primary" type="submit"> |
||
| 421 | <?= $PMF_LANG['ad_gen_save'] ?> |
||
| 422 | </button> |
||
| 423 | </div> |
||
| 424 | </div> |
||
| 425 | </form> |
||
| 426 | </div> |
||
| 427 | </div> |
||
| 428 | |||
| 429 | <div class="col-lg-4" id="groupMemberships"> |
||
| 430 | <form id="group_membership" name="group_membership" method="post" |
||
| 431 | action="?action=group&group_action=update_members"> |
||
| 432 | <input id="update_member_group_id" type="hidden" name="group_id" value="0"> |
||
| 433 | <div class="card"> |
||
| 434 | <div class="card-header"> |
||
| 435 | <?= $PMF_LANG['ad_group_membership'] ?> |
||
| 436 | </div> |
||
| 437 | <div class="card-body"> |
||
| 438 | <div class="form-group row"> |
||
| 439 | <div class="text-right"> |
||
| 440 | <span class="select_all"> |
||
| 441 | <a class="btn btn-primary btn-sm" |
||
| 442 | href="javascript:selectSelectAll('group_user_list')"> |
||
| 443 | <i aria-hidden="true" class="fas fa-user-plus"></i> |
||
| 444 | </a> |
||
| 445 | </span> |
||
| 446 | <span class="unselect_all"> |
||
| 447 | <a class="btn btn-primary btn-sm" |
||
| 448 | href="javascript:selectUnselectAll('group_user_list')"> |
||
| 449 | <i aria-hidden="true" class="fas fa-user-minus"></i> |
||
| 450 | </a> |
||
| 451 | </span> |
||
| 452 | </div> |
||
| 453 | </div> |
||
| 454 | |||
| 455 | <div class="form-group row"> |
||
| 456 | <select id="group_user_list" class="form-control" size="<?= $memberSelectSize ?>" |
||
| 457 | multiple> |
||
| 458 | <option value="0">...user list...</option> |
||
| 459 | </select> |
||
| 460 | </div> |
||
| 461 | |||
| 462 | <div class="form-group row"> |
||
| 463 | <div class="text-center"> |
||
| 464 | <input class="btn btn-success pmf-add-member" type="button" |
||
| 465 | value="<?= $PMF_LANG['ad_group_addMember'] ?>"> |
||
| 466 | <input class="btn btn-danger pmf-remove-member" type="button" |
||
| 467 | value="<?= $PMF_LANG['ad_group_removeMember'] ?>"> |
||
| 468 | </div> |
||
| 469 | </div> |
||
| 470 | </div> |
||
| 471 | |||
| 472 | <ul class="list-group list-group-flush"> |
||
| 473 | <li class="list-group-item"><?= $PMF_LANG['ad_group_members']; ?></li> |
||
| 474 | </ul> |
||
| 475 | |||
| 476 | <div class="card-body"> |
||
| 477 | <div class="form-group row"> |
||
| 478 | <div class="float-right"> |
||
| 479 | <span class="select_all"> |
||
| 480 | <a class="btn btn-primary btn-sm" |
||
| 481 | href="javascript:selectSelectAll('group_member_list')"> |
||
| 482 | <i aria-hidden="true" class="fas fa-user-plus"></i> |
||
| 483 | </a> |
||
| 484 | </span> |
||
| 485 | <span class="unselect_all"> |
||
| 486 | <a class="btn btn-primary btn-sm" |
||
| 487 | href="javascript:selectUnselectAll('group_member_list')"> |
||
| 488 | <i aria-hidden="true" class="fas fa-user-minus"></i> |
||
| 489 | </a> |
||
| 490 | </span> |
||
| 491 | </div> |
||
| 492 | </div> |
||
| 493 | |||
| 494 | <div class="form-group row"> |
||
| 495 | <select id="group_member_list" name="group_members[]" class="form-control" multiple |
||
| 496 | size="<?= $memberSelectSize ?>"> |
||
| 497 | <option value="0">...member list...</option> |
||
| 498 | </select> |
||
| 499 | </div> |
||
| 500 | </div> |
||
| 501 | <div class="card-footer"> |
||
| 502 | <div class="card-button text-right"> |
||
| 503 | <button class="btn btn-primary" onclick="javascript:selectSelectAll('group_member_list')" type="submit"> |
||
| 504 | <?= $PMF_LANG['ad_gen_save'] ?> |
||
| 505 | </button> |
||
| 506 | </div> |
||
| 507 | </div> |
||
| 508 | </div> |
||
| 509 | </form> |
||
| 510 | </div> |
||
| 511 | |||
| 512 | <div class="col-lg-4" id="groupDetails"> |
||
| 513 | |||
| 514 | <div id="groupRights" class="card"> |
||
| 515 | <form id="rightsForm" action="?action=group&group_action=update_rights" method="post"> |
||
| 516 | <input id="rights_group_id" type="hidden" name="group_id" value="0"> |
||
| 517 | <div class="card-header" id="user_rights_legend"> |
||
| 518 | <i aria-hidden="true" class="fas fa-lock"></i> <?= $PMF_LANG['ad_group_rights'] ?> |
||
| 519 | <span class="float-right"> |
||
| 520 | <a class="btn btn-primary btn-sm" href="#" id="checkAll"> |
||
| 521 | <?= $PMF_LANG['ad_user_checkall'] ?> / <?= $PMF_LANG['ad_user_uncheckall'] ?> |
||
| 522 | </a> |
||
| 523 | </span> |
||
| 524 | </div> |
||
| 525 | |||
| 526 | <div class="card-body"> |
||
| 527 | View Code Duplication | <?php foreach ($user->perm->getAllRightsData() as $right): ?> |
|
| 528 | <div class="form-check"> |
||
| 529 | <input id="group_right_<?= $right['right_id'] ?>" type="checkbox" |
||
| 530 | name="group_rights[]" value="<?= $right['right_id'] ?>" |
||
| 531 | class="form-check-input permission"> |
||
| 532 | <label class="form-check-label"> |
||
| 533 | <?php |
||
| 534 | if (isset($PMF_LANG['rightsLanguage'][$right['name']])) { |
||
| 535 | echo $PMF_LANG['rightsLanguage'][$right['name']]; |
||
| 536 | } else { |
||
| 537 | echo $right['description']; |
||
| 538 | } |
||
| 539 | ?> |
||
| 540 | </label> |
||
| 541 | </div> |
||
| 542 | <?php endforeach; ?> |
||
| 543 | </div> |
||
| 544 | <div class="card-footer"> |
||
| 545 | <div class="card-button text-right"> |
||
| 546 | <button class="btn btn-primary" type="submit"> |
||
| 547 | <?= $PMF_LANG['ad_gen_save'] ?> |
||
| 548 | </button> |
||
| 549 | </div> |
||
| 550 | </div> |
||
| 551 | </div> |
||
| 552 | </form> |
||
| 553 | </div> |
||
| 554 | </div> |
||
| 555 | </div> |
||
| 556 | <?php |
||
| 557 | |||
| 558 | } |
||
| 559 |
It seems like the method you are trying to call exists only in some of the possible types.
Let’s take a look at an example:
Available Fixes
Add an additional type-check:
Only allow a single type to be passed if the variable comes from a parameter: