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

Blokada możliwości edycji/usuwania postów adminów grupy ROOT


DawPi

Rekomendowane odpowiedzi

  • Manager

Opis:

Jeśli chcesz zablokować moderatorom/sm edycję bądź usuwanie postów napisanych przez ROOT adminów postępuj wg poniższej instrukcji.

Kompatybilność: 2.2. & 2.3 IPB

Pliki co edycji:

./sources/action_admin/forums.php

./sources/action_public/moderate.php

./sources/classes/post/class_post_edit.php

./sources/lib/func_mod.php

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

Znajdź: [ function do_empty() ]

//-----------------------------------------
// @check_ids: reset the ids if possible
// -----------
// Accepts: $id (array | string), $is_post (boolean)
// Returns: NOTHING (TRUE | FALSE)
//-----------------------------------------

function check_ids(&$id,$is_post=1,$warn=0)
{
	if ($this->ipsclass->member['mgroup'] == $this->ipsclass->vars['admin_group']) return FALSE;

	if (is_array($id))
	{
		if (count($id)) $id_string = " IN(".implode(",",$id).")";
		else return FALSE;
	}
	else
	{
		if ($id > 0) $id_string = "=".$id;
		else return FALSE;
	}

	//-----------------------------------------
	// Check stuff
	//-----------------------------------------

	$root_p = array();

	if ($is_post)
	{
		$this->ipsclass->DB->build_query(array('select'   => 'p.pid',
											   'from'     => array('posts' => 'p'),
											   'where'    => 'm.mgroup='.$this->ipsclass->vars['admin_group'].' AND p.pid'.$id_string,
											   'add_join' => array(
											   # MEMBER TABLE JOIN
											   0 => array('from'  => array('members' => 'm'),
										 		  		  'where' => 'm.id=p.author_id',
										 				  'type'  => 'left')
										 						)
										)    );
		$this->ipsclass->DB->exec_query();

		if (! $this->ipsclass->DB->get_num_rows()) return FALSE;

		while ($r = $this->ipsclass->DB->fetch_row())
		{
			$root_p[$r['pid']] = 1;
		}
	}
	else
	{
		$this->ipsclass->DB->build_query(array('select'   => 't.tid',
											   'from'     => array('topics' => 't'),
											   'where'    => 'm.mgroup='.$this->ipsclass->vars['admin_group'].' AND t.tid'.$id_string,
											   'add_join' => array(
											   # MEMBER TABLE JOIN
											   0 => array('from'  => array('members' => 'm'),
										 		  		  'where' => 'm.id=t.starter_id',
										 				  'type'  => 'left')
										 						)
										)    );
		$this->ipsclass->DB->exec_query();

		if (! $this->ipsclass->DB->get_num_rows()) return FALSE;

		while ($r = $this->ipsclass->DB->fetch_row())
		{
			$root_p[$r['tid']] = 1;
		}
	}

	$this->ipsclass->DB->free_result();

	if (is_array($id))
	{
		foreach ($id as $k => $v)
		{
			if ($root_p[$v]) unset($id[$k]);
		}
	}
	else
	{
		if ($root_p[$id]) $id = 0;
	}

	if (! $id && $warn)
	{
		$this->ipsclass->Error(array('LEVEL' => 2, 'MSG' => 'moderate_no_permission'));
	}

	return TRUE;
}

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ę.