Version 5.0.14

This commit is contained in:
Neo committed 2025-12-19 19:17:57 -08:00
1 parent 5efe744c5f
commit dbd774b30c
364 files changed
+7048 -1377

No files matched your search

@@ -17,6 +17,7 @@ use IPS\cms\Categories;
use IPS\cms\Databases;
use IPS\cms\Databases\Controller;
use IPS\cms\Databases\Dispatcher;
use IPS\cms\Fields;
use IPS\cms\Pages\Page;
use IPS\cms\Records;
use IPS\Content\Filter;
@@ -28,6 +29,7 @@ use IPS\Http\Url;
use IPS\Member;
use IPS\Output;
use IPS\Request;
use IPS\Session;
use IPS\Theme;
use IPS\Xml\Rss;
use OutOfRangeException;
@@ -47,6 +49,12 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
*/
class index extends Controller
{
/**
* Store any active filters for this view
*
* @var array
*/
static public array $activeFilters = array();
/**
* Determine which method to load
@@ -139,13 +147,10 @@ class index extends Controller
$where = [];
/** @var Categories $categoryClass */
$categoryClass = 'IPS\cms\Categories' . $database->id;
$category = $categoryClass::load( $database->_default_category );
$cookie = $category->getFilterCookie();
$cookie = $database->getFilterCookie();
if( $cookie !== null )
{
$where = $category->buildWhereFromCookie( $cookie );
$where = $database->buildWhereFromCookie( $cookie );
}
elseif( isset( Request::i()->advanced_search_submitted ) and Request::i()->advanced_search_submitted )
{
@@ -163,7 +168,59 @@ class index extends Controller
}
if( count( $cookie ) )
{
$where = $category->buildWhereFromCookie( $cookie );
$where = $database->buildWhereFromCookie( $cookie );
}
}
/* Build the filters */
/* @var Fields $fieldClass */
$fieldClass = 'IPS\cms\Fields' . $database->id;
$customFields = $fieldClass::data( 'view', null, $fieldClass::FIELD_SKIP_TITLE_CONTENT );
if( $cookie !== null )
{
foreach( $cookie as $f => $v )
{
if( $f == 'cms_record_i_started' and Member::loggedIn()->member_id )
{
/* FilterMessage template only accepts \IPS\cms\Fields */
$field = new Fields;
$field->id = 'cms_record_i_started';
Member::loggedIn()->language()->words['content_field_cms_record_i_started'] = Member::loggedIn()->language()->addToStack( 'cms_record_i_started_sprintf', FALSE, array( 'sprintf' => $database->recordWord() ) );
static::$activeFilters['cms_record_i_started'] = array( 'field' => $field, 'value' => Member::loggedIn()->language()->addToStack('content_field_cms_record_i_started_on') );
}
else
{
$displayValue = $customFields[ $f ]->displayValue( $v );
if ( $customFields[ $f ]->type === 'Member' )
{
if ( ! empty( $v ) )
{
$newDisplayValue = array();
$concat = '\n';
if ( is_array( $v ) )
{
foreach( $v as $m )
{
$member = Member::load( $m );
$newDisplayValue[] = $member->name;
}
}
else
{
$member = Member::load( $v );
$newDisplayValue[] = $member->name;
}
$displayValue = implode( ', ', $newDisplayValue );
}
}
static::$activeFilters[ $f ] = array( 'field' => $customFields[ $f ], 'value' => $displayValue );
}
}
}
@@ -194,7 +251,7 @@ class index extends Controller
Output::i()->cssFiles = array_merge( Output::i()->cssFiles, Theme::i()->css( 'database_index/featured.css', 'cms', 'front' ) );
Output::i()->title = ( $page > 1 ) ? Member::loggedIn()->language()->addToStack( 'title_with_page_number', FALSE, array( 'sprintf' => array( $database->pageTitle(), $page ) ) ) : $database->pageTitle();
Dispatcher::i()->output .= Output::i()->output = \IPS\cms\Theme::i()->getTemplate( $database->template_featured, 'cms', 'database' )->index( $database, $articles, $url, $pagination );
Dispatcher::i()->output .= Output::i()->output = \IPS\cms\Theme::i()->getTemplate( $database->template_featured, 'cms', 'database' )->index( $database, $articles, $url, $pagination, static::$activeFilters );
}
else
{
@@ -275,4 +332,19 @@ class index extends Controller
Output::i()->breadcrumb[] = array( NULL, Member::loggedIn()->language()->addToStack( 'cms_select_category' ) );
Dispatcher::i()->output = Output::i()->output = Theme::i()->getTemplate( 'records' )->categorySelector( $form );
}
/**
* Clear any filters
*
* @return void
*/
public function clearFilters() : void
{
Session::i()->csrfCheck();
$database = Databases::load( Dispatcher::i()->databaseId );
$database->saveFilterCookie( false );
Output::i()->redirect( $database->page->url(), 'cms_filters_cleared' );
}
}