From 165f72fd222daa8f93a494cdad7d9ef66ffa20d1 Mon Sep 17 00:00:00 2001 From: Guy Sartorelli <36352093+GuySartorelli@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:52:35 +1300 Subject: [PATCH] API Deprecations for template layer (#11420) --- src/Forms/GridField/GridFieldDataColumns.php | 3 + src/View/SSTemplateParser.peg | 2 +- src/View/SSTemplateParser.php | 2 +- src/View/SSViewer.php | 81 ++++++++++++++++++-- src/View/SSViewer_DataPresenter.php | 4 +- src/View/SSViewer_FromString.php | 7 ++ src/View/SSViewer_Scope.php | 22 +++++- src/View/ThemeResourceLoader.php | 3 + src/View/ViewableData.php | 15 ++++ 9 files changed, 126 insertions(+), 13 deletions(-) diff --git a/src/Forms/GridField/GridFieldDataColumns.php b/src/Forms/GridField/GridFieldDataColumns.php index 41b0713d9..1bcb2ea4a 100644 --- a/src/Forms/GridField/GridFieldDataColumns.php +++ b/src/Forms/GridField/GridFieldDataColumns.php @@ -5,6 +5,7 @@ namespace SilverStripe\Forms\GridField; use SilverStripe\Core\Convert; use InvalidArgumentException; use LogicException; +use SilverStripe\Dev\Deprecation; use SilverStripe\View\ViewableData; /** @@ -228,9 +229,11 @@ class GridFieldDataColumns extends AbstractGridFieldComponent implements GridFie * @param ViewableData $record * @param string $columnName * @return string|null - returns null if it could not found a value + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it. */ protected function getValueFromRelation($record, $columnName) { + Deprecation::notice('5.4.0', 'Will be removed without equivalent functionality to replace it.'); $fieldNameParts = explode('.', $columnName ?? ''); $tmpItem = clone($record); for ($idx = 0; $idx < sizeof($fieldNameParts ?? []); $idx++) { diff --git a/src/View/SSTemplateParser.peg b/src/View/SSTemplateParser.peg index 0f15460f9..76c40ed98 100644 --- a/src/View/SSTemplateParser.peg +++ b/src/View/SSTemplateParser.peg @@ -948,7 +948,7 @@ class SSTemplateParser extends Parser implements TemplateParser $arguments = $res['arguments']; // Note: 'type' here is important to disable subTemplates in SSViewer::getSubtemplateFor() - $res['php'] = '$val .= \\SilverStripe\\View\\SSViewer::execute_template([["type" => "Includes", '.$template.'], '.$template.'], $scope->getItem(), [' . + $res['php'] = '$val .= \\SilverStripe\\View\\SSViewer::execute_template([["type" => "Includes", '.$template.'], '.$template.'], $scope->getCurrentItem(), [' . implode(',', $arguments)."], \$scope, true);\n"; if ($this->includeDebuggingComments) { // Add include filename comments on dev sites diff --git a/src/View/SSTemplateParser.php b/src/View/SSTemplateParser.php index 9ca62eaa5..c7c273414 100644 --- a/src/View/SSTemplateParser.php +++ b/src/View/SSTemplateParser.php @@ -3897,7 +3897,7 @@ class SSTemplateParser extends Parser implements TemplateParser $arguments = $res['arguments']; // Note: 'type' here is important to disable subTemplates in SSViewer::getSubtemplateFor() - $res['php'] = '$val .= \\SilverStripe\\View\\SSViewer::execute_template([["type" => "Includes", '.$template.'], '.$template.'], $scope->getItem(), [' . + $res['php'] = '$val .= \\SilverStripe\\View\\SSViewer::execute_template([["type" => "Includes", '.$template.'], '.$template.'], $scope->getCurrentItem(), [' . implode(',', $arguments)."], \$scope, true);\n"; if ($this->includeDebuggingComments) { // Add include filename comments on dev sites diff --git a/src/View/SSViewer.php b/src/View/SSViewer.php index 3b82eb3fd..d8c142488 100644 --- a/src/View/SSViewer.php +++ b/src/View/SSViewer.php @@ -15,6 +15,7 @@ use SilverStripe\ORM\FieldType\DBField; use SilverStripe\ORM\FieldType\DBHTMLText; use SilverStripe\Security\Permission; use InvalidArgumentException; +use SilverStripe\Dev\Deprecation; /** * Parses a template file with an *.ss file extension. @@ -86,6 +87,7 @@ class SSViewer implements Flushable * * @config * @var string + * @deprecated 5.4.0 Will be moved to SilverStripe\View\SSTemplateEngine.global_key */ private static $global_key = '$CurrentReadingMode, $CurrentUser.ID'; @@ -134,6 +136,7 @@ class SSViewer implements Flushable * List of items being processed * * @var array + * @deprecated 5.4.0 Will be moved to SilverStripe\View\SSTemplateEngine */ protected static $topLevel = []; @@ -141,6 +144,7 @@ class SSViewer implements Flushable * List of templates to select from * * @var array + * @deprecated 5.4.0 Will be moved to SilverStripe\View\SSTemplateEngine */ protected $templates = null; @@ -148,6 +152,7 @@ class SSViewer implements Flushable * Absolute path to chosen template file * * @var string + * @deprecated 5.4.0 Will be moved to SilverStripe\View\SSTemplateEngine */ protected $chosen = null; @@ -155,6 +160,7 @@ class SSViewer implements Flushable * Templates to use when looking up 'Layout' or 'Content' * * @var array + * @deprecated 5.4.0 Will be moved to SilverStripe\View\SSTemplateEngine */ protected $subTemplates = []; @@ -165,11 +171,13 @@ class SSViewer implements Flushable /** * @var TemplateParser + * @deprecated 5.4.0 Will be moved to SilverStripe\View\SSTemplateEngine */ protected $parser; /** * @var CacheInterface + * @deprecated 5.4.0 Will be moved to SilverStripe\View\SSTemplateEngine */ protected $partialCacheStore = null; @@ -185,6 +193,7 @@ class SSViewer implements Flushable public function __construct($templates, TemplateParser $parser = null) { if ($parser) { + Deprecation::noticeWithNoReplacment('5.4.0', 'The $parser parameter is deprecated and will be removed'); $this->setParser($parser); } @@ -207,9 +216,11 @@ class SSViewer implements Flushable /** * Triggered early in the request when someone requests a flush. + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::flush() */ public static function flush() { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::flush()'); SSViewer::flush_template_cache(true); SSViewer::flush_cacheblock_cache(true); } @@ -220,9 +231,11 @@ class SSViewer implements Flushable * @param string $content The template content * @param bool|void $cacheTemplate Whether or not to cache the template from string * @return SSViewer + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::renderString() */ public static function fromString($content, $cacheTemplate = null) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::renderString()'); $viewer = SSViewer_FromString::create($content); if ($cacheTemplate !== null) { $viewer->setCacheTemplate($cacheTemplate); @@ -325,9 +338,11 @@ class SSViewer implements Flushable * Get the current item being processed * * @return ViewableData + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it. */ public static function topLevel() { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be removed without equivalent functionality to replace it.'); if (SSViewer::$topLevel) { return SSViewer::$topLevel[sizeof(SSViewer::$topLevel)-1]; } @@ -385,9 +400,11 @@ class SSViewer implements Flushable /** * @param string|array $templates + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::setTemplate() */ public function setTemplate($templates) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::setTemplate()'); $this->templates = $templates; $this->chosen = $this->chooseTemplate($templates); $this->subTemplates = []; @@ -398,9 +415,11 @@ class SSViewer implements Flushable * * @param array|string $templates * @return string + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it */ public static function chooseTemplate($templates) { + Deprecation::noticeWithNoReplacment('5.4.0'); return ThemeResourceLoader::inst()->findTemplate($templates, SSViewer::get_themes()); } @@ -408,9 +427,11 @@ class SSViewer implements Flushable * Set the template parser that will be used in template generation * * @param TemplateParser $parser + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::setParser() */ public function setParser(TemplateParser $parser) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::setParser()'); $this->parser = $parser; } @@ -418,9 +439,11 @@ class SSViewer implements Flushable * Returns the parser that is set for template generation * * @return TemplateParser + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::getParser() */ public function getParser() { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::getParser()'); if (!$this->parser) { $this->setParser(Injector::inst()->get('SilverStripe\\View\\SSTemplateParser')); } @@ -433,9 +456,11 @@ class SSViewer implements Flushable * @param array|string $templates * * @return bool + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::hasTemplate() */ public static function hasTemplate($templates) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::hasTemplate()'); return (bool)ThemeResourceLoader::inst()->findTemplate($templates, SSViewer::get_themes()); } @@ -452,9 +477,11 @@ class SSViewer implements Flushable /** * @return string + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it */ public function exists() { + Deprecation::noticeWithNoReplacment('5.4.0'); return $this->chosen; } @@ -462,9 +489,11 @@ class SSViewer implements Flushable * @param string $identifier A template name without '.ss' extension or path * @param string $type The template type, either "main", "Includes" or "Layout" * @return string Full system path to a template file + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it */ public static function getTemplateFileByType($identifier, $type = null) { + Deprecation::noticeWithNoReplacment('5.4.0'); return ThemeResourceLoader::inst()->findTemplate(['type' => $type, $identifier], SSViewer::get_themes()); } @@ -475,9 +504,11 @@ class SSViewer implements Flushable * * @param bool $force Set this to true to force a re-flush. If left to false, flushing * may only be performed once a request. + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::flushTemplateCache() */ public static function flush_template_cache($force = false) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::flushTemplateCache()'); if (!SSViewer::$template_cache_flushed || $force) { $dir = dir(TEMP_PATH); while (false !== ($file = $dir->read())) { @@ -496,9 +527,11 @@ class SSViewer implements Flushable * * @param bool $force Set this to true to force a re-flush. If left to false, flushing * may only be performed once a request. + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::flushCacheBlockCache() */ public static function flush_cacheblock_cache($force = false) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::flushCacheBlockCache()'); if (!SSViewer::$cacheblock_cache_flushed || $force) { $cache = Injector::inst()->get(CacheInterface::class . '.cacheblock'); $cache->clear(); @@ -512,9 +545,11 @@ class SSViewer implements Flushable * Set the cache object to use when storing / retrieving partial cache blocks. * * @param CacheInterface $cache + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::setPartialCacheStore() */ public function setPartialCacheStore($cache) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::setPartialCacheStore()'); $this->partialCacheStore = $cache; } @@ -522,9 +557,11 @@ class SSViewer implements Flushable * Get the cache object to use when storing / retrieving partial cache blocks. * * @return CacheInterface + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::getPartialCacheStore() */ public function getPartialCacheStore() { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::getPartialCacheStore()'); if ($this->partialCacheStore) { return $this->partialCacheStore; } @@ -552,11 +589,13 @@ class SSViewer implements Flushable * @param ViewableData $item The item to use as the root scope for the template * @param array $overlay Any variables to layer on top of the scope * @param array $underlay Any variables to layer underneath the scope - * @param ViewableData $inheritedScope The current scope of a parent template including a sub-template + * @param SSViewer_Scope|null $inheritedScope The current scope of a parent template including a sub-template * @return string The result of executing the template + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::includeGeneratedTemplate() */ protected function includeGeneratedTemplate($cacheFile, $item, $overlay, $underlay, $inheritedScope = null) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::includeGeneratedTemplate()'); if (isset($_GET['showtemplate']) && $_GET['showtemplate'] && Permission::check('ADMIN')) { $lines = file($cacheFile ?? ''); echo "

Template: $cacheFile

"; @@ -596,6 +635,9 @@ class SSViewer implements Flushable */ public function process($item, $arguments = null, $inheritedScope = null) { + if ($inheritedScope !== null) { + Deprecation::noticeWithNoReplacment('5.4.0', 'The $inheritedScope parameter is deprecated and will be removed'); + } // Set hashlinks and temporarily modify global state $rewrite = $this->getRewriteHashLinks(); $origRewriteDefault = static::getRewriteHashLinksDefault(); @@ -682,9 +724,11 @@ PHP; * @param string $subtemplate Sub-template to use * * @return array|null + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::getSubtemplateFor() */ protected function getSubtemplateFor($subtemplate) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::getSubtemplateFor()'); // Get explicit subtemplate name if (isset($this->subTemplates[$subtemplate])) { return $this->subTemplates[$subtemplate]; @@ -722,9 +766,14 @@ PHP; * @param bool $globalRequirements * * @return string Evaluated result + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::execute_template() */ public static function execute_template($template, $data, $arguments = null, $scope = null, $globalRequirements = false) { + Deprecation::noticeWithNoReplacment( + '5.4.0', + 'Will be replaced with SilverStripe\View\SSTemplateEngine::execute_template()' + ); $v = SSViewer::create($template); if ($globalRequirements) { @@ -754,9 +803,11 @@ PHP; * @param bool $globalRequirements * * @return string Evaluated result + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::renderString() */ public static function execute_string($content, $data, $arguments = null, $globalRequirements = false) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::renderString()'); $v = SSViewer::fromString($content); if ($globalRequirements) { @@ -781,9 +832,11 @@ PHP; * @param string $content The template contents * @param string $template The template file name * @return string + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::parseTemplateContent() */ public function parseTemplateContent($content, $template = "") { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be replaced with SilverStripe\View\SSTemplateEngine::parseTemplateContent()'); return $this->getParser()->compileString( $content, $template, @@ -796,18 +849,22 @@ PHP; * 'Content' & 'Layout', and will have to contain 'main' * * @return array + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it */ public function templates() { + Deprecation::noticeWithNoReplacment('5.4.0'); return array_merge(['main' => $this->chosen], $this->subTemplates); } /** * @param string $type "Layout" or "main" * @param string $file Full system path to the template file + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it */ public function setTemplateFile($type, $file) { + Deprecation::noticeWithNoReplacment('5.4.0'); if (!$type || $type == 'main') { $this->chosen = $file; } else { @@ -822,17 +879,29 @@ PHP; * @param string $contentGeneratedSoFar The content of the template generated so far; it should contain * the DOCTYPE declaration. * @return string + * @deprecated 5.4.0 Use getBaseTag() instead */ public static function get_base_tag($contentGeneratedSoFar) + { + Deprecation::notice('5.4.0', 'Use getBaseTag() instead'); + // Is the document XHTML? + $isXhtml = preg_match('/]+xhtml/i', $contentGeneratedSoFar ?? ''); + return static::getBaseTag($isXhtml); + } + + /** + * Return an appropriate base tag for the given template. + * It will be closed on an XHTML document, and unclosed on an HTML document. + * + * @param bool $isXhtml Whether the DOCTYPE is xhtml or not. + */ + public static function getBaseTag(bool $isXhtml = false): string { // Base href should always have a trailing slash $base = rtrim(Director::absoluteBaseURL(), '/') . '/'; - - // Is the document XHTML? - if (preg_match('/]+xhtml/i', $contentGeneratedSoFar ?? '')) { + if ($isXhtml) { return ""; - } else { - return ""; } + return ""; } } diff --git a/src/View/SSViewer_DataPresenter.php b/src/View/SSViewer_DataPresenter.php index 7c5b6e5ec..75ce2abc8 100644 --- a/src/View/SSViewer_DataPresenter.php +++ b/src/View/SSViewer_DataPresenter.php @@ -4,6 +4,7 @@ namespace SilverStripe\View; use InvalidArgumentException; use SilverStripe\Core\ClassInfo; +use SilverStripe\Dev\Deprecation; use SilverStripe\ORM\FieldType\DBField; /** @@ -11,7 +12,7 @@ use SilverStripe\ORM\FieldType\DBField; * data that is scope-independant (like BaseURL), or type-specific data that is layered on top cross-cut like * (like $FirstLast etc). * - * It's separate from SSViewer_Scope to keep that fairly complex code as clean as possible. + * @deprecated 5.4.0 Will be merged into SilverStripe\View\SSViewer_Scope */ class SSViewer_DataPresenter extends SSViewer_Scope { @@ -65,6 +66,7 @@ class SSViewer_DataPresenter extends SSViewer_Scope array $underlay = null, SSViewer_Scope $inheritedScope = null ) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be merged into ' . SSViewer_Scope::class, Deprecation::SCOPE_CLASS); parent::__construct($item, $inheritedScope); $this->overlay = $overlay ?: []; diff --git a/src/View/SSViewer_FromString.php b/src/View/SSViewer_FromString.php index 40dfed6a0..e0259f692 100644 --- a/src/View/SSViewer_FromString.php +++ b/src/View/SSViewer_FromString.php @@ -3,9 +3,11 @@ namespace SilverStripe\View; use SilverStripe\Core\Config\Config; +use SilverStripe\Dev\Deprecation; /** * Special SSViewer that will process a template passed as a string, rather than a filename. + * @deprecated 5.4.0 Will be replaced with SilverStripe\View\SSTemplateEngine::renderString() */ class SSViewer_FromString extends SSViewer { @@ -37,6 +39,11 @@ class SSViewer_FromString extends SSViewer */ public function __construct($content, TemplateParser $parser = null) { + Deprecation::noticeWithNoReplacment( + '5.4.0', + 'Will be replaced with SilverStripe\View\SSTemplateEngine::renderString()', + Deprecation::SCOPE_CLASS + ); if ($parser) { $this->setParser($parser); } diff --git a/src/View/SSViewer_Scope.php b/src/View/SSViewer_Scope.php index 15a674477..1dea7f94b 100644 --- a/src/View/SSViewer_Scope.php +++ b/src/View/SSViewer_Scope.php @@ -5,6 +5,7 @@ namespace SilverStripe\View; use ArrayIterator; use Countable; use Iterator; +use SilverStripe\Dev\Deprecation; use SilverStripe\ORM\FieldType\DBBoolean; use SilverStripe\ORM\FieldType\DBText; use SilverStripe\ORM\FieldType\DBFloat; @@ -123,9 +124,11 @@ class SSViewer_Scope * Returns the current "active" item * * @return object + * @deprecated 5.4.0 use getCurrentItem() instead. */ public function getItem() { + Deprecation::notice('5.4.0', 'use getCurrentItem() instead.'); $item = $this->itemIterator ? $this->itemIterator->current() : $this->item; if (is_scalar($item)) { $item = $this->convertScalarToDBField($item); @@ -133,6 +136,11 @@ class SSViewer_Scope return $item; } + public function getCurrentItem() + { + return $this->getItem(); + } + /** * Called at the start of every lookup chain by SSTemplateParser to indicate a new lookup from local scope * @@ -185,7 +193,7 @@ class SSViewer_Scope */ public function getObj($name, $arguments = [], $cache = false, $cacheName = null) { - $on = $this->getItem(); + $on = $this->getCurrentItem(); if ($on === null) { return null; } @@ -198,9 +206,11 @@ class SSViewer_Scope * @param bool $cache * @param string $cacheName * @return $this + * @deprecated 5.4.0 Will be renamed scopeToIntermediateValue() */ public function obj($name, $arguments = [], $cache = false, $cacheName = null) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be renamed scopeToIntermediateValue()'); switch ($name) { case 'Up': if ($this->upIndex === null) { @@ -252,7 +262,7 @@ class SSViewer_Scope */ public function self() { - $result = $this->getItem(); + $result = $this->getCurrentItem(); $this->resetLocalScope(); return $result; @@ -350,8 +360,12 @@ class SSViewer_Scope */ public function __call($name, $arguments) { - $on = $this->getItem(); - $retval = $on ? $on->$name(...$arguments) : null; + $on = $this->getCurrentItem(); + if ($on instanceof ViewableData && $name === 'XML_val') { + $retval = $on->XML_val(...$arguments); + } else { + $retval = $on ? $on->$name(...$arguments) : null; + } $this->resetLocalScope(); return $retval; diff --git a/src/View/ThemeResourceLoader.php b/src/View/ThemeResourceLoader.php index 8799fe13a..4ac45a097 100644 --- a/src/View/ThemeResourceLoader.php +++ b/src/View/ThemeResourceLoader.php @@ -9,6 +9,7 @@ use SilverStripe\Core\Injector\Injector; use SilverStripe\Core\Manifest\ModuleLoader; use SilverStripe\Core\Manifest\ModuleResourceLoader; use SilverStripe\Core\Path; +use SilverStripe\Dev\Deprecation; /** * Handles finding templates from a stack of template manifest objects. @@ -182,9 +183,11 @@ class ThemeResourceLoader implements Flushable, TemplateGlobalProvider * @return string Absolute path to resolved template file, or null if not resolved. * File location will be in the format themes//templates///.ss * Note that type (e.g. 'Layout') is not the root level directory under 'templates'. + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it. */ public function findTemplate($template, $themes = null) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be removed without equivalent functionality to replace it.'); if ($themes === null) { $themes = SSViewer::get_themes(); } diff --git a/src/View/ViewableData.php b/src/View/ViewableData.php index 080edcea8..655b1c8f2 100644 --- a/src/View/ViewableData.php +++ b/src/View/ViewableData.php @@ -426,9 +426,11 @@ class ViewableData implements IteratorAggregate * * @param string $field * @return string + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it. */ public function castingClass($field) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be removed without equivalent functionality to replace it.'); // Strip arguments $spec = $this->castingHelper($field); return trim(strtok($spec ?? '', '(') ?? ''); @@ -439,9 +441,11 @@ class ViewableData implements IteratorAggregate * * @param string $field * @return string 'xml'|'raw' + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it. */ public function escapeTypeForField($field) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be removed without equivalent functionality to replace it.'); $class = $this->castingClass($field) ?: $this->config()->get('default_cast'); /** @var DBField $type */ @@ -488,9 +492,11 @@ class ViewableData implements IteratorAggregate * @param string $fieldName Name of field * @param array $arguments List of optional arguments given * @return string + * @deprecated 5.4.0 Will be made private */ protected function objCacheName($fieldName, $arguments) { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be made private'); return $arguments ? $fieldName . ":" . var_export($arguments, true) : $fieldName; @@ -546,6 +552,9 @@ class ViewableData implements IteratorAggregate */ public function obj($fieldName, $arguments = [], $cache = false, $cacheName = null) { + if ($cacheName !== null) { + Deprecation::noticeWithNoReplacment('5.4.0', 'The $cacheName parameter has been deprecated and will be removed'); + } if (!$cacheName && $cache) { $cacheName = $this->objCacheName($fieldName, $arguments); } @@ -588,9 +597,11 @@ class ViewableData implements IteratorAggregate * @param array $arguments * @param string $identifier an optional custom cache identifier * @return Object|DBField + * @deprecated 5.4.0 use obj() instead */ public function cachedCall($fieldName, $arguments = [], $identifier = null) { + Deprecation::notice('5.4.0', 'Use obj() instead'); return $this->obj($fieldName, $arguments, true, $identifier); } @@ -617,9 +628,11 @@ class ViewableData implements IteratorAggregate * @param array $arguments * @param bool $cache * @return string + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it */ public function XML_val($field, $arguments = [], $cache = false) { + Deprecation::noticeWithNoReplacment('5.4.0'); $result = $this->obj($field, $arguments, $cache); // Might contain additional formatting over ->XML(). E.g. parse shortcodes, nl2br() return $result->forTemplate(); @@ -630,9 +643,11 @@ class ViewableData implements IteratorAggregate * * @param array $fields an array of field names * @return array + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it */ public function getXMLValues($fields) { + Deprecation::noticeWithNoReplacment('5.4.0'); $result = []; foreach ($fields as $field) {