/** * Metagen * * Metagen is a system that can help you to have your page best indexed by search engines. * Except if you type meta keywords and meta descriptions yourself, the module will automatically create them. * From here you can also manage some other options like the maximum number of meta keywords to create and * the keywords apparition's order. */ function Metagen() { include_once XOOPS_ROOT_PATH . "/class/xoopsformloader.php"; global $xoopsModule, $xoopsConfig, $xoopsModuleConfig, $cfg; xoops_cp_header(); $myts =& MyTextSanitizer::getInstance(); if (file_exists(XOOPS_ROOT_PATH . '/modules/news/language/' . $xoopsConfig['language'] . '/main.php')) { include_once XOOPS_ROOT_PATH . '/modules/news/language/' . $xoopsConfig['language'] . '/main.php'; } else { include_once XOOPS_ROOT_PATH . '/modules/news/language/english/main.php'; } adminmenu(8); echo "<h1>" . _AM_NEWS_METAGEN . "</h1>"; echo _AM_NEWS_METAGEN_DESC . "<br /><br />"; // Metagen Options $registry = new news_registryfile('news_metagen_options.txt'); $content = ''; $content = $registry->getfile(); if (xoops_trim($content) != '') { list($keywordscount, $keywordsorder) = explode(',', $content); } else { $keywordscount = $cfg['meta_keywords_count']; $keywordsorder = $cfg['meta_keywords_order']; } $sform = new XoopsThemeForm(_OPTIONS, 'metagenoptions', XOOPS_URL . '/modules/news/admin/index.php', 'post'); $sform->addElement(new XoopsFormHidden('op', 'metagenoptions'), false); $sform->addElement(new XoopsFormText(_AM_NEWS_META_KEYWORDS_CNT, 'keywordscount', 4, 6, $keywordscount), true); $keywordsorder = new XoopsFormRadio(_AM_NEWS_META_KEYWORDS_ORDER, 'keywordsorder', $keywordsorder); $keywordsorder->addOption(0, _AM_NEWS_META_KEYWORDS_INTEXT); $keywordsorder->addOption(1, _AM_NEWS_META_KEYWORDS_FREQ1); $keywordsorder->addOption(2, _AM_NEWS_META_KEYWORDS_FREQ2); $sform->addElement($keywordsorder, false); $button_tray = new XoopsFormElementTray('', ''); $submit_btn = new XoopsFormButton('', 'post', _AM_MODIFY, 'submit'); $button_tray->addElement($submit_btn); $sform->addElement($button_tray); $sform->display(); // Blacklist $sform = new XoopsThemeForm(_AM_NEWS_BLACKLIST, 'metagenblacklist', XOOPS_URL . '/modules/news/admin/index.php', 'post'); $sform->addElement(new XoopsFormHidden('op', 'metagenblacklist'), false); // Remove words $remove_tray = new XoopsFormElementTray(_AM_NEWS_BLACKLIST); $remove_tray->setDescription(_AM_NEWS_BLACKLIST_DESC); $blacklist = new XoopsFormSelect('', 'blacklist', '', 5, true); $words = array(); $metablack = new news_blacklist(); $words = $metablack->getAllKeywords(); if (is_array($words) && count($words) > 0) { foreach ($words as $key => $value) { $blacklist->addOption($key, $value); } } $blacklist->setDescription(_AM_NEWS_BLACKLIST_DESC); $remove_tray->addElement($blacklist, false); $remove_btn = new XoopsFormButton('', 'go', _AM_DELETE, 'submit'); $remove_tray->addElement($remove_btn, false); $sform->addElement($remove_tray); // Add some words $add_tray = new XoopsFormElementTray(_AM_NEWS_BLACKLIST_ADD); $add_tray->setDescription(_AM_NEWS_BLACKLIST_ADD_DSC); $add_field = new XoopsFormTextArea('', 'keywords', '', 5, 70); $add_tray->addElement($add_field, false); $add_btn = new XoopsFormButton('', 'go', _AM_ADD, 'submit'); $add_tray->addElement($add_btn, false); $sform->addElement($add_tray); $sform->display(); }
/** * 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 ''; } } }