Ejemplo n.º 1
0
/**
 * Save metagen's blacklist words
 */
function MetagenBlackList()
{
    $blacklist = new news_blacklist();
    $words = $blacklist->getAllKeywords();
    if (isset($_POST['go']) && $_POST['go'] == _AM_DELETE) {
        foreach ($_POST['blacklist'] as $black_id) {
            $blacklist->delete($black_id);
        }
        $blacklist->store();
    } else {
        if (isset($_POST['go']) && $_POST['go'] == _AM_ADD) {
            $p_keywords = $_POST['keywords'];
            $keywords = explode("\n", $p_keywords);
            foreach ($keywords as $keyword) {
                if (xoops_trim($keyword) != '') {
                    $blacklist->addkeywords(xoops_trim($keyword));
                }
            }
            $blacklist->store();
        }
    }
    redirect_header('index.php?op=metagen', 0, _AM_DBUPDATED);
}
Ejemplo n.º 2
0
/**
 * Create the meta keywords based on the content
 *
 * @package News
 * @author Instant Zero (http://xoops.instant-zero.com)
 * @copyright (c) Instant Zero
 */
function news_createmeta_keywords($content)
{
    include XOOPS_ROOT_PATH . '/modules/news/config.php';
    include_once XOOPS_ROOT_PATH . '/modules/news/class/blacklist.php';
    include_once XOOPS_ROOT_PATH . '/modules/news/class/registryfile.php';
    if (!$cfg['meta_keywords_auto_generate']) {
        return '';
    }
    $registry = new news_registryfile('news_metagen_options.txt');
    $tcontent = '';
    $tcontent = $registry->getfile();
    if (xoops_trim($tcontent) != '') {
        list($keywordscount, $keywordsorder) = explode(',', $tcontent);
    } else {
        $keywordscount = $cfg['meta_keywords_count'];
        $keywordsorder = $cfg['meta_keywords_order'];
    }
    $tmp = array();
    // Search for the "Minimum keyword length"
    if (isset($_SESSION['news_keywords_limit'])) {
        $limit = $_SESSION['news_keywords_limit'];
    } else {
        $config_handler =& xoops_gethandler('config');
        $xoopsConfigSearch =& $config_handler->getConfigsByCat(XOOPS_CONF_SEARCH);
        $limit = $xoopsConfigSearch['keyword_min'];
        $_SESSION['news_keywords_limit'] = $limit;
    }
    $myts =& MyTextSanitizer::getInstance();
    $content = str_replace("<br />", " ", $content);
    $content = $myts->undoHtmlSpecialChars($content);
    $content = strip_tags($content);
    $content = strtolower($content);
    $search_pattern = array("&nbsp;", "\t", "\r\n", "\r", "\n", ",", ".", "'", ";", ":", ")", "(", '"', '?', '!', '{', '}', '[', ']', '<', '>', '/', '+', '-', '_', '\\', '*');
    $replace_pattern = array(' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
    $content = str_replace($search_pattern, $replace_pattern, $content);
    $keywords = explode(' ', $content);
    switch ($keywordsorder) {
        case 0:
            // Ordre d'apparition dans le texte
            $keywords = array_unique($keywords);
            break;
        case 1:
            // Ordre de fréquence des mots
            $keywords = array_count_values($keywords);
            asort($keywords);
            $keywords = array_keys($keywords);
            break;
        case 2:
            // Ordre inverse de la fréquence des mots
            $keywords = array_count_values($keywords);
            arsort($keywords);
            $keywords = array_keys($keywords);
            break;
    }
    // Remove black listed words
    $metablack = new news_blacklist();
    $words = $metablack->getAllKeywords();
    $keywords = $metablack->remove_blacklisted($keywords);
    foreach ($keywords as $keyword) {
        if (strlen($keyword) >= $limit && !is_numeric($keyword)) {
            $tmp[] = $keyword;
        }
    }
    $tmp = array_slice($tmp, 0, $keywordscount);
    if (count($tmp) > 0) {
        return implode(',', $tmp);
    } else {
        if (!isset($config_handler) || !is_object($config_handler)) {
            $config_handler =& xoops_gethandler('config');
        }
        $xoopsConfigMetaFooter =& $config_handler->getConfigsByCat(XOOPS_CONF_METAFOOTER);
        if (isset($xoopsConfigMetaFooter['meta_keywords'])) {
            return $xoopsConfigMetaFooter['meta_keywords'];
        } else {
            return '';
        }
    }
}