<?php
/*
 * 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.
 */
/**
 * @copyright    XOOPS Project http://xoops.org/
 * @license      GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html)
 * @package
 * @since
 * @author       XOOPS Development Team, Kazumi Ono (AKA onokazu)
 */
// Check users rights
if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->getVar('mid'))) {
    exit(_NOPERM);
}
//  Check is active
if (!xoops_getModuleOption('active_comments', 'system')) {
    redirect_header('admin.php', 2, _AM_SYSTEM_NOTACTIVE);
}
// Get Action type
$op = system_CleanVars($_REQUEST, 'op', 'default', 'string');
// Define main template
$GLOBALS['xoopsOption']['template_main'] = 'system_comments.tpl';
xoops_cp_header();
// Define Stylesheet
$xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css');
$xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/ui/' . xoops_getModuleOption('jquery_theme', 'system') . '/ui.all.css');
// Define scripts
$xoTheme->addScript('browse.php?Frameworks/jquery/jquery.js');
$xoTheme->addScript('browse.php?Frameworks/jquery/plugins/jquery.ui.js');
//$xoTheme->addScript('browse.php?Frameworks/jquery/plugins/jquery.tablesorter.js');
$xoTheme->addScript('modules/system/js/admin.js');
// Define Breadcrumb and tips
$xoBreadCrumb->addLink(_AM_SYSTEM_COMMENTS_NAV_MANAGER, system_adminVersion('comments', 'adminpath'));
include_once $GLOBALS['xoops']->path('/include/comment_constants.php');
xoops_loadLanguage('comment');
$limit_array     = array(20, 50, 100);
$status_array    = array(XOOPS_COMMENT_PENDING => _CM_PENDING, XOOPS_COMMENT_ACTIVE => _CM_ACTIVE, XOOPS_COMMENT_HIDDEN => _CM_HIDDEN);
$status_array2   = array(
    XOOPS_COMMENT_PENDING => '<span style="text-decoration: none; font-weight: bold; color: #008000;">' . _CM_PENDING . '</span>',
    XOOPS_COMMENT_ACTIVE  => '<span style="text-decoration: none; font-weight: bold; color: #ff0000;">' . _CM_ACTIVE . '</span>',
    XOOPS_COMMENT_HIDDEN  => '<span style="text-decoration: none; font-weight: bold; color: #0000ff;">' . _CM_HIDDEN . '</span>');
$start           = 0;
$status_array[0] = _AM_SYSTEM_COMMENTS_FORM_ALL_STATUS;
$comments = array();
//$status   = (!isset($_REQUEST['status']) || !in_array((int)($_REQUEST['status']), array_keys($status_array))) ? 0 : (int)($_REQUEST['status']);
$status = (!isset($_REQUEST['status']) || !array_key_exists((int)$_REQUEST['status'], $status_array)) ? 0 : (int)$_REQUEST['status'];
$module          = !isset($_REQUEST['module']) ? 0 : (int)$_REQUEST['module'];
$modules_Handler = xoops_getHandler('module');
$module_array    = $modules_Handler->getList(new Criteria('hascomments', 1));
$module_array[0] = _AM_SYSTEM_COMMENTS_FORM_ALL_MODS;
/* @var  XoopsCommentHandler $comment_handler */
$comment_handler = xoops_getHandler('comment');
switch ($op) {
    case 'comments_jump':
        $com_id = system_CleanVars($_GET, 'com_id', 0, 'int');
        if ($com_id > 0) {
            $comment = $comment_handler->get($com_id);
            if (is_object($comment)) {
                /* @var XoopsModuleHandler $module_handler */
                $module_handler = xoops_getHandler('module');
                $module         = $module_handler->get($comment->getVar('com_modid'));
                $comment_config = $module->getInfo('comments');
                header('Location: ' . XOOPS_URL . '/modules/' . $module->getVar('dirname') . '/' . $comment_config['pageName'] . '?' . $comment_config['itemName'] . '=' . $comment->getVar('com_itemid') . '&com_id=' . $comment->getVar('com_id') . '&com_rootid=' . $comment->getVar('com_rootid') . '&com_mode=thread&' . str_replace('&', '&', $comment->getVar('com_exparams')) . '#comment' . $comment->getVar('com_id'));
                exit();
            }
        }
        redirect_header('admin.php?fct=comments', 1, _AM_SYSTEM_COMMENTS_NO_COMMENTS);
        break;
    case 'comments_form_purge':
        //Affichage des coms
        $xoBreadCrumb->addLink(_AM_SYSTEM_COMMENTS_NAV_PURGE);
        $xoBreadCrumb->addHelp(system_adminVersion('comments', 'help') . '#purge');
        $xoBreadCrumb->addTips(_AM_SYSTEM_COMMENTS_NAV_TIPS);
        $xoBreadCrumb->render();
        //Affichage du formulaire de purge
        $form_purge = new XoopsThemeForm(_AM_SYSTEM_COMMENTS_FORM_PURGE, 'form', 'admin.php?fct=comments', 'post', true);
        $form_purge->addElement(new XoopsFormTextDateSelect(_AM_SYSTEM_COMMENTS_FORM_PURGE_DATE_AFTER, 'comments_after', '15'));
        $form_purge->addElement(new XoopsFormTextDateSelect(_AM_SYSTEM_COMMENTS_FORM_PURGE_DATE_BEFORE, 'comments_before', '15'));
        //user
        $form_purge->addElement(new XoopsFormSelectUser(_AM_SYSTEM_COMMENTS_FORM_PURGE_USER, 'comments_userid', false, @$_REQUEST['comments_userid'], 5, true));
        //groups
        $groupe_select = new XoopsFormSelectGroup(_AM_SYSTEM_COMMENTS_FORM_PURGE_GROUPS, 'comments_groupe', false, '', 5, true);
        $groupe_select->setExtra("style=\"width:170px;\" ");
        $form_purge->addElement($groupe_select);
        //Status
        $status  = new XoopsFormSelect(_AM_SYSTEM_COMMENTS_FORM_PURGE_STATUS, 'comments_status', '');
        $options = $status_array;
        $status->addOptionArray($options);
        $form_purge->addElement($status, true);
        //Modules
        $modules = new XoopsFormSelect(_AM_SYSTEM_COMMENTS_FORM_PURGE_MODULES, 'comments_modules', '');
        $options = $module_array;
        $modules->addOptionArray($options);
        $form_purge->addElement($modules, true);
        $form_purge->addElement(new XoopsFormHidden('op', 'comments_purge'));
        $form_purge->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
        $xoopsTpl->assign('form', $form_purge->render());
        break;
    case 'comments_purge':
        $criteria = new CriteriaCompo();
        $verif    = false;
        if (isset($_POST['comments_after']) && isset($_POST['comments_before'])) {
            if ($_POST['comments_after'] != $_POST['comments_before']) {
                $com_after  = system_CleanVars($_POST, 'comments_after', time(), 'date');
                $com_before = system_CleanVars($_POST, 'comments_before', time(), 'date');
                if ($com_after) {
                    $criteria->add(new Criteria('com_created', $com_after, '>'));
                }
                if ($com_before) {
                    $criteria->add(new Criteria('com_created', $com_before, '<'));
                }
                $verif = true;
            }
        }
        $com_modid = system_CleanVars($_POST, 'comments_modules', 0, 'int');
        if ($com_modid > 0) {
            $criteria->add(new Criteria('com_modid', $com_modid));
            $verif = true;
        }
        $comments_status = system_CleanVars($_POST, 'comments_status', 0, 'int');
        if ($comments_status > 0) {
            $criteria->add(new Criteria('com_status', $_POST['comments_status']));
            $verif = true;
        }
        $comments_userid = system_CleanVars($_POST, 'comments_userid', '', 'string');
        if ($comments_userid != '') {
            foreach ($_REQUEST['comments_userid'] as $del) {
                $criteria->add(new Criteria('com_uid', $del), 'OR');
            }
            $verif = true;
        }
        $comments_groupe = system_CleanVars($_POST, 'comments_groupe', '', 'string');
        if ($comments_groupe != '') {
            foreach ($_POST['comments_groupe'] as $del => $u_name) {
                /* @var XoopsMemberHandler $member_handler */
                $member_handler = xoops_getHandler('member');
                $members        = $member_handler->getUsersByGroup($u_name, true);
                $mcount         = count($members);
                if ($mcount > 4000) {
                    redirect_header('admin.php?fct=comments', 2, _MP_DELETECOUNT);
                }
                for ($i = 0; $i < $mcount; ++$i) {
                    $criteria->add(new Criteria('com_uid', $members[$i]->getVar('uid')), 'OR');
                }
            }
            $verif = true;
        }
        if (isset($_POST['commentslist_id'])) {
            $commentslist_count = (!empty($_POST['commentslist_id']) && is_array($_POST['commentslist_id'])) ? count($_POST['commentslist_id']) : 0;
            if ($commentslist_count > 0) {
                for ($i = 0; $i < $commentslist_count; ++$i) {
                    $criteria->add(new Criteria('com_id', $_REQUEST['commentslist_id'][$i]), 'OR');
                }
            }
            $verif = true;
        }
        if ($verif === true) {
            if ($comment_handler->deleteAll($criteria)) {
                redirect_header('admin.php?fct=comments', 3, _AM_SYSTEM_DBUPDATED);
            }
        } else {
            redirect_header('admin.php?fct=comments', 3, _AM_SYSTEM_DBUPDATED);
        }
        break;
    default:
        // Display comments
        $xoBreadCrumb->addLink(_AM_SYSTEM_COMMENTS_NAV_MAIN);
        $xoBreadCrumb->addHelp(system_adminVersion('comments', 'help'));
        $xoBreadCrumb->addTips(_AM_SYSTEM_COMMENTS_NAV_TIPS);
        $xoBreadCrumb->render();
        $myts             = MyTextSanitizer::getInstance();
        /* @var  XoopsCommentHandler $comments_Handler */
        $comments_Handler = xoops_getHandler('comment');
        $comments_module  = '';
        $comments_status  = '';
        $criteria        = new CriteriaCompo();
        $comments_module = system_CleanVars($_REQUEST, 'comments_module', 0, 'int');
        if ($comments_module > 0) {
            $criteria->add(new Criteria('com_modid', $comments_module));
            $comments_module = $_REQUEST['comments_module'];
        }
        $comments_status = system_CleanVars($_REQUEST, 'comments_status', 0, 'int');
        if ($comments_status > 0) {
            $criteria->add(new Criteria('com_status', $comments_status));
            $comments_status = $_REQUEST['comments_status'];
        }
        $criteria->setSort('com_created');
        $criteria->setOrder('DESC');
        $comments_count = $comments_Handler->getCount($criteria);
        $xoopsTpl->assign('comments_count', $comments_count);
        if ($comments_count > 0) {
            $comments_start = system_CleanVars($_REQUEST, 'comments_start', 0, 'int');
            $comments_limit = system_CleanVars($_REQUEST, 'comments_limit', 0, 'int');
            if (!in_array($comments_limit, $limit_array)) {
                $comments_limit = xoops_getModuleOption('comments_pager', 'system');
            }
            $criteria->setLimit($comments_limit);
            $criteria->setStart($comments_start);
            $comments_arr = $comments_Handler->getObjects($criteria, true);
        }
        $form = '<form action="admin.php?fct=comments" method="post">
                <select name="comments_module">';
        foreach ($module_array as $k => $v) {
            $sel = '';
            if ($k == $module) {
                $sel = ' selected';
            }
            $form .= '<option value="' . $k . '"' . $sel . '>' . $v . '</option>';
        }
        $form .= '</select> <select name="comments_status">';
        foreach ($status_array as $k => $v) {
            $sel = '';
            if (isset($status) && $k == $status) {
                $sel = ' selected';
            }
            $form .= '<option value="' . $k . '"' . $sel . '>' . $v . '</option>';
        }
        $form .= '</select> <select name="comments_limit">';
        foreach ($limit_array as $k) {
            $sel = '';
            if (isset($limit) && $k == $limit) {
                $sel = ' selected';
            }
            $form .= '<option value="' . $k . '"' . $sel . '>' . $k . '</option>';
        }
        $form .= '</select> <input type="hidden" name="fct" value="comments" /><input type="submit" value="' . _GO . '" name="selsubmit" /></form>';
        $xoopsTpl->assign('form_sort', $form);
        $xoopsTpl->assign('php_selft', XOOPS_URL . '/modules/system/admin.php?fct=comments&op=comments_purge');
        if ($comments_count > 0) {
            foreach (array_keys($comments_arr) as $i) {
                $com_id                = $comments_arr[$i]->getVar('com_id');
                $comments_poster_uname = $xoopsConfig['anonymous'];
                // Start edit by voltan
                if ($comments_arr[$i]->getVar('com_uid') > 0) {
                    $poster = $member_handler->getUser($comments_arr[$i]->getVar('com_uid'));
                    if (is_object($poster)) {
                        $comments_poster_uname = '<a href="' . XOOPS_URL . '/userinfo.php?uid=' . $comments_arr[$i]->getVar('com_uid') . '">' . $poster->getVar('uname') . '</a>';
                    }
                } elseif ($comments_arr[$i]->getVar('com_uid') == 0 && $comments_arr[$i]->getVar('com_user') != '') {
                    if ($comments_arr[$i]->getVar('com_url') != '') {
                        $comments_poster_uname = '<div class="pad2 marg2"><a href="' . $comments_arr[$i]->getVar('com_url') . '">' . $comments_arr[$i]->getVar('com_user') . '</a> ( <a href="mailto:' . $comments_arr[$i]->getVar('com_email') . '">' . $comments_arr[$i]->getVar('com_email') . '</a> ) ' . '</div>';
                    } else {
                        $comments_poster_uname = '<div class="pad2 marg2">' . $comments_arr[$i]->getVar('com_user') . ' ( <a href="mailto:' . $comments_arr[$i]->getVar('com_email') . '">' . $comments_arr[$i]->getVar('com_email') . '</a> ) ' . '</div>';
                    }
                }
                // End edit by voltan
                $comments_icon = ($comments_arr[$i]->getVar('com_icon') == '') ? '/images/icons/no_posticon.gif' : '/images/subject/' . htmlspecialchars($comments_arr[$i]->getVar('com_icon'), ENT_QUOTES);
                $comments_icon = '<img src="' . XOOPS_URL . $comments_icon . '" alt="" />';
                $comments['comments_id']           = $com_id;
                $comments['comments_poster']       = $comments_poster_uname;
                $comments['comments_icon']         = $comments_icon;
                $comments['comments_title'] = $myts->htmlSpecialChars($comments_arr[$i]->getVar('com_title'));
                $comments['comments_ip']           = $comments_arr[$i]->getVar('com_ip');
                $comments['comments_date']         = formatTimestamp($comments_arr[$i]->getVar('com_created'));
                $comments['comments_text'] = $myts->htmlSpecialChars($comments_arr[$i]->getVar('com_text'));
                $comments['comments_status']       = @$status_array2[$comments_arr[$i]->getVar('com_status')];
                $comments['comments_date_created'] = formatTimestamp($comments_arr[$i]->getVar('com_created'), 'm');
                $comments['comments_modid']        = @$module_array[$comments_arr[$i]->getVar('com_modid')];
                //$comments['comments_view_edit_delete'] = '<img class="cursorpointer" onclick="display_dialog('.$com_id.', true, true, \'slide\', \'slide\', 300, 500);" src="images/icons/view.png" alt="'._AM_SYSTEM_COMMENTS_VIEW.'" title="'._AM_SYSTEM_COMMENTS_VIEW.'" /><a href="admin/comments/comment_edit.php?com_id='.$com_id.'"><img src="./images/icons/edit.png" border="0" alt="'._EDIT.'" title="'._EDIT.'"></a><a href="admin/comments/comment_delete.php?com_id='.$com_id.'"><img src="./images/icons/delete.png" border="0" alt="'._DELETE.'" title="'._DELETE.'"></a>';
                $xoopsTpl->append_by_ref('comments', $comments);
                $xoopsTpl->append_by_ref('comments_popup', $comments);
                unset($comments);
            }
            if ($comments_count > $comments_limit) {
                include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
                $nav = new XoopsPageNav($comments_count, $comments_limit, $comments_start, 'comments_start', 'fct=comments&comments_module=' . $comments_module . '&comments_status=' . $comments_status);
                $xoopsTpl->assign('nav', $nav->renderNav());
            }
        }
        break;
}
// Call Footer
xoops_cp_footer();
 
  |