114 lines
2.4 KiB
PHP
114 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace Arrilot\Widgets;
|
|
|
|
abstract class AbstractWidget
|
|
{
|
|
/**
|
|
* The number of seconds before each reload.
|
|
* False means no reload at all.
|
|
*
|
|
* @var int|float|bool
|
|
*/
|
|
public $reloadTimeout = false;
|
|
|
|
/**
|
|
* The number of minutes before cache expires.
|
|
* False means no caching at all.
|
|
*
|
|
* @var int|float|bool
|
|
*/
|
|
public $cacheTime = false;
|
|
|
|
/**
|
|
* Cache tags allow you to tag related items in the cache and then flush all cached values that assigned a given tag.
|
|
*
|
|
* @var array
|
|
*/
|
|
public $cacheTags = [];
|
|
|
|
/**
|
|
* Should widget params be encrypted before sending them to /arrilot/load-widget?
|
|
* Turning encryption off can help with making custom reloads from javascript, but makes widget params publicly accessible.
|
|
*
|
|
* @var bool
|
|
*/
|
|
public $encryptParams = true;
|
|
|
|
/**
|
|
* The configuration array.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $config = [];
|
|
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param array $config
|
|
*/
|
|
public function __construct(array $config = [])
|
|
{
|
|
foreach ($config as $key => $value) {
|
|
$this->config[$key] = $value;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Placeholder for async widget.
|
|
* You can customize it by overwriting this method.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function placeholder()
|
|
{
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* Async and reloadable widgets are wrapped in container.
|
|
* You can customize it by overriding this method.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function container()
|
|
{
|
|
return [
|
|
'element' => 'div',
|
|
'attributes' => 'style="display:inline" class="arrilot-widget-container"',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Cache key that is used if caching is enabled.
|
|
*
|
|
* @param $params
|
|
*
|
|
* @return string
|
|
*/
|
|
public function cacheKey(array $params = [])
|
|
{
|
|
return 'arrilot.widgets.'.serialize($params);
|
|
}
|
|
|
|
/**
|
|
* Cache tags to help flush all cache with the same tag(s).
|
|
*
|
|
* @return array
|
|
*/
|
|
public function cacheTags()
|
|
{
|
|
return array_unique(array_merge(['widgets'], $this->cacheTags));
|
|
}
|
|
|
|
/**
|
|
* Add defaults to configuration array.
|
|
*
|
|
* @param array $defaults
|
|
*/
|
|
protected function addConfigDefaults(array $defaults)
|
|
{
|
|
$this->config = array_merge($this->config, $defaults);
|
|
}
|
|
}
|