Перейти к контенту

iBF Portal v4.0 - нужна модификация списка постов


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

У меня IPB 1.2 final и iBF Portal v4.0 by bammerboy - http://student.vetdoctor.ru

Задача - сделать так, чтобы можно было указывать, из каких форумов не надо выводить топики на главную страницу в блоке Latest Threads Since Last Visit (BIG version).

 

В этом блоке выводятся посты со времени последнего визита пользователя на сайт.

 

Плачу 20$ через WebMoney, Яндекс.Деньги или при личной встрече в Москве. Естественно, после демонстрации корректной работы модификации.

 

icq 133 569 163

 

Спасибо.

 

Код этого блока такой:

//*********************************************/
// Latest Threads Since Last Visit (BIG version)
//*********************************************/
function do_new_posts_big() {
		global $DB, $ibforums, $std;

		if ($ibforums->vars['portal_newposts'] && $ibforums->member['id'])
		{

		if ($ibforums->vars['portal_num_newposts'])
		   $number_of_posts = $ibforums->vars['portal_num_newposts'];
		else
		   $number_of_posts = 5;			

			// Get User Data
				if ( ($ibforums->vars['show_user_posted'] == 1) and ($ibforums->member['id']) )
				{
					$query = $DB->query("SELECT DISTINCT ibf_posts.author_id, ibf_topics.*, ibf_forums.name, ibf_forums.read_perms
										 FROM ibf_topics, ibf_forums
										 LEFT JOIN ibf_posts ON (ibf_topics.tid = ibf_posts.topic_id AND ibf_posts.author_id = '".$ibforums->member['id']."') 
							 WHERE ibf_topics.forum_id = ibf_forums.id AND 
									ibf_topics.last_post > ".$ibforums->input['last_visit']." AND
									(ibf_forums.read_perms = '*'
									OR ibf_forums.read_perms LIKE '".$ibforums->member['mgroup']."' 
									OR ibf_forums.read_perms LIKE '%,".$ibforums->member['mgroup']."' 
									OR ibf_forums.read_perms LIKE '".$ibforums->member['mgroup'].",%' 
									OR ibf_forums.read_perms LIKE '%,".$ibforums->member['mgroup'].",%')
										 ORDER BY last_post DESC" );
				}
				else
				{
		$query = $DB->query( "SELECT ibf_topic.*, f.name
							  FROM ibf_topics
							  RIGHT JOIN ibf_forums ON i.forum_id = ibf_forums.id 
							  WHERE ibf_topics.forum_id = ibf_forums.id AND 
									ibf_topics.last_post > ".$ibforums->input['last_visit']." AND
									(ibf_forums.read_perms = '*'
									OR ibf_forums.read_perms LIKE '".$ibforums->member['mgroup']."' 
									OR ibf_forums.read_perms LIKE '%,".$ibforums->member['mgroup']."' 
									OR ibf_forums.read_perms LIKE '".$ibforums->member['mgroup'].",%' 
									OR ibf_forums.read_perms LIKE '%,".$ibforums->member['mgroup'].",%')
							  ORDER BY last_post DESC" );
		}

			while( $row = $DB->fetch_row($query) ) {

			if ( $forum = $std->my_getcookie('fread_'.$row['forum_id']) )
			{
					$ibforums->input['last_visit'] = $forum > $ibforums->input['last_visit'] ? $forum : $ibforums->input['last_visit'];
			}
				$data.= $this->render_entry($row);
			}

			return $this->html->new_posts_big($data);
		}
	else
	{
		return '';
	}		

}

Ссылка на комментарий
Поделиться на других сайтах

Да, работа была выполнена в короткий срок и качественно. Поскольку склонен к альтруизму, выкладываю тут код этой модификации. :D

 

/sources/Admin/ad_settings.php
Найти:
		case 'doportal':
			$this->save_config( array(
Добавить после:
'forums_for_noimport', 

Найти:
$this->common_header('doportal', 'Portal', 'Please enter all fields correctly');
Добавить ниже:
	  $ADMIN->html .= $SKIN->add_td_row( array ("<b>Не экспортируемые форумы</b><br>Укажите здесь через запятую номера форумов, из которых не следует импортировать информацию на главную страницу портала.",
												$SKIN->form_input( "forums_for_noimport", $INFO["forums_for_noimport"]
)
									 )		  );

/sources/Portal.php
Найти:
function do_latest_posts_big() {
		global $DB, $ibforums, $std;
Заменить на:
function do_latest_posts_big() {
		global $DB, $ibforums, $std, $INFO;
		   $_nif = explode(",",$INFO['forums_for_noimport']);
		   for($i=0;$i<count($_nif);$i++){
				$nif .= ", ".(string)intval($_nif[$i]);
		   }
		   $nif = substr($nif, 2);
		   if(empty($nif)){
				$nif = intval($INFO['forums_for_noimport']);
				if(empty($nif)){
					 $nif = "0";
				}
		   }
Найти далее:
WHERE ibf_topics.forum_id = ibf_forums.id AND 
Добавить после:
ibf_forums.id NOT IN ($nif) AND 

Найти:
function do_new_posts_big() {
		global $DB, $ibforums, $std;
Заменить на:
function do_new_posts_big() {
		global $DB, $ibforums, $std, $INFO;
		   $_nif = explode(",",$INFO['forums_for_noimport']);
		   for($i=0;$i<count($_nif);$i++){
				$nif .= ", ".(string)intval($_nif[$i]);
		   }
		   $nif = substr($nif, 2);
		   if(empty($nif)){
				$nif = intval($INFO['forums_for_noimport']);
				if(empty($nif)){
					 $nif = "0";
				}
		   }

Найти далее:
WHERE ibf_topics.forum_id = ibf_forums.id AND 
Добавить после:
ibf_forums.id NOT IN ($nif) AND

Ссылка на комментарий
Поделиться на других сайтах

Пока не закритиковали - исправляюсь.

 

/sources/Admin/ad_settings.php
Найти:
		case 'doportal':
			$this->save_config( array(
Добавить после:
'forums_for_noimport', 

Найти:
$this->common_header('doportal', 'Portal', 'Please enter all fields correctly');
Добавить ниже:
	  $ADMIN->html .= $SKIN->add_td_row( array ("<b>Не экспортируемые форумы</b><br>Укажите здесь через запятую номера форумов, из которых не следует импортировать информацию на главную страницу портала.",
												$SKIN->form_input( "forums_for_noimport", $INFO["forums_for_noimport"]
)
									 )		  );

/sources/Portal.php
Найти:
function do_latest_posts_big() {
		global $DB, $ibforums, $std;
Заменить на:
function do_latest_posts_big() {
		global $DB, $ibforums, $std, $INFO;
		   $_nif = explode(",",$INFO['forums_for_noimport']);
		   for($i=0;$i<count($_nif);$i++){
				$nif .= ", ".(string)intval($_nif[$i]);
		   }
		   $nif = substr($nif, 2);
		   if(empty($nif)){
				$nif = intval($INFO['forums_for_noimport']);
		   }
Найти далее:
WHERE ibf_topics.forum_id = ibf_forums.id AND 
Добавить после:
ibf_forums.id NOT IN ($nif) AND 

Найти:
function do_new_posts_big() {
		global $DB, $ibforums, $std;
Заменить на:
function do_new_posts_big() {
		global $DB, $ibforums, $std, $INFO;
		   $_nif = explode(",",$INFO['forums_for_noimport']);
		   for($i=0;$i<count($_nif);$i++){
				$nif .= ", ".(string)intval($_nif[$i]);
		   }
		   $nif = substr($nif, 2);
		   if(empty($nif)){
				$nif = intval($INFO['forums_for_noimport']);
		   }

Найти далее:
WHERE ibf_topics.forum_id = ibf_forums.id AND 
Добавить после:
ibf_forums.id NOT IN ($nif) AND

intval() всегда, вернёт число.

Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

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

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

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

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.