mambax7/xnewsletter

View on GitHub
admin/cat.php

Summary

Maintainability
A
2 hrs
Test Coverage
<?php
/**
 * ****************************************************************************
 *  - A Project by Developers TEAM For Xoops - ( https://xoops.org )
 * ****************************************************************************
 *  XNEWSLETTER - MODULE FOR XOOPS
 *  Copyright (c) 2007 - 2012
 *  Goffy ( wedega.com )
 *
 *  You may not change or alter any portion of this comment or credits
 *  of supporting developers from this source code or any supporting
 *  source code which is considered copyrighted (c) material of the
 *  original comment or credit authors.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *  ---------------------------------------------------------------------------
 * @copyright  Goffy ( wedega.com )
 * @license    GPL 2.0
 * @package    xnewsletter
 * @author     Goffy ( webmaster@wedega.com )
 *
 * ****************************************************************************
 */

use Xmf\Request;
use XoopsModules\Xnewsletter;

$currentFile = basename(__FILE__);
require_once __DIR__ . '/admin_header.php';
xoops_cp_header();

// set template
$templateMain = 'xnewsletter_admin_categories.tpl';

// We recovered the value of the argument op in the URL$
$op     = Request::getString('op', 'list');
$cat_id = Request::getInt('cat_id', 0);

$GLOBALS['xoopsTpl']->assign('use_mailinglist', $helper->getConfig('xn_use_mailinglist'));
$GLOBALS['xoopsTpl']->assign('xnewsletter_url', XNEWSLETTER_URL);
$GLOBALS['xoopsTpl']->assign('xnewsletter_icons_url', XNEWSLETTER_ICONS_URL);

switch ($op) {
    case 'list':
    default:
        $adminObject->displayNavigation($currentFile);
        $adminObject->addItemButton(_AM_XNEWSLETTER_NEWCAT, '?op=new_cat', 'add');
        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->renderButton('left'));

        $start       = Request::getInt('start', 0);
        $limit       = $helper->getConfig('adminperpage');
        $catsCount   = $helper->getHandler('Cat')->getCount();
        $catCriteria = new \CriteriaCompo();
        $catCriteria->setSort('cat_id ASC, cat_name');
        $catCriteria->setOrder('ASC');
        $catCriteria->setStart($start);
        $catCriteria->setLimit($limit);
        $catAll = $helper->getHandler('Cat')->getAll($catCriteria);
        if ($catsCount > $limit) {
            require_once XOOPS_ROOT_PATH . '/class/pagenav.php';
            $pagenav = new \XoopsPageNav($catsCount, $limit, $start, 'start', 'op=list');
            $GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(4));
        }

        if ($catsCount > 0) {
            $GLOBALS['xoopsTpl']->assign('categories_count', $catsCount);
            $groupNames = $memberHandler->getGroupList();
            /** @var \XoopsGroupPermHandler $grouppermHandler */
            $grouppermHandler = xoops_getHandler('groupperm');
            foreach (array_keys($catAll) as $i) {
                $cat    = $catAll[$i]->getValuesCat();
                $cat_id = $cat['id'];
                
                // cat_gperms_admin
                $cat_gperms_admin_groupids = $grouppermHandler->getGroupIds('newsletter_admin_cat', $cat_id, $helper->getModule()->mid());
                sort($cat_gperms_admin_groupids);
                $cat_gperms_admin = '';
                foreach ($cat_gperms_admin_groupids as $groupid) {
                    $cat_gperms_admin .= $groupNames[$groupid] . ' | ';
                }
                $cat_gperms_admin = mb_substr($cat_gperms_admin, 0, -3);
                $cat['gperms_admin'] = $cat_gperms_admin;
                // cat_gperms_create
                $cat_gperms_create_groupids = $grouppermHandler->getGroupIds('newsletter_create_cat', $cat_id, $helper->getModule()->mid());
                sort($cat_gperms_create_groupids);
                $cat_gperms_create = '';
                foreach ($cat_gperms_create_groupids as $groupid) {
                    $cat_gperms_create .= $groupNames[$groupid] . ' | ';
                }
                $cat_gperms_create = mb_substr($cat_gperms_create, 0, -3);
                $cat['gperms_create'] = $cat_gperms_create;
                // cat_gperms_list
                $cat_gperms_list_groupids = $grouppermHandler->getGroupIds('newsletter_list_cat', $cat_id, $helper->getModule()->mid());
                sort($cat_gperms_list_groupids);
                $cat_gperms_list = '';
                foreach ($cat_gperms_list_groupids as $groupid) {
                    $cat_gperms_list .= $groupNames[$groupid] . ' | ';
                }
                $cat_gperms_list = mb_substr($cat_gperms_list, 0, -3);
                $cat['gperms_list'] = $cat_gperms_list;

                // cat_gperms_read
                $cat_gperms_read_groupids = $grouppermHandler->getGroupIds('newsletter_read_cat', $cat_id, $helper->getModule()->mid());
                sort($cat_gperms_read_groupids);
                $cat_gperms_read = '';
                foreach ($cat_gperms_read_groupids as $groupid) {
                    $cat_gperms_read .= $groupNames[$groupid] . ' | ';
                }
                $cat_gperms_read = mb_substr($cat_gperms_read, 0, -3);
                $cat['gperms_read'] = $cat_gperms_read;

                $GLOBALS['xoopsTpl']->append('categories_list', $cat);
                unset($cat);
            }
        } else {
            $GLOBALS['xoopsTpl']->assign('error', _AM_XNEWSLETTER_THEREARENT_CAT);
        }
        break;
    case 'new_cat':
        $adminObject->displayNavigation($currentFile);
        $adminObject->addItemButton(_AM_XNEWSLETTER_CATLIST, '?op=list', 'list');
        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->renderButton('left'));

        $catObj = $helper->getHandler('Cat')->create();
        $form   = $catObj->getForm();
        $GLOBALS['xoopsTpl']->assign('form', $form->render());
        break;
    case 'save_cat':
        if (!$GLOBALS['xoopsSecurity']->check()) {
            redirect_header($currentFile, 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
        }
        $catObj = $helper->getHandler('Cat')->get($cat_id);
        $catObj->setVar('cat_name',        Request::getString('cat_name', ''));
        $catObj->setVar('cat_info',        Request::getString('cat_info', ''));
        $catObj->setVar('cat_mailinglist', Request::getInt('cat_mailinglist', 0));
        $catObj->setVar('cat_submitter',   $xoopsUser->uid());
        $catObj->setVar('cat_created',     time());
        $catObj->setVar('dohtml',          Request::getInt('dohtml', 0));
        $catObj->setVar('dosmiley',        Request::getInt('dosmiley', 0));
        $catObj->setVar('doxcode',         Request::getInt('doxcode', 0));
        $catObj->setVar('doimage',         Request::getInt('doimage', 0));
        $catObj->setVar('dobr',            Request::getInt('dobr', 0));

        if ($helper->getHandler('Cat')->insert($catObj)) {
            $cat_id = $catObj->getVar('cat_id');
            //
            // Form cat_gperms_read
            $grouppermHandler->deleteByModule($helper->getModule()->mid(), 'newsletter_read_cat', $cat_id);
            $grouppermHandler->addRight('newsletter_read_cat', $cat_id, XOOPS_GROUP_ADMIN, $helper->getModule()->mid());
            $cat_gperms_read_groupids = Request::getArray('cat_gperms_read', []);
            foreach ($cat_gperms_read_groupids as $groupid) {
                $grouppermHandler->addRight('newsletter_read_cat', $cat_id, $groupid, $helper->getModule()->mid());
            }
            // Form cat_gperms_admin
            $grouppermHandler->deleteByModule($helper->getModule()->mid(), 'newsletter_admin_cat', $cat_id);
            $grouppermHandler->addRight('newsletter_admin_cat', $cat_id, XOOPS_GROUP_ADMIN, $helper->getModule()->mid());
            $cat_gperms_admin_groupids = Request::getArray('cat_gperms_admin', []);
            foreach ($cat_gperms_admin_groupids as $groupid) {
                $grouppermHandler->addRight('newsletter_admin_cat', $cat_id, $groupid, $helper->getModule()->mid());
            }
            // Form cat_gperms_create
            $grouppermHandler->deleteByModule($helper->getModule()->mid(), 'newsletter_create_cat', $cat_id);
            $grouppermHandler->addRight('newsletter_create_cat', $cat_id, XOOPS_GROUP_ADMIN, $helper->getModule()->mid());
            $cat_gperms_create_groupids = Request::getArray('cat_gperms_create', []);
            foreach ($cat_gperms_create_groupids as $groupid) {
                $grouppermHandler->addRight('newsletter_create_cat', $cat_id, $groupid, $helper->getModule()->mid());
            }
            // Form cat_gperms_list
            $grouppermHandler->deleteByModule($helper->getModule()->mid(), 'newsletter_list_cat', $cat_id);
            $grouppermHandler->addRight('newsletter_list_cat', $cat_id, XOOPS_GROUP_ADMIN, $helper->getModule()->mid());
            $cat_gperms_list_groupids = Request::getArray('cat_gperms_list', []);
            foreach ($cat_gperms_list_groupids as $groupid) {
                $grouppermHandler->addRight('newsletter_list_cat', $cat_id, $groupid, $helper->getModule()->mid());
            }

            redirect_header('?op=list', 3, _AM_XNEWSLETTER_FORMOK);
        }

        $GLOBALS['xoopsTpl']->assign('error', $catObj->getHtmlErrors());
        $form = $catObj->getForm();
        $GLOBALS['xoopsTpl']->assign('form', $form->render());
        break;
    case 'edit_cat':
        $adminObject->displayNavigation($currentFile);
        $adminObject->addItemButton(_AM_XNEWSLETTER_NEWCAT, '?op=new_cat', 'add');
        $adminObject->addItemButton(_AM_XNEWSLETTER_CATLIST, '?op=list', 'list');
        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->renderButton('left'));

        $catObj = $helper->getHandler('Cat')->get($cat_id);
        $form   = $catObj->getForm();
        $GLOBALS['xoopsTpl']->assign('form', $form->render());
        break;
    case 'delete_cat':
        $catObj = $helper->getHandler('Cat')->get($_REQUEST['cat_id']);
        // check whether there are existing sbuscription to this cat
        if ($helper->getHandler('Catsubscr')->getCount(new \Criteria('catsubscr_catid', $cat_id)) > 0) {
            redirect_header($currentFile, 5, _AM_XNEWSLETTER_CAT_DELETE_ERROR);
        }
        
        if (true === Request::getBool('ok', false, 'POST')) {
            if (!$GLOBALS['xoopsSecurity']->check()) {
                redirect_header($currentFile, 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
            }
            if ($helper->getHandler('Cat')->delete($catObj)) {
                redirect_header($currentFile, 3, _AM_XNEWSLETTER_FORMDELOK);
            } else {
                $GLOBALS['xoopsTpl']->assign('error', $catObj->getHtmlErrors());
            }
        } else {
            xoops_confirm(['ok' => true, 'cat_id' => $cat_id, 'op' => 'delete_cat'], $_SERVER['REQUEST_URI'], sprintf(_AM_XNEWSLETTER_FORMSUREDEL, $catObj->getVar('cat_name')));
        }
        break;
}
require_once __DIR__ . '/admin_footer.php';