Version 4.3.0
This commit is contained in:
1 parent
96997ddd8e
commit
fe1acf984a
1349 files changed
+116159
-67711
No files matched your search
@@ -94,7 +94,13 @@ class _Editor extends FormAbstract
|
||||
{
|
||||
$args = func_get_args();
|
||||
$this->postKey = md5( $args[3]['autoSaveKey'] . ':' . session_id() );
|
||||
|
||||
|
||||
if ( isset( \IPS\Request::i()->usingEditor ) and \IPS\Request::i()->isAjax() and \IPS\Dispatcher::hasInstance() and \IPS\Dispatcher::i()->controllerLocation == 'front' )
|
||||
{
|
||||
\IPS\Session::i()->setUsingEditor();
|
||||
\IPS\Output::i()->json( array( true ) );
|
||||
}
|
||||
|
||||
$this->defaultOptions['controller'] = 'app=core&module=system&controller=editor';
|
||||
|
||||
/* Get our extension */
|
||||
@@ -245,6 +251,9 @@ class _Editor extends FormAbstract
|
||||
$value = \IPS\Text\Parser::mungeResources( $value );
|
||||
}
|
||||
|
||||
/* Fix Emoji */
|
||||
\IPS\Output::i()->replaceEmojiWithImages( $value );
|
||||
|
||||
/* CKEditor will replace <p></p> (which doesn't display anything in a normal post) with <p><br></p> (which does)
|
||||
which creates a discrepency between wheat displays in a post and what displays in the editor */
|
||||
$value = preg_replace( '/<p>\s*<\/p>/', '', $value );
|
||||
@@ -278,7 +287,7 @@ class _Editor extends FormAbstract
|
||||
|
||||
/* Display */
|
||||
$template = $raw ? 'editorRaw' : 'editor';
|
||||
return \IPS\Theme::i()->getTemplate( 'forms', 'core', 'global' )->$template( $this->name, $value, $this->options, $allowed, md5( $this->options['autoSaveKey'] . ':' . session_id() ), $attachmentArea, json_encode( static::getEmoticons() ), $this->options['tags'] );
|
||||
return \IPS\Theme::i()->getTemplate( 'forms', 'core', 'global' )->$template( $this->name, $value, $this->options, $allowed, md5( $this->options['autoSaveKey'] . ':' . session_id() ), $attachmentArea, json_encode( array() ), $this->options['tags'] );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -345,7 +354,12 @@ class _Editor extends FormAbstract
|
||||
{
|
||||
if ( !isset( $parser ) or !in_array( $attachment['attach_id'], $parser->mappedAttachments ) or array_key_exists( $attachment['attach_id'], $parser->existingAttachments ) )
|
||||
{
|
||||
if ( $attachment['attach_is_image'] )
|
||||
$ext = mb_substr( $attachment['attach_file'], mb_strrpos( $attachment['attach_file'], '.' ) + 1 );
|
||||
if ( in_array( mb_strtolower( $ext ), \IPS\File::$videoExtensions ) )
|
||||
{
|
||||
$value .= \IPS\Theme::i()->getTemplate( 'editor', 'core', 'global' )->attachedVideo( $attachment['attach_location'], \IPS\Http\Url::baseUrl( \IPS\Http\Url::PROTOCOL_RELATIVE ) . "applications/core/interface/file/attachment.php?id=" . $attachment['attach_id'], $attachment['attach_file'], \IPS\File::getMimeType( $attachment['attach_file'] ), $attachment['attach_id'] );
|
||||
}
|
||||
elseif ( $attachment['attach_is_image'] )
|
||||
{
|
||||
$value .= \IPS\Theme::i()->getTemplate( 'editor', 'core', 'global' )->attachedImage( $attachment['attach_location'], $attachment['attach_thumb_location'] ? $attachment['attach_thumb_location'] : $attachment['attach_location'], $attachment['attach_file'], $attachment['attach_id'] );
|
||||
}
|
||||
@@ -380,7 +394,7 @@ class _Editor extends FormAbstract
|
||||
}
|
||||
|
||||
/* Remove abandoned attachments */
|
||||
foreach ( \IPS\Db::i()->select( '*', 'core_attachments', array( array( 'attach_id NOT IN(?)', \IPS\Db::i()->select( 'DISTINCT attachment_id', 'core_attachments_map' ) ), array( 'attach_member_id=? AND attach_date<?', \IPS\Member::loggedIn()->member_id, time() - 86400 ) ) ) as $attachment )
|
||||
foreach ( \IPS\Db::i()->select( '*', 'core_attachments', array( array( 'attach_id NOT IN(?)', \IPS\Db::i()->select( 'DISTINCT attachment_id', 'core_attachments_map', NULL, NULL, NULL, NULL, NULL, \IPS\Db::SELECT_FROM_WRITE_SERVER ) ), array( 'attach_member_id=? AND attach_date<?', \IPS\Member::loggedIn()->member_id, time() - 86400 ) ) ) as $attachment )
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -404,6 +418,26 @@ class _Editor extends FormAbstract
|
||||
/* Return */
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of the element
|
||||
*
|
||||
* @param bool $initial Whether this is the initial call or not. Do not reset default values on subsequent calls.
|
||||
* @param bool $force Set the value even if one was not submitted (done on the final validation when getting values)?
|
||||
* @return void
|
||||
*/
|
||||
public function setValue( $initial=FALSE, $force=FALSE )
|
||||
{
|
||||
// @todo extend this to all form elements. See commit notes.
|
||||
|
||||
if ( !isset( \IPS\Request::i()->csrfKey ) or !\IPS\Login::compareHashes( (string) \IPS\Session::i()->csrfKey, (string) \IPS\Request::i()->csrfKey ) )
|
||||
{
|
||||
$name = $this->name;
|
||||
unset( \IPS\Request::i()->$name );
|
||||
}
|
||||
|
||||
return parent::setValue( $initial, $force );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parser object
|
||||
@@ -475,6 +509,7 @@ class _Editor extends FormAbstract
|
||||
|
||||
/* Load existing attachments */
|
||||
$existing = array();
|
||||
$currentPostUsage = 0;
|
||||
foreach ( $this->getAttachments() as $attachment )
|
||||
{
|
||||
try
|
||||
@@ -487,6 +522,8 @@ class _Editor extends FormAbstract
|
||||
$file->originalFilename = $attachment['attach_file'];
|
||||
|
||||
$existing[ $attachment['attach_id'] ] = $file;
|
||||
|
||||
$currentPostUsage += $attachment['attach_filesize'];
|
||||
}
|
||||
catch ( \Exception $e ) { }
|
||||
}
|
||||
@@ -495,8 +532,17 @@ class _Editor extends FormAbstract
|
||||
$maxTotalSize = array();
|
||||
if ( \IPS\Member::loggedIn()->group['g_attach_max'] > 0 and \IPS\Member::loggedIn()->member_id )
|
||||
{
|
||||
$globalSpaceRemaining = ( ( \IPS\Member::loggedIn()->group['g_attach_max'] * 1024 ) - \IPS\Db::i()->select( 'SUM(attach_filesize)', 'core_attachments', array( 'attach_member_id=?', \IPS\Member::loggedIn()->member_id ) )->first() ) / 1048576;
|
||||
/* Only query logged in member's usage once per page load, even if there are more than one editor */
|
||||
static $loggedInMembersAttachmentUsage = NULL;
|
||||
|
||||
if( $loggedInMembersAttachmentUsage === NULL )
|
||||
{
|
||||
$loggedInMembersAttachmentUsage = \IPS\Db::i()->select( 'SUM(attach_filesize)', 'core_attachments', array( 'attach_member_id=?', \IPS\Member::loggedIn()->member_id ) )->first();
|
||||
}
|
||||
|
||||
$globalSpaceRemaining = ( ( \IPS\Member::loggedIn()->group['g_attach_max'] * 1024 ) - $loggedInMembersAttachmentUsage ) / 1048576;
|
||||
$maxTotalSize[] = $globalSpaceRemaining;
|
||||
|
||||
if ( $globalSpaceRemaining <= 0 )
|
||||
{
|
||||
$this->noUploaderError = 'editor_used_global_space';
|
||||
@@ -504,7 +550,7 @@ class _Editor extends FormAbstract
|
||||
}
|
||||
if ( \IPS\Member::loggedIn()->group['g_attach_per_post'] )
|
||||
{
|
||||
$perPostSpaceRemaining = \IPS\Member::loggedIn()->group['g_attach_per_post'] / 1024;
|
||||
$perPostSpaceRemaining = ( ( \IPS\Member::loggedIn()->group['g_attach_per_post'] * 1024 ) - $currentPostUsage ) / 1048576;
|
||||
$maxTotalSize[] = $perPostSpaceRemaining;
|
||||
if ( $perPostSpaceRemaining <= 0 )
|
||||
{
|
||||
@@ -538,6 +584,10 @@ class _Editor extends FormAbstract
|
||||
{
|
||||
$options['allowedFileTypes'] = explode( ',', \IPS\Settings::i()->attach_allowed_extensions );
|
||||
}
|
||||
elseif ( \IPS\Settings::i()->attach_allowed_types == 'media' )
|
||||
{
|
||||
$options['allowedFileTypes'] = array_merge( \IPS\Image::$imageExtensions, \IPS\File::$videoExtensions );
|
||||
}
|
||||
|
||||
if ( \IPS\Settings::i()->attachment_resample_size )
|
||||
{
|
||||
@@ -633,39 +683,6 @@ class _Editor extends FormAbstract
|
||||
/* Return */
|
||||
return $uploader;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch the emoticons - abstracted to a static method for caching
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getEmoticons()
|
||||
{
|
||||
if( !isset( \IPS\Data\Store::i()->emoticons ) )
|
||||
{
|
||||
$emoticons = iterator_to_array( \IPS\Db::i()->select( '*', 'core_emoticons', array( 'typed<>?', '' ) )->setKeyField('typed') );
|
||||
foreach( $emoticons as $key => $emoticon )
|
||||
{
|
||||
try
|
||||
{
|
||||
$emoticons[ $key ] = array(
|
||||
'image' => (string) \IPS\File::get( "core_Emoticons", $emoticon['image'] )->url,
|
||||
'image_2x' => ( isset( $emoticon['image_2x'] ) and $emoticon['image_2x'] ) ? (string) \IPS\File::get( "core_Emoticons", $emoticon['image_2x'] )->url . ' 2x' : FALSE,
|
||||
'height' => $emoticon['height'] ?: FALSE,
|
||||
'width' => $emoticon['width'] ?: FALSE,
|
||||
);
|
||||
}
|
||||
catch ( \Exception $e )
|
||||
{
|
||||
\IPS\Log::log( $e, 'bad_emoticon' );
|
||||
}
|
||||
}
|
||||
|
||||
\IPS\Data\Store::i()->emoticons = $emoticons;
|
||||
}
|
||||
|
||||
return \IPS\Data\Store::i()->emoticons;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attachments
|
||||
|
||||
Reference in new issue
Block a user