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

Mod zmiany rangi ale bez możliwości degradacji moderatora


marcin5541289779971
Przejdź do rozwiązania Rozwiązane przez DawPi,

Rekomendowane odpowiedzi

Wgrałem moda "Change Group in Moderator Panel 1.2.3 " jednak ma on wadę moderator może usunąć moderatora (zdegradować go do usera). Chciałbym to wyłączyć tak jak jest wyłączona możliwość zmiany rangi admina.

 

W kodzie znalazłem:

				if( $member->isAdmin() )
				{
					throw new \InvalidArgumentException( 'cant_edit_admin_account' );
				}

 

Jakbym tu dodać żeby określone grupy dostawały ten sam komunikat?

 

To zadziała?

 

				if( $member->isAdmin() )
				{
					throw new \InvalidArgumentException( 'cant_edit_admin_account' );
				}
				if( $member->idGroup( array( 23,6,12,4 ) ))
				{
					throw new \InvalidArgumentException( 'cant_edit_admin_account' );
				}

 

Ewentualnie co by tu zastosować?

 

				if( $member->isAdmin() || $member->idGroup( array( 23,6,12,4 ) )
				{
					throw new \InvalidArgumentException( 'cant_edit_admin_account' );
				}

 

czy to przejdzie?

 

Może jest polecenie isMod lub idModerator w IPSie?

Edytowane przez marcin5541289779971
Odnośnik do komentarza
Udostępnij na innych stronach

  • marcin5541289779971 zmienił(a) tytuł na Mod zmiany rangi ale bez możliwości degradacji mdoeratora
  • Manager
9 minut temu, marcin5541289779971 napisał:

if( $member->isAdmin() || $member->inGroup( array( 23,6,12,4 ) )

 

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

Cytat

ParseError: syntax error, unexpected 'throw' (T_THROW) (0)
#0 [internal function]: IPS\IPS::autoloader('IPS\\changegroup...')
#1 [internal function]: spl_autoload_call('IPS\\changegroup...')
#2 /home/mygo/domains/domena.pl/public_html/system/Application/Application.php(850): class_exists('IPS\\changegroup...')
#3 /home/mygo/domains/domena.pl/public_html/system/Application/Application.php(324): IPS\_Application->extensions('core', 'ModCp', true, true)
#4 /home/mygo/domains/domena.pl/public_html/applications/core/modules/front/modcp/modcp.php(85): IPS\_Application::allExtensions('core', 'ModCp', true)
#5 /home/mygo/domains/domena.pl/public_html/system/Dispatcher/Controller.php(101): IPS\core\modules\front\modcp\_modcp->manage()
#6 /home/mygo/domains/domena.pl/public_html/system/Dispatcher/Dispatcher.php(152): IPS\Dispatcher\_Controller->execute()
#7 /home/mygo/domains/domena.pl/public_html/index.php(26): IPS\_Dispatcher->run()
#8 {main}

 

OR i AND to samo

Odnośnik do komentarza
Udostępnij na innych stronach

  • DawPi zmienił(a) tytuł na Mod zmiany rangi ale bez możliwości degradacji moderatora
<?php
/**
 * @brief		Moderator Control Panel Extension: changegroupmcp
 * @author		<a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
 * @copyright	(c) 2001 - 2016 Invision Power Services, Inc.
 * @license		http://www.invisionpower.com/legal/standards/
 * @package		IPS Community Suite
 * @subpackage	Change Group in Moderator Panel
 * @since		02 Nov 2016
 * @version		SVN_VERSION_NUMBER
 */

namespace IPS\changegroupmcp\extensions\core\ModCp;

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}

/**
 * @brief	Moderator Control Panel Extension: changegroupmcp
 */
class _changegroupmcp
{
	/**
	 * Returns the primary tab key for the navigation bar
	 *
	 * @return	string|null
	 */
	public function getTab()
	{
		if ( !\IPS\Member::loggedIn()->inGroup( explode( ',', \IPS\Settings::i()->cgmp_groups ) ) )
		{
			return null;
		}

		return 'change_group';
	}
	
	/**
	 * Manage
	 *
	 * @return	void
	 */
	public function manage()
	{
		if ( !\IPS\Member::loggedIn()->inGroup( explode( ',', \IPS\Settings::i()->cgmp_groups ) ) )
		{
			\IPS\Output::i()->error( 'no_module_permission', '2C224/1', 403, '' );
		}

		\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack( 'modcp_change_group' );
		\IPS\Output::i()->breadcrumb[] = array( NULL, \IPS\Member::loggedIn()->language()->addToStack( 'modcp_change_group' ) );

		$form = new \IPS\Helpers\Form( 'form', 'modcp_change_group_change_group' );
		$form->class = 'ipsForm_vertical';

		if( !isset( \IPS\Request::i()->member ) )
		{
			$user = array();
			if( isset( \IPS\Request::i()->mid ) AND \IPS\Request::i()->mid )
			{
				$user = \IPS\Member::load( \IPS\Request::i()->mid );
			}

			$form->add( new \IPS\Helpers\Form\Member( 'modcp_changegroup_member_find', $user, TRUE, array( 'multiple' => 1, 'placeholder' => \IPS\Member::loggedIn()->language()->addToStack('modcp_changegroup_member_find') ), function( $member ) use ( $form )
			{
				if( $member->isAdmin() )
				{
					throw new \InvalidArgumentException( 'cant_edit_admin_account' );
				}
			} ) );
		}

		if( isset( \IPS\Request::i()->member ) )
		{
			$member = \IPS\Member::load( \IPS\Request::i()->member );

			$groupsStaff = array();
			foreach( \IPS\Member\Group::groups() as $k => $v )
			{
				if ( $k != \IPS\Settings::i()->guest_group AND !\in_array( $k, explode( ',', \IPS\Settings::i()->cgmp_hidestaff ) ) )
				{
					$groupsStaff[ $k ] = $v->name;
				}
			}

			$form->add( new \IPS\Helpers\Form\Radio( 'modcp_changegroup_type', 'primary', TRUE, array(
				'options' 	=> array(
						'primary' 	=> 'modcp_changegroup_p',
						'secondary'	=> 'modcp_changegroup_s',
				),
				'toggles'	=> array(
						'primary'	=> array( 'modcp_changegroup_groups' ),
						'secondary'	=> array( 'modcp_changegroup_sgroups' ),
				)
			) ) );
			
			$form->add( new \IPS\Helpers\Form\Select( 'modcp_changegroup_groups', $member->member_group_id, FALSE, array( 'options' => $groupsStaff, 'parse' => 'normal' ), function( $val )
			{
				if ( $val == 0 )
				{
					throw new \LogicException( 'modcp_change_group_invalid_group' );
				}

				if ( $val != 0 AND \IPS\Member::load( \IPS\Request::i()->modcp_changegroup_member_find, 'name' )->member_group_id == $val )
				{
					throw new \LogicException( 'modcp_change_group_same_group' );
				}
			}, NULL, NULL, 'modcp_changegroup_groups' ) );

			$secGroups = $member->mgroup_others ? explode( ',', $member->mgroup_others ) : array();
			$form->add( new \IPS\Helpers\Form\CheckboxSet( 'modcp_changegroup_sgroups', $secGroups, FALSE, array( 'options' => $groupsStaff, 'multiple' => TRUE ), NULL, NULL, NULL, 'modcp_changegroup_sgroups' ) );
			
			\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'modcp', 'changegroupmcp', 'front' )->changeGroup( $form );
		}

		if( $values = $form->values() )
		{
			if( !isset( \IPS\Request::i()->member ) )
			{
				\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=modcp&tab=change_group", 'front', 'modcp_change_group' )->setQueryString( array( 'member' => $values['modcp_changegroup_member_find']->member_id ) ) );
			}

			$member = \IPS\Member::load( \IPS\Request::i()->member );

			if( $values['modcp_changegroup_type'] == 'primary' )
			{
				$member->member_group_id = $values['modcp_changegroup_groups'];
				$member->save();
				\IPS\Session::i()->modLog( 'modlog__group_changed', array( $member->name => FALSE ) );

				\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=modcp&tab=change_group", 'front', 'modcp_change_group' ), 'saved' );
			}
			else
			{
				$groups = array();
				if( $member->mgroup_others )
				{
					$groupsStaff = array();
					foreach( \IPS\Member\Group::groups() as $k => $v )
					{
						if ( $k != \IPS\Settings::i()->guest_group AND !\in_array( $k, explode( ',', \IPS\Settings::i()->cgmp_hidestaff ) ) )
						{
							$groupsStaff[ $k ] = $v->name;
						}
					}

					$memberSecGroups = array_filter( explode( ',', $member->mgroup_others ) );
					$availSecGroups	 = array_filter( explode( ",", $groupsStaff ) );
					$usersChoice	 = $values['modcp_changegroup_sgroups'];

					if( \count( $usersChoice ) )
					{
						foreach( $availSecGroups as $group )
						{
							$key = array_search( $group, $memberSecGroups );
							if( $key !== FALSE )
							{
								unset( $memberSecGroups[ $key ] );
							}
						}

						$groups = array_unique( array_merge( $usersChoice, $memberSecGroups ) );
					}
				}
				else
				{
					$groups = $values['modcp_changegroup_sgroups'];
				}

				$member->mgroup_others = implode( ',', $groups );
				$member->save();

				\IPS\Output::i()->redirect( \IPS\Http\Url::internal( "app=core&module=modcp&tab=change_group", 'front', 'modcp_change_group' ), 'saved' );
			}
		}

		return \IPS\Theme::i()->getTemplate( 'modcp', 'changegroupmcp', 'front' )->changeGroup( $form );
	}
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
  • Rozwiązanie
if( $member->isAdmin() || $member->inGroup( array( 1, 2, 3, 4, 5, 6 ) ) )

 

  • Dziękuję 1

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