Version 4.1.19

This commit is contained in:
Neo committed 2025-12-19 05:38:56 -08:00
1 parent 28bd025b35
commit 2bd5025018
2674 files changed
+233518 -77766

No files matched your search

+4 -3
View File
@@ -2,9 +2,10 @@
/**
* @brief Upgrader: Custom Upgrade Options
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Social Suite
* @package IPS Community Suite
* @subpackage Content
* @since 3 Mar 2015
* @version SVN_VERSION_NUMBER
*/
@@ -15,7 +16,7 @@ foreach( \IPS\Db::i()->select( '*', 'ccs_databases' ) as $database )
{
/* Show warning about inability to convert html */
$options[] = new \IPS\Helpers\Form\Custom( '40000_cms_htmlconversion', null, FALSE, array( 'getHtml' => function( $element ) use ( $members ){
return "HTML in pages, blocks and templates in Pages cannot be converted during the upgrade. While those pages and blocks will continue to work, you may wish to adjust the HTML following the upgrade to integrate the styling used by the Community Suite 4.0.";
return "";
} ), function( $val ) {}, NULL, NULL, '40000_cms_htmlconversion' );
$pages = array();
+22 -1
View File
@@ -517,6 +517,27 @@
}
]
},
"15.1": {
"method": "changeColumn",
"params": [
"cms_blocks",
"block_key",
{
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": "",
"length": 255,
"name": "block_key",
"type": "VARCHAR",
"unsigned": false,
"values": [],
"zerofill": false
}
]
},
"16": {
"method": "addIndex",
"params": [
@@ -878,7 +899,7 @@
],
"length": [
null,
250
191
]
}
}
+73 -13
View File
@@ -2,9 +2,10 @@
/**
* @brief 4.0.0 Alpha 1 Upgrade Code
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - SVN_YYYY Invision Power Services, Inc.
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Social Suite
* @package IPS Community Suite
* @subpackage Content
* @since 20 Jan 2014
* @version SVN_VERSION_NUMBER
*/
@@ -284,6 +285,11 @@ class _Upgrade
$createdParents[ $menu['menu_id'] ] = TRUE;
$type = 'folder';
}
/* Otherwise, we need to make sure the URL is a fully qualified URL, and not a relative one. */
else if ( mb_substr( $menu['menu_url'], 0, 4 ) != 'http' )
{
$menu['menu_url'] = \IPS\Settings::i()->base_url . ltrim( $menu['menu_url'], '/' );
}
\IPS\Db::i()->insert( 'cms_page_menu', array(
'menu_id' => $menu['menu_id'],
@@ -381,6 +387,11 @@ class _Upgrade
$save['field_type'] = 'TextArea';
}
if ( $save['field_type'] == 'Relational' )
{
$save['field_type'] = 'Item';
}
if ( $field['field_extra'] )
{
$json = array();
@@ -392,19 +403,55 @@ class _Upgrade
$json[ $key ] = $value;
}
if ( $field['field_type'] == 'checkbox' and count( $json ) )
{
$field['field_type'] = 'CheckboxSet';
}
}
else if ( $field['field_type'] == 'upload' )
{
$save['field_extra'] = '';
$save['field_allowed_extensions'] = json_encode( explode( ',', $field['field_extra' ] ) );
}
else if ( $field['field_type'] == 'relational' )
{
$options = explode( ',', $field['field_extra'] );
$json = array( 'database' => $options[0] );
if( $options[2] == 'multiselect' )
{
$save['field_is_multiple'] = 1;
}
}
if ( count( $json ) )
{
$save['field_extra'] = json_encode( $json );
}
}
if ( $field['field_key'] === 'article_homepage' )
{
/* Convert this to featured */
if ( \IPS\Db::i()->checkForTable( 'cms_custom_database_' . $field['field_database_id'] ) )
{
try
{
\IPS\Db::i()->update( 'cms_custom_database_' . $field['field_database_id'], array( 'record_featured' => 1 ), array( 'field_' . $field['field_id'] . ' =1' ) );
\IPS\Db::i()->dropColumn( 'cms_custom_database_' . $field['field_database_id'], 'field_' . $field['field_id'] );
}
catch( \Exception $e ) { }
}
/* Drop the field */
\IPS\Db::i()->delete( 'cms_database_fields', array( 'field_id=?', $field['field_id'] ) );
/* No need to update anything, just skip to the next field */
continue;
}
\IPS\Db::i()->update( 'cms_database_fields', $save, array( 'field_id=?', $field['field_id'] ) );
/* Update records to use the field default */
@@ -498,6 +545,13 @@ class _Upgrade
{
if ( isset( $fields[ $k ] ) )
{
/* For an int column, we need to make sure the value is an int before changing the column type or we could get
"data truncated" MySQL warnings */
if( $k != 'article_image' )
{
\IPS\Db::i()->update( 'cms_custom_database_' . $database['database_id'], array( 'field_' . $fields[ $k ]['field_id'] => '0' ), array( "field_" . $fields[ $k ]['field_id'] . "='' OR field_" . $fields[ $k ]['field_id'] . " IS NULL" ) );
}
$change[] = "CHANGE field_" . $fields[ $k ]['field_id'] . ' ' . $schema;
list( $field, ) = explode( ' ', $schema );
@@ -528,12 +582,12 @@ class _Upgrade
{
\IPS\Db::i()->query( 'ALTER TABLE ' . \IPS\Db::i()->prefix . 'cms_custom_database_' . $database['database_id'] . " " . implode( ', ', $change ) );
\IPS\Log::i( LOG_DEBUG )->write( "Run " . 'ALTER TABLE ' . \IPS\Db::i()->prefix . 'cms_custom_database_' . $database['database_id'] . " " . implode( ', ', $change ), 'upgrade_pages' );
\IPS\Log::debug( "Run " . 'ALTER TABLE ' . \IPS\Db::i()->prefix . 'cms_custom_database_' . $database['database_id'] . " " . implode( ', ', $change ), 'upgrade_pages' );
}
catch ( \IPS\Db\Exception $e )
{
# Don't care, sync below will add columns
\IPS\Log::i( LOG_ERR )->write( $e, 'upgrade_pages' );
\IPS\Log::log( $e, 'upgrade_pages' );
}
}
@@ -938,7 +992,7 @@ class _Upgrade
if ( ! $row['category_furl_name'] )
{
$save['category_furl_name'] = \IPS\Http\Url::seoTitle( $row['category_name'] );
$save['category_furl_name'] = \IPS\Http\Url\Friendly::seoTitle( $row['category_name'] );
$row['category_furl_name'] = $save['category_furl_name'];
}
else
@@ -967,7 +1021,7 @@ class _Upgrade
if ( ! $parent['category_furl_name'] )
{
$parent['category_furl_name'] = \IPS\Http\Url::seoTitle( $parent['category_name'] );
$parent['category_furl_name'] = \IPS\Http\Url\Friendly::seoTitle( $parent['category_name'] );
}
else
{
@@ -1270,8 +1324,8 @@ class _Upgrade
{
try
{
\IPS\Task::queue( 'cms', 'RebuildRecords' , array( 'class' => 'IPS\cms\Records' . $database['database_id'] ), 3 );
\IPS\Task::queue( 'cms', 'RebuildCategories', array( 'class' => 'IPS\cms\Categories' . $database['database_id'] ), 3 );
\IPS\Task::queue( 'cms', 'RebuildRecords' , array( 'fixFurls' => true, 'fixHtml' => true, 'fixImage' => true, 'class' => 'IPS\cms\Records' . $database['database_id'] ), 3 );
\IPS\Task::queue( 'cms', 'RebuildCategories', array( 'fixHtml' => true, 'fixImage' => true, 'class' => 'IPS\cms\Categories' . $database['database_id'] ), 3 );
}
catch ( \OutOfRangeException $ex )
{
@@ -1279,12 +1333,18 @@ class _Upgrade
/* Some 'content' fields can be select boxes, etc and we don't want to run the text parser on those as it wraps with <p> tags */
$fieldClass = '\IPS\cms\Fields' . $database['database_id'];
$field = $fieldClass::load( $database['database_field_content'] );
if ( $field->type === 'Editor' )
/* We wrap in a try/catch in case upgraded content field is 'primary_id_field' which won't load, but does not need to be rebuilt anyways */
try
{
\IPS\Task::queue( 'core', 'RebuildPosts', array( 'class' => 'IPS\cms\Records' . $database['database_id'] ), 2 );
$field = $fieldClass::load( $database['database_field_content'] );
if ( $field->type === 'Editor' )
{
\IPS\Task::queue( 'core', 'RebuildPosts', array( 'class' => 'IPS\cms\Records' . $database['database_id'] ), 2 );
}
}
catch( \Exception $e ){}
\IPS\Task::queue( 'core', 'RebuildPosts', array( 'class' => 'IPS\cms\Records\Comment' . $database['database_id'] ), 2 );
\IPS\Task::queue( 'core', 'RebuildPosts', array( 'class' => 'IPS\cms\Records\Review' . $database['database_id'] ), 2 );