Version 4.6.0
This commit is contained in:
1 parent
f79dcf067a
commit
517a5e1f70
2036 files changed
+110041
-26162
No files matched your search
@@ -214,6 +214,11 @@ class _databases extends \IPS\Node\Controller
|
||||
'link' => \IPS\Http\Url::internal( 'app=cms&module=databases&controller=databases&do=delete&id=' . $row['database_id'] ),
|
||||
'data' => array( 'delete' => '' )
|
||||
);
|
||||
|
||||
if ( \IPS\cms\Databases::isUsedAsReciprocalField( $row['database_id'] ) )
|
||||
{
|
||||
unset( $return['delete']['data'] );
|
||||
}
|
||||
}
|
||||
|
||||
return $return;
|
||||
@@ -228,7 +233,7 @@ class _databases extends \IPS\Node\Controller
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a theme dialog
|
||||
* Add a database dialog
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
@@ -283,8 +288,7 @@ class _databases extends \IPS\Node\Controller
|
||||
function( $data )
|
||||
{
|
||||
/* Open XML file */
|
||||
$xml = new \IPS\Xml\XMLReader;
|
||||
$xml->open( \IPS\Request::i()->file );
|
||||
$xml = \IPS\Xml\XMLReader::safeOpen( \IPS\Request::i()->file );
|
||||
|
||||
if ( ! @$xml->read() )
|
||||
{
|
||||
@@ -304,7 +308,7 @@ class _databases extends \IPS\Node\Controller
|
||||
/* Set default perms, these will be editable post DB import */
|
||||
\IPS\Db::i()->replace( 'core_permission_index', array(
|
||||
'app' => 'cms',
|
||||
'perm_type' => $database::$permType,
|
||||
'perm_type' => $database::$permType,
|
||||
'perm_type_id' => $database->id,
|
||||
'perm_view' => '*',
|
||||
'perm_2' => '*', #read
|
||||
@@ -508,6 +512,12 @@ class _databases extends \IPS\Node\Controller
|
||||
{
|
||||
$attrs['field_type'] = 'Text';
|
||||
}
|
||||
|
||||
/* Upload field has a special "is multiple" option we need to set */
|
||||
if( mb_ucfirst( $attrs['field_type'] ) == 'Upload' )
|
||||
{
|
||||
$attrs['field_upload_is_multiple'] = $attrs['field_is_multiple'];
|
||||
}
|
||||
|
||||
$attrs['_skip_formatting'] = TRUE;
|
||||
|
||||
@@ -522,7 +532,7 @@ class _databases extends \IPS\Node\Controller
|
||||
if ( isset( $attrs['field_extra'] ) )
|
||||
{
|
||||
/* The export format is always correct */
|
||||
$values['field_extra'] = $attrs['field_extra'];
|
||||
$values['extra'] = $attrs['field_extra'];
|
||||
}
|
||||
|
||||
$obj->saveForm( $values );
|
||||
@@ -874,7 +884,7 @@ class _databases extends \IPS\Node\Controller
|
||||
|
||||
$arrays = array();
|
||||
foreach( array( 'use_categories', 'template_listing', 'template_display', 'template_categories', 'all_editable', 'revisions', 'field_title', 'field_content', 'field_sort', 'field_direction', 'field_perpage', 'comment_approve', 'record_approve', 'rss',
|
||||
'comment_bump', 'forum_record', 'forum_comments', 'forum_delete', 'forum_forum', 'forum_prefix', 'forum_suffix', 'search', 'tags_enabled', 'tags_noprefixes', 'tags_predefined', 'fixed_field_perms',
|
||||
'comment_bump', 'forum_record', 'forum_comments', 'forum_delete', 'forum_forum', 'forum_prefix', 'forum_suffix', 'search', 'tags_enabled', 'tags_noprefixes', 'tags_predefined', 'fixed_field_perms', 'fixed_field_settings',
|
||||
'cat_index_type', 'template_form', 'template_featured', 'featured_settings', 'options' ) as $field )
|
||||
{
|
||||
if ( \is_array( $database->$field ) )
|
||||
@@ -948,7 +958,7 @@ class _databases extends \IPS\Node\Controller
|
||||
if ( isset( $row[ $field ] ) )
|
||||
{
|
||||
$xml->startElement( $field );
|
||||
if ( preg_match( '/<|>|&/', $row[ $field ] ) )
|
||||
if ( preg_match( '/<|>|&|"/', $row[ $field ] ) )
|
||||
{
|
||||
$xml->writeCData( str_replace( ']]>', ']]]]><![CDATA[>', $row[ $field ] ) );
|
||||
}
|
||||
@@ -1098,9 +1108,6 @@ class _databases extends \IPS\Node\Controller
|
||||
protected function delete()
|
||||
{
|
||||
\IPS\Dispatcher::i()->checkAcpPermission( 'databases_delete' );
|
||||
|
||||
/* Make sure the user confirmed the deletion */
|
||||
\IPS\Request::i()->confirmedDelete();
|
||||
|
||||
/* Load the database */
|
||||
try
|
||||
@@ -1112,6 +1119,17 @@ class _databases extends \IPS\Node\Controller
|
||||
\IPS\Output::i()->error( 'cms_database_not_exist', '3T259/2', 403, '' );
|
||||
}
|
||||
|
||||
/* Make sure the user confirmed the deletion */
|
||||
if( \IPS\cms\Databases::isUsedAsReciprocalField( \IPS\Request::i()->id ) )
|
||||
{
|
||||
/* SHow a custom deletion confirmation for the DB if it used as reciprocal field in any other DB */
|
||||
\IPS\Request::i()->confirmedDelete( 'delete_confirm', 'delete_db_confirm_detail_msg' );
|
||||
}
|
||||
else
|
||||
{ /* Make sure the user confirmed the deletion */
|
||||
\IPS\Request::i()->confirmedDelete();
|
||||
}
|
||||
|
||||
/* Delete the database and clear the 'create' menu cache */
|
||||
$database->delete();
|
||||
\IPS\Member::clearCreateMenu();
|
||||
@@ -1533,7 +1551,8 @@ class _databases extends \IPS\Node\Controller
|
||||
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=cms&module=databases&controller=databases' ), 'saved' );
|
||||
}
|
||||
|
||||
|
||||
\IPS\Output::i()->jsFiles = array_merge( \IPS\Output::i()->jsFiles, \IPS\Output::i()->js( 'admin_databases.js', 'cms', 'admin' ) );
|
||||
\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'global', 'core' )->block( $current ? "content_db_" . $current->id : 'add', $form, FALSE );
|
||||
\IPS\Output::i()->title = ( $current ) ? \IPS\Member::loggedIn()->language()->addToStack('cms_editing_database', NULL, array( 'sprintf' => array( $current->_title ) ) ) : \IPS\Member::loggedIn()->language()->addToStack('cms_adding_database');
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user