/** * deletes the user from the database. * * @return boolean */ public function deleteUser() { if (!isset($this->user_id) || $this->user_id == 0) { $this->errors[] = self::ERROR_USER_NO_USERID; return false; } if (!isset($this->login) || strlen($this->login) == 0) { $this->errors[] = self::ERROR_USER_LOGIN_INVALID; return false; } if (isset($this->allowed_status[$this->status]) && $this->allowed_status[$this->status] == self::STATUS_USER_PROTECTED) { $this->errors[] = self::ERROR_USER_CANNOT_DELETE_USER . self::STATUS_USER_PROTECTED; return false; } $this->perm->refuseAllUserRights($this->user_id); $delete = sprintf("\n DELETE FROM\n %sfaquser\n WHERE\n user_id = %d", SQLPREFIX, $this->user_id); $res = $this->db->query($delete); if (!$res) { $this->errors[] = self::ERROR_USER_CANNOT_DELETE_USER . 'error(): ' . $this->db->error(); return false; } if (!$this->userdata instanceof PMF_User_UserData) { $this->userdata = new PMF_User_UserData($this->db); } $data = $this->userdata->delete($this->getUserId()); if (!$data) { $this->errors[] = self::ERROR_USER_CANNOT_DELETE_USERDATA; return false; } $read_only = 0; $auth_count = 0; $delete = array(); foreach ($this->auth_container as $auth) { $auth_count++; if ($auth->setReadOnly()) { $read_only++; continue; } $delete[] = $auth->delete($this->login); } if ($read_only == $auth_count) { $this->errors[] = self::ERROR_USER_NO_AUTH_WRITABLE; } if (!in_array(true, $delete)) { return false; } return true; }
function printInputFieldByType($key, $type) { global $PMF_LANG; $faqconfig = PMF_Configuration::getInstance(); switch ($type) { case 'area': printf('<textarea name="edit[%s]" cols="60" rows="6" style="width: 500px;">%s</textarea>', $key, str_replace('<', '<', str_replace('>', '>', $faqconfig->get($key)))); printf("<br />\n"); break; case 'input': printf('<input type="text" name="edit[%s]" size="75" value="%s" style="width: 500px;" />', $key, str_replace('"', '"', $faqconfig->get($key))); printf("<br />\n"); break; case 'select': printf('<select name="edit[%s]" size="1" style="width: 500px;">', $key); switch ($key) { case 'main.language': $languages = PMF_Language::getAvailableLanguages(); if (count($languages) > 0) { print PMF_Language::languageOptions(str_replace(array("language_", ".php"), "", $faqconfig->get('main.language')), false, true); } else { print '<option value="language_en.php">English</option>'; } break; case 'records.orderby': print sortingOptions($faqconfig->get($key)); break; case 'records.sortby': printf('<option value="DESC"%s>%s</option>', 'DESC' == $faqconfig->get($key) ? ' selected="selected"' : '', $PMF_LANG['ad_conf_desc']); printf('<option value="ASC"%s>%s</option>', 'ASC' == $faqconfig->get($key) ? ' selected="selected"' : '', $PMF_LANG['ad_conf_asc']); break; case 'main.permLevel': print PMF_Perm::permOptions($faqconfig->get($key)); break; case "main.templateSet": /** * TODO: do get availiable template sets in the PMF_Template */ foreach (new DirectoryIterator('../template') as $item) { if (!$item->isDot() && $item->isDir()) { $selected = PMF_Template::getTplSetName() == $item ? ' selected="selected"' : ''; printf("<option%s>%s</option>", $selected, $item); } } break; case "main.attachmentsStorageType": foreach ($PMF_LANG['att_storage_type'] as $i => $item) { $selected = $faqconfig->get($key) == $i ? ' selected="selected"' : ''; printf('<option value="%d"%s>%s</option>', $i, $selected, $item); } break; } print "</select>\n<br />\n"; break; case 'checkbox': printf('<input type="checkbox" name="edit[%s]" value="true"', $key); if ($faqconfig->get($key)) { print ' checked="checked"'; } print " /><br />\n"; break; case 'print': printf('<input type="hidden" name="edit[%s]" size="80" value="%s" />%s<br />', $key, str_replace('"', '"', $faqconfig->get($key)), $faqconfig->get($key)); break; } }
/** * @param mixed $key * @param string $type * * @return void */ function renderInputForm($key, $type) { global $PMF_LANG, $faqConfig; switch ($type) { case 'area': printf('<textarea name="edit[%s]" rows="4" class="form-control">%s</textarea>', $key, str_replace('<', '<', str_replace('>', '>', $faqConfig->get($key)))); printf("</div>\n"); break; case 'input': if ('' == $faqConfig->get($key) && 'socialnetworks.twitterAccessTokenKey' == $key && isset($_SESSION['access_token'])) { $value = $_SESSION['access_token']['oauth_token']; } elseif ('' == $faqConfig->get($key) && 'socialnetworks.twitterAccessTokenSecret' == $key && isset($_SESSION['access_token'])) { $value = $_SESSION['access_token']['oauth_token_secret']; } else { $value = str_replace('"', '"', $faqConfig->get($key)); } printf('<input class="form-control" type="%s" name="edit[%s]" value="%s" step="1" min="0">', is_numeric($value) ? 'number' : 'text', $key, $value); echo "</div>\n"; break; case 'select': printf('<select name="edit[%s]" size="1" class="form-control">', $key); switch ($key) { case 'main.language': $languages = PMF_Language::getAvailableLanguages(); if (count($languages) > 0) { echo PMF_Language::languageOptions(str_replace(array('language_', '.php'), '', $faqConfig->get('main.language')), false, true); } else { echo '<option value="language_en.php">English</option>'; } break; case 'records.orderby': echo PMF_Configuration::sortingOptions($faqConfig->get($key)); break; case 'records.sortby': printf('<option value="DESC"%s>%s</option>', 'DESC' == $faqConfig->get($key) ? ' selected' : '', $PMF_LANG['ad_conf_desc']); printf('<option value="ASC"%s>%s</option>', 'ASC' == $faqConfig->get($key) ? ' selected' : '', $PMF_LANG['ad_conf_asc']); break; case 'security.permLevel': echo PMF_Perm::permOptions($faqConfig->get($key)); break; case 'main.templateSet': $faqSystem = new PMF_System(); $templates = $faqSystem->getAvailableTemplates(); foreach ($templates as $template => $selected) { printf("<option%s>%s</option>", $selected === true ? ' selected' : '', $template); } break; case "records.attachmentsStorageType": foreach ($PMF_LANG['att_storage_type'] as $i => $item) { $selected = $faqConfig->get($key) == $i ? ' selected' : ''; printf('<option value="%d"%s>%s</option>', $i, $selected, $item); } break; case "records.orderingPopularFaqs": printf('<option value="visits"%s>%s</option>', 'visits' == $faqConfig->get($key) ? ' selected' : '', $PMF_LANG['records.orderingPopularFaqs.visits']); printf('<option value="voting"%s>%s</option>', 'voting' == $faqConfig->get($key) ? ' selected' : '', $PMF_LANG['records.orderingPopularFaqs.voting']); break; case "search.relevance": printf('<option value="thema,content,keywords"%s>%s</option>', 'thema,content,keywords' == $faqConfig->get($key) ? ' selected' : '', $PMF_LANG['search.relevance.thema-content-keywords']); printf('<option value="thema,keywords,content"%s>%s</option>', 'thema,keywords,content' == $faqConfig->get($key) ? ' selected' : '', $PMF_LANG['search.relevance.thema-keywords-content']); printf('<option value="content,thema,keywords"%s>%s</option>', 'content,thema,keywords' == $faqConfig->get($key) ? ' selected' : '', $PMF_LANG['search.relevance.content-thema-keywords']); printf('<option value="content,keywords,thema"%s>%s</option>', 'content,keywords,thema' == $faqConfig->get($key) ? ' selected' : '', $PMF_LANG['search.relevance.content-keywords-thema']); printf('<option value="keywords,content,thema"%s>%s</option>', 'keywords,content,thema' == $faqConfig->get($key) ? ' selected' : '', $PMF_LANG['search.relevance.keywords-content-thema']); printf('<option value="keywords,thema,content"%s>%s</option>', 'keywords,thema,content' == $faqConfig->get($key) ? ' selected' : '', $PMF_LANG['search.relevance.keywords-thema-content']); break; } echo "</select>\n</div>\n"; break; case 'checkbox': printf('<div class="checkbox"><input type="checkbox" name="edit[%s]" value="true"', $key); if ($faqConfig->get($key)) { echo ' checked'; } if ('security.ldapSupport' === $key && !extension_loaded('ldap')) { echo ' disabled'; } if ('security.useSslOnly' === $key && empty($_SERVER['HTTPS'])) { echo ' disabled'; } if ('security.ssoSupport' === $key && empty($_SERVER['REMOTE_USER'])) { echo ' disabled'; } echo ">\n</div></div>\n"; break; case 'print': printf('<input type="text" readonly name="edit[%s]" class="form-control" value="%s"></div>', $key, str_replace('"', '"', $faqConfig->get($key)), $faqConfig->get($key)); break; } }
$userAction = $defaultUserAction; if ($userId == 0) { $message .= '<p class="error">' . $errorMessages['delUser_noId'] . '</p>'; } else { if (!$user->getUserById($userId)) { $message .= '<p class="error">' . $errorMessages['delUser_noId'] . '</p>'; } if (!$user->deleteUser()) { $message .= '<p class="error">' . $errorMessages['delUser'] . '</p>'; } else { // Move the categories ownership to admin (id == 1) $categoryHelper = new PMF_Category_Helper(); $categoryHelper->moveOwnership($userId, 1); // Remove the user from groups if ('medium' == PMF_Configuration::getInstance()->get('main.permLevel')) { $oPerm = PMF_Perm::selectPerm('medium'); $oPerm->removeFromAllGroups($userId); } $message .= '<p class="success">' . $successMessages['delUser'] . '</p>'; } $userError = $user->error(); if ($userError != "") { $message .= '<p>ERROR: ' . $userError . '</p>'; } } } // save new user if ($userAction == 'addsave') { $user = new PMF_User(); $message = ''; $messages = array();
$user->getUserById($userId); $response->setData($user->perm->getUserRights($userId)); break; case 'activate_user': $user->getUserById($userId); $user->setStatus('active'); echo json_encode($user->getStatus()); break; case 'delete_user': $user->getUserById($userId); if ($user->getStatus() == 'protected' || $userId == 1) { $message = '<p class="error">' . $PMF_LANG['ad_user_error_protectedAccount'] . '</p>'; } else { if (!$user->deleteUser()) { $message = $PMF_LANG['ad_user_error_delete']; } else { $category = new PMF_Category($faqConfig, [], false); $category->moveOwnership($userId, 1); // Remove the user from groups if ('medium' == $faqConfig->get('security.permLevel')) { $permissions = PMF_Perm::selectPerm('medium', $faqConfig); $permissions->removeFromAllGroups($userId); } $message = '<p class="success">' . $PMF_LANG['ad_user_deleted'] . '</p>'; } } $response->setData($message); break; } } $response->send();
$message .= sprintf('<p class="alert alert-danger">%s</p>', $PMF_LANG['ad_user_error_noId']); } else { if (!$user->getUserById($userId)) { $message .= sprintf('<p class="alert alert-danger">%s</p>', $PMF_LANG['ad_user_error_noId']); } if (!$user->deleteUser()) { $message .= sprintf('<p class="alert alert-danger">%s</p>', $PMF_LANG['ad_user_error_delete']); } else { // Move the categories ownership to admin (id == 1) $oCat = new PMF_Category($faqConfig, [], false); $oCat->setUser($currentAdminUser); $oCat->setGroups($currentAdminGroups); $oCat->moveOwnership($userId, 1); // Remove the user from groups if ('medium' == $faqConfig->get('security.permLevel')) { $oPerm = PMF_Perm::selectPerm('medium', $faqConfig); $oPerm->removeFromAllGroups($userId); } $message .= sprintf('<p class="alert alert-success">%s</p>', $PMF_LANG['ad_user_deleted']); } $userError = $user->error(); if ($userError != "") { $message .= sprintf('<p class="alert alert-danger">%s</p>', $userError); } } } // save new user if ($userAction == 'addsave' && $user->perm->checkRight($user->getUserId(), 'adduser')) { $user = new PMF_User($faqConfig); $message = ''; $messages = [];
/** * Constructor * * @param PMF_Configuration $config * * @return PMF_User */ public function __construct(PMF_Configuration $config) { $this->config = $config; $perm = PMF_Perm::selectPerm($this->config->get('security.permLevel'), $this->config); if (!$this->addPerm($perm)) { return; } // authentication objects // always make a 'local' $auth object (see: $authData) $this->authContainer = []; $auth = new PMF_Auth($this->config); $authLocal = $auth->selectAuth($this->getAuthSource('name')); $authLocal->selectEncType($this->getAuthData('encType')); $authLocal->setReadOnly($this->getAuthData('readOnly')); if (!$this->addAuth($authLocal, $this->getAuthSource('type'))) { return; } // additionally, set given $auth objects if (count($auth) > 0) { foreach ($auth as $name => $authObject) { if (!$authObject instanceof PMF_Auth_Driver && !$this->addAuth($authObject, $name)) { break; } } } // user data object $this->userdata = new PMF_User_UserData($this->config); }
/** * @param $key * @param $type * @return void */ function printInputFieldByType($key, $type) { global $PMF_LANG; $faqconfig = PMF_Configuration::getInstance(); switch ($type) { case 'area': printf('<textarea name="edit[%s]" cols="60" rows="6" style="width: 300px;">%s</textarea>', $key, str_replace('<', '<', str_replace('>', '>', $faqconfig->get($key)))); printf("</p>\n"); break; case 'input': if ('' == $faqconfig->get($key) && 'socialnetworks.twitterAccessTokenKey' == $key) { $value = $_SESSION['access_token']['oauth_token']; } elseif ('' == $faqconfig->get($key) && 'socialnetworks.twitterAccessTokenSecret' == $key) { $value = $_SESSION['access_token']['oauth_token_secret']; } else { $value = str_replace('"', '"', $faqconfig->get($key)); } printf('<input type="text" name="edit[%s]" size="75" value="%s" style="width: 300px;" />', $key, $value); printf("</p>\n"); break; case 'select': printf('<select name="edit[%s]" size="1" style="width: 300px;">', $key); switch ($key) { case 'main.language': $languages = PMF_Language::getAvailableLanguages(); if (count($languages) > 0) { print PMF_Language::languageOptions(str_replace(array('language_', '.php'), '', $faqconfig->get('main.language')), false, true); } else { print '<option value="language_en.php">English</option>'; } break; case 'records.orderby': print sortingOptions($faqconfig->get($key)); break; case 'records.sortby': printf('<option value="DESC"%s>%s</option>', 'DESC' == $faqconfig->get($key) ? ' selected="selected"' : '', $PMF_LANG['ad_conf_desc']); printf('<option value="ASC"%s>%s</option>', 'ASC' == $faqconfig->get($key) ? ' selected="selected"' : '', $PMF_LANG['ad_conf_asc']); break; case 'security.permLevel': print PMF_Perm::permOptions($faqconfig->get($key)); break; case "main.templateSet": /** * TODO: do get available template sets in the PMF_Template */ foreach (new DirectoryIterator('../template') as $item) { if (!$item->isDot() && $item->isDir()) { $selected = PMF_Template::getTplSetName() == $item ? ' selected="selected"' : ''; printf("<option%s>%s</option>", $selected, $item); } } break; case "records.attachmentsStorageType": foreach ($PMF_LANG['att_storage_type'] as $i => $item) { $selected = $faqconfig->get($key) == $i ? ' selected="selected"' : ''; printf('<option value="%d"%s>%s</option>', $i, $selected, $item); } break; case "records.orderingPopularFaqs": printf('<option value="visits"%s>%s</option>', 'visits' == $faqconfig->get($key) ? ' selected="selected"' : '', $PMF_LANG['records.orderingPopularFaqs.visits']); printf('<option value="voting"%s>%s</option>', 'voting' == $faqconfig->get($key) ? ' selected="selected"' : '', $PMF_LANG['records.orderingPopularFaqs.voting']); break; case "search.relevance": printf('<option value="thema,content,keywords"%s>%s</option>', 'thema,content,keywords' == $faqconfig->get($key) ? ' selected="selected"' : '', $PMF_LANG['search.relevance.thema-content-keywords']); printf('<option value="thema,keywords,content"%s>%s</option>', 'thema,keywords,content' == $faqconfig->get($key) ? ' selected="selected"' : '', $PMF_LANG['search.relevance.thema-keywords-content']); printf('<option value="content,thema,keywords"%s>%s</option>', 'content,thema,keywords' == $faqconfig->get($key) ? ' selected="selected"' : '', $PMF_LANG['search.relevance.content-thema-keywords']); printf('<option value="content,keywords,thema"%s>%s</option>', 'content,keywords,thema' == $faqconfig->get($key) ? ' selected="selected"' : '', $PMF_LANG['search.relevance.content-keywords-thema']); printf('<option value="keywords,content,thema"%s>%s</option>', 'keywords,content,thema' == $faqconfig->get($key) ? ' selected="selected"' : '', $PMF_LANG['search.relevance.keywords-content-thema']); printf('<option value="keywords,thema,content"%s>%s</option>', 'keywords,thema,content' == $faqconfig->get($key) ? ' selected="selected"' : '', $PMF_LANG['search.relevance.keywords-thema-content']); break; } print "</select>\n</p>\n"; break; case 'checkbox': printf('<input type="checkbox" name="edit[%s]" value="true"', $key); if ($faqconfig->get($key)) { print ' checked="checked"'; } print " /></p>\n"; break; case 'print': printf('<input type="hidden" name="edit[%s]" size="80" value="%s" />%s</p>', $key, str_replace('"', '"', $faqconfig->get($key)), $faqconfig->get($key)); break; } }
$userdata = $user->userdata->get('*'); $userdata['status'] = $user->getStatus(); $userdata['login'] = $user->getLogin(); print json_encode($userdata); break; case 'get_user_rights': $user->getUserById($userId); print json_encode($user->perm->getUserRights($userId)); break; case 'delete_user': $user->getUserById($userId); if ($user->getStatus() == 'protected' || $userId == 1) { $message = '<p class="error">' . $PMF_LANG['ad_user_error_protectedAccount'] . '</p>'; } else { if (!$user->deleteUser()) { $message = $PMF_LANG['ad_user_error_delete']; } else { $category = new PMF_Category(); $category->moveOwnership($userId, 1); // Remove the user from groups if ('medium' == PMF_Configuration::getInstance()->get('security.permLevel')) { $permissions = PMF_Perm::selectPerm('medium'); $permissions->removeFromAllGroups($userId); } $message = '<p class="success">' . $PMF_LANG['ad_user_deleted'] . '</p>'; } } print json_encode($message); break; } }
/** * Constructor * * @param PMF_Configuration $config * * @return PMF_Perm_Basic */ public function __construct(PMF_Configuration $config) { parent::__construct($config); }