mambax7/wflinks

View on GitHub
EXTRA/htdocs/modules/sitemap/plugins/wflinks.php

Summary

Maintainability
A
3 hrs
Test Coverage
<?php

/**
 * -----------------------------------------------------------------------------
 * About this sitemap plug-in : wflinks for sitemap
 *
 * Name                    :    wflinks.php
 * Author                :    DuGris (http://www.dugris.info)
 *
 * Necessary modules    :
 *                                sitemap 1.30 (http://xoops.peak.ne.jp/)
 *                                wflinks 3.30 (http://www.wf-projects.com - http://members.lycos.nl/mcdonaldsstore/)
 *
 * -----------------------------------------------------------------------------
 **/
function b_sitemap_wflinks()
{
    global $sitemap_configs;
    global $xoopsDB, $xoopsUser, $xoopsModule;
    $myts = \MyTextSanitizer::getInstance();

    require_once XOOPS_ROOT_PATH . '/class/xoopstree.php';
    $mytree = new \XoopsTree($xoopsDB->prefix('wflinks_cat'), 'cid', 'pid');

    /** @var \XoopsModuleHandler $moduleHandler */
    $MyModule     = xoops_getHandler('module');
    $wflinkModule = $MyModule->getByDirname('wflinks');

    /* @var \XoopsConfigHandler $configHandler */
    $MyConfig     = xoops_getHandler('config');
    $wflinkConfig = $MyConfig->getConfigsByCat(0, $wflinkModule->getVar('mid'));

    $groups = is_object($xoopsUser) ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS;
    /** @var \XoopsGroupPermHandler $grouppermHandler */
    $grouppermHandler = xoops_getHandler('groupperm');

    $sitemap = [];
    $sql     = 'SELECT * FROM ' . $xoopsDB->prefix('wflinks_cat') . ' WHERE pid=0 ORDER BY weight';
    $result  = $xoopsDB->queryF($sql);
    while (false !== ($myrow = $xoopsDB->fetchArray($result))) {
        if ($grouppermHandler->checkRight('WFLinkCatPerm', $myrow['cid'], $groups, $wflinkModule->getVar('mid'))) {
            $i                              = (int)$myrow['cid'];
            $sitemap['parent'][$i]['id']    = (int)$myrow['cid'];
            $sitemap['parent'][$i]['title'] = htmlspecialchars($myrow['title'], ENT_QUOTES | ENT_HTML5);
            $sitemap['parent'][$i]['url']   = 'viewcat.php?cid=' . (int)$myrow['cid'];
            $arr                            = [];
            if ($sitemap_configs['show_subcategoris']) {
                $arr = $mytree->getFirstChild($myrow['cid'], 'title');
                foreach ($arr as $key => $ele) {
                    if ($grouppermHandler->checkRight('WFLinkCatPerm', $ele['cid'], $groups, $wflinkModule->getVar('mid'))) {
                        $j                                           = $key;
                        $sitemap['parent'][$i]['child'][$j]['id']    = (int)$ele['cid'];
                        $sitemap['parent'][$i]['child'][$j]['title'] = htmlspecialchars($ele['title'], ENT_QUOTES | ENT_HTML5);
                        $sitemap['parent'][$i]['child'][$j]['image'] = 2;
                        $sitemap['parent'][$i]['child'][$j]['url']   = 'viewcat.php?cid=' . (int)$ele['cid'];
                    }
                }
            }
        }
    }

    return $sitemap;
}