Jump to content
Sign in to follow this  
Xaker1493

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

Recommended Posts

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

Для версий: 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>

 

Edited by Xaker1493
  • Like 2

Share this post


Link to post
Share on other sites

Версия: 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>

 

Edited by Xaker1493

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...