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

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() всегда, вернёт число.

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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