Example #1
0
/**
 * Create the meta keywords based on the content
 *
 * @package News
 * @author Instant Zero (http://xoops.instant-zero.com)
 * @copyright (c) Instant Zero
 */
function nw_createmeta_keywords($content)
{
	include NW_MODULE_PATH . '/config.php';
	include_once NW_MODULE_PATH . '/class/blacklist.php';
	include_once NW_MODULE_PATH . '/class/registryfile.php';

	if(!$cfg['meta_keywords_auto_generate']) {
		return '';
	}
	$registry = new nw_registryfile('nw_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['nw_keywords_limit'])) {
		$limit = $_SESSION['nw_keywords_limit'];
	} else {
		$config_handler =& xoops_gethandler('config');
		$xoopsConfigSearch =& $config_handler->getConfigsByCat(XOOPS_CONF_SEARCH);
		$limit = $xoopsConfigSearch['keyword_min'];
		$_SESSION['nw_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 nw_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 '';
		}
	}
}
Example #2
0
/**
 * 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(NW_MODULE_PATH . '/language/'.$xoopsConfig['language'].'/main.php')) {
		include_once NW_MODULE_PATH . '/language/'.$xoopsConfig['language'].'/main.php';
	} else {
		include_once NW_MODULE_PATH . '/language/english/main.php';
	}
    adminmenu(7);
    echo "<h1>"._AM_NW_METAGEN."</h1>";
	echo _AM_NW_METAGEN_DESC."<br /><br />";

	// Metagen Options
	$registry = new nw_registryfile('nw_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', NW_MODULE_URL . '/admin/index.php', 'post');
	$sform->addElement(new XoopsFormHidden('op', 'metagenoptions'), false);
	$sform->addElement(new XoopsFormText(_AM_NW_META_KEYWORDS_CNT, 'keywordscount', 4, 6, $keywordscount), true);
	$keywordsorder=new XoopsFormRadio(_AM_NW_META_KEYWORDS_ORDER, 'keywordsorder', $keywordsorder);
	$keywordsorder->addOption(0,_AM_NW_META_KEYWORDS_INTEXT);
	$keywordsorder->addOption(1,_AM_NW_META_KEYWORDS_FREQ1);
	$keywordsorder->addOption(2,_AM_NW_META_KEYWORDS_FREQ2);
	$sform->addElement($keywordsorder, false);
	$button_tray = new XoopsFormElementTray('' ,'');
	$submit_btn = new XoopsFormButton('', 'post', _AM_NW_MODIFY, 'submit');
	$button_tray->addElement($submit_btn);
	$sform->addElement($button_tray);
	$sform->display();

	// Blacklist
	$sform = new XoopsThemeForm(_AM_NW_BLACKLIST, 'metagenblacklist', NW_MODULE_URL . '/admin/index.php', 'post');
	$sform->addElement(new XoopsFormHidden('op', 'metagenblacklist'), false);

	// Remove words
	$remove_tray = new XoopsFormElementTray(_AM_NW_BLACKLIST);
	$remove_tray->setDescription(_AM_NW_BLACKLIST_DESC);
	$blacklist=new XoopsFormSelect('', 'blacklist','',5,true);
	$words = array();

	$metablack = new nw_blacklist();
	$words = $metablack->getAllKeywords();
	if(is_array($words) && count($words)>0) {
		foreach ($words as $key => $value) {
			$blacklist->addOption($key,$value);
		}
	}

	$blacklist->setDescription(_AM_NW_BLACKLIST_DESC);
	$remove_tray->addElement($blacklist,false);
	$remove_btn = new XoopsFormButton('', 'go', _AM_NW_DELETE, 'submit');
	$remove_tray->addElement($remove_btn,false);
	$sform->addElement($remove_tray);

	// Add some words
	$add_tray = new XoopsFormElementTray(_AM_NW_BLACKLIST_ADD);
	$add_tray->setDescription(_AM_NW_BLACKLIST_ADD_DSC);
	$add_field = new XoopsFormTextArea('', 'keywords', '', 5, 70);
	$add_tray->addElement($add_field,false);
	$add_btn = new XoopsFormButton('', 'go', _AM_NW_ADD, 'submit');
	$add_tray->addElement($add_btn,false);
	$sform->addElement($add_tray);
	$sform->display();
}