diff --git a/_admin.php b/_admin.php
index 9cab066..04019f7 100644
--- a/_admin.php
+++ b/_admin.php
@@ -1,32 +1,31 @@
blog->settings->addNamespace('saba');
+dcCore::app()->blog->settings->addNamespace('saba');
# widget
-require_once dirname(__FILE__) . '/_widgets.php';
+require_once __DIR__ . '/_widgets.php';
# behaviors
-$core->addBehavior(
- 'adminBlogPreferencesForm',
+dcCore::app()->addBehavior(
+ 'adminBlogPreferencesFormV2',
['adminSaba', 'adminBlogPreferencesForm']
);
-$core->addBehavior(
+dcCore::app()->addBehavior(
'adminBeforeBlogSettingsUpdate',
['adminSaba', 'adminBeforeBlogSettingsUpdate']
);
@@ -34,19 +33,19 @@ $core->addBehavior(
# add settings to admin blog pref page
class adminSaba
{
- public static function adminBlogPreferencesForm($core, $blog_settings)
+ public static function adminBlogPreferencesForm($blog_settings)
{
echo
'
' .
'
' . __('Search Across Blog Archive') . '
' .
'
' .
'
' .
'
' .
- __("This suggests visitors some posts on page 404.") .
+ __('This suggests visitors some posts on page 404.') .
'
' .
'
';
}
@@ -56,4 +55,4 @@ class adminSaba
$blog_settings->saba->put('active', !empty($_POST['saba_active']));
$blog_settings->saba->put('error', !empty($_POST['saba_error']));
}
-}
\ No newline at end of file
+}
diff --git a/_define.php b/_define.php
index 7c78113..58ef1b0 100644
--- a/_define.php
+++ b/_define.php
@@ -1,16 +1,15 @@
registerModule(
'saba',
'Search across blog archive',
'Jean-Christian Denis and Contributors',
- '2021.09.10',
+ '2022.11.12',
[
- 'requires' => [['core', '2.19']],
- 'permissions' => 'admin',
- 'type' => 'plugin',
- 'support' => 'https://github.com/JcDenis/saba',
- 'details' => 'https://plugins.dotaddict.org/dc2/details/saba',
- 'repository' => 'https://raw.githubusercontent.com/JcDenis/saba/master/dcstore.xml'
+ 'requires' => [['core', '2.24']],
+ 'permissions' => dcAuth::PERMISSION_ADMIN,
+ 'type' => 'plugin',
+ 'support' => 'https://github.com/JcDenis/saba',
+ 'details' => 'https://plugins.dotaddict.org/dc2/details/saba',
+ 'repository' => 'https://raw.githubusercontent.com/JcDenis/saba/master/dcstore.xml',
]
-);
\ No newline at end of file
+);
diff --git a/_public.php b/_public.php
index 3070a32..3d0f077 100644
--- a/_public.php
+++ b/_public.php
@@ -1,56 +1,55 @@
blog->settings->addNamespace('saba');
+dcCore::app()->blog->settings->addNamespace('saba');
-if (!$core->blog->settings->saba->active) {
+if (!dcCore::app()->blog->settings->saba->active) {
return null;
}
# translation
-l10n::set(dirname(__FILE__) . '/locales/' . $_lang . '/public');
+l10n::set(__DIR__ . '/locales/' . dcCore::app()->lang . '/public');
# widget
-require_once dirname(__FILE__) . '/_widgets.php';
+require_once __DIR__ . '/_widgets.php';
# template path
-$core->tpl->setPath(
- $core->tpl->getPath(),
- dirname(__FILE__) . '/default-templates/'
+dcCore::app()->tpl->setPath(
+ dcCore::app()->tpl->getPath(),
+ __DIR__ . '/default-templates/'
);
# behavior
-$core->addBehavior(
+dcCore::app()->addBehavior(
'templateCustomSortByAlias',
['pubSaba', 'templateCustomSortByAlias']
);
-$core->addBehavior(
+dcCore::app()->addBehavior(
'urlHandlerBeforeGetData',
['pubSaba', 'urlHandlerBeforeGetData']
);
-$core->addBehavior(
+dcCore::app()->addBehavior(
'coreBlogBeforeGetPosts',
['pubSaba', 'coreBlogBeforeGetPosts']
);
# url
-if ($core->blog->settings->saba->error) {
- $core->url->registerError(['urlSaba', 'error']);
+if (dcCore::app()->blog->settings->saba->error) {
+ dcCore::app()->url->registerError(['urlSaba', 'error']);
}
class pubSaba
@@ -58,54 +57,52 @@ class pubSaba
public static function templateCustomSortByAlias($alias)
{
$alias['post'] = [
- 'title' => 'post_title',
- 'selected' => 'post_selected',
- 'author' => 'user_id',
- 'date' => 'post_dt',
- 'update' => 'post_upddt',
- 'id' => 'post_id',
- 'comment' => 'nb_comment',
- 'trackback' => 'nb_trackback'
+ 'title' => 'post_title',
+ 'selected' => 'post_selected',
+ 'author' => 'user_id',
+ 'date' => 'post_dt',
+ 'update' => 'post_upddt',
+ 'id' => 'post_id',
+ 'comment' => 'nb_comment',
+ 'trackback' => 'nb_trackback',
];
}
public static function urlHandlerBeforeGetData($_ctx)
{
- global $core;
-
$options = tplSaba::getSabaDefaultPostsOptions();
if (!empty($_GET['q']) && 1 < strlen($_GET['q'])) {
-
# search string
$params = new ArrayObject(['search' => rawurldecode($_GET['q'])]);
- $options = self::getPostsParams($params);
+ $options = self::getPostsParams($params);
$options['q'] = rawurldecode($_GET['q']);
# count
- $GLOBALS['_search'] = rawurldecode($_GET['q']);
- if ($GLOBALS['_search']) {
- $GLOBALS['_search_count'] = $core->blog->getPosts($params, true)->f(0);
+ dcCore::app()->public->search = rawurldecode($_GET['q']);
+ if (dcCore::app()->public->search) {
+ dcCore::app()->public->search_count = dcCore::app()->blog->getPosts($params, true)->f(0);
}
# pagintaion
- $_page_number = !isset($GLOBALS['_page_number']) ? 1 : $GLOBALS['_page_number'];
- $params['limit'] = $_ctx->nb_entry_per_page;
+ $_page_number = dcCore::app()->public->getPageNumber();
+ if ($_page_number < 1) {
+ $_page_number = 1;
+ }
+ $params['limit'] = dcCore::app()->ctx->nb_entry_per_page;
$params['limit'] = [(($_page_number - 1) * $params['limit']), $params['limit']];
# get posts
- $_ctx->post_params = $params;
- $_ctx->posts = $core->blog->getPosts($params);
+ dcCore::app()->ctx->post_params = $params;
+ dcCore::app()->ctx->posts = dcCore::app()->blog->getPosts($params);
unset($params);
}
- $_ctx->saba_options = $options;
+ dcCore::app()->ctx->saba_options = $options;
}
public static function getPostsParams($params)
{
- global $core;
-
if (!isset($params['sql'])) {
$params['sql'] = '';
}
@@ -118,35 +115,34 @@ class pubSaba
parse_str($qs, $get);
# search string
- $options = tplSaba::getSabaDefaultPostsOptions();
+ $options = tplSaba::getSabaDefaultPostsOptions();
$options['q'] = $params['search'];
# options
if (!empty($get['q_opt'])) {
-
if (in_array('selected', $get['q_opt'])) {
- $options['q_opt'][] = 'selected';
+ $options['q_opt'][] = 'selected';
$params['post_selected'] = 1;
}
if (in_array('comment', $get['q_opt'])) {
$options['q_opt'][] = 'comment';
- $params['sql'] = "AND nb_comment > 0 ";
+ $params['sql'] = 'AND nb_comment > 0 ';
}
if (in_array('trackback', $get['q_opt'])) {
$options['q_opt'][] = 'trackback';
- $params['sql'] = "AND nb_trackback > 0";
+ $params['sql'] = 'AND nb_trackback > 0';
}
}
# categories
if (!empty($get['q_cat'])) {
- $cats = array();
- foreach($get['q_cat'] as $v) {
- $v = abs((integer) $v);
+ $cats = [];
+ foreach ($get['q_cat'] as $v) {
+ $v = abs((int) $v);
if (!$v) {
continue;
}
- $cats[] = "C.cat_id = '" . $v . "'";
+ $cats[] = "C.cat_id = '" . $v . "'";
$options['q_cat'][] = $v;
}
if (!empty($cats)) {
@@ -156,12 +152,12 @@ class pubSaba
# post types
if (!empty($get['q_type'])) {
- $types = $core->getPostTypes();
- foreach($get['q_type'] as $v) {
+ $types = dcCore::app()->getPostTypes();
+ foreach ($get['q_type'] as $v) {
if (!$types[$v]) {
continue;
}
- $options['q_type'][] = $v;
+ $options['q_type'][] = $v;
$params['post_type'][] = $v;
}
} else {
@@ -171,8 +167,8 @@ class pubSaba
# age
$ages = tplSaba::getSabaFormAges();
if (!empty($get['q_age']) && in_array($get['q_age'], $ages)) {
- $age = explode(',', $get['q_age']);
- $ts = time();
+ $age = explode(',', $get['q_age']);
+ $ts = time();
$options['q_age'] = $get['q_age'];
if ($age[0]) {
@@ -187,9 +183,9 @@ class pubSaba
# user
if (!empty($get['q_user'])) {
- $users = array();
- foreach($get['q_user'] as $v) {
- $users[] = "U.user_id = '" . $core->con->escape($v) . "'";
+ $users = [];
+ foreach ($get['q_user'] as $v) {
+ $users[] = "U.user_id = '" . dcCore::app()->con->escape($v) . "'";
$options['q_user'][] = $v;
}
if (!empty($users)) {
@@ -201,25 +197,23 @@ class pubSaba
$sort = 'desc';
if (!empty($get['q_rev'])) {
$options['q_rev'] = '1';
- $sort = 'asc';
+ $sort = 'asc';
}
$orders = tplSaba::getSabaFormOrders();
if (!empty($get['q_order']) && in_array($get['q_order'], $orders)) {
-
$options['q_order'] = $get['q_order'];
- $params['order'] = $core->tpl->getSortByStr(
- ['sortby' => $get['q_order'], 'order' => $sort],
+ $params['order'] = dcCore::app()->tpl->getSortByStr(
+ new ArrayObject(['sortby' => $get['q_order'], 'order' => $sort]),
'post'
); //?! post_type
}
+
return $options;
}
# Ajouter la condition "ou" ŕ la recherche
public static function coreBlogBeforeGetPosts($p)
{
- global $core;
-
if (empty($p['search'])) {
return;
}
@@ -227,19 +221,19 @@ class pubSaba
self::getPostsParams($p);
$OR = [];
- foreach(explode(',', $p['search']) as $sentence) {
- $AND = [];
+ foreach (explode(',', $p['search']) as $sentence) {
+ $AND = [];
$words = text::splitWords($sentence);
- foreach($words as $word) {
- $AND[] = "post_words LIKE '%" . $core->con->escape($word) . "%'";
+ foreach ($words as $word) {
+ $AND[] = "post_words LIKE '%" . dcCore::app()->con->escape($word) . "%'";
}
if (!empty($AND)) {
- $OR[] = " (" . implode (' AND ', $AND) . ") ";
+ $OR[] = ' (' . implode(' AND ', $AND) . ') ';
}
}
if (!empty($OR)) {
$p['search'] = '';
- $p['sql'] .= "AND (" . implode (' OR ', $OR) . ") ";
+ $p['sql'] .= 'AND (' . implode(' OR ', $OR) . ') ';
}
}
}
@@ -248,8 +242,6 @@ class urlSaba extends dcUrlHandlers
{
public static function error($args, $type, $e)
{
- global $core, $_ctx;
-
if ($e->getCode() == 404) {
$q = explode('/', $args);
if (empty($q)) {
@@ -257,7 +249,7 @@ class urlSaba extends dcUrlHandlers
}
# Clean URI
- $_GET['q'] = implode('%20', $q);
+ $_GET['q'] = implode('%20', $q);
$_SERVER['QUERY_STRING'] = '';
# Claim comes from 404
@@ -276,70 +268,70 @@ class tplSaba
public static function getSabaDefaultPostsOptions()
{
return [
- 'q'=> '',
- 'q_opt' => [],
- 'q_cat' => [],
- 'q_age' => '0,0',
- 'q_user'=> [],
- 'q_order'=> 'date',
- 'q_rev' => '0',
- 'q_type'=> []
+ 'q' => '',
+ 'q_opt' => [],
+ 'q_cat' => [],
+ 'q_age' => '0,0',
+ 'q_user' => [],
+ 'q_order' => 'date',
+ 'q_rev' => '0',
+ 'q_type' => [],
];
}
public static function getSabaFormOptions()
{
return [
- __('Selected entry') => 'selected',
- __('With comments') => 'comment',
- __('With trackbacks') => 'trackback'
+ __('Selected entry') => 'selected',
+ __('With comments') => 'comment',
+ __('With trackbacks') => 'trackback',
];
}
public static function getSabaFormOrders()
{
return [
- __('Title') => 'title',
- __('Selected entry') => 'selected',
- __('Author') => 'author',
- __('Date') => 'date',
- __('Update') => 'update',
- __('Comments count') => 'comment',
- __('Trackbacks count') => 'trackback'
+ __('Title') => 'title',
+ __('Selected entry') => 'selected',
+ __('Author') => 'author',
+ __('Date') => 'date',
+ __('Update') => 'update',
+ __('Comments count') => 'comment',
+ __('Trackbacks count') => 'trackback',
];
}
public static function getSabaFormAges()
{
return [
- __('All') => '0,0',
- __('Less than a month') => '0,2592000',
- __('From 1 to 6 month') => '2592000,15552000',
+ __('All') => '0,0',
+ __('Less than a month') => '0,2592000',
+ __('From 1 to 6 month') => '2592000,15552000',
__('From 6 to 12 month') => '15552000,31536000',
- __('More than a year') => '31536000,0'
+ __('More than a year') => '31536000,0',
];
}
public static function getSabaFormTypes()
{
$know = [
- 'post' => __('Entry'),
- 'page' => __('Page'),
+ 'post' => __('Entry'),
+ 'page' => __('Page'),
'pollsfactory' => __('Poll'),
- 'eventhandler' => __('Event')
+ 'eventhandler' => __('Event'),
];
// todo: add behavior for unknow types
- $rs = [];
- $types = $GLOBALS['core']->getPostTypes();
+ $rs = [];
+ $types = dcCore::app()->getPostTypes();
- foreach($types as $k => $v) {
+ foreach ($types as $k => $v) {
if (!$v['public_url']) {
continue;
}
- $rs[isset($know[$k]) ? $know[$k] : __($k)] = $k;
+ $rs[$know[$k] ?? __($k)] = $k;
}
return $rs;
}
-}
\ No newline at end of file
+}
diff --git a/_widgets.php b/_widgets.php
index 0d524ba..d9a5d48 100644
--- a/_widgets.php
+++ b/_widgets.php
@@ -1,33 +1,30 @@
addBehavior('initWidgets', ['sabaWidget', 'setWidget']);
+dcCore::app()->addBehavior('initWidgets', ['sabaWidget', 'setWidget']);
class sabaWidget
{
public static function setWidget($w)
{
- global $core;
-
$w
->create(
'saba',
__('Advanced search'),
- array('sabaWidget', 'getWidget'),
+ ['sabaWidget', 'getWidget'],
null,
__('Add more search options on public side')
)
@@ -79,15 +76,13 @@ class sabaWidget
public static function getWidget($w)
{
- global $core, $_ctx;
+ dcCore::app()->blog->settings->addNamespace('saba');
- $core->blog->settings->addNamespace('saba');
-
- if (!$core->blog->settings->saba->active) {
+ if (!dcCore::app()->blog->settings->saba->active) {
return;
}
- if (!$core->blog->settings->saba->error && $core->url->type == '404') {
+ if (!dcCore::app()->blog->settings->saba->error && dcCore::app()->url->type == '404') {
return;
}
@@ -95,12 +90,11 @@ class sabaWidget
return;
}
- $q = $_ctx->saba_otpion ?? '';
+ $q = dcCore::app()->ctx->saba_otpion ?? '';
# title and search
- $res =
- ($w->title ? $w->renderTitle('') : '') .
- '