Skip to content
Snippets Groups Projects
Commit 60124708 authored by Demian Katz's avatar Demian Katz
Browse files

Refactored getCover()

- aimed for greater clarity and potential code reuse
- added getCoverDetails() to optionally expose more details.
parent 36418bf1
No related merge requests found
...@@ -415,33 +415,63 @@ class Record extends AbstractHelper ...@@ -415,33 +415,63 @@ class Record extends AbstractHelper
* @return string * @return string
*/ */
public function getCover($context, $default, $link = false) public function getCover($context, $default, $link = false)
{
$details = $this->getCoverDetails($context, $default, $link);
return $details['html'];
}
/**
* Get the rendered cover plus some useful parameters.
*
* @param string $context Context of code being genarated
* @param string $default The default size of the cover
* @param string $link The link for the anchor
*
* @return array
*/
public function getCoverDetails($context, $default, $link = false)
{
$details = compact('link', 'context') + [
'driver' => $this->driver, 'cover' => false, 'size' => false
];
$preferredSize = $this->getCoverSize($context, $default);
if (empty($preferredSize)) { // covers disabled entirely
$details['html'] = '';
} else {
// Find best option if more than one size is defined (e.g. small:medium)
foreach (explode(':', $preferredSize) as $size) {
if ($details['cover'] = $this->getThumbnail($size)) {
$details['size'] = $size;
break;
}
}
$details['html'] = $this->contextHelper->renderInContext(
'record/cover.phtml', $details
);
}
return $details;
}
/**
* Get the configured thumbnail size for record lists
*
* @param string $context Context of code being genarated
* @param string $default The default size of the cover
*
* @return string
*/
protected function getCoverSize($context, $default = 'medium')
{ {
if (isset($this->config->Content->coversize) if (isset($this->config->Content->coversize)
&& !$this->config->Content->coversize && !$this->config->Content->coversize
) { ) {
// covers disabled entirely // covers disabled entirely
$preferredSize = false; return false;
} else {
// check for context-specific overrides
$preferredSize = isset($this->config->Content->coversize[$context])
? $this->config->Content->coversize[$context] : $default;
}
if (empty($preferredSize)) {
return '';
}
// Find best option if more than one size is defined (e.g. small:medium)
$cover = false; // assume invalid until good size found below
foreach (explode(':', $preferredSize) as $size) {
if ($cover = $this->getThumbnail($size)) {
break;
}
} }
// check for context-specific overrides
$driver = $this->driver; // for convenient use in compact() return isset($this->config->Content->coversize[$context])
return $this->contextHelper->renderInContext( ? $this->config->Content->coversize[$context] : $default;
'record/cover.phtml', compact('cover', 'link', 'context', 'driver')
);
} }
/** /**
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment