Getter/Setter for theme info

This commit is contained in:
Michael
2021-07-25 19:39:10 +00:00
parent c52b8595e8
commit 5a87ccf026
13 changed files with 57 additions and 28 deletions
+33 -1
View File
@@ -60,7 +60,7 @@ class App
// Allow themes to control internal parameters
// by changing App values in theme.php
public $theme_info = [
private $theme_info = [
'videowidth' => 425,
'videoheight' => 350,
'events_in_profile' => true
@@ -189,21 +189,53 @@ class App
return $this->timezone;
}
/**
* Set workerqueue information
*
* @param array $queue
* @return void
*/
public function setQueue(array $queue)
{
$this->queue = $queue;
}
/**
* Fetch workerqueue information
*
* @return array
*/
public function getQueue()
{
return $this->queue ?? [];
}
/**
* Fetch a specific workerqueue field
*
* @param string $index
* @return mixed
*/
public function getQueueValue(string $index)
{
return $this->queue[$index] ?? null;
}
public function setThemeInfoValue(string $index, $value)
{
$this->theme_info[$index] = $value;
}
public function getThemeInfo()
{
return $this->theme_info;
}
public function getThemeInfoValue(string $index, $default = null)
{
return $this->theme_info[$index] ?? $default;
}
/**
* Returns the current config cache of this node
*
+4 -4
View File
@@ -73,9 +73,9 @@ class OEmbed
$a = DI::app();
$cache_key = 'oembed:' . $a->theme_info['videowidth'] . ':' . $embedurl;
$cache_key = 'oembed:' . $a->getThemeInfoValue('videowidth') . ':' . $embedurl;
$condition = ['url' => Strings::normaliseLink($embedurl), 'maxwidth' => $a->theme_info['videowidth']];
$condition = ['url' => Strings::normaliseLink($embedurl), 'maxwidth' => $a->getThemeInfoValue('videowidth')];
$oembed_record = DBA::selectFirst('oembed', ['content'], $condition);
if (DBA::isResult($oembed_record)) {
$json_string = $oembed_record['content'];
@@ -111,7 +111,7 @@ class OEmbed
// but their OEmbed endpoint is only accessible by HTTPS ¯\_(ツ)_/¯
$href = str_replace(['http://www.youtube.com/', 'http://player.vimeo.com/'],
['https://www.youtube.com/', 'https://player.vimeo.com/'], $href);
$result = DI::httpRequest()->fetchFull($href . '&maxwidth=' . $a->theme_info['videowidth']);
$result = DI::httpRequest()->fetchFull($href . '&maxwidth=' . $a->getThemeInfoValue('videowidth'));
if ($result->getReturnCode() === 200) {
$json_string = $result->getBody();
break;
@@ -132,7 +132,7 @@ class OEmbed
if (!empty($oembed->type) && $oembed->type != 'error') {
DBA::insert('oembed', [
'url' => Strings::normaliseLink($embedurl),
'maxwidth' => $a->theme_info['videowidth'],
'maxwidth' => $a->getThemeInfoValue('videowidth'),
'content' => $json_string,
'created' => DateTimeFormat::utcNow()
], Database::INSERT_UPDATE);
+2 -2
View File
@@ -1729,7 +1729,7 @@ class BBCode
$text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism", '[youtube]$1[/youtube]', $text);
if ($try_oembed) {
$text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism", '<iframe width="' . $a->theme_info['videowidth'] . '" height="' . $a->theme_info['videoheight'] . '" src="https://www.youtube.com/embed/$1" frameborder="0" ></iframe>', $text);
$text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism", '<iframe width="' . $a->getThemeInfoValue('videowidth') . '" height="' . $a->getThemeInfoValue('videoheight') . '" src="https://www.youtube.com/embed/$1" frameborder="0" ></iframe>', $text);
} else {
$text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism",
'<a href="https://www.youtube.com/watch?v=$1" target="_blank" rel="noopener noreferrer">https://www.youtube.com/watch?v=$1</a>', $text);
@@ -1744,7 +1744,7 @@ class BBCode
$text = preg_replace("/\[vimeo\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/vimeo\]/ism", '[vimeo]$1[/vimeo]', $text);
if ($try_oembed) {
$text = preg_replace("/\[vimeo\]([0-9]+)(.*?)\[\/vimeo\]/ism", '<iframe width="' . $a->theme_info['videowidth'] . '" height="' . $a->theme_info['videoheight'] . '" src="https://player.vimeo.com/video/$1" frameborder="0" ></iframe>', $text);
$text = preg_replace("/\[vimeo\]([0-9]+)(.*?)\[\/vimeo\]/ism", '<iframe width="' . $a->getThemeInfoValue('videowidth') . '" height="' . $a->videoheight . '" src="https://player.vimeo.com/video/$1" frameborder="0" ></iframe>', $text);
} else {
$text = preg_replace("/\[vimeo\]([0-9]+)(.*?)\[\/vimeo\]/ism",
'<a href="https://vimeo.com/$1" target="_blank" rel="noopener noreferrer">https://vimeo.com/$1</a>', $text);
+1 -1
View File
@@ -166,7 +166,7 @@ class Renderer
} else {
$a = DI::app();
$class = self::$template_engines[$template_engine];
$obj = new $class($a->getCurrentTheme(), $a->theme_info);
$obj = new $class($a->getCurrentTheme(), $a->getThemeInfo());
self::$template_engine_instance[$template_engine] = $obj;
return $obj;
}
+2 -2
View File
@@ -214,7 +214,7 @@ class Theme
$theme = $a->getCurrentTheme();
$parent = Strings::sanitizeFilePathItem($a->theme_info['extends'] ?? $theme);
$parent = Strings::sanitizeFilePathItem($a->getThemeInfoValue('extends', $theme));
$paths = [
"view/theme/$theme/$file",
@@ -271,7 +271,7 @@ class Theme
$theme = Strings::sanitizeFilePathItem($theme);
$a = DI::app();
$base_theme = $a->theme_info['extends'] ?? '';
$base_theme = $a->getThemeInfoValue('extends') ?? '';
if (file_exists("view/theme/$theme/config.php")) {
return "view/theme/$theme/config.php";
+2 -2
View File
@@ -2802,8 +2802,8 @@ class Item
}
// Replace friendica image url size with theme preference.
if (!empty($a->theme_info['item_image_size'])) {
$ps = $a->theme_info['item_image_size'];
if (!empty($a->getThemeInfoValue('item_image_size'))) {
$ps = $a->getThemeInfoValue('item_image_size');
$s = preg_replace('|(<img[^>]+src="[^"]+/photo/[0-9a-f]+)-[0-9]|', "$1-" . $ps, $s);
}
+1 -1
View File
@@ -81,7 +81,7 @@ class BaseProfile extends BaseModule
];
// the calendar link for the full featured events calendar
if ($is_owner && $a->theme_info['events_in_profile']) {
if ($is_owner && $a->getThemeInfoValue('events_in_profile')) {
$tabs[] = [
'label' => DI::l10n()->t('Events'),
'url' => DI::baseUrl() . '/events',