update settings (short id and json_encode)

This commit is contained in:
Jean-Christian Denis 2022-12-21 23:41:19 +01:00
parent 4ec48f950e
commit 89f54b08af
Signed by: JcDenis
GPG key ID: 1B5B8C5B90B6C951
4 changed files with 71 additions and 48 deletions

View file

@ -14,17 +14,17 @@ if (!defined('DC_CONTEXT_ADMIN')) {
return null;
}
dcCore::app()->blog->settings->addNamespace('fac');
dcCore::app()->blog->settings->addNamespace(basename(__DIR__));
# Admin behaviors
dcCore::app()->addBehavior('adminBlogPreferencesFormV2', ['facAdmin', 'adminBlogPreferencesForm']);
dcCore::app()->addBehavior('adminBlogPreferencesFormV2', ['facAdmin', 'adminBlogPreferencesFormV2']);
dcCore::app()->addBehavior('adminBeforeBlogSettingsUpdate', ['facAdmin', 'adminBeforeBlogSettingsUpdate']);
dcCore::app()->addBehavior('adminPostHeaders', ['facAdmin', 'adminPostHeaders']);
dcCore::app()->addBehavior('adminPostFormItems', ['facAdmin', 'adminPostFormItems']);
dcCore::app()->addBehavior('adminAfterPostCreate', ['facAdmin', 'adminAfterPostSave']);
dcCore::app()->addBehavior('adminAfterPostUpdate', ['facAdmin', 'adminAfterPostSave']);
dcCore::app()->addBehavior('adminBeforePostDelete', ['facAdmin', 'adminBeforePostDelete']);
dcCore::app()->addBehavior('adminPostsActions', ['facAdmin', 'adminPostsActionsPage']);
dcCore::app()->addBehavior('adminPostsActions', ['facAdmin', 'adminPostsActions']);
/**
* @ingroup DC_PLUGIN_FAC
@ -65,7 +65,7 @@ class facAdmin
*
* @param dcSettings $blog_settings dcSettings instance
*/
public static function adminBlogPreferencesForm(dcSettings $blog_settings)
public static function adminBlogPreferencesFormV2(dcSettings $blog_settings)
{
echo
'<div class="fieldset"><h4 id="fac_params">Feed after content</h4>' .
@ -74,7 +74,7 @@ class facAdmin
'</p>';
if (dcCore::app()->auth->isSuperAdmin()) {
echo '<p><a href="' . dcCore::app()->adminurl->get('admin.plugins', [
'module' => 'fac',
'module' => basename(__DIR__),
'conf' => 1,
'redir' => dcCore::app()->adminurl->get('admin.blog.pref') . '#fac_params',
]) . '">' . __('Configure formats') . '</a></p>';
@ -84,23 +84,23 @@ class facAdmin
'<div class="col">' .
'<h5>' . __('Activation') . '</h5>' .
'<p><label class="classic">' .
form::checkbox('fac_active', '1', (bool) $blog_settings->fac->fac_active) .
form::checkbox('fac_active', '1', (bool) $blog_settings->get(basename(__DIR__))->get('active')) .
__('Enable "fac" extension') . '</label></p>' .
'<p class="form-note">' .
__('You can manage related feed to display for each post with a predefined format.') .
'</p>' .
'<h5>' . __('Feed') . '</h5>' .
'<p><label for="fac_defaultfeedtitle">' . __('Default title') . '</label>' .
form::field('fac_defaultfeedtitle', 65, 255, (string) $blog_settings->fac->fac_defaultfeedtitle) . '</p>' .
form::field('fac_defaultfeedtitle', 65, 255, (string) $blog_settings->get(basename(__DIR__))->get('defaultfeedtitle')) . '</p>' .
'<p class="form-note">' . __('Use %T to insert title of feed.') . '</p>' .
'<p><label class="classic" for="fac_showfeeddesc">' .
form::checkbox('fac_showfeeddesc', 1, (bool) $blog_settings->fac->fac_showfeeddesc) .
form::checkbox('fac_showfeeddesc', 1, (bool) $blog_settings->get(basename(__DIR__))->get('showfeeddesc')) .
__('Show description of feed') . '</label></p>' .
'</div>' .
'<div class="col">' .
'<h5>' . __('Show feed after content on:') . '</h5>';
$fac_public_tpltypes = @unserialize($blog_settings->fac->fac_public_tpltypes);
$fac_public_tpltypes = json_decode($blog_settings->get(basename(__DIR__))->get('public_tpltypes'), true);
if (!is_array($fac_public_tpltypes)) {
$fac_public_tpltypes = [];
}
@ -128,10 +128,10 @@ class facAdmin
*/
public static function adminBeforeBlogSettingsUpdate(dcSettings $blog_settings)
{
$blog_settings->fac->put('fac_active', !empty($_POST['fac_active']));
$blog_settings->fac->put('fac_public_tpltypes', serialize($_POST['fac_public_tpltypes']));
$blog_settings->fac->put('fac_defaultfeedtitle', (string) $_POST['fac_defaultfeedtitle']);
$blog_settings->fac->put('fac_showfeeddesc', !empty($_POST['fac_showfeeddesc']));
$blog_settings->get(basename(__DIR__))->put('active', !empty($_POST['fac_active']));
$blog_settings->get(basename(__DIR__))->put('public_tpltypes', json_encode($_POST['fac_public_tpltypes']));
$blog_settings->get(basename(__DIR__))->put('defaultfeedtitle', (string) $_POST['fac_defaultfeedtitle']);
$blog_settings->get(basename(__DIR__))->put('showfeeddesc', !empty($_POST['fac_showfeeddesc']));
}
/**
@ -141,7 +141,7 @@ class facAdmin
*/
public static function adminPostHeaders()
{
return dcPage::jsLoad('index.php?pf=fac/js/admin.js');
return dcPage::jsModuleLoad(basename(__DIR__) . '/js/admin.js');
}
/**
@ -153,7 +153,7 @@ class facAdmin
*/
public static function adminPostFormItems(ArrayObject $main_items, ArrayObject $sidebar_items, $post)
{
if (!dcCore::app()->blog->settings->fac->fac_active) {
if (!dcCore::app()->blog->settings->get(basename(__DIR__))->get('active')) {
return null;
}
@ -214,9 +214,9 @@ class facAdmin
*
* @param dcPostsActions $pa dcPostsActionsPage instance
*/
public static function adminPostsActionsPage(dcPostsActions $pa)
public static function adminPostsActions(dcPostsActions $pa)
{
if (!dcCore::app()->blog->settings->fac->fac_active) {
if (!dcCore::app()->blog->settings->get(basename(__DIR__))->get('active')) {
return null;
}
@ -329,7 +329,7 @@ class facAdmin
*/
protected static function formFeed($url = '', $format = '')
{
if (!dcCore::app()->blog->settings->fac->fac_active) {
if (!dcCore::app()->blog->settings->get(basename(__DIR__))->get('active')) {
return null;
}
@ -364,7 +364,7 @@ class facAdmin
*/
protected static function comboFac()
{
$formats = @unserialize(dcCore::app()->blog->settings->fac->fac_formats);
$formats = json_decode(dcCore::app()->blog->settings->get(basename(__DIR__))->get('formats'), true);
if (!is_array($formats) || empty($formats)) {
return [];
}

View file

@ -22,10 +22,9 @@ $redir = empty($_REQUEST['redir']) ?
dcCore::app()->admin->list->getURL() . '#plugins' : $_REQUEST['redir'];
# -- Get settings --
dcCore::app()->blog->settings->addNamespace('fac');
$s = dcCore::app()->blog->settings->fac;
$s = dcCore::app()->blog->settings->addNamespace(basename(__DIR__));
$fac_formats = @unserialize($s->fac_formats);
$fac_formats = json_decode($s->get('formats'), true);
if (!is_array($fac_formats)) {
$fac_formats = [];
@ -43,10 +42,10 @@ if (!empty($_POST['save'])) {
}
// fix 2021.08.21 : formats are now global
$s->drop('fac_formats');
$s->drop('formats');
$s->put(
'fac_formats',
serialize($fac_formats),
'formats',
json_encode($fac_formats),
'string',
'Formats of feeds contents',
true,
@ -59,7 +58,7 @@ if (!empty($_POST['save'])) {
__('Configuration successfully updated.')
);
http::redirect(
dcCore::app()->admin->list->getURL('module=fac&conf=1&redir=' . dcCore::app()->admin->list->getRedir())
dcCore::app()->admin->list->getURL('module=' . basename(__DIR__) . '&conf=1&redir=' . dcCore::app()->admin->list->getRedir())
);
} catch (Exception $e) {
dcCore::app()->error->add($e->getMessage());

View file

@ -14,24 +14,24 @@ if (!defined('DC_CONTEXT_ADMIN')) {
return null;
}
# -- Module specs --
// Module specs
$mod_conf = [
[
'fac_active',
'active',
'Enabled fac plugin',
false,
'boolean',
],
[
'fac_public_tpltypes',
'public_tpltypes',
'List of templates types which used fac',
serialize(['post', 'tag', 'archive']),
json_encode(['post', 'tag', 'archive']),
'string',
],
[
'fac_formats',
'formats',
'Formats of feeds contents',
serialize([
json_encode([
uniqid() => [
'name' => 'default',
'dateformat' => '',
@ -66,32 +66,56 @@ $mod_conf = [
true,
],
[
'fac_defaultfeedtitle',
'defaultfeedtitle',
'Default title of feed',
'%T',
'string',
],
[
'fac_showfeeddesc',
'showfeeddesc',
'Show description of feed',
1,
'boolean',
],
];
# -- Nothing to change below --
// Nothing to change below
try {
# Check module version
// Check module version
if (!dcCore::app()->newVersion(
basename(__DIR__),
dcCore::app()->plugins->moduleInfo(basename(__DIR__), 'version')
)) {
return null;
}
# Set module settings
// version < 1.0 : upgrade settings id and ns and array
$current = dcCore::app()->getVersion(basename(__DIR__));
if ($current && version_compare($current, '1.0', '<')) {
$record = dcCore::app()->con->select(
'SELECT * FROM ' . dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME . ' ' .
"WHERE setting_ns = 'fac' "
);
while ($record->fetch()) {
if (preg_match('/^fac_(.*?)$/', $record->setting_id, $match)) {
$cur = dcCore::app()->con->openCursor(dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME);
if (in_array($record->setting_id, ['fac_public_tpltypes', 'fac_formats'])) {
$cur->setting_value = json_encode(@unserialize($record->setting_value));
}
$cur->setting_id = $match[1];
$cur->setting_ns = basename(__DIR__);
$cur->update(
"WHERE setting_id = '" . $record->setting_id . "' and setting_ns = 'fac' " .
'AND blog_id ' . (null === $record->blog_id ? 'IS NULL ' : ("= '" . dcCore::app()->con->escape($record->blog_id) . "' "))
);
}
}
}
// Set module settings
dcCore::app()->blog->settings->addNamespace(basename(__DIR__));
foreach ($mod_conf as $v) {
dcCore::app()->blog->settings->__get(basename(__DIR__))->put(
dcCore::app()->blog->settings->get(basename(__DIR__))->put(
$v[0],
$v[2],
$v[3],

View file

@ -15,16 +15,16 @@ if (!defined('DC_RC_PATH')) {
}
dcCore::app()->addBehavior('publicEntryAfterContent', function (dcCore $core, context $_ctx) {
dcCore::app()->blog->settings->addNamespace('fac');
dcCore::app()->blog->settings->addNamespace(basename(__DIR__));
# Not active or not a post
if (!dcCore::app()->blog->settings->fac->fac_active
if (!dcCore::app()->blog->settings->get(basename(__DIR__))->get('active')
|| !dcCore::app()->ctx->exists('posts')) {
return null;
}
# Not in page to show
$types = @unserialize((string) dcCore::app()->blog->settings->fac->fac_public_tpltypes);
$types = json_decode((string) dcCore::app()->blog->settings->get(basename(__DIR__))->get('public_tpltypes'), true);
if (!is_array($types)
|| !in_array(dcCore::app()->url->type, $types)) {
return null;
@ -66,7 +66,7 @@ dcCore::app()->addBehavior('publicEntryAfterContent', function (dcCore $core, co
'linescontentnohtml' => '1',
];
$formats = @unserialize((string) dcCore::app()->blog->settings->fac->fac_formats);
$formats = json_decode((string) dcCore::app()->blog->settings->get(basename(__DIR__))->get('formats'), true);
if (empty($formats)
|| !is_array($formats)
|| !isset($formats[$fac_format->meta_id])) {
@ -94,25 +94,25 @@ dcCore::app()->addBehavior('publicEntryAfterContent', function (dcCore $core, co
# Feed title
$feedtitle = '';
if ('' != dcCore::app()->blog->settings->fac->fac_defaultfeedtitle) {
if ('' != dcCore::app()->blog->settings->get(basename(__DIR__))->get('defaultfeedtitle')) {
$feedtitle = '<h3>' . html::escapeHTML(
empty($feed->title) ?
str_replace(
'%T',
__('a related feed'),
dcCore::app()->blog->settings->fac->fac_defaultfeedtitle
dcCore::app()->blog->settings->get(basename(__DIR__))->get('defaultfeedtitle')
) :
str_replace(
'%T',
$feed->title,
dcCore::app()->blog->settings->fac->fac_defaultfeedtitle
dcCore::app()->blog->settings->get(basename(__DIR__))->get('defaultfeedtitle')
)
) . '</h3>';
}
# Feed desc
$feeddesc = '';
if (dcCore::app()->blog->settings->fac->fac_showfeeddesc
if (dcCore::app()->blog->settings->get(basename(__DIR__))->get('showfeeddesc')
&& '' != $feed->description) {
$feeddesc = '<p>' . context::global_filters(
$feed->description,
@ -123,7 +123,7 @@ dcCore::app()->addBehavior('publicEntryAfterContent', function (dcCore $core, co
# Date format
$dateformat = '' != $format['dateformat'] ?
$format['dateformat'] :
dcCore::app()->blog->settings->system->date_format . ',' . dcCore::app()->blog->settings->system->time_format;
dcCore::app()->blog->settings->get('system')->get('date_format') . ',' . dcCore::app()->blog->settings->get('system')->get('time_format');
# Enrties limit
$entrieslimit = abs((int) $format['lineslimit']);