diff --git a/src/Forms/GridField/GridFieldDataColumns.php b/src/Forms/GridField/GridFieldDataColumns.php index c12ba899f..ed827fca2 100644 --- a/src/Forms/GridField/GridFieldDataColumns.php +++ b/src/Forms/GridField/GridFieldDataColumns.php @@ -6,6 +6,7 @@ use SilverStripe\Core\Convert; use InvalidArgumentException; use LogicException; use SilverStripe\Model\ModelData; +use SilverStripe\Dev\Deprecation; /** * @see GridField @@ -228,9 +229,11 @@ class GridFieldDataColumns extends AbstractGridFieldComponent implements GridFie * @param ModelData $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/Model/ModelData.php b/src/Model/ModelData.php index 04d5a1fc0..9ae5cde65 100644 --- a/src/Model/ModelData.php +++ b/src/Model/ModelData.php @@ -15,6 +15,7 @@ use SilverStripe\Core\Injector\Injectable; use SilverStripe\Core\Injector\Injector; use SilverStripe\Dev\Debug; use SilverStripe\Core\ArrayLib; +use SilverStripe\Dev\Deprecation; use SilverStripe\Model\List\ArrayList; use SilverStripe\ORM\FieldType\DBField; use SilverStripe\ORM\FieldType\DBHTMLText; @@ -385,9 +386,12 @@ class ModelData /** * Get the class name a field on this object will be casted to. + * + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it. */ public function castingClass(string $field): string { + Deprecation::noticeWithNoReplacment('5.4.0', 'Will be removed without equivalent functionality to replace it.'); // Strip arguments $spec = $this->castingHelper($field); return trim(strtok($spec ?? '', '(') ?? ''); @@ -397,9 +401,11 @@ class ModelData * Return the string-format type for the given field. * * @return string 'xml'|'raw' + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it. */ public function escapeTypeForField(string $field): string { + 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 */ @@ -445,9 +451,11 @@ class ModelData * @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; @@ -506,6 +514,9 @@ class ModelData bool $cache = false, ?string $cacheName = null ): ?object { + if ($cacheName !== null) { + Deprecation::noticeWithNoReplacment('5.4.0', 'The $cacheName parameter has been deprecated and will be removed'); + } $hasObj = false; if (!$cacheName && $cache) { $cacheName = $this->objCacheName($fieldName, $arguments); @@ -569,9 +580,11 @@ class ModelData * without re-running the method. * * @return Object|DBField + * @deprecated 5.4.0 use obj() instead */ public function cachedCall(string $fieldName, array $arguments = [], ?string $cacheName = null): object { + Deprecation::notice('5.4.0', 'Use obj() instead'); return $this->obj($fieldName, $arguments, true, $cacheName); } @@ -591,9 +604,12 @@ class ModelData /** * Get the string value of a field on this object that has been suitable escaped to be inserted directly into a * template. + * + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it */ public function XML_val(string $field, array $arguments = [], bool $cache = false): string { + Deprecation::noticeWithNoReplacment('5.4.0'); $result = $this->obj($field, $arguments, $cache); if (!$result) { return ''; @@ -606,9 +622,11 @@ class ModelData * Get an array of XML-escaped values by field name * * @param array $fields an array of field names + * @deprecated 5.4.0 Will be removed without equivalent functionality to replace it */ public function getXMLValues(array $fields): array { + Deprecation::noticeWithNoReplacment('5.4.0'); $result = []; foreach ($fields as $field) { diff --git a/src/View/SSTemplateParser.peg b/src/View/SSTemplateParser.peg index b893ef4ae..a17a308f3 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 4e4842489..2b7108260 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 63f0edc34..e276b7fe2 100644 --- a/src/View/SSViewer.php +++ b/src/View/SSViewer.php @@ -16,6 +16,7 @@ use SilverStripe\ORM\FieldType\DBHTMLText; use SilverStripe\Security\Permission; use InvalidArgumentException; use SilverStripe\Model\ModelData; +use SilverStripe\Dev\Deprecation; /** * Parses a template file with an *.ss file extension. @@ -87,6 +88,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'; @@ -135,6 +137,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 = []; @@ -142,6 +145,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; @@ -149,6 +153,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; @@ -156,6 +161,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 = []; @@ -166,11 +172,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; @@ -186,6 +194,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); } @@ -208,9 +217,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); } @@ -221,9 +232,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); @@ -326,9 +339,11 @@ class SSViewer implements Flushable * Get the current item being processed * * @return ModelData + * @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]; } @@ -386,9 +401,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 = []; @@ -399,9 +416,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()); } @@ -409,9 +428,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; } @@ -419,9 +440,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')); } @@ -434,9 +457,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()); } @@ -453,9 +478,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; } @@ -463,9 +490,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()); } @@ -476,9 +505,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())) { @@ -497,9 +528,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(); @@ -513,9 +546,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; } @@ -523,9 +558,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; } @@ -553,11 +590,13 @@ class SSViewer implements Flushable * @param ModelData $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 ModelData $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 "