Invision Power Services, Inc. * @copyright (c) Invision Power Services, Inc. * @license https://www.invisioncommunity.com/legal/standards/ * @package Invision Community * @subpackage Forums * @since 16 Oct 2014 */ namespace IPS\forums\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; } /** * latestTopics Widget */ class _topicFeed extends \IPS\Content\Widget { /** * @brief Widget Key */ public $key = 'topicFeed'; /** * @brief App */ public $app = 'forums'; /** * @brief Plugin */ public $plugin = ''; /** * Class */ protected static $class = 'IPS\forums\Topic'; /** * Return the form elements to use * * @return array */ protected function formElements() { $elements = parent::formElements(); $class = static::$class; $elements['container'] = new \IPS\Helpers\Form\Node( 'widget_feed_container_' . $class::$title, isset( $this->configuration['widget_feed_container'] ) ? $this->configuration['widget_feed_container'] : 0, FALSE, array( 'class' => $class::$containerNodeClass, 'zeroVal' => 'all_public', 'permissionCheck' => function ( $forum ) { return $forum->can('view') and $forum->sub_can_post and !$forum->redirect_url and $forum->can_view_others; }, 'multiple' => true, 'forceOwner' => false, 'clubs' => TRUE ) ); return $elements; } /** * Get where clause * * @return array */ protected function buildWhere() { $where = parent::buildWhere(); if ( !isset( $this->configuration['widget_feed_use_perms'] ) or $this->configuration['widget_feed_use_perms'] ) { $where['container'][] = array( 'forums_forums.password IS NULL AND forums_forums.can_view_others=1' ); } return $where; } }