Перейти к содержанию

by_ix

Актив
  • Постов

    2310
  • Зарегистрирован

  • Посещение

  • Победитель дней

    171

Сообщения, опубликованные by_ix

  1. а календари тут причём? :bw:

    3 минуты назад, BlackShot сказал:

    конкретным группам установить день и время закрытия форумов

    это уже сложнее.
    проще тогда создать две cron задачи, которые будут каждый день (или в указанные дни) открывать и закрывать форумы.

  2. 6 минут назад, BlackShot сказал:

    отображать календарь со временем

    не совсем понимаю, что это значит.

    нужно просто давать доступ людям к календарю в определённое время? или что.

  3. BlackShot самый простой вариант, это создать новую страницу c блоком.
     

    Спойлер

    создать php блок.
    11.thumb.PNG.a1efeeade4c4eee792f0fa29e74383c1.PNG

    придумать любой ключ.
    22.thumb.PNG.6013b78566c592342290145f453006a8.PNG

    вставить свой код туда, я немного изменил его.
    33.PNG.ec53318aa6b30855106db51f41d9b7da.PNG

    $servername = "***";
    $username = "***";
    $password = ""***";";
    $dbname = ""***";";
    
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
      die("Connection failed: " . $conn->connect_error);
    }
    
    $perm = '';
    $pid = '8';
    $ptypeid = '3';
    
    $sql = "UPDATE core_permission_index SET perm_3='$perm' WHERE perm_id=$pid AND perm_type_id=$ptypeid";
    
    if ($conn->query($sql) === TRUE) {
    echo "<span style='color:green;'>Record updated successfully!</span>";
    } else {
    echo "<span style='color:red;'>Error updating record: </span>" . $conn->error;
    }
    
    $conn->close();
    ?>

    создать страницу, в принципе, без разницу какую, но тебе удобнее второй вариант, думаю.
    44.PNG.9311cc8d1bf7f2f9ebe9dd91189831d5.PNG

    вставить во вкладку Content тот самый ключ с созданного блока.
    55.PNG.de397dc5038865ea266721ac60104caf.PNG

    дать нужным группам разрешения для доступа к странице и блоку и перейти на страницу.
    66.PNG.a18f9b22b3ffe47f7e22d5c7ad311b31.PNG

    наслаждаться.

    при желании, можно на страницу добавить ввод необходимых значений через инпут.
    ещё можно запрос сделать логикой ипс, как писал Desti, но я привык так.

  4. 7 минут назад, BlackShot сказал:

    Должно ли быть так? <{LOCATION}>

    да.
    так же, как и в "public $plugin = '<{ID}>';"
    зайди в: /plugins/k4activeusersnocache/widgets/activeUsersNoCache.php
    и ты увидишь, что там.

  5. 36 минут назад, BlackShot сказал:

    Что вы подразумеваете под "в соседней теме дали ссылку"?

    https://ipbmafia.ru/topic/23438-plugin-tutorialrukovodstvo-po-plaginam/
    тут дали ссылку на документацию.
    перейдя по ней, можно найти раздел с плагинами.
    321.PNG.94917a5d860049d2f983ae7bbc174339.PNG

    33 минуты назад, BlackShot сказал:

    Вы ведь не записали, как создавали плагин

    просто в режиме разработчика создаёшь плагин, заходишь в developer center в плагине и делаешь там всё, что хочешь.
    123.png.44228c2f0c09c0a1c71021f579dcaa07.png

  6. @BlackShot в соседней теме дали ссылку. да и в режиме разработчика создавать небольшие плагины давольно-таки не сложно.

    полезный плагин при использовании дев режима, дабы не заходить постоянно в constants.php: Toggle Developers Mode On/Off Deluxe. 

  7. @the.bunin открой код, почти в конце стоит условие для вертикального блока, в нём только 60 человек могут отображаться, насколько помню. примерно то же самое нужно сделать для горизонтального. 

  8. @the.bunin да. в дефолтном плагине обновление раз в 30 минут. в котором я кинул - в 20. пользователи рандом из тех, что в базе.

    и при каждом редактировании и измении значений, новые плюсуются к предыдущим. 

    через 20+ минут старые спишутся и будут отображаться только новые. 

  9. the.bunin 

    Спойлер
    <?php
    /**
     * @brief		whosOnline Widget
     * @author		<a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
     * @copyright	(c) Invision Power Services, Inc.
     * @license		https://www.invisioncommunity.com/legal/standards/
     * @package		Invision Community
     * @since		28 Jul 2014
     */
    
    namespace IPS\core\widgets;
    
    /* 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;
    }
    
    /**
     * whosOnline Widget
     */
    class _whosOnline extends \IPS\Widget
    {
    	/**
    	 * @brief	Widget Key
    	 */
    	public $key = 'whosOnline';
    	
    	/**
    	 * @brief	App
    	 */
    	public $app = 'core';
    		
    	/**
    	 * @brief	Plugin
    	 */
    	public $plugin = '';
    
    	/**
    	 * Render a widget
    	 *
    	 * @return	string
    	 */
    	public function render()
    	{
    		/* Do we have permission? */
    		if ( !\IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'online' ) ) )
    		{
    			return "";
    		}
    		
    		/* Init */
    		$members     = array();
    		$anonymous   = 0;
    		
    		$users = \IPS\Session\Store::i()->getOnlineUsers( \IPS\Session\Store::ONLINE_MEMBERS, 'desc', NULL, NULL, TRUE );
    		foreach( $users as $row )
    		{
    			switch ( $row['login_type'] )
    			{
    				/* Not-anonymous Member */
    				case \IPS\Session\Front::LOGIN_TYPE_MEMBER:
    					if ( $row['member_id'] != \IPS\Member::loggedIn()->member_id ) // We add them manually to make sure they go at the top of the list
    					{
    						if ( $row['member_name'] )
    						{
    							$members[ $row['member_id'] ] = $row;
    						}
    					}
    					break;
    					
    				/* Anonymous member */
    				case \IPS\Session\Front::LOGIN_TYPE_ANONYMOUS:
    					$anonymous += 1;
    					break;
    			}
    		}
    		$memberCount = \count( $members );
    
    		/* Get an accurate guest count */
    		$guests = \IPS\Session\Store::i()->getOnlineUsers( \IPS\Session\Store::ONLINE_GUESTS | \IPS\Session\Store::ONLINE_COUNT_ONLY, 'desc', NULL, NULL, TRUE );
    		
    		/* If it's on the sidebar (rather than at the bottom), we want to limit it to 60 so we don't take too much space */
    		if ( $this->orientation === 'vertical' and \count( $members ) >= 60 )
    		{
    			$members = \array_slice( $members, 0, 60 );
    		}
    		
    		/* Add ourselves at the top of the list */
    		if( \IPS\Member::loggedIn()->member_id )
    		{
    			$memberCount++;
    						
    			$members = array_merge( array( \IPS\Member::loggedIn()->member_id => array(
    				'member_id'			=> \IPS\Member::loggedIn()->member_id,
    				'member_name'		=> \IPS\Member::loggedIn()->name,
    				'seo_name'			=> \IPS\Member::loggedIn()->members_seo_name,
    				'member_group'		=> \IPS\Member::loggedIn()->member_group_id
    			) ), $members );
    		}
    		
    		/* Display */
    		return $this->output( $members, $memberCount, $guests, $anonymous );
    	}
    }

     

     

  10. при заливе файлов обновы, этот файл заменяется на новый сразу же. тебе не нужна старая версия. залей ласт обнову с заменой и начни установку заново.

  11. BlackShot the.bunin WebUser 

    /applications/core/widgets/activeUsers.php
    заменить всё на:

    <?php
    /**
     * @brief		activeUsers Widget
     * @author		<a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
     * @copyright	(c) Invision Power Services, Inc.
     * @license		https://www.invisioncommunity.com/legal/standards/
     * @package		Invision Community
     * @since		19 Nov 2013
     */
    
    namespace IPS\core\widgets;
    
    /* 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;
    }
    
    /**
     * activeUsers Widget
     */
    class _activeUsers extends \IPS\Widget
    {
    	/**
    	 * @brief	Widget Key
    	 */
    	public $key = 'activeUsers';
    	
    	/**
    	 * @brief	App
    	 */
    	public $app = 'core';
    	
    	/**
    	 * @brief	Plugin
    	 */
    	public $plugin = '';
    
    	/**
    	 * Render a widget
    	 *
    	 * @return	string
    	 */
    	public function render()
    	{
    		/* Do we have permission? */
    		if ( !\IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'online' ) ) )
    		{
    			return "";
    		}
    		
    		$members     = array();
    		$memberCount = 0;
    				
    		/* Build WHERE clause */
    		$parts = parse_url( (string) \IPS\Request::i()->url()->setPage() );
    		
    		if ( \IPS\Settings::i()->htaccess_mod_rewrite )
    		{
    			$url = $parts['scheme'] . "://" . $parts['host'] . ( isset( $parts['port'] ) ? ':' . $parts['port'] : '' ) . $parts['path'];
    		}
    		else
    		{
    			$url = $parts['scheme'] . "://" . $parts['host'] . ( isset( $parts['port'] ) ? ':' . $parts['port'] : '' ) . $parts['path'] . ( isset( $parts['query'] ) ? '?' . $parts['query'] : '' );
    		}
    		
    		$members = \IPS\Session\Store::i()->getOnlineMembersByLocation( \IPS\Dispatcher::i()->application->directory, \IPS\Dispatcher::i()->module->key, \IPS\Dispatcher::i()->controller, \IPS\Request::i()->id, $url );
    		
    		if ( isset( $members[ \IPS\Member::loggedIn()->member_id ] ) )
    		{
    			unset( $members[ \IPS\Member::loggedIn()->member_id ] );
    		}
    		
    		$memberCount = \count( $members );
    		
    		/* If it's on the sidebar (rather than at the bottom), we want to limit it to 60 so we don't take too much space */
    		if ( $this->orientation === 'vertical' and \count( $members ) >= 60 )
    		{
    			$members = \array_slice( $members, 0, 60 );
    		}
    
    		if( \IPS\Member::loggedIn()->member_id )
    		{
    			if( !isset( $members[ \IPS\Member::loggedIn()->member_id ] ) )
    			{
    				$memberCount++;
    			}
    
    			$members = array_merge( array( \IPS\Member::loggedIn()->member_id => array(
    				'member_id'			=> \IPS\Member::loggedIn()->member_id,
    				'member_name'		=> \IPS\Member::loggedIn()->name,
    				'seo_name'			=> \IPS\Member::loggedIn()->members_seo_name,
    				'member_group'		=> \IPS\Member::loggedIn()->member_group_id,
    				'in_editor'			=> 0
    			) ), $members );
    		}
    
    		/* Display */
    		return $this->output( $members, $memberCount );
    	}
    }

     

×
×
  • Создать...