| @copyright 2007-2026 (c) AVE.cms | @link https://ave-cms.ru | @version 3.3 */ namespace App\Common; defined('BASEPATH') || die('Direct access to this location is not allowed.'); /** Executes administrator-managed PHP stored in templates, rubrics and blocks. */ class StoredPhpRuntime { public static function removeExecutableMarkers($content) { return str_replace(array('', '' . $content); } public static function normalizeDataPrefixes($content) { $content = (string) $content; $legacyBaseConstant = 'BASE' . '_DIR'; $content = preg_replace('/\b' . preg_quote($legacyBaseConstant, '/') . '\b/', 'BASEPATH', $content); $content = preg_replace( '/\s*require_once\s*\(\s*BASEPATH\s*\.\s*["\']\/class\/class\.porter\.php["\']\s*\)\s*;/i', '', $content ); $content = preg_replace( '/\bnew\s+Lingua_Stem_Ru\s*\(\s*\)/i', 'new \\App\\Helpers\\RussianStemmer()', $content ); $content = preg_replace('/->stem_word\s*\(/i', '->stemWord(', $content); $content = preg_replace( array( '/(?render(', '(new \\App\\Frontend\\RequestRenderer())->render(', '\\App\\Frontend\\PaginationRenderer::currentPage()', '\\App\\Frontend\\Media\\ThumbnailUrl::make(', ), $content ); $content = str_replace('Registry::stored', '\\App\\Common\\Registry::exists', $content); $content = preg_replace( array( '/(?curentdoc', '\\App\\Frontend\\PublicPageContext::document()', $content ); $content = str_replace( array('$AVE_Utm->get_value(', '$AVE_Utm->getValue(', 'new UTMCookie()'), array( '\\App\\Common\\TrafficAttribution::storedValue(', '\\App\\Common\\TrafficAttribution::storedValue(', 'new \\App\\Common\\TrafficAttribution()', ), $content ); $content = str_replace( array('$AVE_DB->Query', '$AVE_DB->EscStr', '->FetchAssocArray()', '->FetchRow()', '->GetCell()', '->getCell()'), array('DB::query', 'DB::safe', '->getAssoc()', '->getObject()', '->getValue()', '->getValue()'), $content ); $content = preg_replace('/(? 'module_catalog', 'BASKET_DATA_PREFIX' => 'module_basket', 'CONTACTS_DATA_PREFIX' => 'module_contacts', 'PUBLIC_USER_PREFIX' => '(?:users|user_groups|users_session|auth_tokens|user_profile_fields|user_profile_values)', 'PUBLIC_SHELL_PREFIX' => '(?:settings|sessions)', 'MODULE_DATA_PREFIX' => 'module(?:_[a-z0-9_]+)?', ); foreach ($maps as $constant => $suffix) { $content = preg_replace( '/(?