diff --git a/src/Backend.php b/src/Backend.php index 99cfa1a..67e4980 100644 --- a/src/Backend.php +++ b/src/Backend.php @@ -34,6 +34,7 @@ class Backend extends dcNsProcess { static::$init = defined('DC_CONTEXT_ADMIN') && My::phpCompliant() + && !is_null(dcCore::app()->auth) && !is_null(dcCore::app()->blog) && dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([ dcCore::app()->auth::PERMISSION_CONTENT_ADMIN, ]), dcCore::app()->blog->id); @@ -50,10 +51,10 @@ class Backend extends dcNsProcess # Admin menu dcCore::app()->menu[dcAdmin::MENU_PLUGINS]->addItem( My::name(), - dcCore::app()->adminurl->get('admin.plugin.' . My::id()), + dcCore::app()->adminurl?->get('admin.plugin.' . My::id()), dcPage::getPF(My::id() . '/icon.svg'), - preg_match('/' . preg_quote(dcCore::app()->adminurl->get('admin.plugin.' . My::id())) . '(&.*)?$/', $_SERVER['REQUEST_URI']), - dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([dcCore::app()->auth::PERMISSION_CONTENT_ADMIN]), dcCore::app()->blog->id) + preg_match('/' . preg_quote((string) dcCore::app()->adminurl?->get('admin.plugin.' . My::id())) . '(&.*)?$/', $_SERVER['REQUEST_URI']), + dcCore::app()->auth?->check(dcCore::app()->auth->makePermissions([dcCore::app()->auth::PERMISSION_CONTENT_ADMIN]), dcCore::app()->blog?->id) ); dcCore::app()->addBehaviors([ @@ -61,10 +62,10 @@ class Backend extends dcNsProcess 'adminDashboardFavoritesV2' => function (dcFavorites $favs): void { $favs->register(My::id(), [ 'title' => My::name(), - 'url' => dcCore::app()->adminurl->get('admin.plugin.' . My::id()), + 'url' => dcCore::app()->adminurl?->get('admin.plugin.' . My::id()), 'small-icon' => dcPage::getPF(My::id() . '/icon.svg'), 'large-icon' => dcPage::getPF(My::id() . '/icon.svg'), - 'permissions' => dcCore::app()->auth->makePermissions([dcCore::app()->auth::PERMISSION_CONTENT_ADMIN]), + 'permissions' => dcCore::app()->auth?->makePermissions([dcCore::app()->auth::PERMISSION_CONTENT_ADMIN]), ]); }, # Preference form @@ -85,7 +86,7 @@ class Backend extends dcNsProcess '
' . __('This enable public widgets and contents filter.') . '
' . - '' .
+ ' ' .
__('Set content filters') . '' . (new Checkbox(['epc_id[]'], $checked))->value($this->rs->epc_id)->render() . ' ',
'key' => '' . Html::escapeHTML($this->rs->epc_key) . ' ',
'value' => '' . Html::escapeHTML($this->rs->epc_value) . ' ',
- 'date' => '' . dt::dt2str(__('%Y-%m-%d %H:%M'), $this->rs->epc_upddt) . ' ',
+ 'date' => '' . Date::dt2str(__('%Y-%m-%d %H:%M'), $this->rs->epc_upddt) . ' ',
];
return
diff --git a/src/Epc.php b/src/Epc.php
index 4e54191..6e0a99f 100644
--- a/src/Epc.php
+++ b/src/Epc.php
@@ -56,7 +56,7 @@ class Epc
public static function blogAllowedTplValues(): array
{
- $rs = json_decode(dcCore::app()->blog->settings->get(My::id())->get('allowedtplvalues'));
+ $rs = json_decode((string) dcCore::app()->blog?->settings->get(My::id())->get('allowedtplvalues'), true);
return is_array($rs) ? $rs : self::defaultAllowedTplValues();
}
@@ -103,12 +103,12 @@ class Epc
public static function blogAllowedPubPages(): array
{
- $rs = json_decode(dcCore::app()->blog->settings->get(My::id())->get('allowedpubpages'));
+ $rs = json_decode((string) dcCore::app()->blog?->settings->get(My::id())->get('allowedpubpages'), true);
return is_array($rs) ? $rs : self::defaultAllowedPubPages();
}
- public static function getFilters(): ?array
+ public static function getFilters(): array
{
if (empty(self::$default_filters)) {
$final = $sort = [];
@@ -137,7 +137,7 @@ class Epc
public static function testContext(string $tag, array $args, EpcFilter $filter): bool
{
- return in_array(dcCore::app()->ctx->current_tpl, $filter->pubPages)
+ return in_array((string) dcCore::app()->ctx?->__get('current_tpl'), $filter->pubPages)
&& in_array($tag, $filter->tplValues)
&& $args[0] != '' //content
&& empty($args['encode_xml'])
@@ -163,11 +163,12 @@ class Epc
# Plural
$x = $filter->plural ? $p . 's|' . $p : $p;
# Mark words
- $s = preg_replace('#(' . $before . ')(' . $x . ')(' . $after . ')#su' . $i, '$1ççççç$2ççççç$3', $s, -1, $count);
+ $ret = preg_replace('#(' . $before . ')(' . $x . ')(' . $after . ')#su' . $i, '$1ççççç$2ççççç$3', $s, -1, $count);
# Nothing to parse
- if (!$count) {
+ if (!is_string($ret) || !$count) {
return $s;
}
+ $s = $ret;
# Remove words that are into unwanted html tags
$tags = '';
$ignore_tags = array_merge(self::decodeTags($filter->htmltag), self::decodeTags($filter->notag));
@@ -175,16 +176,30 @@ class Epc
$tags = implode('|', $ignore_tags);
}
if (!empty($tags)) {
- $s = preg_replace_callback('#(<(' . $tags . ')[^>]*?>)(.*?)(\\2>)#s', [self::class, 'removeTags'], $s);
+ $ret = preg_replace_callback('#(<(' . $tags . ')[^>]*?>)(.*?)(\\2>)#s', [self::class, 'removeTags'], $s);
+ if (is_string($ret)) {
+ $s = $ret;
+ }
}
# Remove words inside html tag (class, title, alt, href, ...)
- $s = preg_replace('#(ççççç(' . $p . '(s|))ççççç)(?=[^<]+>)#s' . $i, '$2$4', $s);
+ $ret = preg_replace('#(ççççç(' . $p . '(s|))ççççç)(?=[^<]+>)#s' . $i, '$2$4', $s);
+ if (is_string($ret)) {
+ $s = $ret;
+ }
# Replace words by what you want (with limit)
- $s = preg_replace('#ççççç(' . $p . '(s|))ççççç#s' . $i, $r, $s, $limit, $count);
+ $ret = preg_replace('#ççççç(' . $p . '(s|))ççççç#s' . $i, $r, $s, $limit, $count);
+ if (is_string($ret)) {
+ $s = $ret;
+ }
# update limit
self::$epcFilterLimit[$filter->id() . '_' . $p] = $limit - $count;
# Clean rest
- return $s = preg_replace('#ççççç(.*?)ççççç#s', '$1', $s);
+ $ret = preg_replace('#ççççç(.*?)ççççç#s', '$1', $s);
+ if (is_string($ret)) {
+ $s = $ret;
+ }
+
+ return $s;
}
public static function matchString(string $p, string $r, string $s, EpcFilter $filter, string $before = '\b', string $after = '\b'): array
@@ -286,13 +301,13 @@ class Epc
public static function widgetContentEntryExcerpt(?WidgetsElement $w = null): string
{
- if (!dcCore::app()->ctx->exists('posts')) {
+ if (is_null(dcCore::app()->ctx) || !dcCore::app()->ctx->exists('posts')) {
return '';
}
$res = '';
- while (dcCore::app()->ctx->posts->fetch()) {
- $res .= dcCore::app()->ctx->posts->f('post_excerpt');
+ while (dcCore::app()->ctx->__get('posts')?->fetch()) {
+ $res .= dcCore::app()->ctx->__get('posts')->f('post_excerpt');
}
return $res;
@@ -300,13 +315,13 @@ class Epc
public static function widgetContentEntryContent(): string
{
- if (!dcCore::app()->ctx->exists('posts')) {
+ if (is_null(dcCore::app()->ctx) || !dcCore::app()->ctx->exists('posts')) {
return '';
}
$res = '';
- while (dcCore::app()->ctx->posts->fetch()) {
- $res .= dcCore::app()->ctx->posts->f('post_content');
+ while (dcCore::app()->ctx->__get('posts')?->fetch()) {
+ $res .= dcCore::app()->ctx->__get('posts')->f('post_content');
}
return $res;
@@ -314,15 +329,15 @@ class Epc
public static function widgetContentCommentContent(): string
{
- if (!dcCore::app()->ctx->exists('posts')) {
+ if (is_null(dcCore::app()->ctx) || !dcCore::app()->ctx->exists('posts')) {
return '';
}
$res = '';
$post_ids = [];
- while (dcCore::app()->ctx->posts->fetch()) {
- $comments = dcCore::app()->blog->getComments(['post_id' => dcCore::app()->ctx->posts->f('post_id')]);
- while ($comments->fetch()) {
+ while (dcCore::app()->ctx->__get('posts')?->fetch()) {
+ $comments = dcCore::app()->blog?->getComments(['post_id' => dcCore::app()->ctx->__get('posts')->f('post_id')]);
+ while ($comments?->fetch()) {
$res .= $comments->getContent();
}
}
diff --git a/src/EpcFilter.php b/src/EpcFilter.php
index fa6a113..a36e83a 100644
--- a/src/EpcFilter.php
+++ b/src/EpcFilter.php
@@ -52,7 +52,7 @@ abstract class EpcFilter
}
// get blog settings
- $s = json_decode((string) dcCore::app()->blog->settings->get(My::id())->get($this->id), true);
+ $s = json_decode((string) dcCore::app()->blog?->settings->get(My::id())->get($this->id), true);
if (empty($s)) {
$s = [];
}
@@ -110,13 +110,13 @@ abstract class EpcFilter
return $this->id;
}
- final public function records(): ?dcRecord
+ final public function records(): dcRecord
{
if ($this->records === null && $this->has_list) {
$this->records = EpcRecord::getRecords(['epc_filter' => $this->id()]);
}
- return $this->records;
+ return $this->records ?? dcRecord::newFromArray([]);
}
public function publicContent(string $tag, array $args): void
diff --git a/src/EpcRecord.php b/src/EpcRecord.php
index fe6ae33..2b35234 100644
--- a/src/EpcRecord.php
+++ b/src/EpcRecord.php
@@ -41,7 +41,7 @@ class EpcRecord
$strReq .= $params['from'] . ' ';
}
- $strReq .= "WHERE E.blog_id = '" . dcCore::app()->con->escapeStr((string) dcCore::app()->blog->id) . "' ";
+ $strReq .= "WHERE E.blog_id = '" . dcCore::app()->con->escapeStr((string) dcCore::app()->blog?->id) . "' ";
if (isset($params['epc_type'])) {
if (is_array($params['epc_type']) && !empty($params['epc_type'])) {
@@ -105,7 +105,7 @@ class EpcRecord
try {
$cur->setField('epc_id', self::getNextId());
- $cur->setField('blog_id', dcCore::app()->blog->id);
+ $cur->setField('blog_id', (string) dcCore::app()->blog?->id);
$cur->setField('epc_upddt', date('Y-m-d H:i:s'));
self::getCursor($cur);
@@ -133,7 +133,7 @@ class EpcRecord
$cur->setField('epc_upddt', date('Y-m-d H:i:s'));
- $cur->update('WHERE epc_id = ' . $id . " AND blog_id = '" . dcCore::app()->con->escapeStr((string) dcCore::app()->blog->id) . "' ");
+ $cur->update('WHERE epc_id = ' . $id . " AND blog_id = '" . dcCore::app()->con->escapeStr((string) dcCore::app()->blog?->id) . "' ");
self::trigger();
# --BEHAVIOR-- enhancePostContentAfterUpdRecord : cursor, int
@@ -161,7 +161,7 @@ class EpcRecord
dcCore::app()->con->execute(
'DELETE FROM ' . dcCore::app()->prefix . My::TABLE_NAME . ' ' .
'WHERE epc_id = ' . $id . ' ' .
- "AND blog_id = '" . dcCore::app()->con->escapeStr((string) dcCore::app()->blog->id) . "' "
+ "AND blog_id = '" . dcCore::app()->con->escapeStr((string) dcCore::app()->blog?->id) . "' "
);
self::trigger();
@@ -194,6 +194,6 @@ class EpcRecord
private static function trigger(): void
{
- dcCore::app()->blog->triggerBlog();
+ dcCore::app()->blog?->triggerBlog();
}
}
diff --git a/src/Filter/EpcFilterTag.php b/src/Filter/EpcFilterTag.php
index d6930b5..87158ac 100644
--- a/src/Filter/EpcFilterTag.php
+++ b/src/Filter/EpcFilterTag.php
@@ -58,7 +58,7 @@ class EpcFilterTag extends EpcFilter
while ($metas->fetch()) {
$args[0] = Epc::replaceString(
$metas->f('meta_id'),
- sprintf($this->replace, dcCore::app()->blog->url . dcCore::app()->url->getBase('tag') . '/' . $metas->f('meta_id'), '\\1'),
+ sprintf($this->replace, dcCore::app()->blog?->url . dcCore::app()->url->getBase('tag') . '/' . $metas->f('meta_id'), '\\1'),
$args[0],
$this
);
@@ -76,7 +76,7 @@ class EpcFilterTag extends EpcFilter
while ($metas->fetch()) {
$list[] = Epc::matchString(
$metas->f('meta_id'),
- sprintf($this->widget, dcCore::app()->blog->url . dcCore::app()->url->getBase('tag') . '/' . $metas->f('meta_id'), '\\1'),
+ sprintf($this->widget, dcCore::app()->blog?->url . dcCore::app()->url->getBase('tag') . '/' . $metas->f('meta_id'), '\\1'),
$content,
$this
);
diff --git a/src/Frontend.php b/src/Frontend.php
index 8d10bcb..ba52ac4 100644
--- a/src/Frontend.php
+++ b/src/Frontend.php
@@ -33,20 +33,18 @@ class Frontend extends dcNsProcess
return false;
}
- if (!dcCore::app()->blog->settings->get(My::id())->get('active')) {
+ if (!dcCore::app()->blog?->settings->get(My::id())->get('active')) {
return false;
}
dcCore::app()->addBehaviors([
// add CSS URL to header
'publicHeadContent' => function (): void {
- echo dcUtils::cssLoad(dcCore::app()->blog->url . dcCore::app()->url->getURLFor('epccss'));
+ echo dcUtils::cssLoad(dcCore::app()->blog?->url . dcCore::app()->url->getURLFor('epccss'));
},
// Filter template blocks content
'publicBeforeContentFilterV2' => function (string $tag, array $args): void {
- $filters = Epc::getFilters();
-
- foreach ($filters as $id => $filter) {
+ foreach (Epc::getFilters() as $id => $filter) {
if (!Epc::testContext($tag, $args, $filter)) {
continue;
}
diff --git a/src/Install.php b/src/Install.php
index c1ec36f..472c5c8 100644
--- a/src/Install.php
+++ b/src/Install.php
@@ -62,7 +62,10 @@ class Install extends dcNsProcess
self::growUp();
// Settings
- $s = dcCore::app()->blog->settings->get(My::id());
+ $s = dcCore::app()->blog?->settings->get(My::id());
+ if (is_null($s)) {
+ return false;
+ }
$s->put('active', false, 'boolean', 'Enable enhancePostContent', false, true);
$s->put('list_sortby', 'epc_key', 'string', 'Admin records list field order', false, true);
@@ -72,8 +75,7 @@ class Install extends dcNsProcess
$s->put('allowedpubpages', json_encode(Epc::defaultAllowedPubPages()), 'string', 'List of allowed template pages', false, true);
// Filters settings
- $filters = Epc::getFilters();
- foreach ($filters as $id => $filter) {
+ foreach (Epc::getFilters() as $id => $filter) {
// Only editable options
$opt = [
'nocase' => $filter->nocase,
@@ -162,7 +164,7 @@ class Install extends dcNsProcess
$cur->setField('epc_filter', strtolower($record->f('epc_filter')));
$cur->update('WHERE epc_id = ' . $record->f('epc_id') . ' ');
- dcCore::app()->blog->triggerBlog();
+ dcCore::app()->blog?->triggerBlog();
}
}
diff --git a/src/Manage.php b/src/Manage.php
index f635fce..0bb05c6 100644
--- a/src/Manage.php
+++ b/src/Manage.php
@@ -43,6 +43,7 @@ class Manage extends dcNsProcess
{
static::$init = defined('DC_CONTEXT_ADMIN')
&& My::phpCompliant()
+ && !is_null(dcCore::app()->auth) && !is_null(dcCore::app()->blog)
&& dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([
dcCore::app()->auth::PERMISSION_CONTENT_ADMIN,
]), dcCore::app()->blog->id);
@@ -56,6 +57,10 @@ class Manage extends dcNsProcess
return false;
}
+ if (is_null(dcCore::app()->blog) || is_null(dcCore::app()->adminurl)) {
+ return false;
+ }
+
$current = ManageVars::init();
if (dcCore::app()->error->flag()) {
@@ -163,6 +168,10 @@ class Manage extends dcNsProcess
return;
}
+ if (is_null(dcCore::app()->blog) || is_null(dcCore::app()->adminurl)) {
+ return;
+ }
+
$current = ManageVars::init();
# -- Prepare page --
diff --git a/src/ManageVars.php b/src/ManageVars.php
index 8314870..9dd94f8 100644
--- a/src/ManageVars.php
+++ b/src/ManageVars.php
@@ -33,14 +33,15 @@ class ManageVars
$_filters = Epc::getFilters();
$filters_id = $filters_combo = [];
- foreach ($_filters as $id => $filter) {
- $filters_id[$id] = $filter->name;
- $filters_combo[$filter->name] = $id;
+ if (!empty($_filters)) {
+ foreach ($_filters as $id => $filter) {
+ $filters_id[$id] = $filter->name;
+ $filters_combo[$filter->name] = $id;
+ }
}
-
$part = $_REQUEST['part'] ?? key($filters_id);
- if (!isset($filters_id[$part])) {
+ if (!isset($_filters[$part])) {
throw new Exception(__('no filters'));
}
diff --git a/src/Prepend.php b/src/Prepend.php
index eed14b8..9408b45 100644
--- a/src/Prepend.php
+++ b/src/Prepend.php
@@ -49,6 +49,9 @@ class Prepend extends dcNsProcess
function (string $args): void {
$css = [];
$filters = Epc::getFilters();
+ if (empty($filters)) {
+ return;
+ }
foreach ($filters as $id => $filter) {
if ('' == $filter->class || '' == $filter->style) {
diff --git a/src/Uninstall.php b/src/Uninstall.php
index 5631f28..1e9dc3a 100644
--- a/src/Uninstall.php
+++ b/src/Uninstall.php
@@ -22,7 +22,7 @@ class Uninstall extends dcNsProcess
{
public static function init(): bool
{
- static::$init = defined('DC_RC_PATH');
+ static::$init = defined('DC_CONTEXT_ADMIN');
return static::$init;
}
diff --git a/src/Widgets.php b/src/Widgets.php
index fdef955..752402c 100644
--- a/src/Widgets.php
+++ b/src/Widgets.php
@@ -51,9 +51,8 @@ class Widgets
'text'
);
# Type
- $filters = Epc::getFilters();
- $types = [];
- foreach ($filters as $id => $filter) {
+ $types = [];
+ foreach (Epc::getFilters() as $id => $filter) {
if ($filter->widget != '') {
$types[$filter->name] = $id;
}
@@ -66,8 +65,7 @@ class Widgets
$types
);
# Content
- $contents = Epc::defaultAllowedWidgetValues();
- foreach ($contents as $k => $v) {
+ foreach (Epc::defaultAllowedWidgetValues() as $k => $v) {
$w->epclist->setting(
'content' . $v['id'],
sprintf(__('Enable filter on %s'), __($k)),
@@ -101,8 +99,8 @@ class Widgets
}
# Page
- if (!dcCore::app()->blog->settings->get(My::id())->get('active')
- || !in_array(dcCore::app()->ctx->current_tpl, ['post.html', 'page.html'])
+ if (!dcCore::app()->blog?->settings->get(My::id())->get('active')
+ || !in_array(dcCore::app()->ctx?->__get('current_tpl'), ['post.html', 'page.html'])
) {
return '';
}