Перейти к публикации

Возрастное ограничение для новостей.


Рекомендованные сообщения

Возрастное ограничение для новостей.

Для версий: DLE 13.0

 

Описание:

Данный модуль выводить или скрывает текст если возраст пользователя не соответствует возрастному ограничению заданной определённой статье.

 

Теги:

[agelimit birthday="birthday" limit="age"] текст [/agelimit] - Выводят текст указанный в них если возраст больше или равен возрастному ограничению;
[not-agelimit birthday="birthday" limit="age"] текст [/not-agelimit] - Выводят текст указанный в них если возраст меньше или равен возрастному ограничению;

birthday="birthday" - Название доп. поля пользователя, обязательно дата виде: 01.04.2000. Также можно задать дату или возраст виде текста (birthday="01.04.2000или birthday="16" );

limit="age" - Название доп. поля новостей, задаем число. Также можно задать возраст виде числа (limit="16"). 

Если birthday или limit не указаны или отсутствую, то будут равный нулю.

 

ПредупреждаюМодуль сырой, если есть предложения по улучшению или исправления с удовольствием вас выслушаю.

<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
	<name>Возрастное ограничение для новостей.</name>
	<description></description>
	<icon></icon>
	<version></version>
	<dleversion></dleversion>
	<versioncompare>less</versioncompare>
	<mysqlinstall><![CDATA[]]></mysqlinstall>
	<mysqlupgrade><![CDATA[]]></mysqlupgrade>
	<mysqlenable><![CDATA[]]></mysqlenable>
	<mysqldisable><![CDATA[]]></mysqldisable>
	<mysqldelete><![CDATA[]]></mysqldelete>
	<file name="engine/modules/functions.php">
		<operation action="before">
			<searchcode><![CDATA[?>]]></searchcode>
			<replacecode><![CDATA[function age_limit($matches=array()){
	global $member_id, $is_logged,$member_id,$row;
  
  	if(!count($matches))return "";
   	$age = '0';
  	$limit = '0';
  	if(preg_match( "#birthday=['\"](.*?)['\"]#i", $matches[2], $birthday)){
      
      if(preg_match( "#(".$birthday[1].")\|(.*)#i", $member_id['xfields'], $xfields)){
        	$birthday = $xfields[2];
      }else{
      		$birthday = $birthday[1]; 
      } 
      if(preg_match( "#([0-9]{1,2})\.([0-9]{1,2}).([0-9]{1,4})#", $birthday, $date )){  
          if($date[2] > date('m') || $date[2] == date('m') && $date[1] > date('d'))
              $age = (date('Y') - $date[3] - 1);
          else
              $age = (date('Y') - $date[3]);
      }else{
         $age = $birthday[1];
      }
    }
	if(preg_match("#limit=['\"](.*?)['\"]#i", $matches[2], $limit_match)){	
		$xfieldsdata = xfieldsdataload($row['xfields']);
        if($xfieldsdata[$limit_match[1]])
			$limit = $xfieldsdata[$limit_match[1]];
        else
          	$limit = $limit_match[1];
    }
	if($matches[1] == "agelimit"){ 
      	if($is_logged and $age>=$limit) return $matches[3];  else return'';
    }elseif($matches[1] == "not-agelimit"){ 
      	if($age<=$limit) return $matches[3]; else return'';
    }    
}]]></replacecode>
		</operation>
	</file>
	<file name="engine/modules/show.short.php">
		<operation action="before">
			<searchcode><![CDATA[$tpl->compile( 'content' );]]></searchcode>
			<replacecode><![CDATA[if (strpos ( $tpl->copy_template, "[agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(agelimit) (.+?)\\](.*?)\\[/agelimit\\]#is", "age_limit", $tpl->copy_template );
}
if (strpos ( $tpl->copy_template, "[not-agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(not-agelimit) (.+?)\\](.*?)\\[/not-agelimit\\]#is", "age_limit", $tpl->copy_template );
}]]></replacecode>
		</operation>
	</file>
	<file name="engine/modules/show.full.php">
		<operation action="before">
			<searchcode><![CDATA[$tpl->compile( 'content' );]]></searchcode>
			<replacecode><![CDATA[if (strpos ( $tpl->copy_template, "[agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(agelimit) (.+?)\\](.*?)\\[/agelimit\\]#is", "age_limit", $tpl->copy_template );
}
if (strpos ( $tpl->copy_template, "[not-agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(not-agelimit) (.+?)\\](.*?)\\[/not-agelimit\\]#is", "age_limit", $tpl->copy_template );
}]]></replacecode>
		</operation>
	</file>
	<file name="engine/modules/show.custom.php">
		<operation action="before">
			<searchcode><![CDATA[$tpl->compile( 'content' );]]></searchcode>
			<replacecode><![CDATA[if (strpos ( $tpl->copy_template, "[agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(agelimit) (.+?)\\](.*?)\\[/agelimit\\]#is", "age_limit", $tpl->copy_template );
}
if (strpos ( $tpl->copy_template, "[not-agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(not-agelimit) (.+?)\\](.*?)\\[/not-agelimit\\]#is", "age_limit", $tpl->copy_template );
}]]></replacecode>
		</operation>
		<operation action="after">
			<searchcode><![CDATA[$global_news_count = 0;]]></searchcode>
			<replacecode><![CDATA[global $row;]]></replacecode>
		</operation>
	</file>
</dleplugin>

 

Изменено пользователем Xaker1493
Ссылка на сообщение
Поделиться на других сайтах

Версия: 0.2

- мелкие исправления.

<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
	<name>Возрастное ограничение для новостей.</name>
	<description>Данный модуль выводить или скрывает текст если возраст пользователя не соответствует возрастному ограничению заданной определённой статье.</description>
	<icon></icon>
	<version>0.2</version>
	<dleversion>13.0</dleversion>
	<versioncompare>greater</versioncompare>
	<mysqlinstall><![CDATA[]]></mysqlinstall>
	<mysqlupgrade><![CDATA[]]></mysqlupgrade>
	<mysqlenable><![CDATA[]]></mysqlenable>
	<mysqldisable><![CDATA[]]></mysqldisable>
	<mysqldelete><![CDATA[]]></mysqldelete>
	<file name="engine/modules/functions.php">
		<operation action="before">
			<searchcode><![CDATA[?>]]></searchcode>
			<replacecode><![CDATA[function age_limit($matches=array()){
	global $member_id, $is_logged,$member_id,$row;
  
  	if(!count($matches))return "";
  	if(preg_match( "#birthday=['\"](.*?)['\"]#i", $matches[2], $birthday)){
        $birthday = preg_match( "#(".$birthday[1].")\|(.*)#i", $member_id['xfields'], $xfields)?$xfields[2]:$birthday[1];
		if(preg_match( "#([0-9]{1,2})\.([0-9]{1,2}).([0-9]{1,4})#", $birthday, $date )){  
            if($date[2] > date('m') || $date[2] == date('m') && $date[1] > date('d'))
                $age = (date('Y') - $date[3] - 1);
          	else
              	$age = (date('Y') - $date[3]);
      }else{
         $age = 0;
      }
    }else{
      	 $age = 0;
    }
	if(preg_match("#limit=['\"](.*?)['\"]#i", $matches[2], $limit_match)){	
		$xfieldsdata = xfieldsdataload($row['xfields']);
        $limit = $xfieldsdata[$limit_match[1]]?$xfieldsdata[$limit_match[1]]:$limit_match[1];
    }else{
    	$limit = 0;
    }
	if($matches[1] == "agelimit"){ 
      	if($is_logged and $age>=$limit) return $matches[3];  else return'';
    }elseif($matches[1] == "not-agelimit"){ 
      	if($age<$limit) return $matches[3]; else return'';
    }    
}]]></replacecode>
		</operation>
	</file>
	<file name="engine/modules/show.short.php">
		<operation action="before">
			<searchcode><![CDATA[$tpl->compile( 'content' );]]></searchcode>
			<replacecode><![CDATA[if (strpos ( $tpl->copy_template, "[agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(agelimit) (.+?)\\](.*?)\\[/agelimit\\]#is", "age_limit", $tpl->copy_template );
}
if (strpos ( $tpl->copy_template, "[not-agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(not-agelimit) (.+?)\\](.*?)\\[/not-agelimit\\]#is", "age_limit", $tpl->copy_template );
}]]></replacecode>
		</operation>
	</file>
	<file name="engine/modules/show.full.php">
		<operation action="before">
			<searchcode><![CDATA[$tpl->compile( 'content' );]]></searchcode>
			<replacecode><![CDATA[if (strpos ( $tpl->copy_template, "[agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(agelimit) (.+?)\\](.*?)\\[/agelimit\\]#is", "age_limit", $tpl->copy_template );
}
if (strpos ( $tpl->copy_template, "[not-agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(not-agelimit) (.+?)\\](.*?)\\[/not-agelimit\\]#is", "age_limit", $tpl->copy_template );
}]]></replacecode>
		</operation>
	</file>
	<file name="engine/modules/show.custom.php">
		<operation action="before">
			<searchcode><![CDATA[$tpl->compile( 'content' );]]></searchcode>
			<replacecode><![CDATA[if (strpos ( $tpl->copy_template, "[agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(agelimit) (.+?)\\](.*?)\\[/agelimit\\]#is", "age_limit", $tpl->copy_template );
}
if (strpos ( $tpl->copy_template, "[not-agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(not-agelimit) (.+?)\\](.*?)\\[/not-agelimit\\]#is", "age_limit", $tpl->copy_template );
}]]></replacecode>
		</operation>
		<operation action="after">
			<searchcode><![CDATA[$global_news_count = 0;]]></searchcode>
			<replacecode><![CDATA[global $row;]]></replacecode>
		</operation>
	</file>
</dleplugin>

 

Изменено пользователем Xaker1493
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...