diff --git a/src/Backend.php b/src/Backend.php
index 337435d..c9b4029 100644
--- a/src/Backend.php
+++ b/src/Backend.php
@@ -10,8 +10,32 @@
* @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/
-if (!defined('DC_CONTEXT_ADMIN')) {
- return null;
-}
+declare(strict_types=1);
-require __DIR__ . '/_widgets.php';
+namespace Dotclear\Plugin\postInfoWidget;
+
+use dcCore;
+use dcNsProcess;
+
+class Backend extends dcNsProcess
+{
+ public static function init(): bool
+ {
+ static::$init = defined('DC_CONTEXT_ADMIN');
+
+ return static::$init;
+ }
+
+ public static function process(): bool
+ {
+ if (!static::$init) {
+ return false;
+ }
+
+ dcCore::app()->addBehaviors([
+ 'initWidgets' => [Widgets::class, 'initWidgets'],
+ ]);
+
+ return true;
+ }
+}
diff --git a/src/Frontend.php b/src/Frontend.php
index 62c046e..ac18ed0 100644
--- a/src/Frontend.php
+++ b/src/Frontend.php
@@ -10,8 +10,32 @@
* @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/
-if (!defined('DC_RC_PATH')) {
- return null;
-}
+declare(strict_types=1);
-require __DIR__ . '/_widgets.php';
+namespace Dotclear\Plugin\postInfoWidget;
+
+use dcCore;
+use dcNsProcess;
+
+class Frontend extends dcNsProcess
+{
+ public static function init(): bool
+ {
+ static::$init = true;
+
+ return static::$init;
+ }
+
+ public static function process(): bool
+ {
+ if (!static::$init) {
+ return false;
+ }
+
+ dcCore::app()->addBehaviors([
+ 'initWidgets' => [Widgets::class, 'initWidgets'],
+ ]);
+
+ return true;
+ }
+}
diff --git a/src/Widgets.php b/src/Widgets.php
index 5671601..051c113 100644
--- a/src/Widgets.php
+++ b/src/Widgets.php
@@ -10,24 +10,27 @@
* @copyright Jean-Christian Denis
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
*/
-if (!defined('DC_RC_PATH')) {
- return null;
-}
+declare(strict_types=1);
-dcCore::app()->addBehavior(
- 'initWidgets',
- ['postInfoWidget', 'adminWidget']
-);
+namespace Dotclear\Plugin\postInfoWidget;
-class postInfoWidget
+use dcCore;
+use dcRecord;
+use Dotclear\Plugin\widgets\WidgetsStack;
+use Dotclear\Plugin\widgets\WidgetsElement;
+use dt;
+use html;
+use l10n;
+
+class Widgets
{
- public static function adminWidget($w)
+ public static function initWidgets(WidgetsStack $w): void
{
$w
->create(
'postinfowidget',
__('PostInfoWidget: entry information list'),
- ['postInfoWidget', 'publicWidget'],
+ [self::class, 'publicWidget'],
null,
__('Show Entry informations on a widget')
)
@@ -174,64 +177,64 @@ class postInfoWidget
->addOffline();
}
- public static function publicWidget($w)
+ public static function publicWidget(WidgetsElement $w): string
{
if ($w->offline) {
- return null;
+ return '';
}
if (dcCore::app()->url->type != 'post'
- || !dcCore::app()->ctx->posts->post_id) {
- return null;
+ || !dcCore::app()->ctx->posts->f('post_id')) {
+ return '';
}
$link = '%s';
$content = '';
if ($w->dt_str != '') {
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'date',
dt::str(
$w->dt_str,
- strtotime(dcCore::app()->ctx->posts->post_dt),
- dcCore::app()->blog->settings->system->blog_timezone
+ (int) strtotime(dcCore::app()->ctx->posts->f('post_dt')),
+ dcCore::app()->blog->settings->get('system')->get('blog_timezone')
)
);
}
if ($w->creadt_str != '') {
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'create',
dt::str(
$w->creadt_str,
- strtotime(dcCore::app()->ctx->posts->post_creadt),
- dcCore::app()->blog->settings->system->blog_timezone
+ (int) strtotime(dcCore::app()->ctx->posts->post_creadt),
+ dcCore::app()->blog->settings->get('system')->get('blog_timezone')
)
);
}
if ($w->upddt_str != '') {
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'update',
dt::str(
$w->upddt_str,
- strtotime(dcCore::app()->ctx->posts->post_upddt),
- dcCore::app()->blog->settings->system->blog_timezone
+ (int) strtotime(dcCore::app()->ctx->posts->f('post_upddt')),
+ dcCore::app()->blog->settings->get('system')->get('blog_timezone')
)
);
}
if ($w->lang_str != '') {
$ln = l10n::getISOcodes();
- $lang_code = dcCore::app()->ctx->posts->post_lang ?
- dcCore::app()->ctx->posts->post_lang :
- dcCore::app()->blog->settings->system->lang;
+ $lang_code = dcCore::app()->ctx->posts->f('post_lang') ?
+ dcCore::app()->ctx->posts->f('post_lang') :
+ dcCore::app()->blog->settings->get('system')->get('lang');
$lang_name = $ln[$lang_code] ?? $lang_code;
$lang_flag = file_exists(
- dirname(__FILE__) .
+ dirname(__DIR__) .
'/img/flags/' .
$lang_code . '.png'
) ?
@@ -240,7 +243,7 @@ class postInfoWidget
$lang_code . '.png" alt="' . $lang_name . '" />' :
'';
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'lang',
str_replace(
@@ -252,7 +255,7 @@ class postInfoWidget
}
if ($w->author_str != '') {
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'author',
str_replace(
@@ -263,8 +266,8 @@ class postInfoWidget
);
}
- if ($w->category_str != '' && dcCore::app()->ctx->posts->cat_id) {
- $content .= postInfoWidget::li(
+ if ($w->category_str != '' && dcCore::app()->ctx->posts->f('cat_id')) {
+ $content .= self::li(
$w,
'category',
str_replace(
@@ -272,7 +275,7 @@ class postInfoWidget
sprintf(
$link,
dcCore::app()->ctx->posts->getCategoryURL(),
- html::escapeHTML(dcCore::app()->ctx->posts->cat_title)
+ html::escapeHTML(dcCore::app()->ctx->posts->f('cat_title'))
),
html::escapeHTML($w->category_str)
)
@@ -282,20 +285,20 @@ class postInfoWidget
if ($w->tag_str != '' && dcCore::app()->plugins->moduleExists('tags')) {
$meta = dcCore::app()->meta->getMetadata([
'meta_type' => 'tag',
- 'post_id' => dcCore::app()->ctx->posts->post_id,
+ 'post_id' => dcCore::app()->ctx->posts->f('post_id'),
]);
$metas = [];
while ($meta->fetch()) {
- $metas[$meta->meta_id] = sprintf(
+ $metas[$meta->f('meta_id')] = sprintf(
$link,
dcCore::app()->blog->url .
dcCore::app()->url->getBase('tag') . '/' .
- rawurlencode($meta->meta_id),
- $meta->meta_id
+ rawurlencode($meta->f('meta_id')),
+ $meta->f('meta_id')
);
}
if (!empty($metas)) {
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'tag',
str_replace(
@@ -336,7 +339,7 @@ class postInfoWidget
);
}
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'attachment',
str_replace(
@@ -348,7 +351,7 @@ class postInfoWidget
}
if ($w->comment_str != '' && dcCore::app()->ctx->posts->commentsActive()) {
- $nb = dcCore::app()->ctx->posts->nb_comment;
+ $nb = (int) dcCore::app()->ctx->posts->f('nb_comment');
if ($nb == 0) {
$comment_numeric = 0;
$comment_textual = __('no comment');
@@ -376,7 +379,7 @@ class postInfoWidget
);
}
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'comment',
str_replace(
@@ -388,7 +391,7 @@ class postInfoWidget
}
if ($w->trackback_str != '' && dcCore::app()->ctx->posts->trackbacksActive()) {
- $nb = dcCore::app()->ctx->posts->nb_trackback;
+ $nb = (int) dcCore::app()->ctx->posts->f('nb_trackback');
if ($nb == 0) {
$trackback_numeric = 0;
$trackback_textual = __('no trackback');
@@ -416,7 +419,7 @@ class postInfoWidget
);
}
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'trackback',
str_replace(
@@ -428,7 +431,7 @@ class postInfoWidget
}
if ($w->permalink_str) {
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'permalink',
str_replace(
@@ -447,7 +450,7 @@ class postInfoWidget
}
if ($w->feed && dcCore::app()->ctx->posts->commentsActive()) {
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'feed',
sprintf(
@@ -455,15 +458,14 @@ class postInfoWidget
dcCore::app()->blog->url .
dcCore::app()->url->getBase('feed') .
'/atom/comments/' .
- dcCore::app()->ctx->posts->post_id,
- __("This post's comments feed"),
- html::escapeHTML($w->tag_str)
+ dcCore::app()->ctx->posts->f('post_id'),
+ __("This post's comments feed")
)
);
}
if ($w->navprevpost) {
- $npp = postInfoWidget::nav(
+ $npp = self::nav(
dcCore::app()->ctx->posts,
-1,
false,
@@ -471,7 +473,7 @@ class postInfoWidget
$w->navprevpost
);
if ($npp) {
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'previous',
$npp
@@ -479,7 +481,7 @@ class postInfoWidget
}
}
if ($w->navnextpost) {
- $nnp = postInfoWidget::nav(
+ $nnp = self::nav(
dcCore::app()->ctx->posts,
1,
false,
@@ -487,7 +489,7 @@ class postInfoWidget
$w->navnextpost
);
if ($nnp) {
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'next',
$nnp
@@ -496,7 +498,7 @@ class postInfoWidget
}
if ($w->navprevcat) {
- $npc = postInfoWidget::nav(
+ $npc = self::nav(
dcCore::app()->ctx->posts,
-1,
true,
@@ -504,7 +506,7 @@ class postInfoWidget
$w->navprevcat
);
if ($npc) {
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'previous',
$npc
@@ -513,7 +515,7 @@ class postInfoWidget
}
if ($w->navnextcat) {
- $nnc = postInfoWidget::nav(
+ $nnc = self::nav(
dcCore::app()->ctx->posts,
1,
true,
@@ -521,7 +523,7 @@ class postInfoWidget
$w->navnextcat
);
if ($nnc) {
- $content .= postInfoWidget::li(
+ $content .= self::li(
$w,
'next',
$nnc
@@ -533,7 +535,7 @@ class postInfoWidget
$content .= dcCore::app()->callBehavior('postInfoWidgetPublic', $w);
if (empty($content)) {
- return null;
+ return '';
}
/*
$rmv = '';
@@ -562,7 +564,7 @@ class postInfoWidget
}
//*/
return $w->renderDiv(
- $w->content_only,
+ (bool) $w->content_only,
'postinfowidget ' . $w->class,
'',
($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : '') .
@@ -570,7 +572,7 @@ class postInfoWidget
);
}
- public static function li($w, $i, $c)
+ public static function li(WidgetsElement $w, string $i, string $c): string
{
$s = ' style="padding-left:%spx;background: transparent url(\'' .
dcCore::app()->blog->getQmarkURL() .
@@ -587,7 +589,7 @@ class postInfoWidget
return sprintf($l, $i, $s, $c);
}
- public static function nav($p, $d, $r, $t, $c)
+ public static function nav(dcRecord $p, int $d, bool $r, string $t, string $c): string
{
$rs = dcCore::app()->blog->getNextPost($p, $d, $r);
if (is_null($rs)) {
@@ -595,7 +597,7 @@ class postInfoWidget
}
$l = '%s';
$u = $rs->getURL();
- $e = html::escapeHTML($rs->post_title);
+ $e = html::escapeHTML($rs->f('post_title'));
return str_replace(
['%T', '%F'],