Version 4.0.13.1
This commit is contained in:
1 parent
f9e857d255
commit
c6a86f0d9b
7517 files changed
+597400
-668041
No files matched your search
@@ -0,0 +1,144 @@
|
||||
<?php
|
||||
/**
|
||||
* @brief Activity Stream
|
||||
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
|
||||
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/legal/standards/
|
||||
* @package IPS Social Suite
|
||||
* @since 2 Sep 2014
|
||||
* @version SVN_VERSION_NUMBER
|
||||
*/
|
||||
|
||||
namespace IPS\core\modules\front\activity;
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Activity Stream
|
||||
*/
|
||||
class _activity extends \IPS\Dispatcher\Controller
|
||||
{
|
||||
/**
|
||||
* New Content
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function manage()
|
||||
{
|
||||
/* Flood control */
|
||||
\IPS\Request::floodCheck();
|
||||
|
||||
/* Get the different types */
|
||||
$types = array();
|
||||
$hasCallback = array();
|
||||
foreach ( \IPS\Application::allExtensions( 'core', 'ContentRouter', TRUE, NULL, NULL, TRUE ) as $router )
|
||||
{
|
||||
foreach( $router->classes as $class )
|
||||
{
|
||||
if( !is_subclass_of( $class, 'IPS\Content\Searchable' ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$types[ $class::$application . '_' . $class::$module ][ mb_strtolower( str_replace( '\\', '_', mb_substr( $class, 4 ) ) ) ] = $class;
|
||||
|
||||
if ( isset( $class::$commentClass ) )
|
||||
{
|
||||
$types[ $class::$application . '_' . $class::$module ][ mb_strtolower( str_replace( '\\', '_', mb_substr( $class::$commentClass, 4 ) ) ) ] = $class::$commentClass;
|
||||
}
|
||||
|
||||
if ( isset( $class::$reviewClass ) )
|
||||
{
|
||||
$types[ $class::$application . '_' . $class::$module ][ mb_strtolower( str_replace( '\\', '_', mb_substr( $class::$reviewClass, 4 ) ) ) ] = $class::$reviewClass;
|
||||
}
|
||||
|
||||
if( method_exists( $class, 'customTableHelper' ) )
|
||||
{
|
||||
$hasCallback[ mb_strtolower( str_replace( '\\', '_', mb_substr( $class, 4 ) ) ) ] = $router;
|
||||
|
||||
if ( isset( $class::$commentClass ) )
|
||||
{
|
||||
$hasCallback[ mb_strtolower( str_replace( '\\', '_', mb_substr( $class::$commentClass, 4 ) ) ) ] = $router;
|
||||
}
|
||||
|
||||
if ( isset( $class::$reviewClass ) )
|
||||
{
|
||||
$hasCallback[ mb_strtolower( str_replace( '\\', '_', mb_substr( $class::$reviewClass, 4 ) ) ) ] = $router;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* What type are we looking at? */
|
||||
$currentAppModule = NULL;
|
||||
$currentType = NULL;
|
||||
if ( isset( \IPS\Request::i()->type ) )
|
||||
{
|
||||
foreach ( $types as $appModule => $_types )
|
||||
{
|
||||
if ( array_key_exists( \IPS\Request::i()->type, $_types ) )
|
||||
{
|
||||
$currentAppModule = $appModule;
|
||||
$currentType = \IPS\Request::i()->type;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$url = \IPS\Http\Url::internal( "app=core&module=activity&controller=activity", 'front', 'activity' );
|
||||
|
||||
/* Build Output */
|
||||
if ( !$currentType )
|
||||
{
|
||||
$page = isset( \IPS\Request::i()->page ) ? intval( \IPS\Request::i()->page ) : 1;
|
||||
|
||||
if( $page < 1 )
|
||||
{
|
||||
$page = 1;
|
||||
}
|
||||
|
||||
$query = \IPS\Content\Search\Query::init()->excludeFirstPostContentItems()->excludeDisabledApps()->setOrder( \IPS\Content\Search\Query::ORDER_NEWEST_CREATED )->setPage( $page );
|
||||
$results = $query->search();
|
||||
$pagination = trim( \IPS\Theme::i()->getTemplate( 'global', 'core', 'global' )->pagination( $url, ceil( $results->count( TRUE ) / $query->resultsToGet ), $page, $query->resultsToGet ) );
|
||||
$output = \IPS\Theme::i()->getTemplate('system')->activityStream( $results, $pagination );
|
||||
}
|
||||
else
|
||||
{
|
||||
$currentClass = $types[ $currentAppModule ][ $currentType ];
|
||||
$currentAppArray = explode( '_', $currentAppModule );
|
||||
$currentApp = $currentAppArray[0];
|
||||
if( isset( $hasCallback[ $currentType ] ) )
|
||||
{
|
||||
$output = $hasCallback[ $currentType ]->customTableHelper( $currentClass, $url->setQueryString( array( 'type' => $currentType ) ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
$where = array();
|
||||
if ( isset( $currentClass::$databaseColumnMap['state'] ) )
|
||||
{
|
||||
$where[] = array( $currentClass::$databaseColumnMap['state'] . ' != ?', 'link' );
|
||||
}
|
||||
$output = new \IPS\Helpers\Table\Content( $currentClass, $url->setQueryString( array( 'type' => $currentType ) ), $where, NULL, NULL, 'read', FALSE );
|
||||
}
|
||||
|
||||
$output->showFilters = FALSE;
|
||||
}
|
||||
|
||||
/* If we've clicked from the tab section */
|
||||
if ( \IPS\Request::i()->isAjax() && \IPS\Request::i()->change_section )
|
||||
{
|
||||
\IPS\Output::i()->sendOutput( \IPS\Theme::i()->getTemplate( 'system' )->activitySection( $url, $types, $currentAppModule, $currentType, (string) $output ), 200, 'text/html', \IPS\Output::i()->httpHeaders );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Display */
|
||||
\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->get('activity_stream');
|
||||
\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'system' )->activity( $url, $types, $currentAppModule, $currentType, (string) $output );
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user