Getter/Setter for theme info
This commit is contained in:
parent
c52b8595e8
commit
5a87ccf026
13 changed files with 57 additions and 28 deletions
|
@ -170,9 +170,8 @@ The content of this file should be something like
|
||||||
use Friendica\App;
|
use Friendica\App;
|
||||||
|
|
||||||
function duepuntozero_lr_init(App $a) {
|
function duepuntozero_lr_init(App $a) {
|
||||||
$a-> theme_info = array(
|
$a->setThemeInfoValue('extends', 'duepuntozero');
|
||||||
'extends' => 'duepuntozero'.
|
|
||||||
);
|
|
||||||
$a->set_template_engine('smarty3');
|
$a->set_template_engine('smarty3');
|
||||||
/* and more stuff e.g. the JavaScript function for the header */
|
/* and more stuff e.g. the JavaScript function for the header */
|
||||||
}
|
}
|
||||||
|
@ -272,9 +271,7 @@ If you like to use another templating engine, please implement it.
|
||||||
|
|
||||||
When you want to inherit stuff from another theme you have to *announce* this in the theme_info:
|
When you want to inherit stuff from another theme you have to *announce* this in the theme_info:
|
||||||
|
|
||||||
$a->theme_info = array(
|
$a->setThemeInfoValue('extends', 'duepuntozero');
|
||||||
'extends' => 'duepuntozero',
|
|
||||||
);
|
|
||||||
|
|
||||||
which declares *duepuntozero* as parent of the theme.
|
which declares *duepuntozero* as parent of the theme.
|
||||||
|
|
||||||
|
|
|
@ -255,7 +255,7 @@ function events_content(App $a)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($a->theme_info['events_in_profile']) {
|
if ($a->getThemeInfoValue('events_in_profile')) {
|
||||||
Nav::setSelected('home');
|
Nav::setSelected('home');
|
||||||
} else {
|
} else {
|
||||||
Nav::setSelected('events');
|
Nav::setSelected('events');
|
||||||
|
@ -279,7 +279,7 @@ function events_content(App $a)
|
||||||
$o = '';
|
$o = '';
|
||||||
$tabs = '';
|
$tabs = '';
|
||||||
// tabs
|
// tabs
|
||||||
if ($a->theme_info['events_in_profile']) {
|
if ($a->getThemeInfoValue('events_in_profile')) {
|
||||||
$tabs = BaseProfile::getTabsHTML($a, 'events', true, $a->user);
|
$tabs = BaseProfile::getTabsHTML($a, 'events', true, $a->user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
34
src/App.php
34
src/App.php
|
@ -60,7 +60,7 @@ class App
|
||||||
|
|
||||||
// Allow themes to control internal parameters
|
// Allow themes to control internal parameters
|
||||||
// by changing App values in theme.php
|
// by changing App values in theme.php
|
||||||
public $theme_info = [
|
private $theme_info = [
|
||||||
'videowidth' => 425,
|
'videowidth' => 425,
|
||||||
'videoheight' => 350,
|
'videoheight' => 350,
|
||||||
'events_in_profile' => true
|
'events_in_profile' => true
|
||||||
|
@ -189,21 +189,53 @@ class App
|
||||||
return $this->timezone;
|
return $this->timezone;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set workerqueue information
|
||||||
|
*
|
||||||
|
* @param array $queue
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function setQueue(array $queue)
|
public function setQueue(array $queue)
|
||||||
{
|
{
|
||||||
$this->queue = $queue;
|
$this->queue = $queue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch workerqueue information
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
public function getQueue()
|
public function getQueue()
|
||||||
{
|
{
|
||||||
return $this->queue ?? [];
|
return $this->queue ?? [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch a specific workerqueue field
|
||||||
|
*
|
||||||
|
* @param string $index
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
public function getQueueValue(string $index)
|
public function getQueueValue(string $index)
|
||||||
{
|
{
|
||||||
return $this->queue[$index] ?? null;
|
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
|
* Returns the current config cache of this node
|
||||||
*
|
*
|
||||||
|
|
|
@ -73,9 +73,9 @@ class OEmbed
|
||||||
|
|
||||||
$a = DI::app();
|
$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);
|
$oembed_record = DBA::selectFirst('oembed', ['content'], $condition);
|
||||||
if (DBA::isResult($oembed_record)) {
|
if (DBA::isResult($oembed_record)) {
|
||||||
$json_string = $oembed_record['content'];
|
$json_string = $oembed_record['content'];
|
||||||
|
@ -111,7 +111,7 @@ class OEmbed
|
||||||
// but their OEmbed endpoint is only accessible by HTTPS ¯\_(ツ)_/¯
|
// but their OEmbed endpoint is only accessible by HTTPS ¯\_(ツ)_/¯
|
||||||
$href = str_replace(['http://www.youtube.com/', 'http://player.vimeo.com/'],
|
$href = str_replace(['http://www.youtube.com/', 'http://player.vimeo.com/'],
|
||||||
['https://www.youtube.com/', 'https://player.vimeo.com/'], $href);
|
['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) {
|
if ($result->getReturnCode() === 200) {
|
||||||
$json_string = $result->getBody();
|
$json_string = $result->getBody();
|
||||||
break;
|
break;
|
||||||
|
@ -132,7 +132,7 @@ class OEmbed
|
||||||
if (!empty($oembed->type) && $oembed->type != 'error') {
|
if (!empty($oembed->type) && $oembed->type != 'error') {
|
||||||
DBA::insert('oembed', [
|
DBA::insert('oembed', [
|
||||||
'url' => Strings::normaliseLink($embedurl),
|
'url' => Strings::normaliseLink($embedurl),
|
||||||
'maxwidth' => $a->theme_info['videowidth'],
|
'maxwidth' => $a->getThemeInfoValue('videowidth'),
|
||||||
'content' => $json_string,
|
'content' => $json_string,
|
||||||
'created' => DateTimeFormat::utcNow()
|
'created' => DateTimeFormat::utcNow()
|
||||||
], Database::INSERT_UPDATE);
|
], Database::INSERT_UPDATE);
|
||||||
|
|
|
@ -1729,7 +1729,7 @@ class BBCode
|
||||||
$text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism", '[youtube]$1[/youtube]', $text);
|
$text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism", '[youtube]$1[/youtube]', $text);
|
||||||
|
|
||||||
if ($try_oembed) {
|
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 {
|
} else {
|
||||||
$text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism",
|
$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);
|
'<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);
|
$text = preg_replace("/\[vimeo\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/vimeo\]/ism", '[vimeo]$1[/vimeo]', $text);
|
||||||
|
|
||||||
if ($try_oembed) {
|
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 {
|
} else {
|
||||||
$text = preg_replace("/\[vimeo\]([0-9]+)(.*?)\[\/vimeo\]/ism",
|
$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);
|
'<a href="https://vimeo.com/$1" target="_blank" rel="noopener noreferrer">https://vimeo.com/$1</a>', $text);
|
||||||
|
|
|
@ -166,7 +166,7 @@ class Renderer
|
||||||
} else {
|
} else {
|
||||||
$a = DI::app();
|
$a = DI::app();
|
||||||
$class = self::$template_engines[$template_engine];
|
$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;
|
self::$template_engine_instance[$template_engine] = $obj;
|
||||||
return $obj;
|
return $obj;
|
||||||
}
|
}
|
||||||
|
|
|
@ -214,7 +214,7 @@ class Theme
|
||||||
|
|
||||||
$theme = $a->getCurrentTheme();
|
$theme = $a->getCurrentTheme();
|
||||||
|
|
||||||
$parent = Strings::sanitizeFilePathItem($a->theme_info['extends'] ?? $theme);
|
$parent = Strings::sanitizeFilePathItem($a->getThemeInfoValue('extends', $theme));
|
||||||
|
|
||||||
$paths = [
|
$paths = [
|
||||||
"view/theme/$theme/$file",
|
"view/theme/$theme/$file",
|
||||||
|
@ -271,7 +271,7 @@ class Theme
|
||||||
$theme = Strings::sanitizeFilePathItem($theme);
|
$theme = Strings::sanitizeFilePathItem($theme);
|
||||||
|
|
||||||
$a = DI::app();
|
$a = DI::app();
|
||||||
$base_theme = $a->theme_info['extends'] ?? '';
|
$base_theme = $a->getThemeInfoValue('extends') ?? '';
|
||||||
|
|
||||||
if (file_exists("view/theme/$theme/config.php")) {
|
if (file_exists("view/theme/$theme/config.php")) {
|
||||||
return "view/theme/$theme/config.php";
|
return "view/theme/$theme/config.php";
|
||||||
|
|
|
@ -2802,8 +2802,8 @@ class Item
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replace friendica image url size with theme preference.
|
// Replace friendica image url size with theme preference.
|
||||||
if (!empty($a->theme_info['item_image_size'])) {
|
if (!empty($a->getThemeInfoValue('item_image_size'))) {
|
||||||
$ps = $a->theme_info['item_image_size'];
|
$ps = $a->getThemeInfoValue('item_image_size');
|
||||||
$s = preg_replace('|(<img[^>]+src="[^"]+/photo/[0-9a-f]+)-[0-9]|', "$1-" . $ps, $s);
|
$s = preg_replace('|(<img[^>]+src="[^"]+/photo/[0-9a-f]+)-[0-9]|', "$1-" . $ps, $s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,7 @@ class BaseProfile extends BaseModule
|
||||||
];
|
];
|
||||||
|
|
||||||
// the calendar link for the full featured events calendar
|
// 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[] = [
|
$tabs[] = [
|
||||||
'label' => DI::l10n()->t('Events'),
|
'label' => DI::l10n()->t('Events'),
|
||||||
'url' => DI::baseUrl() . '/events',
|
'url' => DI::baseUrl() . '/events',
|
||||||
|
|
|
@ -24,8 +24,8 @@ class SmiliesTest extends MockedTest
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
$this->setUpVfsDir();
|
$this->setUpVfsDir();
|
||||||
$this->mockApp($this->root);
|
$this->mockApp($this->root);
|
||||||
$this->app->theme_info['videowidth'] = 425;
|
$this->app->setThemeInfoValue('videowidth', 425);
|
||||||
$this->app->theme_info['videoheight'] = 350;
|
$this->app->setThemeInfoValue('videoheight', 350);
|
||||||
$this->configMock->shouldReceive('get')
|
$this->configMock->shouldReceive('get')
|
||||||
->with('system', 'no_smilies')
|
->with('system', 'no_smilies')
|
||||||
->andReturn(false);
|
->andReturn(false);
|
||||||
|
|
|
@ -40,8 +40,8 @@ class BBCodeTest extends MockedTest
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
$this->setUpVfsDir();
|
$this->setUpVfsDir();
|
||||||
$this->mockApp($this->root);
|
$this->mockApp($this->root);
|
||||||
$this->app->theme_info['videowidth'] = 425;
|
$this->app->setThemeInfoValue('videowidth', 425);
|
||||||
$this->app->theme_info['videoheight'] = 350;
|
$this->app->setThemeInfoValue('videoheight', 350);
|
||||||
$this->configMock->shouldReceive('get')
|
$this->configMock->shouldReceive('get')
|
||||||
->with('system', 'remove_multiplicated_lines')
|
->with('system', 'remove_multiplicated_lines')
|
||||||
->andReturn(false);
|
->andReturn(false);
|
||||||
|
|
|
@ -33,8 +33,8 @@ function frio_init(App $a)
|
||||||
$frio = 'view/theme/frio';
|
$frio = 'view/theme/frio';
|
||||||
|
|
||||||
// disable the events module link in the profile tab
|
// disable the events module link in the profile tab
|
||||||
$a->theme_info['events_in_profile'] = false;
|
$a->setThemeInfoValue('events_in_profile', false);
|
||||||
$a->theme_info['videowidth'] = 622;
|
$a->setThemeInfoValue('videowidth', 622);
|
||||||
|
|
||||||
Renderer::setActiveTemplateEngine('smarty3');
|
Renderer::setActiveTemplateEngine('smarty3');
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ use Friendica\Util\Strings;
|
||||||
|
|
||||||
function vier_init(App $a)
|
function vier_init(App $a)
|
||||||
{
|
{
|
||||||
$a->theme_info['events_in_profile'] = false;
|
$a->setThemeInfoValue('events_in_profile', false);
|
||||||
|
|
||||||
Renderer::setActiveTemplateEngine('smarty3');
|
Renderer::setActiveTemplateEngine('smarty3');
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue