/src/modules/Dizkus/lib/Dizkus/Controller/Admin.php
PHP | 325 lines | 208 code | 61 blank | 56 comment | 41 complexity | a15b03eba3082fe7c72e5ce88d284999 MD5 | raw file
- <?php
- /**
- * Dizkus
- *
- * @copyright (c) 2001-now, Dizkus Development Team
- * @link http://code.zikula.org/dizkus
- * @version $Id$
- * @license GNU/GPL - http://www.gnu.org/copyleft/gpl.html
- * @package Dizkus
- */
- class Dizkus_Controller_Admin extends Zikula_AbstractController
- {
- public function postInitialize()
- {
- $this->view->setCaching(false)->add_core_data();
- }
- /**
- * the main administration function
- *
- */
- public function main()
- {
- if (!SecurityUtil::checkPermission('Dizkus::', '::', ACCESS_ADMIN)) {
- return LogUtil::registerPermissionError();
- }
-
- return $this->view->fetch('admin/main.tpl');
- }
-
- /**
- * preferences
- *
- */
- public function preferences()
- {
- if (!SecurityUtil::checkPermission('Dizkus::', '::', ACCESS_ADMIN)) {
- return LogUtil::registerPermissionError();
- }
-
- // Create output object
- $form = FormUtil::newForm('Dizkus', $this);
-
- // Return the output that has been generated by this function
- return $form->execute('admin/preferences.tpl', new Dizkus_Form_Handler_Admin_Prefs());
- }
-
- /**
- * syncforums
- */
- public function syncforums()
- {
- if (!SecurityUtil::checkPermission('Dizkus::', '::', ACCESS_ADMIN)) {
- return LogUtil::registerPermissionError();
- }
- $silent = FormUtil::getPassedValue('silent', 0);
-
- $messages = array();
-
- $messages[] = DataUtil::formatForDisplay($this->__('Done! Synchronized Zikula users and Dizkus users.'));
-
- ModUtil::apiFunc('Dizkus', 'admin', 'sync',
- array('type' => 'all forums'));
-
- $messages[] = DataUtil::formatForDisplay($this->__('Done! Synchronized forum index.'));
-
- ModUtil::apiFunc('Dizkus', 'admin', 'sync',
- array('type' => 'all topics'));
-
- $messages[] = DataUtil::formatForDisplay($this->__('Done! Synchronized topics.'));
-
- ModUtil::apiFunc('Dizkus', 'admin', 'sync',
- array('type' => 'all posts'));
-
- $messages[] = DataUtil::formatForDisplay($this->__('Done! Synchronized posts counter.'));
-
- if ($silent != 1) {
- LogUtil::registerStatus($messages);
- }
-
- return System::redirect(ModUtil::url('Dizkus', 'admin', 'main'));
- }
-
- /**
- * ranks
- */
- public function ranks()
- {
-
- if (!SecurityUtil::checkPermission('Dizkus::', '::', ACCESS_ADMIN)) {
- return LogUtil::registerPermissionError();
- }
-
- $submit = FormUtil::getPassedValue('submit', null, 'GETPOST');
- $ranktype = (int)FormUtil::getPassedValue('ranktype', 0, 'GETPOST');
-
- if (!$submit) {
- list($rankimages, $ranks) = ModUtil::apiFunc('Dizkus', 'admin', 'readranks',
- array('ranktype' => $ranktype));
-
- $this->view->assign('ranks', $ranks);
- $this->view->assign('ranktype', $ranktype);
- $this->view->assign('rankimages', $rankimages);
-
- if ($ranktype == 0) {
- return $this->view->fetch('admin/ranks.tpl');
- } else {
- return $this->view->fetch('admin/honoraryranks.tpl');
- }
- } else {
- $ranks = FormUtil::getPassedValue('ranks');
- ModUtil::apiFunc('Dizkus', 'admin', 'saverank', array('ranks' => $ranks));
- }
-
- return System::redirect(ModUtil::url('Dizkus','admin', 'ranks', array('ranktype' => $ranktype)));
- }
-
- /**
- * ranks
- */
- public function assignranks()
- {
- if (!SecurityUtil::checkPermission('Dizkus::', '::', ACCESS_ADMIN)) {
- return LogUtil::registerPermissionError();
- }
-
- $submit = FormUtil::getPassedValue('submit');
- $letter = FormUtil::getPassedValue('letter');
- $lastletter = FormUtil::getPassedValue('lastletter');
- $page = (int)FormUtil::getPassedValue('page', 1, 'GETPOST');
-
- // check for a letter parameter
- if (!empty($lastletter)) {
- $letter = $lastletter;
- }
-
- // count users and forbid '*' if more than 1000 users are present
- $usercount = DBUtil::selectObjectCount('users');
- if (empty($letter) || strlen($letter) != 1 || (($usercount > 1000) && $letter == '*')) {
- $letter = 'a';
- }
- $letter = strtolower($letter);
-
- if (!$submit) {
- list($rankimages, $ranks) = ModUtil::apiFunc('Dizkus', 'admin', 'readranks',
- array('ranktype' => 1));
- $tables = DBUtil::getTables();
-
- $userscol = $tables['users_column'];
- $where = 'LEFT('.$userscol['uname'].',1) LIKE \''.DataUtil::formatForStore($letter).'%\'';
- $orderby = $userscol['uname'].' ASC';
- $usercount = DBUtil::selectObjectCount('users', $where);
-
- $perpage = 50;
- if ($page <> -1 && $perpage <> -1) {
- $start = ($page-1) * $perpage;
- $users = DBUtil::selectObjectArray('users', $where, $orderby, $start, $perpage);
- }
- $allusers = array();
- foreach ($users as $user) {
- if ($user['uid'] == 1) continue;
-
- $alias = '';
- if (!empty($user['name'])) {
- $alias = ' (' . $user['name'] . ')';
- }
-
- $user['name'] = $user['uname'] . $alias;
-
- $user['rank_id'] = 0;
- for ($cnt = 0; $cnt < count($ranks); $cnt++) {
- if (in_array($user['uid'], $ranks[$cnt]['users'])) {
- $user['rank_id'] = $ranks[$cnt]['rank_id'];
- }
- }
- array_push($allusers, $user);
- }
- /*
- $inlinecss = '<style type="text/css">' ."\n";
- $rankpath = ModUtil::getVar('Dizkus', 'url_ranks_images') .'/';
- foreach ($ranks as $rank) {
- $inlinecss .= '#dizkus_admin option[value='.$rank['rank_id'].']:before { content:url("'.System::getBaseUrl() . $rankpath . $rank['rank_image'].'"); }' . "\n";
- }
- $inlinecss .= '</style>' . "\n";
- PageUtil::addVar('rawtext', $inlinecss);
- */
- //usort($allusers, 'cmp_userorder');
-
- unset($users);
-
- $this->view->assign('ranks', $ranks);
- $this->view->assign('rankimages', $rankimages);
- $this->view->assign('allusers', $allusers);
- $this->view->assign('letter', $letter);
- $this->view->assign('page', $page);
- $this->view->assign('perpage', $perpage);
- $this->view->assign('usercount', $usercount);
- $this->view->assign('allow_star', ($usercount < 1000));
-
- return $this->view->fetch('admin/assignranks.tpl');
-
- } else {
- // avoid some vars in the url of the pager
- unset($_GET['submit']);
- unset($_POST['submit']);
- unset($_REQUEST['submit']);
- $setrank = FormUtil::getPassedValue('setrank');
- ModUtil::apiFunc('Dizkus', 'admin', 'assignranksave',
- array('setrank' => $setrank));
- }
-
- return System::redirect(ModUtil::url('Dizkus','admin', 'assignranks',
- array('letter' => $letter,
- 'page' => $page)));
- }
-
-
- /**
- *
- */
- public function subforums()
- {
- if (!SecurityUtil::checkPermission('Dizkus::', '::', ACCESS_ADMIN)) {
- return LogUtil::registerPermissionError();
- }
- $subforums = DBUtil::selectObjectArray('dizkus_forums', $where = 'WHERE is_subforum > 0');
- $this->view->assign('subforums', $subforums);
-
- return $this->view->fetch('admin/subforums.tpl');
-
- }
-
- /**
- *
- */
- public function modifysubforum()
- {
- $form = FormUtil::newForm('Dizkus', $this);
- return $form->execute('admin/modifysubforum.tpl', new Dizkus_Form_Handler_Admin_ModifySubForum());
- }
-
-
- /**
- * reordertree
- *
- */
- public function reordertree()
- {
- if (!SecurityUtil::checkPermission('Dizkus::', '::', ACCESS_ADMIN)) {
- return LogUtil::registerPermissionError();
- }
-
- $categorytree = ModUtil::apiFunc('Dizkus', 'user', 'readcategorytree');
- $this->view->assign('categorytree', $categorytree);
- $this->view->assign('newcategory', false);
- $this->view->assign('newforum', false);
-
- return $this->view->fetch('admin/reordertree.tpl');
- }
-
- /**
- * managesubscriptions
- *
- */
- public function managesubscriptions()
- {
- if (!SecurityUtil::checkPermission('Dizkus::', '::', ACCESS_ADMIN)) {
- return LogUtil::registerPermissionError();
- }
-
- $submit = FormUtil::getPassedValue('submit');
- $username = FormUtil::getPassedValue('username');
-
- $uid = 0;
- $topicsubscriptions = array();
- $forumsubscriptions = array();
-
- if (!empty($username)) {
- $uid = UserUtil::getIDFromName($username);
- }
- if (!empty($uid)) {
- $topicsubscriptions = ModUtil::apiFunc('Dizkus', 'user', 'get_topic_subscriptions', array('user_id' => $uid));
- $forumsubscriptions = ModUtil::apiFunc('Dizkus', 'user', 'get_forum_subscriptions', array('user_id' => $uid));
- }
-
- if (!$submit) {
- // submit is empty
- $this->view->assign('username', $username);
- $this->view->assign('uid', $uid = UserUtil::getIDFromName($username));
- $this->view->assign('topicsubscriptions', $topicsubscriptions);
- $this->view->assign('forumsubscriptions', $forumsubscriptions);
-
- return $this->view->fetch('admin/managesubscriptions.tpl');
-
- } else { // submit not empty
- $uid = FormUtil::getPassedValue('uid');
- $allforums = FormUtil::getPassedValue('allforum');
- $forum_ids = FormUtil::getPassedValue('forum_id');
- $alltopics = FormUtil::getPassedValue('alltopic');
- $topic_ids = FormUtil::getPassedValue('topic_id');
-
- if ($allforums == '1') {
- ModUtil::apiFunc('Dizkus', 'user', 'unsubscribe_forum', array('user_id' => $uid));
- } elseif (count($forum_ids) > 0) {
- for($i = 0; $i < count($forum_ids); $i++) {
- ModUtil::apiFunc('Dizkus', 'user', 'unsubscribe_forum', array('user_id' => $uid, 'forum_id' => $forum_ids[$i]));
- }
- }
-
- if ($alltopics == '1') {
- ModUtil::apiFunc('Dizkus', 'user', 'unsubscribe_topic', array('user_id' => $uid));
- } elseif (count($topic_ids) > 0) {
- for($i = 0; $i < count($topic_ids); $i++) {
- ModUtil::apiFunc('Dizkus', 'user', 'unsubscribe_topic', array('user_id' => $uid, 'topic_id' => $topic_ids[$i]));
- }
- }
- }
-
- return System::redirect(ModUtil::url('Dizkus', 'admin', 'managesubscriptions', array('username' => UserUtil::getVar('uname', $uid))));
- }
- }