Version 4.3.0

This commit is contained in:
Neo committed 2025-12-19 05:47:12 -08:00
1 parent 96997ddd8e
commit fe1acf984a
1349 files changed
+116159 -67711

No files matched your search

+52 -35
View File
@@ -147,26 +147,29 @@ class _Rss extends \IPS\Node\Model
$form->addHeader( 'rss_content' );
foreach( \IPS\Content::routedClasses( TRUE, FALSE, TRUE ) AS $class )
{
$options = array();
$containerClass = NULL;
if ( isset( $class::$containerNodeClass ) )
if ( isset( $class::$databaseColumnMap['author'] ) )
{
$options = array( 'togglesOn' => array( 'rss_nodes_' . $class::$title ) );
$containerClass = $class::$containerNodeClass;
}
\IPS\Member::loggedIn()->language()->words["rss_classes_{$class}"] = \IPS\Member::loggedIn()->language()->addToStack( $class::$title . '_pl' );
$form->add( new \IPS\Helpers\Form\YesNo( 'rss_classes_' . $class, ( $this->_id ) ? in_array( $class, $this->configuration['classes'] ) : FALSE, FALSE, $options ) );
if ( $containerClass )
{
\IPS\Member::loggedIn()->language()->words["nodes_{$class}"] = \IPS\Member::loggedIn()->language()->addToStack( $containerClass::$nodeTitle );
$form->add( new \IPS\Helpers\Form\Node( "nodes_{$class}", ( $this->_id AND isset( $this->configuration['containers'][$class] ) ) ? $this->configuration['containers'][$class] : 0, FALSE, array(
'class' => $containerClass,
'zeroVal' => 'all',
'multiple' => TRUE,
'permissionCheck' => function( $val ) { return $val->can( 'view', new \IPS\Member ); }
), NULL, NULL, NULL, "rss_nodes_{$class::$title}" ) );
$options = array();
$containerClass = NULL;
if ( isset( $class::$containerNodeClass ) )
{
$options = array( 'togglesOn' => array( 'rss_nodes_' . $class::$title ) );
$containerClass = $class::$containerNodeClass;
}
\IPS\Member::loggedIn()->language()->words["rss_classes_{$class}"] = \IPS\Member::loggedIn()->language()->addToStack( $class::$title . '_pl' );
$form->add( new \IPS\Helpers\Form\YesNo( 'rss_classes_' . $class, ( $this->_id ) ? in_array( $class, $this->configuration['classes'] ) : FALSE, FALSE, $options ) );
if ( $containerClass )
{
\IPS\Member::loggedIn()->language()->words["nodes_{$class}"] = \IPS\Member::loggedIn()->language()->addToStack( $containerClass::$nodeTitle );
$form->add( new \IPS\Helpers\Form\Node( "nodes_{$class}", ( $this->_id AND isset( $this->configuration['containers'][$class] ) ) ? $this->configuration['containers'][$class] : 0, FALSE, array(
'class' => $containerClass,
'zeroVal' => 'all',
'multiple' => TRUE,
'permissionCheck' => function( $val ) { return $val->can( 'view', new \IPS\Member ); }
), NULL, NULL, NULL, "rss_nodes_{$class::$title}" ) );
}
}
}
@@ -391,27 +394,34 @@ class _Rss extends \IPS\Node\Model
{
$member = $member ?: new \IPS\Member;
$search = \IPS\Content\Search\Query::init( $member );
$search = \IPS\Content\Search\Query::init( $member );
$filterByClass = FALSE;
if ( count( $this->configuration['classes'] ) )
{
$filters = array();
$filterByClass = TRUE;
$filters = array();
foreach( $this->configuration['classes'] AS $class )
{
if ( isset( $class::$firstCommentRequired ) AND $class::$firstCommentRequired )
if( class_exists( $class, TRUE ) )
{
$filter = \IPS\Content\Search\ContentFilter::init( $class, TRUE, TRUE, FALSE )->onlyFirstComment();
if ( isset( $class::$firstCommentRequired ) AND $class::$firstCommentRequired )
{
$filter = \IPS\Content\Search\ContentFilter::init( $class, TRUE, TRUE, FALSE )->onlyFirstComment();
}
else
{
$filter = \IPS\Content\Search\ContentFilter::init( $class, TRUE, FALSE, FALSE );
}
if ( !empty( $this->configuration['containers'][$class] ) )
{
$filter->onlyInContainers( $this->configuration['containers'][$class] );
}
$filters[] = $filter;
}
else
{
$filter = \IPS\Content\Search\ContentFilter::init( $class, TRUE, FALSE, FALSE );
}
if ( !empty( $this->configuration['containers'][$class] ) )
{
$filter->onlyInContainers( $this->configuration['containers'][$class] );
}
$filters[] = $filter;
}
$search->filterByContent( $filters );
@@ -425,7 +435,14 @@ class _Rss extends \IPS\Node\Model
$search->setLimit( $this->count );
$search->setOrder( \IPS\Content\Search\Query::ORDER_NEWEST_CREATED );
$results = $search->search();
if( $filterByClass == TRUE AND !count( $filters ) )
{
$results = array();
}
else
{
$results = $search->search();
}
/* We have to use get() to ensure CDATA tags wrap the title properly */
$title = \IPS\Member::loggedIn()->language()->get( "rss_export_title_{$this->_id}" );