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

+4 -2
View File
@@ -131,7 +131,8 @@ class _Template extends \IPS\Theme\Template
$allowedScriptBlocks = array(
'globalTemplate', 'blankTemplate', 'loginTemplate', 'includeJS', 'dashboard',
'onlineUsers', 'registrations', 'viglink', 'linkedin', 'reddit', 'poll',
'giftvoucherPrint', 'packingLabel', 'packingSheet', 'streamWrapper', 'embedExternal', 'embedInternal'
'giftvoucherPrint', 'packingLabel', 'packingSheet', 'streamWrapper', 'embedExternal', 'embedInternal', 'pixel',
'captchaKeycaptcha'
);
/* Check we're not being naughty */
@@ -166,7 +167,8 @@ class _Template extends \IPS\Theme\Template
/* Run it */
ob_start();
$return = call_user_func_array( 'IPS\\Theme\\'.$functionName, $params );
$function = 'IPS\\Theme\\'.$functionName;
$return = $function( ...$params );
if( $error = ob_get_clean() )
{
echo "<strong>{$functionName}</strong><br>{$error}<br><br><pre>{$output}";
+30 -28
View File
@@ -219,14 +219,11 @@ class _Theme extends \IPS\Theme
if ( $file === 'custom' and $app === 'core' )
{
foreach ( \IPS\Plugin::plugins() as $plugin )
foreach ( \IPS\Plugin::enabledPlugins() as $plugin )
{
if ( $plugin->enabled )
foreach ( new \GlobIterator( \IPS\ROOT_PATH . '/plugins/' . $plugin->location . '/dev/css/*' ) as $file )
{
foreach ( new \GlobIterator( \IPS\ROOT_PATH . '/plugins/' . $plugin->location . '/dev/css/*' ) as $file )
{
$return[] = str_replace( array( 'http://', 'https://' ), '//', \IPS\Settings::i()->base_url ) . "applications/core/interface/css/css.php?css=" . 'plugins/' . $plugin->location . '/dev/css/' . $file->getFilename();
}
$return[] = str_replace( array( 'http://', 'https://' ), '//', \IPS\Settings::i()->base_url ) . "applications/core/interface/css/css.php?css=" . 'plugins/' . $plugin->location . '/dev/css/' . $file->getFilename();
}
}
}
@@ -258,8 +255,17 @@ class _Theme extends \IPS\Theme
{
foreach ( new \GlobIterator( \IPS\ROOT_PATH . '/plugins/*/dev/js/*' ) as $file )
{
$url = str_replace( \IPS\ROOT_PATH, rtrim( \IPS\Settings::i()->base_url, '/' ), $file );
$return[] = str_replace( '\\', '/', $url );
try
{
$plugin = \IPS\Plugin::getPluginFromPath( $file );
if( $plugin->enabled )
{
$url = str_replace( \IPS\ROOT_PATH, rtrim( \IPS\Settings::i()->base_url, '/' ), $file );
$return[] = str_replace( '\\', '/', $url );
}
}
catch( \OutOfRangeException $e ){}
}
}
else
@@ -316,7 +322,7 @@ class _Theme extends \IPS\Theme
if ( $location === 'interface' )
{
return \IPS\Settings::i()->base_url . "/applications/{$app}/interface/{$path}";
return \IPS\Http\Url::internal( "applications/{$app}/interface/{$path}", 'interface', NULL, array(), \IPS\Http\Url::PROTOCOL_RELATIVE );
}
$url = \IPS\Http\Url::createFromString( $baseUrl . str_replace( '\\', '/', str_replace( \IPS\ROOT_PATH . '/', '', static::_getResourcePath( $app, $location, $path ) ) ), false );
@@ -402,7 +408,13 @@ class _Theme extends \IPS\Theme
/* If we're syncing designer mode, check for actual changes */
$name = preg_replace( '/[^a-zA-Z0-9_]/', '', str_replace( '.phtml', '', $file->getFilename() ) );
/* Prevent '.phtml' files creating empty template rows in the database */
if ( empty( $name ) )
{
continue;
}
if ( $id > 0 )
{
if ( isset( $currentTemplates[ $app ][ $location->getFilename() ][ $group->getFilename() ][ $name ] ) )
@@ -427,11 +439,7 @@ class _Theme extends \IPS\Theme
}
}
$uniqueKey = md5( $id . ';' . $app . ';' . $location->getFilename() . ';' . $group->getFilename() . ';' . ( str_replace( '.phtml', '', $file->getFilename() ) ) );
\IPS\Db::i()->delete( 'core_theme_templates', array( 'template_unique_key=?', $uniqueKey ) );
\IPS\Db::i()->insert( 'core_theme_templates', array( 'template_set_id' => $save['set_id'],
\IPS\Db::i()->replace( 'core_theme_templates', array( 'template_set_id' => $save['set_id'],
'template_app' => $app,
'template_added_to' => $save['added_to'],
'template_location' => $location->getFilename(),
@@ -442,7 +450,6 @@ class _Theme extends \IPS\Theme
'template_updated' => time(),
'template_user_added' => $save['user_added'],
'template_user_edited' => $save['user_edited'],
'template_unique_key' => $uniqueKey,
'template_version' => ( isset( $master ) AND isset( $master[ $key ] ) ) ? $master[ $key ]['template_version'] : NULL,
'template_removable' => $id ) );
}
@@ -604,11 +611,7 @@ class _Theme extends \IPS\Theme
$save['set_id'] = $id;
}
}
$uniqueKey = md5( $id . ';' . $app . ';' . $location . ';' . $finalPath . ';' . $file->getFilename() );
\IPS\Db::i()->delete( 'core_theme_css', array( 'css_unique_key=?', $uniqueKey ) );
\IPS\Db::i()->insert( 'core_theme_css', array( 'css_set_id' => $save['set_id'],
'css_app' => $app,
'css_added_to' => $save['added_to'],
@@ -621,7 +624,6 @@ class _Theme extends \IPS\Theme
'css_position' => $cssPos,
'css_user_edited' => $save['user_edited'],
'css_updated' => time(),
'css_unique_key' => $uniqueKey,
'css_hidden' => $cssHidden ) );
}
}
@@ -645,7 +647,7 @@ class _Theme extends \IPS\Theme
if ( $app === null OR $app == $dir->getFilename() )
{
\IPS\Theme::deleteCompiledResources( $dir->getFilename(), null, null, null, ( $id === 0 ? 1 : $id ) );
\IPS\Theme::deleteCompiledResources( $dir->getFilename(), null, null, null, ( $id === 0 ? \IPS\DEFAULT_THEME_ID : $id ) );
if ( $id )
{
@@ -733,7 +735,7 @@ class _Theme extends \IPS\Theme
$custom = 0;
$name = self::makeBuiltTemplateLookupHash($app, $location, $path) . '_' . $file->getFilename();
$fileName = (string) \IPS\File::create( 'core_Theme', $name, $content, 'set_resources_' . ( $id == 0 ? 1 : $id ) );
$fileName = (string) \IPS\File::create( 'core_Theme', $name, $content, 'set_resources_' . ( $id == 0 ? \IPS\DEFAULT_THEME_ID : $id ) );
if ( ! isset( $master[ $file->getFilename() ] ) or !\IPS\Login::compareHashes( md5( $content ), $master[ $file->getFilename() ] ) )
{
@@ -741,7 +743,7 @@ class _Theme extends \IPS\Theme
}
\IPS\Db::i()->insert( 'core_theme_resources', array(
'resource_set_id' => ( $id == 0 ? 1 : $id ),
'resource_set_id' => ( $id == 0 ? \IPS\DEFAULT_THEME_ID : $id ),
'resource_app' => $app,
'resource_location' => $location,
'resource_path' => $path,
@@ -860,7 +862,7 @@ class _Theme extends \IPS\Theme
throw new \RuntimeException( $e->getMessage() );
}
foreach( \IPS\Db::i()->select( '*', 'core_theme_resources', array( 'resource_app=? AND resource_set_id=?', $app, 1 ) )->setKeyField('resource_id') as $resourceId => $resource )
foreach( \IPS\Db::i()->select( '*', 'core_theme_resources', array( 'resource_app=? AND resource_set_id=?', $app, \IPS\DEFAULT_THEME_ID ) )->setKeyField('resource_id') as $resourceId => $resource )
{
try
{
@@ -1085,7 +1087,7 @@ class _Theme extends \IPS\Theme
\IPS\Db::i()->select(
'sv.*, core_theme_settings_fields.*',
'core_theme_settings_fields',
array( 'sc_set_id=?', 1 )
array( 'sc_set_id=?', \IPS\DEFAULT_THEME_ID )
)->join(
array('core_theme_settings_values', 'sv'),
'sv.sv_id=core_theme_settings_fields.sc_id'
@@ -1202,7 +1204,7 @@ class _Theme extends \IPS\Theme
public static function varDumpException( $e )
{
echo '<pre>';
print_r( $e );
var_dump( $e );
exit;
}
}