/** * 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); }
/** * 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(" ", "\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 ''; } } }