Diff
checker
Text
Text
Images
Documents
Excel
Folders
Legal
Enterprise
Desktop
Pricing
Sign in
Download Diffchecker Desktop
Compare text
Find the difference between two text files
Tools
History
Real-time editor
Hide unchanged lines
Disable line wrap
Layout
Split
Unified
Diff precision
Smart
Word
Char
Syntax highlighting
Choose syntax
Ignore
Transform text
Go to first change
Edit input
Diffchecker Desktop
The most secure way to run Diffchecker. Get the Diffchecker Desktop app: your diffs never leave your computer!
Get Desktop
WhosOnline diff
Created
5 years ago
Diff never expires
Clear
Export
Share
Explain
22 removals
Lines
Total
Removed
Characters
Total
Removed
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
128 lines
Copy
1 addition
Lines
Total
Added
Characters
Total
Added
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
109 lines
Copy
<?php
<?php
/**
/**
* @brief whosOnline Widget
* @brief whosOnline Widget
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @package Invision Community
* @since 28 Jul 2014
* @since 28 Jul 2014
*/
*/
namespace IPS\core\widgets;
namespace IPS\core\widgets;
/* To prevent PHP errors (extending class does not exist) revealing path */
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
exit;
}
}
/**
/**
* whosOnline Widget
* whosOnline Widget
*/
*/
class _whosOnline extends \IPS\Widget\StaticCache
class _whosOnline extends \IPS\Widget\StaticCache
{
{
/**
/**
* @brief Widget Key
* @brief Widget Key
*/
*/
public $key = 'whosOnline';
public $key = 'whosOnline';
/**
/**
* @brief App
* @brief App
*/
*/
public $app = 'core';
public $app = 'core';
/**
/**
* @brief Plugin
* @brief Plugin
*/
*/
public $plugin = '';
public $plugin = '';
/**
/**
* Constructor
* Constructor
*
*
* @param String $uniqueKey Unique key for this specific instance
* @param String $uniqueKey Unique key for this specific instance
* @param array $configuration Widget custom configuration
* @param array $configuration Widget custom configuration
* @param null|string|array $access Array/JSON string of executable apps (core=sidebar only, content=IP.Content only, etc)
* @param null|string|array $access Array/JSON string of executable apps (core=sidebar only, content=IP.Content only, etc)
* @param null|string $orientation Orientation (top, bottom, right, left)
* @param null|string $orientation Orientation (top, bottom, right, left)
* @return void
* @return void
*/
*/
public function __construct( $uniqueKey, array $configuration, $access=null, $orientation=null )
public function __construct( $uniqueKey, array $configuration, $access=null, $orientation=null )
{
{
parent::__construct( $uniqueKey, $configuration, $access, $orientation );
parent::__construct( $uniqueKey, $configuration, $access, $orientation );
$member = \IPS\Member::loggedIn() ?: new \IPS\Member;
$member = \IPS\Member::loggedIn() ?: new \IPS\Member;
$theme = $member->skin ?: \IPS\Theme::defaultTheme();
$theme = $member->skin ?: \IPS\Theme::defaultTheme();
$this->cacheKey = "widget_{$this->key}_" . $this->uniqueKey . '_' . md5( json_encode( $configuration ) . "_" . $member->language()->id . "_" . $theme . "_" . $orientation . '-' . (int) \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members' ) ) );
$this->cacheKey = "widget_{$this->key}_" . $this->uniqueKey . '_' . md5( json_encode( $configuration ) . "_" . $member->language()->id . "_" . $theme . "_" . $orientation . '-' . (int) \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members' ) ) );
}
}
/**
/**
* Render a widget
* Render a widget
*
*
* @return string
* @return string
*/
*/
public function render()
public function render()
{
{
/* Do we have permission? */
/* Do we have permission? */
if ( !\IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'online' ) ) )
if ( !\IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'online' ) ) )
{
{
return "";
return "";
}
}
/* Init */
/* Init */
$members = array();
$members = array();
$anonymous = 0;
$anonymous = 0;
$users = \IPS\Session\Store::i()->getOnlineUsers( \IPS\Session\Store::ONLINE_MEMBERS, 'desc', NULL, NULL, TRUE );
$users = \IPS\Session\Store::i()->getOnlineUsers( \IPS\Session\Store::ONLINE_MEMBERS, 'desc', NULL, NULL, TRUE );
foreach( $users as $row )
foreach( $users as $row )
{
{
switch ( $row['login_type'] )
switch ( $row['login_type'] )
{
{
/* Not-anonymous Member */
/* Not-anonymous Member */
case \IPS\Session\Front::LOGIN_TYPE_MEMBER:
case \IPS\Session\Front::LOGIN_TYPE_MEMBER:
Copy
Copied
Copy
Copied
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'] )
{
{
Copy
Copied
Copy
Copied
if ( $row['member_name'] )
$members[ $row['member_id'] ] = $row;
{
$members[ $row['member_id'] ] = $row;
}
}
}
break;
break;
/* Anonymous member */
/* Anonymous member */
case \IPS\Session\Front::LOGIN_TYPE_ANONYMOUS:
case \IPS\Session\Front::LOGIN_TYPE_ANONYMOUS:
$anonymous += 1;
$anonymous += 1;
break;
break;
}
}
}
}
$memberCount = \count( $members );
$memberCount = \count( $members );
/* Get an accurate guest count */
/* 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 );
$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 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 )
if ( $this->orientation === 'vertical' and \count( $members ) >= 60 )
{
{
$members = \array_slice( $members, 0, 60 );
$members = \array_slice( $members, 0, 60 );
}
}
Copy
Copied
Copy
Copied
/* Add ourselves at the top of the list */
if( \IPS\Member::loggedIn()->member_id )
{
if( !\IPS\Member::loggedIn()->isOnlineAnonymously() )
{
$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 */
/* Display */
return $this->output( $members, $memberCount, $guests, $anonymous );
return $this->output( $members, $memberCount, $guests, $anonymous );
}
}
}
}
Saved diffs
Original text
Open file
<?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\StaticCache { /** * @brief Widget Key */ public $key = 'whosOnline'; /** * @brief App */ public $app = 'core'; /** * @brief Plugin */ public $plugin = ''; /** * Constructor * * @param String $uniqueKey Unique key for this specific instance * @param array $configuration Widget custom configuration * @param null|string|array $access Array/JSON string of executable apps (core=sidebar only, content=IP.Content only, etc) * @param null|string $orientation Orientation (top, bottom, right, left) * @return void */ public function __construct( $uniqueKey, array $configuration, $access=null, $orientation=null ) { parent::__construct( $uniqueKey, $configuration, $access, $orientation ); $member = \IPS\Member::loggedIn() ?: new \IPS\Member; $theme = $member->skin ?: \IPS\Theme::defaultTheme(); $this->cacheKey = "widget_{$this->key}_" . $this->uniqueKey . '_' . md5( json_encode( $configuration ) . "_" . $member->language()->id . "_" . $theme . "_" . $orientation . '-' . (int) \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members' ) ) ); } /** * 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 ) { if( !\IPS\Member::loggedIn()->isOnlineAnonymously() ) { $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 ); } }
Changed text
Open file
<?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\StaticCache { /** * @brief Widget Key */ public $key = 'whosOnline'; /** * @brief App */ public $app = 'core'; /** * @brief Plugin */ public $plugin = ''; /** * Constructor * * @param String $uniqueKey Unique key for this specific instance * @param array $configuration Widget custom configuration * @param null|string|array $access Array/JSON string of executable apps (core=sidebar only, content=IP.Content only, etc) * @param null|string $orientation Orientation (top, bottom, right, left) * @return void */ public function __construct( $uniqueKey, array $configuration, $access=null, $orientation=null ) { parent::__construct( $uniqueKey, $configuration, $access, $orientation ); $member = \IPS\Member::loggedIn() ?: new \IPS\Member; $theme = $member->skin ?: \IPS\Theme::defaultTheme(); $this->cacheKey = "widget_{$this->key}_" . $this->uniqueKey . '_' . md5( json_encode( $configuration ) . "_" . $member->language()->id . "_" . $theme . "_" . $orientation . '-' . (int) \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members' ) ) ); } /** * 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_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 ); } /* Display */ return $this->output( $members, $memberCount, $guests, $anonymous ); } }
Find difference