mirror of
https://github.com/flextype/flextype.git
synced 2025-08-05 12:47:45 +02:00
feat(core): add Serializer and Parsers for data encoding/decoding/parsing. #424
This commit is contained in:
@@ -158,6 +158,20 @@ if ($flextype['registry']->get('flextype.settings.errors.display')) {
|
||||
*/
|
||||
date_default_timezone_set($flextype['registry']->get('flextype.settings.timezone'));
|
||||
|
||||
/**
|
||||
* Init shortocodes
|
||||
*
|
||||
* Load Flextype Shortcodes extensions from directory /flextype/shortcodes/ based on settings.shortcodes.extensions array
|
||||
*/
|
||||
$shortcodes_extensions = $flextype['registry']->get('flextype.settings.shortcodes.extensions');
|
||||
|
||||
foreach ($shortcodes_extensions as $shortcodes_extension) {
|
||||
$shortcodes_extension_file_path = ROOT_DIR . '/src/flextype/core/Parsers/shortcodes/' . $shortcodes_extension . 'ShortcodeExtension.php';
|
||||
if (file_exists($shortcodes_extension_file_path)) {
|
||||
include_once $shortcodes_extension_file_path;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Init plugins
|
||||
*/
|
||||
|
@@ -193,6 +193,12 @@ slugify:
|
||||
image:
|
||||
driver: gd
|
||||
|
||||
# Shortcodes
|
||||
#
|
||||
# - extensions: Flextype Shortcodes Extension to load.
|
||||
shortcodes:
|
||||
extensions: ['Entries', 'Registry', 'Url']
|
||||
|
||||
# CORS
|
||||
#
|
||||
# CORS (Cross-origin resource sharing) allows JavaScript web apps to make HTTP requests to other domains.
|
||||
|
@@ -51,7 +51,7 @@ class Entries
|
||||
public $entries = [];
|
||||
|
||||
/**
|
||||
* Set Expression
|
||||
* Expression
|
||||
*
|
||||
* @var array
|
||||
* @access public
|
||||
@@ -87,7 +87,7 @@ class Entries
|
||||
];
|
||||
|
||||
/**
|
||||
* Set Order Direction
|
||||
* Entires Order Direction
|
||||
*
|
||||
* @var array
|
||||
* @access public
|
||||
@@ -98,7 +98,7 @@ class Entries
|
||||
];
|
||||
|
||||
/**
|
||||
* Set Visibility
|
||||
* Entries Visibility
|
||||
*
|
||||
* @var array
|
||||
* @access public
|
||||
@@ -109,6 +109,23 @@ class Entries
|
||||
'visible' => 'visible',
|
||||
];
|
||||
|
||||
/**
|
||||
* Entries system fields
|
||||
*
|
||||
* @var array
|
||||
* @access public
|
||||
*/
|
||||
public $system_fields = [
|
||||
'published_at' => 'published_at',
|
||||
'published_by' => 'published_by',
|
||||
'created_at' => 'created_at',
|
||||
'modified_at' => 'modified_at',
|
||||
'slug' => 'slug',
|
||||
'routable' => 'routable',
|
||||
'parsers' => 'parsers',
|
||||
'visibility' => 'visibility',
|
||||
];
|
||||
|
||||
/**
|
||||
* Flextype Dependency Container
|
||||
*
|
||||
@@ -187,7 +204,7 @@ class Entries
|
||||
// else Try to get requested entry from the filesystem
|
||||
}
|
||||
|
||||
$entry_decoded = $this->flextype['parser']->decode(Filesystem::read($entry_file), 'frontmatter');
|
||||
$entry_decoded = $this->flextype['serializer']->decode(Filesystem::read($entry_file), 'frontmatter');
|
||||
|
||||
// Add predefined entry items
|
||||
// Entry Published At
|
||||
@@ -212,6 +229,41 @@ class Entries
|
||||
$entry_decoded['visibility'] = (string) $this->visibility['visible'];
|
||||
}
|
||||
|
||||
// Parsers
|
||||
if (isset($entry_decoded['parsers'])) {
|
||||
foreach ($entry_decoded['parsers'] as $parser_name => $parser_data) {
|
||||
if (in_array($parser_name, ['markdown', 'shortcodes'])) {
|
||||
if (isset($entry_decoded['parsers'][$parser_name]['enabled']) && $entry_decoded['parsers'][$parser_name]['enabled'] === true) {
|
||||
if (isset($entry_decoded['parsers'][$parser_name]['fields'])) {
|
||||
if (is_array($entry_decoded['parsers'][$parser_name]['fields'])) {
|
||||
foreach ($entry_decoded['parsers'][$parser_name]['fields'] as $field) {
|
||||
if (! in_array($field, $this->system_fields)) {
|
||||
if ($parser_name == 'markdown') {
|
||||
$entry_decoded[$field] = $this->flextype['parser']->decode($entry_decoded[$field], 'markdown');
|
||||
}
|
||||
if ($parser_name == 'shortcodes') {
|
||||
$entry_decoded[$field] = $this->flextype['parser']->decode($entry_decoded[$field], 'shortcodes');
|
||||
}
|
||||
}
|
||||
}
|
||||
} elseif ($entry_decoded['parsers']['shortcodes']['fields'] == "*") {
|
||||
foreach ($entry_decoded as $key => $value) {
|
||||
if (! in_array($key, $this->system_fields)) {
|
||||
if ($parser_name == 'markdown') {
|
||||
$entry_decoded[$key] = $this->flextype['parser']->decode($entry_decoded[$key], 'markdown');
|
||||
}
|
||||
if ($parser_name == 'shortcodes') {
|
||||
$entry_decoded[$key] = $this->flextype['parser']->decode($entry_decoded[$key], 'shortcodes');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Save decoded entry content into the cache
|
||||
$this->flextype['cache']->save($entry_cache_id, $entry_decoded);
|
||||
|
||||
@@ -320,12 +372,12 @@ class Entries
|
||||
|
||||
// Create entries array from entries list and ignore current requested entry
|
||||
foreach ($entries_list as $current_entry) {
|
||||
if (strpos($current_entry['path'], $bind_id . '/entry' . '.' . $this->flextype->registry->get('flextype.entries.extension')) !== false) {
|
||||
if (strpos($current_entry['path'], $bind_id . '/entry' . '.' . $this->flextype->registry->get('flextype.settings.entries.extension')) !== false) {
|
||||
// ignore ...
|
||||
} else {
|
||||
// We are checking...
|
||||
// Whether the requested entry is a director and whether the file entry is in this directory.
|
||||
if ($current_entry['type'] === 'dir' && Filesystem::has($current_entry['path'] . '/entry' . '.' . $this->flextype->registry->get('flextype.entries.extension'))) {
|
||||
if ($current_entry['type'] === 'dir' && Filesystem::has($current_entry['path'] . '/entry' . '.' . $this->flextype->registry->get('flextype.settings.entries.extension'))) {
|
||||
// Get entry uid
|
||||
// 1. Remove entries path
|
||||
// 2. Remove left and right slashes
|
||||
@@ -341,7 +393,7 @@ class Entries
|
||||
$entries_ids .= $uid;
|
||||
|
||||
// Create entries IDs timestamps
|
||||
$entries_ids_timestamps .= Filesystem::getTimestamp($current_entry['path'] . '/entry' . '.' . $this->flextype->registry->get('flextype.entries.extension'));
|
||||
$entries_ids_timestamps .= Filesystem::getTimestamp($current_entry['path'] . '/entry' . '.' . $this->flextype->registry->get('flextype.settings.entries.extension'));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -475,9 +527,9 @@ class Entries
|
||||
|
||||
if (Filesystem::has($entry_file)) {
|
||||
$body = Filesystem::read($entry_file);
|
||||
$entry = $this->flextype['parser']->decode($body, 'frontmatter');
|
||||
$entry = $this->flextype['serializer']->decode($body, 'frontmatter');
|
||||
|
||||
return Filesystem::write($entry_file, $this->flextype['parser']->encode(array_merge($entry, $data), 'frontmatter'));
|
||||
return Filesystem::write($entry_file, $this->flextype['serializer']->encode(array_merge($entry, $data), 'frontmatter'));
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -501,7 +553,7 @@ class Entries
|
||||
// Try to create directory for new entry
|
||||
if (Filesystem::createDir($entry_dir)) {
|
||||
// Check if new entry file exists
|
||||
if (! Filesystem::has($entry_file = $entry_dir . '/entry' . '.' . $this->flextype->registry->get('flextype.entries.extension'))) {
|
||||
if (! Filesystem::has($entry_file = $entry_dir . '/entry' . '.' . $this->flextype->registry->get('flextype.settings.entries.extension'))) {
|
||||
$data['uuid'] = Uuid::uuid4()->toString();
|
||||
$data['published_at'] = date($this->flextype->registry->get('flextype.settings.date_format'), time());
|
||||
$data['created_at'] = date($this->flextype->registry->get('flextype.settings.date_format'), time());
|
||||
@@ -520,7 +572,7 @@ class Entries
|
||||
$data['visibility'] = 'visible';
|
||||
}
|
||||
|
||||
return Filesystem::write($entry_file, $this->flextype['parser']->encode($data, 'frontmatter'));
|
||||
return Filesystem::write($entry_file, $this->flextype['serializer']->encode($data, 'frontmatter'));
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -585,7 +637,7 @@ class Entries
|
||||
*/
|
||||
public function getFileLocation(string $id) : string
|
||||
{
|
||||
return PATH['site'] . '/entries/' . $id . '/entry' . '.' . $this->flextype->registry->get('flextype.entries.extension');
|
||||
return PATH['site'] . '/entries/' . $id . '/entry' . '.' . $this->flextype->registry->get('flextype.settings.entries.extension');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -24,16 +24,7 @@ class Parser
|
||||
* @var array
|
||||
*/
|
||||
private $parsers = [
|
||||
'frontmatter' => [
|
||||
'name' => 'frontmatter',
|
||||
'ext' => 'md',
|
||||
], 'json' => [
|
||||
'name' => 'json',
|
||||
'ext' => 'json',
|
||||
], 'yaml' => [
|
||||
'name' => 'yaml',
|
||||
'ext' => 'yaml',
|
||||
], 'markdown' => [
|
||||
'markdown' => [
|
||||
'name' => 'markdown',
|
||||
'ext' => 'md',
|
||||
],
|
||||
@@ -66,23 +57,19 @@ class Parser
|
||||
* Dumps a PHP value to a string CONTENT.
|
||||
*
|
||||
* @param mixed $input Content to parse
|
||||
* @param string $parser Parser type [frontmatter, json, yaml]
|
||||
* @param string $parser Parser type [markdown]
|
||||
*
|
||||
* @return mixed PHP value converted to a string CONTENT.
|
||||
*/
|
||||
public function encode($input, string $parser) : string
|
||||
{
|
||||
switch ($parser) {
|
||||
case 'frontmatter':
|
||||
return Frontmatter::encode($input);
|
||||
case 'markdown':
|
||||
return $input;
|
||||
|
||||
break;
|
||||
case 'json':
|
||||
return Json::encode($input);
|
||||
|
||||
break;
|
||||
case 'yaml':
|
||||
return Yaml::encode($input);
|
||||
case 'shortcodes':
|
||||
return $input;
|
||||
|
||||
break;
|
||||
default:
|
||||
@@ -102,57 +89,6 @@ class Parser
|
||||
public function decode(string $input, string $parser, bool $cache = true)
|
||||
{
|
||||
switch ($parser) {
|
||||
case 'frontmatter':
|
||||
if ($cache === true && $this->flextype['registry']->get('flextype.settings.cache.enabled') === true) {
|
||||
$key = md5($input);
|
||||
|
||||
if ($data_from_cache = $this->flextype['cache']->fetch($key)) {
|
||||
return $data_from_cache;
|
||||
}
|
||||
|
||||
$data = Frontmatter::decode($input);
|
||||
$this->flextype['cache']->save($key, $data);
|
||||
|
||||
return $data;
|
||||
} else {
|
||||
return Frontmatter::decode($input);
|
||||
}
|
||||
|
||||
break;
|
||||
case 'json':
|
||||
if ($cache === true && $this->flextype['registry']->get('flextype.settings.cache.enabled') === true) {
|
||||
$key = md5($input);
|
||||
|
||||
if ($data_from_cache = $this->flextype['cache']->fetch($key)) {
|
||||
return $data_from_cache;
|
||||
}
|
||||
|
||||
$data = Json::decode($input);
|
||||
$this->flextype['cache']->save($key, $data);
|
||||
|
||||
return $data;
|
||||
} else {
|
||||
return Json::decode($input);
|
||||
}
|
||||
|
||||
break;
|
||||
case 'yaml':
|
||||
if ($cache === true && $this->flextype['registry']->get('flextype.settings.cache.enabled') === true) {
|
||||
$key = md5($input);
|
||||
|
||||
if ($data_from_cache = $this->flextype['cache']->fetch($key)) {
|
||||
return $data_from_cache;
|
||||
}
|
||||
|
||||
$data = Yaml::decode($input);
|
||||
$this->flextype['cache']->save($key, $data);
|
||||
|
||||
return $data;
|
||||
} else {
|
||||
return Yaml::decode($input);
|
||||
}
|
||||
|
||||
break;
|
||||
case 'markdown':
|
||||
if ($cache === true && $this->flextype['registry']->get('flextype.settings.cache.enabled') === true) {
|
||||
$key = md5($input);
|
||||
@@ -169,6 +105,23 @@ class Parser
|
||||
return Markdown::decode($input);
|
||||
}
|
||||
|
||||
break;
|
||||
case 'shortcodes':
|
||||
if ($cache === true && $this->flextype['registry']->get('flextype.settings.cache.enabled') === true) {
|
||||
$key = md5($input);
|
||||
|
||||
if ($data_from_cache = $this->flextype['cache']->fetch($key)) {
|
||||
return $data_from_cache;
|
||||
}
|
||||
|
||||
$data = $this->flextype['shortcodes']->process($input);
|
||||
$this->flextype['cache']->save($key, $data);
|
||||
|
||||
return $data;
|
||||
} else {
|
||||
return $this->flextype['shortcodes']->process($input);
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
// code...
|
||||
|
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Flextype (http://flextype.org)
|
||||
* Founded by Sergey Romanenko and maintained by Flextype Community.
|
||||
*/
|
||||
|
||||
namespace Flextype;
|
||||
|
||||
use Flextype\Component\Arr\Arr;
|
||||
use Thunder\Shortcode\Shortcode\ShortcodeInterface;
|
||||
|
||||
// Shortcode: [entries_fetch id="entry-id" field="field-name" default="default-value"]
|
||||
$flextype['shortcodes']->addHandler('entries_fetch', static function (ShortcodeInterface $s) use ($flextype) {
|
||||
return Arr::get($flextype['entries']->fetch($s->getParameter('id')), $s->getParameter('field'), $s->getParameter('default'));
|
||||
});
|
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Flextype (http://flextype.org)
|
||||
* Founded by Sergey Romanenko and maintained by Flextype Community.
|
||||
*/
|
||||
|
||||
namespace Flextype;
|
||||
|
||||
use Thunder\Shortcode\Shortcode\ShortcodeInterface;
|
||||
|
||||
// Shortcode: [registry_get name="item-name" default="default-value"]
|
||||
$flextype['shortcodes']->addHandler('registry_get', static function (ShortcodeInterface $s) use ($flextype) {
|
||||
return $flextype['registry']->get($s->getParameter('name'), $s->getParameter('default'));
|
||||
});
|
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Flextype (http://flextype.org)
|
||||
* Founded by Sergey Romanenko and maintained by Flextype Community.
|
||||
*/
|
||||
|
||||
namespace Flextype;
|
||||
|
||||
use Slim\Http\Environment;
|
||||
use Slim\Http\Uri;
|
||||
|
||||
// Shortcode: [url]
|
||||
$flextype['shortcodes']->addHandler('url', static function () use ($flextype) {
|
||||
if ($flextype['registry']->has('flextype.settings.url') && $flextype['registry']->get('flextype.settings.url') != '') {
|
||||
return $flextype['registry']->get('flextype.settings.url');
|
||||
} else {
|
||||
return Uri::createFromEnvironment(new Environment($_SERVER))->getBaseUrl();
|
||||
}
|
||||
});
|
@@ -43,7 +43,7 @@ class Plugins
|
||||
public function __construct($flextype, $app)
|
||||
{
|
||||
$this->flextype = $flextype;
|
||||
$this->locales = $this->flextype['parser']->decode(Filesystem::read(ROOT_DIR . '/src/flextype/config/locales.yaml'), 'yaml');
|
||||
$this->locales = $this->flextype['serializer']->decode(Filesystem::read(ROOT_DIR . '/src/flextype/config/locales.yaml'), 'yaml');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -126,7 +126,7 @@ class Plugins
|
||||
|
||||
// Get default plugin settings content
|
||||
$default_plugin_settings_file_content = Filesystem::read($default_plugin_settings_file);
|
||||
$default_plugin_settings = $this->flextype['parser']->decode($default_plugin_settings_file_content, 'yaml');
|
||||
$default_plugin_settings = $this->flextype['serializer']->decode($default_plugin_settings_file_content, 'yaml');
|
||||
|
||||
// Create site plugin settings file
|
||||
! Filesystem::has($site_plugin_settings_file) and Filesystem::write($site_plugin_settings_file, $default_plugin_settings_file_content);
|
||||
@@ -137,7 +137,7 @@ class Plugins
|
||||
if (trim($site_plugin_settings_file_content) === '') {
|
||||
$site_plugin_settings = [];
|
||||
} else {
|
||||
$site_plugin_settings = $this->flextype['parser']->decode($site_plugin_settings_file_content, 'yaml');
|
||||
$site_plugin_settings = $this->flextype['serializer']->decode($site_plugin_settings_file_content, 'yaml');
|
||||
}
|
||||
|
||||
// Check if default plugin manifest file exists
|
||||
@@ -147,7 +147,7 @@ class Plugins
|
||||
|
||||
// Get default plugin manifest content
|
||||
$default_plugin_manifest_file_content = Filesystem::read($default_plugin_manifest_file);
|
||||
$default_plugin_manifest = $this->flextype['parser']->decode($default_plugin_manifest_file_content, 'yaml');
|
||||
$default_plugin_manifest = $this->flextype['serializer']->decode($default_plugin_manifest_file_content, 'yaml');
|
||||
|
||||
// Merge plugin settings and manifest data
|
||||
$plugins[$plugin['dirname']]['manifest'] = $default_plugin_manifest;
|
||||
@@ -210,7 +210,7 @@ class Plugins
|
||||
throw new RuntimeException('Load file: ' . $language_file . ' - failed!');
|
||||
}
|
||||
|
||||
$translates = $this->flextype['parser']->decode($content, 'yaml');
|
||||
$translates = $this->flextype['serializer']->decode($content, 'yaml');
|
||||
|
||||
I18n::add($translates, $locale);
|
||||
}
|
||||
|
158
src/flextype/core/Serializer/Serializer.php
Normal file
158
src/flextype/core/Serializer/Serializer.php
Normal file
@@ -0,0 +1,158 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Flextype (http://flextype.org)
|
||||
* Founded by Sergey Romanenko and maintained by Flextype Community.
|
||||
*/
|
||||
|
||||
namespace Flextype;
|
||||
|
||||
use function md5;
|
||||
|
||||
class Serializer
|
||||
{
|
||||
/**
|
||||
* Flextype Dependency Container
|
||||
*/
|
||||
private $flextype;
|
||||
|
||||
/**
|
||||
* Serializer
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $serializer = [
|
||||
'frontmatter' => [
|
||||
'name' => 'frontmatter',
|
||||
'ext' => 'md',
|
||||
], 'json' => [
|
||||
'name' => 'json',
|
||||
'ext' => 'json',
|
||||
], 'yaml' => [
|
||||
'name' => 'yaml',
|
||||
'ext' => 'yaml',
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function __construct($flextype)
|
||||
{
|
||||
$this->flextype = $flextype;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Parser Information
|
||||
*
|
||||
* @param string $input Content to parse
|
||||
* @param string $serializer Parser type [frontmatter, json, yaml]
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getParserInfo(string $serializer) : array
|
||||
{
|
||||
return $this->serializer[$serializer];
|
||||
}
|
||||
|
||||
/**
|
||||
* Dumps a PHP value to a string CONTENT.
|
||||
*
|
||||
* @param mixed $input Content to parse
|
||||
* @param string $serializer Parser type [frontmatter, json, yaml]
|
||||
*
|
||||
* @return mixed PHP value converted to a string CONTENT.
|
||||
*/
|
||||
public function encode($input, string $serializer) : string
|
||||
{
|
||||
switch ($serializer) {
|
||||
case 'frontmatter':
|
||||
return Frontmatter::encode($input);
|
||||
|
||||
break;
|
||||
case 'json':
|
||||
return Json::encode($input);
|
||||
|
||||
break;
|
||||
case 'yaml':
|
||||
return Yaml::encode($input);
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse INPUT content into a PHP value.
|
||||
*
|
||||
* @param string $input Content to parse
|
||||
* @param string $serializer Serializer type [frontmatter, json, yaml]
|
||||
* @param bool $cache Cache result data or no. Default is true
|
||||
*
|
||||
* @return mixed The Content converted to a PHP value
|
||||
*/
|
||||
public function decode(string $input, string $serializer, bool $cache = true)
|
||||
{
|
||||
switch ($serializer) {
|
||||
case 'frontmatter':
|
||||
if ($cache === true && $this->flextype['registry']->get('flextype.settings.cache.enabled') === true) {
|
||||
$key = md5($input);
|
||||
|
||||
if ($data_from_cache = $this->flextype['cache']->fetch($key)) {
|
||||
return $data_from_cache;
|
||||
}
|
||||
|
||||
$data = Frontmatter::decode($input);
|
||||
$this->flextype['cache']->save($key, $data);
|
||||
|
||||
return $data;
|
||||
} else {
|
||||
return Frontmatter::decode($input);
|
||||
}
|
||||
|
||||
break;
|
||||
case 'json':
|
||||
if ($cache === true && $this->flextype['registry']->get('flextype.settings.cache.enabled') === true) {
|
||||
$key = md5($input);
|
||||
|
||||
if ($data_from_cache = $this->flextype['cache']->fetch($key)) {
|
||||
return $data_from_cache;
|
||||
}
|
||||
|
||||
$data = Json::decode($input);
|
||||
$this->flextype['cache']->save($key, $data);
|
||||
|
||||
return $data;
|
||||
} else {
|
||||
return Json::decode($input);
|
||||
}
|
||||
|
||||
break;
|
||||
case 'yaml':
|
||||
if ($cache === true && $this->flextype['registry']->get('flextype.settings.cache.enabled') === true) {
|
||||
$key = md5($input);
|
||||
|
||||
if ($data_from_cache = $this->flextype['cache']->fetch($key)) {
|
||||
return $data_from_cache;
|
||||
}
|
||||
|
||||
$data = Yaml::decode($input);
|
||||
$this->flextype['cache']->save($key, $data);
|
||||
|
||||
return $data;
|
||||
} else {
|
||||
return Yaml::decode($input);
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
// code...
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@@ -34,6 +34,7 @@ use League\Glide\Responses\SlimResponseFactory;
|
||||
use League\Glide\ServerFactory;
|
||||
use Monolog\Handler\StreamHandler;
|
||||
use Monolog\Logger;
|
||||
use Thunder\Shortcode\ShortcodeFacade;
|
||||
use function date;
|
||||
use function extension_loaded;
|
||||
use function ucfirst;
|
||||
@@ -112,6 +113,20 @@ $flextype['cache'] = static function ($container) use ($flextype) {
|
||||
return new Cache($flextype);
|
||||
};
|
||||
|
||||
/**
|
||||
* Add shortcodes service to Flextype container
|
||||
*/
|
||||
$flextype['shortcodes'] = static function ($container) {
|
||||
return new ShortcodeFacade();
|
||||
};
|
||||
|
||||
/**
|
||||
* Add serializer service to Flextype container
|
||||
*/
|
||||
$flextype['serializer'] = static function ($container) use ($flextype) {
|
||||
return new Serializer($flextype);
|
||||
};
|
||||
|
||||
/**
|
||||
* Add parser service to Flextype container
|
||||
*/
|
||||
|
@@ -59,7 +59,7 @@ $app->get('/api/delivery/entries', function (Request $request, Response $respons
|
||||
$delivery_entries_token_file_path = PATH['site'] . '/tokens/delivery/entries/' . $token. '/token.yaml';
|
||||
|
||||
// Set delivery token file
|
||||
if ($delivery_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($delivery_entries_token_file_path), 'yaml')) {
|
||||
if ($delivery_entries_token_file_data = $flextype['serializer']->decode(Filesystem::read($delivery_entries_token_file_path), 'yaml')) {
|
||||
if ($delivery_entries_token_file_data['state'] === 'disabled' ||
|
||||
($delivery_entries_token_file_data['limit_calls'] !== 0 && $delivery_entries_token_file_data['calls'] >= $delivery_entries_token_file_data['limit_calls'])) {
|
||||
return $response->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
@@ -72,7 +72,7 @@ $app->get('/api/delivery/entries', function (Request $request, Response $respons
|
||||
$response_code = count($response_data['data']) > 0 ? 200 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($delivery_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($delivery_entries_token_file_data, ['calls' => $delivery_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
Filesystem::write($delivery_entries_token_file_path, $flextype['serializer']->encode(array_replace_recursive($delivery_entries_token_file_data, ['calls' => $delivery_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
if ($response_code == 404) {
|
||||
|
||||
|
@@ -56,7 +56,7 @@ $app->get('/api/delivery/registry', function (Request $request, Response $respon
|
||||
$delivery_registry_token_file_path = PATH['site'] . '/tokens/delivery/registry/' . $token . '/token.yaml';
|
||||
|
||||
// Set delivery token file
|
||||
if ($delivery_registry_token_file_data = $flextype['parser']->decode(Filesystem::read($delivery_registry_token_file_path), 'yaml')) {
|
||||
if ($delivery_registry_token_file_data = $flextype['serializer']->decode(Filesystem::read($delivery_registry_token_file_path), 'yaml')) {
|
||||
if ($delivery_registry_token_file_data['state'] === 'disabled' ||
|
||||
($delivery_registry_token_file_data['limit_calls'] !== 0 && $delivery_registry_token_file_data['calls'] >= $delivery_registry_token_file_data['limit_calls'])) {
|
||||
return $response->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
@@ -76,7 +76,7 @@ $app->get('/api/delivery/registry', function (Request $request, Response $respon
|
||||
}
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($delivery_registry_token_file_path, $flextype['parser']->encode(array_replace_recursive($delivery_registry_token_file_data, ['calls' => $delivery_registry_token_file_data['calls'] + 1]), 'yaml'));
|
||||
Filesystem::write($delivery_registry_token_file_path, $flextype['serializer']->encode(array_replace_recursive($delivery_registry_token_file_data, ['calls' => $delivery_registry_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
if ($response_code == 404) {
|
||||
|
||||
|
@@ -58,7 +58,7 @@ $app->get('/api/images/{path:.+}', function (Request $request, Response $respons
|
||||
$delivery_images_token_file_path = PATH['site'] . '/tokens/images/' . $token . '/token.yaml';
|
||||
|
||||
// Set delivery token file
|
||||
if ($delivery_images_token_file_data = $flextype['parser']->decode(Filesystem::read($delivery_images_token_file_path), 'yaml')) {
|
||||
if ($delivery_images_token_file_data = $flextype['serializer']->decode(Filesystem::read($delivery_images_token_file_path), 'yaml')) {
|
||||
|
||||
if ($delivery_images_token_file_data['state'] === 'disabled' ||
|
||||
($delivery_images_token_file_data['limit_calls'] !== 0 && $delivery_images_token_file_data['calls'] >= $delivery_images_token_file_data['limit_calls'])) {
|
||||
@@ -66,7 +66,7 @@ $app->get('/api/images/{path:.+}', function (Request $request, Response $respons
|
||||
}
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($delivery_images_token_file_path, $flextype['parser']->encode(array_replace_recursive($delivery_images_token_file_data, ['calls' => $delivery_images_token_file_data['calls'] + 1]), 'yaml'));
|
||||
Filesystem::write($delivery_images_token_file_path, $flextype['serializer']->encode(array_replace_recursive($delivery_images_token_file_data, ['calls' => $delivery_images_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
if (Filesystem::has(PATH['site'] . '/uploads/entries/' . $args['path'])) {
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
|
@@ -65,7 +65,7 @@ $app->get('/api/management/entries', function (Request $request, Response $respo
|
||||
$management_entries_token_file_path = PATH['site'] . '/tokens/management/entries/' . $token. '/token.yaml';
|
||||
|
||||
// Set management token file
|
||||
if ($management_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) {
|
||||
if ($management_entries_token_file_data = $flextype['serializer']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) {
|
||||
if ($management_entries_token_file_data['state'] === 'disabled' ||
|
||||
($management_entries_token_file_data['limit_calls'] !== 0 && $management_entries_token_file_data['calls'] >= $management_entries_token_file_data['limit_calls'])) {
|
||||
return $response->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
@@ -78,7 +78,7 @@ $app->get('/api/management/entries', function (Request $request, Response $respo
|
||||
$response_code = count($response_data['data']) > 0 ? 200 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['serializer']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
if ($response_code == 404) {
|
||||
|
||||
@@ -138,8 +138,8 @@ $app->post('/api/management/entries', function (Request $request, Response $resp
|
||||
$access_token_file_path = PATH['site'] . '/tokens/access/' . $access_token . '/token.yaml';
|
||||
|
||||
// Set management and access token file
|
||||
if (($management_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($access_token_file_data = $flextype['parser']->decode(Filesystem::read($access_token_file_path), 'yaml'))) {
|
||||
if (($management_entries_token_file_data = $flextype['serializer']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($access_token_file_data = $flextype['serializer']->decode(Filesystem::read($access_token_file_path), 'yaml'))) {
|
||||
|
||||
if ($management_entries_token_file_data['state'] === 'disabled' ||
|
||||
($management_entries_token_file_data['limit_calls'] !== 0 && $management_entries_token_file_data['calls'] >= $management_entries_token_file_data['limit_calls'])) {
|
||||
@@ -164,7 +164,7 @@ $app->post('/api/management/entries', function (Request $request, Response $resp
|
||||
$response_code = ($create_entry) ? 200 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['serializer']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
if ($response_code == 404) {
|
||||
|
||||
@@ -223,8 +223,8 @@ $app->patch('/api/management/entries', function (Request $request, Response $res
|
||||
$access_token_file_path = PATH['site'] . '/tokens/access/' . $access_token . '/token.yaml';
|
||||
|
||||
// Set management and access token file
|
||||
if (($management_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($access_token_file_data = $flextype['parser']->decode(Filesystem::read($access_token_file_path), 'yaml'))) {
|
||||
if (($management_entries_token_file_data = $flextype['serializer']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($access_token_file_data = $flextype['serializer']->decode(Filesystem::read($access_token_file_path), 'yaml'))) {
|
||||
|
||||
if ($management_entries_token_file_data['state'] === 'disabled' ||
|
||||
($management_entries_token_file_data['limit_calls'] !== 0 && $management_entries_token_file_data['calls'] >= $management_entries_token_file_data['limit_calls'])) {
|
||||
@@ -249,7 +249,7 @@ $app->patch('/api/management/entries', function (Request $request, Response $res
|
||||
$response_code = ($update_entry) ? 200 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['serializer']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
if ($response_code == 404) {
|
||||
|
||||
@@ -308,8 +308,8 @@ $app->put('/api/management/entries', function (Request $request, Response $respo
|
||||
$access_token_file_path = PATH['site'] . '/tokens/access/' . $access_token . '/token.yaml';
|
||||
|
||||
// Set management and access token file
|
||||
if (($management_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($access_token_file_data = $flextype['parser']->decode(Filesystem::read($access_token_file_path), 'yaml'))) {
|
||||
if (($management_entries_token_file_data = $flextype['serializer']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($access_token_file_data = $flextype['serializer']->decode(Filesystem::read($access_token_file_path), 'yaml'))) {
|
||||
|
||||
if ($management_entries_token_file_data['state'] === 'disabled' ||
|
||||
($management_entries_token_file_data['limit_calls'] !== 0 && $management_entries_token_file_data['calls'] >= $management_entries_token_file_data['limit_calls'])) {
|
||||
@@ -335,7 +335,7 @@ $app->put('/api/management/entries', function (Request $request, Response $respo
|
||||
$response_code = ($rename_entry) ? 200 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['serializer']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
if ($response_code == 404) {
|
||||
|
||||
@@ -394,8 +394,8 @@ $app->put('/api/management/entries/copy', function (Request $request, Response $
|
||||
$access_token_file_path = PATH['site'] . '/tokens/access/' . $access_token . '/token.yaml';
|
||||
|
||||
// Set management and access token file
|
||||
if (($management_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($access_token_file_data = $flextype['parser']->decode(Filesystem::read($access_token_file_path), 'yaml'))) {
|
||||
if (($management_entries_token_file_data = $flextype['serializer']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($access_token_file_data = $flextype['serializer']->decode(Filesystem::read($access_token_file_path), 'yaml'))) {
|
||||
|
||||
if ($management_entries_token_file_data['state'] === 'disabled' ||
|
||||
($management_entries_token_file_data['limit_calls'] !== 0 && $management_entries_token_file_data['calls'] >= $management_entries_token_file_data['limit_calls'])) {
|
||||
@@ -421,7 +421,7 @@ $app->put('/api/management/entries/copy', function (Request $request, Response $
|
||||
$response_code = ($copy_entry) ? 200 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['serializer']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
if ($response_code == 404) {
|
||||
|
||||
@@ -478,8 +478,8 @@ $app->delete('/api/management/entries', function (Request $request, Response $re
|
||||
$access_token_file_path = PATH['site'] . '/tokens/access/' . $access_token . '/token.yaml';
|
||||
|
||||
// Set management and access token file
|
||||
if (($management_entries_token_file_data = $flextype['parser']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($access_token_file_data = $flextype['parser']->decode(Filesystem::read($access_token_file_path), 'yaml'))) {
|
||||
if (($management_entries_token_file_data = $flextype['serializer']->decode(Filesystem::read($management_entries_token_file_path), 'yaml')) &&
|
||||
($access_token_file_data = $flextype['serializer']->decode(Filesystem::read($access_token_file_path), 'yaml'))) {
|
||||
|
||||
if ($management_entries_token_file_data['state'] === 'disabled' ||
|
||||
($management_entries_token_file_data['limit_calls'] !== 0 && $management_entries_token_file_data['calls'] >= $management_entries_token_file_data['limit_calls'])) {
|
||||
@@ -498,7 +498,7 @@ $app->delete('/api/management/entries', function (Request $request, Response $re
|
||||
$response_code = ($delete_entry) ? 204 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['parser']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
Filesystem::write($management_entries_token_file_path, $flextype['serializer']->encode(array_replace_recursive($management_entries_token_file_data, ['calls' => $management_entries_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
if ($response_code == 404) {
|
||||
|
||||
|
Reference in New Issue
Block a user