Version 4.2.0

This commit is contained in:
Neo committed 2025-12-19 05:44:59 -08:00
1 parent 0dc2aee5ed
commit 96997ddd8e
2074 files changed
+125454 -55780

No files matched your search

@@ -1,13 +1,12 @@
<?php
/**
* @brief Abstract class that Controllers should extend
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @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
* @subpackage Content
* @since 16 April 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\cms\Databases;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Databases Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @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
* @subpackage Content
* @since 31 March 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\cms;
@@ -760,7 +759,7 @@ class _Databases extends \IPS\Node\Model implements \IPS\Node\Permissions
/* Editor Areas */
\IPS\Member::loggedIn()->language()->words['editor__cms_Records' . $this->id ] = $this->_title;
foreach( array( 'pin', 'unpin', 'feature', 'unfeature', 'edit', 'hide', 'unhide', 'view_hidden', 'future_publish', 'view_future', 'move', 'lock', 'unlock', 'reply_to_locked', 'delete' ) as $lang )
foreach( array( 'pin', 'unpin', 'feature', 'unfeature', 'edit', 'hide', 'unhide', 'view_hidden', 'future_publish', 'view_future', 'move', 'lock', 'unlock', 'reply_to_locked', 'delete', 'feature_comments', 'unfeature_comments', 'add_item_message', 'edit_item_message', 'delete_item_message' ) as $lang )
{
\IPS\Member::loggedIn()->language()->words['can_' . $lang . '_content_db_lang_sl_' . $this->id ] = \IPS\Member::loggedIn()->language()->addToStack( 'can_' . $lang . '_record', FALSE, array( 'sprintf' => array( $this->recordWord( 1 ) ) ) );
\IPS\Member::loggedIn()->language()->words['can_' . $lang . '_content_db_lang_su_' . $this->id ] = \IPS\Member::loggedIn()->language()->addToStack( 'can_' . $lang . '_record', FALSE, array( 'sprintf' => array( $this->recordWord( 1, TRUE ) ) ) );
@@ -808,6 +807,7 @@ class _Databases extends \IPS\Node\Model implements \IPS\Node\Permissions
{
/* If we are enabling search, we will need to index that content */
$rebuildSearchIndex = ( !$this->_new AND isset( $this->changed['search'] ) AND $this->changed['search'] );
$removeSearchIndex = ( !$this->_new AND isset( $this->changed['search'] ) AND !$this->changed['search'] );
parent::save();
@@ -818,7 +818,7 @@ class _Databases extends \IPS\Node\Model implements \IPS\Node\Permissions
}
/* If this database isn't searchable, make sure its content is not in the search index */
if( !$this->search AND !$this->_new )
if( $removeSearchIndex )
{
\IPS\Content\Search\Index::i()->removeClassFromSearchIndex( 'IPS\cms\Records' . $this->id );
\IPS\Content\Search\Index::i()->removeClassFromSearchIndex( 'IPS\cms\Records\Comment' . $this->id );
@@ -851,7 +851,7 @@ class _Databases extends \IPS\Node\Model implements \IPS\Node\Permissions
$fieldsClass = '\IPS\cms\Fields' . $this->id;
$class = '\IPS\cms\Categories' . $this->id;
foreach( $class::roots( NULL, NULL, array(), $this->id ) as $id => $cat )
foreach( $class::roots( NULL ) as $id => $cat )
{
$cat->delete();
}
@@ -918,7 +918,8 @@ class _Databases extends \IPS\Node\Model implements \IPS\Node\Permissions
\IPS\Lang::deleteCustom( 'cms', "module__cms_records" . $this->id );
/* Unclaim attachments */
\IPS\File::unclaimAttachments( 'cms_Records_' . $this->id );
\IPS\File::unclaimAttachments( 'cms_Records', NULL, NULL, $this->id );
\IPS\File::unclaimAttachments( 'cms_Records' . $this->id );
/* Remove widgets */
$this->removeWidgets();
@@ -980,7 +981,7 @@ class _Databases extends \IPS\Node\Model implements \IPS\Node\Permissions
/* Clone these permissions to all categories that do not have permissions */
$class = '\IPS\cms\Categories' . $this->id;
foreach( $class::roots( NULL, NULL, array(), $this->id ) as $category )
foreach( $class::roots( NULL ) as $category )
{
$this->setPermssionsRecursively( $category );
}
@@ -1043,7 +1044,7 @@ class _Databases extends \IPS\Node\Model implements \IPS\Node\Permissions
foreach( static::databases() as $database )
{
$fieldsClass = 'IPS\cms\Fields' . $database->_id;
foreach( $fieldsClass::data() as $field )
{
if ( $field->type === 'Item' )
@@ -1051,26 +1052,29 @@ class _Databases extends \IPS\Node\Model implements \IPS\Node\Permissions
$extra = $field->extra;
if ( ! empty( $extra['database'] ) )
{
$values[ $database->_id ] = $extra;
$values[ $database->_id ][] = $extra;
}
}
}
\IPS\Data\Store::i()->database_reciprocal_links = $values;
}
}
if ( is_array( $values ) )
{
foreach( $values as $id => $data )
foreach( $values as $id => $fields )
{
if ( $data['database'] == $databaseId and $data['crosslink'] )
foreach( $fields as $fieldid => $data )
{
return TRUE;
if ( $data['database'] == $databaseId and $data['crosslink'] )
{
return TRUE;
}
}
}
}
return FALSE;
}
@@ -1,13 +1,12 @@
<?php
/**
* @brief Database Dispatcher
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @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
* @subpackage Content
* @since 16 April 2013
* @version SVN_VERSION_NUMBER
*/
namespace IPS\cms\Databases;
@@ -166,7 +165,13 @@ class _Dispatcher extends \IPS\Dispatcher
}
$path = trim( preg_replace( '#' . \IPS\cms\Pages\Page::$currentPage->full_path . '#', '', \IPS\Request::i()->path, 1 ), '/' );
/* If we visited the default page in a folder, the full_path will be like folder/page but the request path will just be folder */
if( \IPS\Request::i()->path . '/' . \IPS\cms\Pages\Page::$currentPage->seo_name == \IPS\cms\Pages\Page::$currentPage->full_path )
{
$path = '';
}
$this->databaseId = $database->id;
if ( ! $database->use_categories )
@@ -207,7 +212,8 @@ class _Dispatcher extends \IPS\Dispatcher
try
{
$record = $recordClass::loadFromSlug( $slug );
\IPS\Output::i()->redirect( $record->url(), NULL, 301 );
$this->_redirectToCorrectUrl( $record->url() );
}
catch ( \OutOfRangeException $ex )
{