Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Prywatne forum dla userów


DawPi

Rekomendowane odpowiedzi

  • Manager

Dzięki tej modyfikacji możesz wybrać forum w którym dany user będzie widzieć tylko swoje tematy. Super moderatorzy i moderatorzy danego forum oraz administratorzy widzą wszystkie tematy.

By wykonać taką zmianę postępuj wg poniższej instrukcji.

Pliki modyfikowane:

lofiversion/index.php
sources/action_admin/forums.php
sources/action_public/forums.php
sources/action_public/search.php
sources/action_public/topics.php
sources/classes/class_forums.php
sources/components_public/profile/posts.php
sources/components_public/profile/topics.php
skin_acp/IPB2_Standard/acp_skin_html/cp_skin_forums.php

Przejdź do:

ACP > ADMIN > SQL Management > SQL Toolbox >> Run a Query

i wykonaj następujące zapytanie:

alter table ibf_forums add is_private numeric(1) default 0;

oraz:

Pamiętaj by zastąpić ibf_ prefixem Twojej bazy danych.

Nie znasz prefixu bazy danych?

Otwórz plik: conf_global.php

Znajdź:

$INFO['sql_tbl_prefix']			=	'PREFIX';

w miejscu PREFIX jest to ,czego szukasz ;)

Otwórz plik: lofiversion/index.php

Znajdź:

		//--------------------------------
	// Topics...
	//--------------------------------

Dodaj poniżej:

		   //turn on private forum if member is not mod
	 $privatequery = "";
	 $private_forum = $ipsclass->forums->forum_by_id[$id]['is_private'];
	 if (($private_forum == 1) AND ($ipsclass->member['is_mod'] == 0))
	 {
		$privatequery = " AND starter_id=".$ipsclass->member['id'];
	 }

Znajdź:

												'where'  => "approved=1 and forum_id=$id".$query,

Zamień na:

												'where'  => "approved=1 and forum_id=$id".$query.$privatequery,

Zapisz i wyślij.

Otwórz plik: sources/action_admin/forums.php

Znajdź:

							'upload_perms'				=> '',
						'download_perms'			=> '',

Dodaj poniżej:

							//private forum setting
						'is_private'			=> 0,

Znajdź:

		# Permission settings
	$form['permission_showtopic']	= $this->ipsclass->adskin->form_yes_no(  'permission_showtopic'   , ( isset($_POST['permission_showtopic']) AND $_POST['permission_showtopic'] ) ? $_POST['permission_showtopic'] : $forum['permission_showtopic'] );

Dodaj poniżej:

		# Private Forum setting
	$form['is_private'] = $this->ipsclass->adskin->form_yes_no('is_private',(isset($_POST['is_private']) AND $_POST['is_private']) ? $_POST['is_private']: $forum['is_private']);

Znajdź:

						 'notify_modq_emails'	  => $this->ipsclass->input['notify_modq_emails'],
					 'permission_showtopic'	=> intval($this->ipsclass->input['permission_showtopic']),

Dodaj poniżej:

						 //private forum setting
					 'is_private'		   => intval($this->ipsclass->input['is_private']),

Zapisz i wyślij.

Otwórz plik: sources/action_public/forums.php

Znajdź:

		if ( $topicfilter == 'ireplied' )

Dodaj wyżej:

		//turn on private forum if member is not mod
	if (($this->forum['is_private']) AND ($this->ipsclass->member['is_mod'] == 0)) {
		$privatequery = " AND t.starter_id=".$this->ipsclass->member['id'];
	} else {
		$privatequery = "";
	}

Znajdź:

			$this->ipsclass->DB->simple_construct( array( 'select' => '*',
													  'from'   => 'topics t',
													  'where'  =>  $query . $add_query,
													  'order'  => 't.pinned DESC, '.$topic_sort.' t.'.$sort_key .' '. $r_sort_by,
													  'limit'  => array( intval($First), $this->ipsclass->vars['display_max_topics'] )
											 )	  );

Zamień na:

			$this->ipsclass->DB->simple_construct( array( 'select' => '*',
													  'from'   => 'topics t',
													  'where'  =>  $query . $add_query . $privatequery,
													  'order'  => 't.pinned DESC, '.$topic_sort.' t.'.$sort_key .' '. $r_sort_by,
													  'limit'  => array( intval($First), $this->ipsclass->vars['display_max_topics'] )
											 )	  );

Zapisz i wyślij.

Otwórz plik: sources/action_public/search.php

znajdź:

		//-----------------------------------------
	// Return
	//-----------------------------------------

	$this->searchable_forums = $final;

	return implode( "," , $final );

Dodaj wyżej:

	//-----------------------------------------
// Remove private forums
//-----------------------------------------

$private_forums= $this->ipsclass->DB->simple_exec_query( array ('select' => 'id', 'from' => 'forums', 'where'=> 'is_private=1'));

if (is_array( $private_forums) and count( $private_forums) ) {
	if (is_array($final) and count($final)){
		$tmp = $final;
		$final = array();
		foreach ($tmp as $id) {
			if (in_array($id,$private_forums)){	
				continue;
			} else {
				$final[] = $id;
			}
		}
	}
}

Zapisz i wyślij.

Otwórz plik: sources/action_public/topics.php

Znajdź:

		if ( isset($this->ipsclass->input['view']) )
	{

Dodaj poniżej:

		$privatequery = "";
	if (($this->forum['is_private'] == 1) AND ($this->ipsclass->member['is_mod'] == 0))
	{
		$privatequery = " AND starter_id=".$this->ipsclass->member['id'];
	}

Znajdź:

				//-----------------------------------------
			// Newer
			//-----------------------------------------


			$this->ipsclass->DB->simple_construct( array( 'select' => 'tid',
														  'from'   => 'topics',
														  'where'  => "forum_id=".$this->forum['id']." AND approved=1 AND state <> 'link' AND last_post > ".$this->topic['last_post'],
														  'order'  => 'last_post',
														  'limit'  => array( 0,1 )
												)	  );

Zamień na:

				//-----------------------------------------
			// Newer
			//-----------------------------------------


			$this->ipsclass->DB->simple_construct( array( 'select' => 'tid',
														  'from'   => 'topics',
														  'where'  => "forum_id=".$this->forum['id']." AND approved=1 AND state <> 'link' AND last_post > ".$this->topic['last_post'].$privatequery,
														  'order'  => 'last_post',
														  'limit'  => array( 0,1 )
												)	  );

Znajdź:

				//-----------------------------------------
			// Older
			//-----------------------------------------

			$this->ipsclass->DB->simple_construct( array( 'select' => 'tid',
														  'from'   => 'topics',
														  'where'  => "forum_id=".$this->forum['id']." AND approved=1 AND state <> 'link' AND last_post < ".$this->topic['last_post'],
														  'order'  => 'last_post DESC',
														  'limit'  => array( 0,1 )
												)	  );

Zamień na:

				//-----------------------------------------
			// Older
			//-----------------------------------------

			$this->ipsclass->DB->simple_construct( array( 'select' => 'tid',
														  'from'   => 'topics',
														  'where'  => "forum_id=".$this->forum['id']." AND approved=1 AND state <> 'link' AND last_post < ".$this->topic['last_post'].$privatequery,
														  'order'  => 'last_post DESC',
														  'limit'  => array( 0,1 )
												)	  );

Zapisz i wyślij.

Otwórz plik: sources/classes/class_forums.php

Znajdź:

		$forum_data['last_post'] = $this->ipsclass->get_date($forum_data['last_post'], 'LONG');

Dodaj powyżej:

		//change last poster info if forum is private and member is not mod
	if (($forum_data['is_private'] == 1) AND !($this->ipsclass->member['g_is_supmod']) and (!isset($this->ipsclass->member['_moderator'][ $forum_data['id'] ]['post_q']) AND $this->ipsclass->member['_moderator'][ $forum_data['id'] ]['post_q'] != 1 )) {
		$this->ipsclass->DB->simple_construct( array( 'select' => '*',
										'from' => 'topics',
										'where' => "forum_id=".$forum_data['id']."  and starter_id=".$this->ipsclass->member['id'],
										'order' => 'last_post DESC',
										'limit' => '0,1',
									 )	  );
		$this->ipsclass->DB->simple_exec();
		$private_row=$this->ipsclass->DB->fetch_row();
		$forum_data['last_post'] = $private_row['last_post'];
		$forum_data['last_id'] = $private_row['tid'];
		$forum_data['last_title'] = $private_row['title'];
		$forum_data['last_poster_id'] = $private_row['last_poster_id'];
		$forum_data['last_poster_name'] = $private_row['last_poster_name'];
	}

Zapisz i wyślij.

Otwórz plik: sources/components_public/profile/posts.php

Znajdź:

			$content .= $this->ipsclass->compiled_templates['skin_profile']->personal_portal_single_column( $row, $this->ipsclass->lang['profile_read_topic'], $this->ipsclass->base_url.'act=findpost&pid='.$row['pid'], $this->ipsclass->lang['profile_in_topic'] . $row['title'] );

Zamień na:

			//-----------------------------------------
		// check for private forums
		//-----------------------------------------

		$t = $this->ipsclass->DB->simple_exec_query( array ('select' => 'forum_id',
									'from'	=> 'topics',
									'where'	=> 'tid='.$row['topic_id']));
		$f = $this->ipsclass->DB->simple_exec_query( array ('select' => 'is_private',
									'from'	=> 'forums',
									'where'	=> 'id='.$t['forum_id']));
		if ($f['is_private'] == 1)
		{
			if (($this->ipsclass->member['g_is_supmod']) or ($this->ipsclass->member['id'] == $row['starter_id']))
			{
				$content .= $this->ipsclass->compiled_templates['skin_profile']->personal_portal_single_column( $row, $this->ipsclass->lang['profile_read_topic'], $this->ipsclass->base_url.'act=findpost&pid='.$row['pid'], $this->ipsclass->lang['profile_in_topic'] . $row['title'] );
			}
		} else {
			$content .= $this->ipsclass->compiled_templates['skin_profile']->personal_portal_single_column( $row, $this->ipsclass->lang['profile_read_topic'], $this->ipsclass->base_url.'act=findpost&pid='.$row['pid'], $this->ipsclass->lang['profile_in_topic'] . $row['title'] );
		}

Zapisz i wyślij.

Otwórz plik:

sources/components_public/profile/topics.php

znajdź:

$content .= $this->ipsclass->compiled_templates['skin_profile']->personal_portal_single_column( $row, $this->ipsclass->lang['profile_read_topic'], $this->ipsclass->base_url.'act=findpost&pid='.$row['pid'], $row['title'] );

Zamień na:

			//-----------------------------------------
		// check for private forums
		//-----------------------------------------

		$f = $this->ipsclass->DB->simple_exec_query( array ('select' => 'is_private',
									'from'	=> 'forums',
									'where'	=> 'id='.$row['forum_id'] ));
		if ($f['is_private'] == 1)
		{
			if (($this->ipsclass->member['g_is_supmod']) or ($this->ipsclass->member['id'] == $row['starter_id']))
			{
				$content .= $this->ipsclass->compiled_templates['skin_profile']->personal_portal_single_column( $row, $this->ipsclass->lang['profile_read_topic'], $this->ipsclass->base_url.'act=findpost&pid='.$row['pid'], $row['title'] );
			}
		} else {
			$content .= $this->ipsclass->compiled_templates['skin_profile']->personal_portal_single_column( $row, $this->ipsclass->lang['profile_read_topic'], $this->ipsclass->base_url.'act=findpost&pid='.$row['pid'], $row['title'] );
		}

Zapisz i wyślij.

Otwórz plik:

skin_acp/IPB2_Standard/acp_skin_html/cp_skin_forums.php

Znajdź:

	<tr>
	   <td width='40%' class='tablerow1'><strong>Allow members who can see the forum but cannot read topics to see the topic list</strong><div class='desctext'>If yes, the member will be able to see the topic titles but will not be able to read the topic posts when clicked.</div></td>
	   <td width='60%' class='tablerow2'>{$form['permission_showtopic']}</td>
</tr>

Dodaj poniżej:

	<tr>
	<td width='40%' class='tablerow1'><strong>Forum prywatne?</strong></td>
	<td width='60%' class='tablerow2'>{$form['is_private']}</td>
</tr>

Zapisz i wyślij.

Pozdrawiam,

DawPi

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.