upgrade to dotclear 2.28
This commit is contained in:
parent
17e98ca0f2
commit
f2a3977f2d
33 changed files with 540 additions and 660 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
zoneclearFeedServer 2023.10.14
|
||||||
|
===========================================================
|
||||||
|
* Require Dotclear 2.28
|
||||||
|
* Require PHP 8.1
|
||||||
|
* Upgrade to Dotclear 2.28
|
||||||
|
|
||||||
zoneclearFeedServer 2023.08.20
|
zoneclearFeedServer 2023.08.20
|
||||||
===========================================================
|
===========================================================
|
||||||
* Require Dotclear 2.27
|
* Require Dotclear 2.27
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# README
|
# README
|
||||||
|
|
||||||
[![Release](https://img.shields.io/badge/release-2023.08.20-a2cbe9.svg)](https://git.dotclear.watch/JcDenis/zoneclearFeedServer/releases)
|
[![Release](https://img.shields.io/badge/release-2023.10.14-a2cbe9.svg)](https://git.dotclear.watch/JcDenis/zoneclearFeedServer/releases)
|
||||||
![Date](https://img.shields.io/badge/date-2023.08.20-c44d58.svg)
|
![Date](https://img.shields.io/badge/date-2023.10.14-c44d58.svg)
|
||||||
[![Dotclear](https://img.shields.io/badge/dotclear-v2.27-137bbb.svg)](https://fr.dotclear.org/download)
|
[![Dotclear](https://img.shields.io/badge/dotclear-v2.28-137bbb.svg)](https://fr.dotclear.org/download)
|
||||||
[![Dotaddict](https://img.shields.io/badge/dotaddict-official-9ac123.svg)](https://plugins.dotaddict.org/dc2/details/zoneclearFeedServer)
|
[![Dotaddict](https://img.shields.io/badge/dotaddict-official-9ac123.svg)](https://plugins.dotaddict.org/dc2/details/zoneclearFeedServer)
|
||||||
[![License](https://img.shields.io/badge/license-GPL--2.0-ececec.svg)](https://git.dotclear.watch/JcDenis/zoneclearFeedServer/src/branch/master/LICENSE)
|
[![License](https://img.shields.io/badge/license-GPL--2.0-ececec.svg)](https://git.dotclear.watch/JcDenis/zoneclearFeedServer/src/branch/master/LICENSE)
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ _zoneclearFeedServer_ is a plugin for the open-source web publishing software ca
|
||||||
|
|
||||||
## REQUIREMENTS
|
## REQUIREMENTS
|
||||||
|
|
||||||
* Dotclear 2.27
|
* Dotclear 2.28
|
||||||
* PHP 8.1
|
* PHP 8.1
|
||||||
* Dotclear super admin permissions for plugin and services configuration
|
* Dotclear super admin permissions for plugin and services configuration
|
||||||
* Dotclear admin permissions to manage feeds
|
* Dotclear admin permissions to manage feeds
|
||||||
|
|
38
_define.php
38
_define.php
|
@ -1,35 +1,31 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
* @file
|
||||||
|
* @brief The plugin zoneclearFeedServer definition
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
*
|
*
|
||||||
* @package Dotclear
|
* @defgroup zoneclearFeedServer Plugin zoneclearFeedServer.
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
*
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
* Mix your blog with a feeds planet.
|
||||||
*
|
*
|
||||||
* @copyright Jean-Christian Denis
|
* @author Jean-Christian Denis (author)
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
* @author Pierre Van Glabeke
|
||||||
|
* @author BG
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
if (!defined('DC_RC_PATH')) {
|
declare(strict_types=1);
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->registerModule(
|
$this->registerModule(
|
||||||
'Feeds server',
|
'Feeds server',
|
||||||
'Mix your blog with a feeds planet',
|
'Mix your blog with a feeds planet',
|
||||||
'Jean-Christian Denis, BG, Pierre Van Glabeke',
|
'Jean-Christian Denis, BG, Pierre Van Glabeke',
|
||||||
'2023.08.20',
|
'2023.10.14',
|
||||||
[
|
[
|
||||||
'requires' => [
|
'requires' => [['core', '2.28']],
|
||||||
['php', '8.1'],
|
'permissions' => 'My',
|
||||||
['core', '2.27'],
|
'type' => 'plugin',
|
||||||
],
|
'support' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/issues',
|
||||||
'permissions' => dcCore::app()->auth->makePermissions([
|
'details' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/src/branch/master/README.md',
|
||||||
dcCore::app()->auth::PERMISSION_CONTENT_ADMIN,
|
'repository' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/raw/branch/master/dcstore.xml',
|
||||||
]),
|
|
||||||
'type' => 'plugin',
|
|
||||||
'support' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/issues',
|
|
||||||
'details' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/src/branch/master/README.md',
|
|
||||||
'repository' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/raw/branch/master/dcstore.xml',
|
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
20
_init.php
20
_init.php
|
@ -1,20 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
if (!defined('DC_RC_PATH')) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
class initZoneclearFeedServer
|
|
||||||
{
|
|
||||||
public const TABLE_NAME = 'zc_feed';
|
|
||||||
}
|
|
|
@ -5,6 +5,8 @@
|
||||||
# By Olivier Meunier and contributors
|
# By Olivier Meunier and contributors
|
||||||
# Licensed under the GPL version 2.0 license
|
# Licensed under the GPL version 2.0 license
|
||||||
|
|
||||||
|
use Dotclear\App;
|
||||||
|
|
||||||
$opts = getopt('d:c:b:u:h');
|
$opts = getopt('d:c:b:u:h');
|
||||||
|
|
||||||
function zchelp(string|int $status = 0): void
|
function zchelp(string|int $status = 0): void
|
||||||
|
@ -69,18 +71,18 @@ unset($blog_id);
|
||||||
require $dc_root . '/inc/prepend.php';
|
require $dc_root . '/inc/prepend.php';
|
||||||
unset($dc_root);
|
unset($dc_root);
|
||||||
|
|
||||||
dcCore::app()->setBlog(is_string(DC_BLOG_ID) ? DC_BLOG_ID : '');
|
App::blog()->loadFromBlog(is_string(DC_BLOG_ID) ? DC_BLOG_ID : '');
|
||||||
if (is_null(dcCore::app()->blog) || dcCore::app()->blog->id == null) {
|
if (!App::blog()->isDefined() || '' == App::blog()->id()) {
|
||||||
fwrite(STDERR, "Blog is not defined\n");
|
fwrite(STDERR, "Blog is not defined\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($opts['u']) || !dcCore::app()->auth->checkUser(is_string($opts['u']) ? $opts['u'] : '')) {
|
if (!isset($opts['u']) || !App::auth()->checkUser(is_string($opts['u']) ? $opts['u'] : '')) {
|
||||||
fwrite(STDERR, "Unable to set user\n");
|
fwrite(STDERR, "Unable to set user\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
dcCore::app()->plugins->loadModules(DC_PLUGINS_ROOT);
|
App::plugins()->loadModules(DC_PLUGINS_ROOT);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$zc = Dotclear\Plugin\zoneclearFeedServer\ZoneclearFeedServer::instance();
|
$zc = Dotclear\Plugin\zoneclearFeedServer\ZoneclearFeedServer::instance();
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
<modules xmlns:da="http://dotaddict.org/da/">
|
<modules xmlns:da="http://dotaddict.org/da/">
|
||||||
<module id="zoneclearFeedServer">
|
<module id="zoneclearFeedServer">
|
||||||
<name>Feeds server</name>
|
<name>Feeds server</name>
|
||||||
<version>2023.08.20</version>
|
<version>2023.10.14</version>
|
||||||
<author>Jean-Christian Denis, BG, Pierre Van Glabeke</author>
|
<author>Jean-Christian Denis, BG, Pierre Van Glabeke</author>
|
||||||
<desc>Mix your blog with a feeds planet</desc>
|
<desc>Mix your blog with a feeds planet</desc>
|
||||||
<file>https://git.dotclear.watch/JcDenis/zoneclearFeedServer/releases/download/v2023.08.20/plugin-zoneclearFeedServer.zip</file>
|
<file>https://git.dotclear.watch/JcDenis/zoneclearFeedServer/releases/download/v2023.10.14/plugin-zoneclearFeedServer.zip</file>
|
||||||
<da:dcmin>2.27</da:dcmin>
|
<da:dcmin>2.28</da:dcmin>
|
||||||
<da:details>https://git.dotclear.watch/JcDenis/zoneclearFeedServer/src/branch/master/README.md</da:details>
|
<da:details>https://git.dotclear.watch/JcDenis/zoneclearFeedServer/src/branch/master/README.md</da:details>
|
||||||
<da:support>https://git.dotclear.watch/JcDenis/zoneclearFeedServer/issues</da:support>
|
<da:support>https://git.dotclear.watch/JcDenis/zoneclearFeedServer/issues</da:support>
|
||||||
</module>
|
</module>
|
||||||
|
|
|
@ -1,20 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Database\Cursor;
|
use Dotclear\Database\Cursor;
|
||||||
use Dotclear\Plugin\activityReport\{
|
use Dotclear\Plugin\activityReport\{
|
||||||
Action,
|
Action,
|
||||||
|
@ -23,7 +13,13 @@ use Dotclear\Plugin\activityReport\{
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @brief zoneclearFeedServer activityReport class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
* Add feeds actions to the plugin activity report.
|
* Add feeds actions to the plugin activity report.
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class ActivityReportActions
|
class ActivityReportActions
|
||||||
{
|
{
|
||||||
|
@ -37,7 +33,7 @@ class ActivityReportActions
|
||||||
__('Feed named "%s" point to "%s" has been updated by "%s"'),
|
__('Feed named "%s" point to "%s" has been updated by "%s"'),
|
||||||
'zoneclearFeedServerAfterUpdateFeed',
|
'zoneclearFeedServerAfterUpdateFeed',
|
||||||
function (Cursor $cur, int $id): void {
|
function (Cursor $cur, int $id): void {
|
||||||
$user = dcCore::app()->auth->getInfo('user_cn');
|
$user = App::auth()->getInfo('user_cn');
|
||||||
if (!is_string($user)) {
|
if (!is_string($user)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -64,7 +60,7 @@ class ActivityReportActions
|
||||||
__('A new feed named "%s" point to "%s" was added by "%s"'),
|
__('A new feed named "%s" point to "%s" was added by "%s"'),
|
||||||
'zoneclearFeedServerAfterAddFeed',
|
'zoneclearFeedServerAfterAddFeed',
|
||||||
function (Cursor $cur, int $id): void {
|
function (Cursor $cur, int $id): void {
|
||||||
$user = dcCore::app()->auth->getInfo('user_cn');
|
$user = App::auth()->getInfo('user_cn');
|
||||||
if (!is_string($user)
|
if (!is_string($user)
|
||||||
|| !is_string($cur->getField('feed_name'))
|
|| !is_string($cur->getField('feed_name'))
|
||||||
|| !is_string($cur->getField('feed_feed'))
|
|| !is_string($cur->getField('feed_feed'))
|
||||||
|
@ -115,7 +111,7 @@ class ActivityReportActions
|
||||||
}
|
}
|
||||||
$row = new FeedRow($rs);
|
$row = new FeedRow($rs);
|
||||||
|
|
||||||
$user = dcCore::app()->auth->getInfo('user_cn');
|
$user = App::auth()->getInfo('user_cn');
|
||||||
if (!is_string($user)) {
|
if (!is_string($user)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,24 +1,18 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Core\Process;
|
use Dotclear\Core\Process;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Backend prepend.
|
* @brief zoneclearFeedServer backend class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class Backend extends Process
|
class Backend extends Process
|
||||||
{
|
{
|
||||||
|
@ -34,13 +28,13 @@ class Backend extends Process
|
||||||
}
|
}
|
||||||
|
|
||||||
// behaviors that will be always loaded
|
// behaviors that will be always loaded
|
||||||
dcCore::app()->addBehaviors([
|
App::behavior()->addBehaviors([
|
||||||
// Allways take care to delete related info about feed post in meta table
|
// Allways take care to delete related info about feed post in meta table
|
||||||
'adminBeforePostDelete' => function (int $post_id): void {
|
'adminBeforePostDelete' => function (int $post_id): void {
|
||||||
ZoneclearFeedServer::instance()::deletePostsMeta($post_id);
|
ZoneclearFeedServer::instance()::deletePostsMeta($post_id);
|
||||||
},
|
},
|
||||||
// widgets registration
|
// widgets registration
|
||||||
'initWidgets' => [Widgets::class, 'init'],
|
'initWidgets' => Widgets::init(...),
|
||||||
// add Uninstaller cleaner for special direct action
|
// add Uninstaller cleaner for special direct action
|
||||||
'UninstallerCleanersConstruct' => function ($uninstaller_stack) {
|
'UninstallerCleanersConstruct' => function ($uninstaller_stack) {
|
||||||
UninstallCleaner::init($uninstaller_stack);
|
UninstallCleaner::init($uninstaller_stack);
|
||||||
|
@ -61,14 +55,14 @@ class Backend extends Process
|
||||||
My::addBackendMenuItem();
|
My::addBackendMenuItem();
|
||||||
|
|
||||||
// behaviors that require user perm
|
// behaviors that require user perm
|
||||||
dcCore::app()->addBehaviors([
|
App::behavior()->addBehaviors([
|
||||||
'adminDashboardFavoritesV2' => [BackendBehaviors::class, 'adminDashboardFavoritesV2'],
|
'adminDashboardFavoritesV2' => BackendBehaviors::adminDashboardFavoritesV2(...),
|
||||||
'adminColumnsListsV2' => [BackendBehaviors::class, 'adminColumnsListsV2'],
|
'adminColumnsListsV2' => BackendBehaviors::adminColumnsListsV2(...),
|
||||||
'adminFiltersListsV2' => [BackendBehaviors::class, 'adminFiltersListsV2'],
|
'adminFiltersListsV2' => BackendBehaviors::adminFiltersListsV2(...),
|
||||||
'adminPostListHeaderV2' => [BackendBehaviors::class, 'adminPostListHeaderV2'],
|
'adminPostListHeaderV2' => BackendBehaviors::adminPostListHeaderV2(...),
|
||||||
'adminPostListValueV2' => [BackendBehaviors::class, 'adminPostListValueV2'],
|
'adminPostListValueV2' => BackendBehaviors::adminPostListValueV2(...),
|
||||||
'adminPostHeaders' => [BackendBehaviors::class, 'adminPostHeaders'],
|
'adminPostHeaders' => BackendBehaviors::adminPostHeaders(...),
|
||||||
'adminPostFormItems' => [BackendBehaviors::class, 'adminPostFormItems'],
|
'adminPostFormItems' => BackendBehaviors::adminPostFormItems(...),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1,21 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use ArrayObject;
|
use ArrayObject;
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Core\Backend\Favorites;
|
use Dotclear\Core\Backend\Favorites;
|
||||||
use Dotclear\Database\MetaRecord;
|
use Dotclear\Database\MetaRecord;
|
||||||
use Dotclear\Helper\Html\Form\{
|
use Dotclear\Helper\Html\Form\{
|
||||||
|
@ -27,7 +17,11 @@ use Dotclear\Helper\Html\Form\{
|
||||||
use Dotclear\Helper\Html\Html;
|
use Dotclear\Helper\Html\Html;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Backend behaviors.
|
* @brief zoneclearFeedServer backend behaviors class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class BackendBehaviors
|
class BackendBehaviors
|
||||||
{
|
{
|
||||||
|
@ -41,9 +35,9 @@ class BackendBehaviors
|
||||||
'url' => My::manageUrl(),
|
'url' => My::manageUrl(),
|
||||||
'small-icon' => My::icons(),
|
'small-icon' => My::icons(),
|
||||||
'large-icon' => My::icons(),
|
'large-icon' => My::icons(),
|
||||||
'permissions' => dcCore::app()->auth->makePermissions([
|
'permissions' => App::auth()->makePermissions([
|
||||||
dcCore::app()->auth::PERMISSION_USAGE,
|
App::auth()::PERMISSION_USAGE,
|
||||||
dcCore::app()->auth::PERMISSION_CONTENT_ADMIN,
|
App::auth()::PERMISSION_CONTENT_ADMIN,
|
||||||
]),
|
]),
|
||||||
// update user dashboard favorites icon with nb of updated feeds
|
// update user dashboard favorites icon with nb of updated feeds
|
||||||
'dashboard_cb' => function (ArrayObject $fav): void {
|
'dashboard_cb' => function (ArrayObject $fav): void {
|
||||||
|
@ -123,7 +117,7 @@ class BackendBehaviors
|
||||||
*/
|
*/
|
||||||
public static function adminPostListValueV2(MetaRecord $rs, ArrayObject $cols): void
|
public static function adminPostListValueV2(MetaRecord $rs, ArrayObject $cols): void
|
||||||
{
|
{
|
||||||
$rs_meta = dcCore::app()->meta->getMetadata(['post_id' => $rs->f('post_id'), 'meta_type' => My::META_PREFIX . 'id']);
|
$rs_meta = App::meta()->getMetadata(['post_id' => $rs->f('post_id'), 'meta_type' => My::META_PREFIX . 'id']);
|
||||||
if ($rs_meta->isEmpty()) {
|
if ($rs_meta->isEmpty()) {
|
||||||
$item = (new Text('', '-'));
|
$item = (new Text('', '-'));
|
||||||
} else {
|
} else {
|
||||||
|
@ -150,7 +144,7 @@ class BackendBehaviors
|
||||||
public static function adminPostFormItems(ArrayObject $main_items, ArrayObject $sidebar_items, ?MetaRecord $post): void
|
public static function adminPostFormItems(ArrayObject $main_items, ArrayObject $sidebar_items, ?MetaRecord $post): void
|
||||||
{
|
{
|
||||||
// nullsafe
|
// nullsafe
|
||||||
if (is_null(dcCore::app()->blog)) {
|
if (!App::blog()->isDefined()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +153,7 @@ class BackendBehaviors
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$url = dcCore::app()->meta->getMetadata([
|
$url = App::meta()->getMetadata([
|
||||||
'post_id' => $post->f('post_id'),
|
'post_id' => $post->f('post_id'),
|
||||||
'meta_type' => My::META_PREFIX . 'url',
|
'meta_type' => My::META_PREFIX . 'url',
|
||||||
'limit' => 1,
|
'limit' => 1,
|
||||||
|
@ -169,21 +163,21 @@ class BackendBehaviors
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$author = dcCore::app()->meta->getMetadata([
|
$author = App::meta()->getMetadata([
|
||||||
'post_id' => $post->f('post_id'),
|
'post_id' => $post->f('post_id'),
|
||||||
'meta_type' => My::META_PREFIX . 'author',
|
'meta_type' => My::META_PREFIX . 'author',
|
||||||
'limit' => 1,
|
'limit' => 1,
|
||||||
]);
|
]);
|
||||||
$author = $author->isEmpty() ? '' : $author->f('meta_id');
|
$author = $author->isEmpty() ? '' : $author->f('meta_id');
|
||||||
|
|
||||||
$site = dcCore::app()->meta->getMetadata([
|
$site = App::meta()->getMetadata([
|
||||||
'post_id' => $post->f('post_id'),
|
'post_id' => $post->f('post_id'),
|
||||||
'meta_type' => My::META_PREFIX . 'site',
|
'meta_type' => My::META_PREFIX . 'site',
|
||||||
'limit' => 1,
|
'limit' => 1,
|
||||||
]);
|
]);
|
||||||
$site = $site->isEmpty() ? '' : $site->f('meta_id');
|
$site = $site->isEmpty() ? '' : $site->f('meta_id');
|
||||||
|
|
||||||
$sitename = dcCore::app()->meta->getMetadata([
|
$sitename = App::meta()->getMetadata([
|
||||||
'post_id' => $post->f('post_id'),
|
'post_id' => $post->f('post_id'),
|
||||||
'meta_type' => My::META_PREFIX . 'sitename',
|
'meta_type' => My::META_PREFIX . 'sitename',
|
||||||
'limit' => 1,
|
'limit' => 1,
|
||||||
|
@ -191,11 +185,11 @@ class BackendBehaviors
|
||||||
$sitename = $sitename->isEmpty() ? '' : $sitename->f('meta_id');
|
$sitename = $sitename->isEmpty() ? '' : $sitename->f('meta_id');
|
||||||
|
|
||||||
$edit = (new Text('', ''));
|
$edit = (new Text('', ''));
|
||||||
if (dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([
|
if (App::auth()->check(App::auth()->makePermissions([
|
||||||
dcCore::app()->auth::PERMISSION_CONTENT_ADMIN,
|
App::auth()::PERMISSION_CONTENT_ADMIN,
|
||||||
]), dcCore::app()->blog->id)
|
]), App::blog()->id())
|
||||||
) {
|
) {
|
||||||
$fid = dcCore::app()->meta->getMetadata([
|
$fid = App::meta()->getMetadata([
|
||||||
'post_id' => $post->f('post_id'),
|
'post_id' => $post->f('post_id'),
|
||||||
'meta_type' => My::META_PREFIX . 'id',
|
'meta_type' => My::META_PREFIX . 'id',
|
||||||
'limit' => 1,
|
'limit' => 1,
|
||||||
|
|
|
@ -14,12 +14,16 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Helper\Html\Html;
|
use Dotclear\Helper\Html\Html;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Various combo list.
|
* @brief zoneclearFeedServer backend combo helper.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class Combo
|
class Combo
|
||||||
{
|
{
|
||||||
|
@ -122,7 +126,7 @@ class Combo
|
||||||
$combo = ['-' => ''];
|
$combo = ['-' => ''];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$categories = dcCore::app()->blog?->getCategories(['post_type' => 'post']);
|
$categories = App::blog()->getCategories(['post_type' => 'post']);
|
||||||
if (!is_null($categories)) {
|
if (!is_null($categories)) {
|
||||||
while ($categories->fetch()) {
|
while ($categories->fetch()) {
|
||||||
$level = is_numeric($categories->f('level')) ? (int) $categories->f('level') : 1;
|
$level = is_numeric($categories->f('level')) ? (int) $categories->f('level') : 1;
|
||||||
|
|
|
@ -14,7 +14,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Core\Backend\{
|
use Dotclear\Core\Backend\{
|
||||||
Notices,
|
Notices,
|
||||||
ModulesList,
|
ModulesList,
|
||||||
|
@ -34,7 +34,11 @@ use Dotclear\Helper\Html\Form\{
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Backend module configuration.
|
* @brief zoneclearFeedServer config class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class Config extends Process
|
class Config extends Process
|
||||||
{
|
{
|
||||||
|
@ -72,13 +76,13 @@ class Config extends Process
|
||||||
Notices::addSuccessNotice(
|
Notices::addSuccessNotice(
|
||||||
__('Configuration has been successfully updated.')
|
__('Configuration has been successfully updated.')
|
||||||
);
|
);
|
||||||
dcCore::app()->admin->url->redirect('admin.plugins', [
|
App::bakcend()->url()->redirect('admin.plugins', [
|
||||||
'module' => My::id(),
|
'module' => My::id(),
|
||||||
'conf' => '1',
|
'conf' => '1',
|
||||||
'redir' => !(dcCore::app()->admin->__get('list') instanceof ModulesList) ? '' : dcCore::app()->admin->__get('list')->getRedir(),
|
'redir' => !(App::backend()->__get('list') instanceof ModulesList) ? '' : App::backend()->__get('list')->getRedir(),
|
||||||
]);
|
]);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dcCore::app()->error->add($e->getMessage());
|
App::error()->add($e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -94,7 +98,7 @@ class Config extends Process
|
||||||
$s = $z->settings;
|
$s = $z->settings;
|
||||||
|
|
||||||
$msg = [];
|
$msg = [];
|
||||||
if (!is_writable(DC_TPL_CACHE)) {
|
if (!is_writable(App::config()->cacheRoot())) {
|
||||||
$msg[] = (new Para())
|
$msg[] = (new Para())
|
||||||
->class('error')
|
->class('error')
|
||||||
->text(__('Dotclear cache is not writable or not well configured!'));
|
->text(__('Dotclear cache is not writable or not well configured!'));
|
||||||
|
@ -105,7 +109,7 @@ class Config extends Process
|
||||||
(new Link())
|
(new Link())
|
||||||
->class('onblog_link outgoing')
|
->class('onblog_link outgoing')
|
||||||
->text(__('View the public list of feeds') . ' <img alt="" src="images/outgoing-link.svg">')
|
->text(__('View the public list of feeds') . ' <img alt="" src="images/outgoing-link.svg">')
|
||||||
->href(dcCore::app()->blog->url . dcCore::app()->url->getBase('zoneclearFeedsPage')),
|
->href(App::blog()->url() . App::url()->getBase('zoneclearFeedsPage')),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,11 @@ namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
use Dotclear\Database\MetaRecord;
|
use Dotclear\Database\MetaRecord;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Feed meta record row type hinting.
|
* @brief zoneclearFeedServer feed meta record row.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class FeedRow
|
class FeedRow
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,21 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use ArrayObject;
|
use ArrayObject;
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Core\Backend\Action\Actions;
|
use Dotclear\Core\Backend\Action\Actions;
|
||||||
use Dotclear\Core\Backend\Page;
|
use Dotclear\Core\Backend\Page;
|
||||||
use Dotclear\Database\MetaRecord;
|
use Dotclear\Database\MetaRecord;
|
||||||
|
@ -27,7 +17,11 @@ use Dotclear\Helper\Html\Html;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Backend feeds list actions handler.
|
* @brief zoneclearFeedServer feeds list actions.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class FeedsActions extends Actions
|
class FeedsActions extends Actions
|
||||||
{
|
{
|
||||||
|
@ -56,7 +50,7 @@ class FeedsActions extends Actions
|
||||||
FeedsDefaultActions::addDefaultFeedsActions($this);
|
FeedsDefaultActions::addDefaultFeedsActions($this);
|
||||||
|
|
||||||
# --BEHAVIOR-- zoneclearFeedServerAddFeedsActions - FeedsActions
|
# --BEHAVIOR-- zoneclearFeedServerAddFeedsActions - FeedsActions
|
||||||
dcCore::app()->callBehavior('zoneclearFeedServerAddFeedsActions', $this);
|
App::behavior()->callBehavior('zoneclearFeedServerAddFeedsActions', $this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function beginPage(string $breadcrumb = '', string $head = ''): void
|
public function beginPage(string $breadcrumb = '', string $head = ''): void
|
||||||
|
@ -83,12 +77,12 @@ class FeedsActions extends Actions
|
||||||
|
|
||||||
public function error(Exception $e): void
|
public function error(Exception $e): void
|
||||||
{
|
{
|
||||||
dcCore::app()->error->add($e->getMessage());
|
App::error()->add($e->getMessage());
|
||||||
$this->beginPage(
|
$this->beginPage(
|
||||||
Page::breadcrumb([
|
Page::breadcrumb([
|
||||||
Html::escapeHTML((string) dcCore::app()->blog?->name) => '',
|
Html::escapeHTML(App::blog()->name()) => '',
|
||||||
$this->getCallerTitle() => $this->getRedirection(true),
|
$this->getCallerTitle() => $this->getRedirection(true),
|
||||||
__('Feeds actions') => '',
|
__('Feeds actions') => '',
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
$this->endPage();
|
$this->endPage();
|
||||||
|
|
|
@ -1,22 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use ArrayObject;
|
use ArrayObject;
|
||||||
use dcCore;
|
|
||||||
use dcMeta;
|
|
||||||
use Dotclear\Core\Backend\{
|
use Dotclear\Core\Backend\{
|
||||||
Notices,
|
Notices,
|
||||||
Page
|
Page
|
||||||
|
@ -35,7 +23,11 @@ use Dotclear\Helper\Html\Html;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Backend feeds list default actions.
|
* @brief zoneclearFeedServer feeds list default actions.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class FeedsDefaultActions
|
class FeedsDefaultActions
|
||||||
{
|
{
|
||||||
|
@ -46,35 +38,35 @@ class FeedsDefaultActions
|
||||||
{
|
{
|
||||||
$ap->addAction(
|
$ap->addAction(
|
||||||
[__('Change category') => 'changecat'],
|
[__('Change category') => 'changecat'],
|
||||||
[self::class, 'doChangeCategory']
|
self::doChangeCategory(...)
|
||||||
);
|
);
|
||||||
$ap->addAction(
|
$ap->addAction(
|
||||||
[__('Change update interval') => 'changeint'],
|
[__('Change update interval') => 'changeint'],
|
||||||
[self::class, 'doChangeInterval']
|
self::doChangeInterval(...)
|
||||||
);
|
);
|
||||||
$ap->addAction(
|
$ap->addAction(
|
||||||
[__('Disable feed update') => 'disablefeed'],
|
[__('Disable feed update') => 'disablefeed'],
|
||||||
[self::class, 'doEnableFeed']
|
self::doEnableFeed(...)
|
||||||
);
|
);
|
||||||
$ap->addAction(
|
$ap->addAction(
|
||||||
[__('Enable feed update') => 'enablefeed'],
|
[__('Enable feed update') => 'enablefeed'],
|
||||||
[self::class, 'doEnableFeed']
|
self::doEnableFeed(...)
|
||||||
);
|
);
|
||||||
$ap->addAction(
|
$ap->addAction(
|
||||||
[__('Reset last update') => 'resetupdlast'],
|
[__('Reset last update') => 'resetupdlast'],
|
||||||
[self::class, 'doResetUpdate']
|
self::doResetUpdate(...)
|
||||||
);
|
);
|
||||||
$ap->addAction(
|
$ap->addAction(
|
||||||
[__('Update (check) feed') => 'updatefeed'],
|
[__('Update (check) feed') => 'updatefeed'],
|
||||||
[self::class, 'doUpdateFeed']
|
self::doUpdateFeed(...)
|
||||||
);
|
);
|
||||||
$ap->addAction(
|
$ap->addAction(
|
||||||
[__('Delete related posts') => 'deletepost'],
|
[__('Delete related posts') => 'deletepost'],
|
||||||
[self::class, 'doDeletePost']
|
self::doDeletePost(...)
|
||||||
);
|
);
|
||||||
$ap->addAction(
|
$ap->addAction(
|
||||||
[__('Delete feed (without related posts)') => 'deletefeed'],
|
[__('Delete feed (without related posts)') => 'deletefeed'],
|
||||||
[self::class, 'doDeleteFeed']
|
self::doDeleteFeed(...)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,10 +134,10 @@ class FeedsDefaultActions
|
||||||
|
|
||||||
while ($posts->fetch()) {
|
while ($posts->fetch()) {
|
||||||
if (is_numeric($posts->f('post_id'))) {
|
if (is_numeric($posts->f('post_id'))) {
|
||||||
dcCore::app()->blog?->delPost((int) $posts->f('post_id'));
|
App::blog()->delPost((int) $posts->f('post_id'));
|
||||||
$sql = new DeleteStatement();
|
$sql = new DeleteStatement();
|
||||||
$sql
|
$sql
|
||||||
->from(dcCore::app()->prefix . dcMeta::META_TABLE_NAME)
|
->from(App::con()->prefix() . App::meta()::META_TABLE_NAME)
|
||||||
->where('post_id = ' . $posts->f('post_id'))
|
->where('post_id = ' . $posts->f('post_id'))
|
||||||
->and('meta_type ' . $sql->in($types))
|
->and('meta_type ' . $sql->in($types))
|
||||||
->delete();
|
->delete();
|
||||||
|
@ -270,10 +262,10 @@ class FeedsDefaultActions
|
||||||
} else {
|
} else {
|
||||||
$ap->beginPage(
|
$ap->beginPage(
|
||||||
Page::breadcrumb([
|
Page::breadcrumb([
|
||||||
Html::escapeHTML((string) dcCore::app()->blog?->name) => '',
|
Html::escapeHTML(App::blog()->name()) => '',
|
||||||
__('Feeds server') => '',
|
__('Feeds server') => '',
|
||||||
$ap->getCallerTitle() => $ap->getRedirection(true),
|
$ap->getCallerTitle() => $ap->getRedirection(true),
|
||||||
__('Change category for this selection') => '',
|
__('Change category for this selection') => '',
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -294,7 +286,7 @@ class FeedsDefaultActions
|
||||||
(new Submit('do-action'))
|
(new Submit('do-action'))
|
||||||
->value(__('Save')),
|
->value(__('Save')),
|
||||||
(new Hidden(['action'], 'changecat')),
|
(new Hidden(['action'], 'changecat')),
|
||||||
dcCore::app()->formNonce(false),
|
App::nonce()->formNonce(),
|
||||||
]
|
]
|
||||||
)),
|
)),
|
||||||
|
|
||||||
|
@ -337,10 +329,10 @@ class FeedsDefaultActions
|
||||||
$ap->beginPage(
|
$ap->beginPage(
|
||||||
Page::breadcrumb(
|
Page::breadcrumb(
|
||||||
[
|
[
|
||||||
Html::escapeHTML((string) dcCore::app()->blog?->name) => '',
|
Html::escapeHTML(App::blog()->name()) => '',
|
||||||
__('Feeds server') => '',
|
__('Feeds server') => '',
|
||||||
$ap->getCallerTitle() => $ap->getRedirection(true),
|
$ap->getCallerTitle() => $ap->getRedirection(true),
|
||||||
__('Change update frequency for this selection') => '',
|
__('Change update frequency for this selection') => '',
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -362,7 +354,7 @@ class FeedsDefaultActions
|
||||||
(new Submit('do-action'))
|
(new Submit('do-action'))
|
||||||
->value(__('Save')),
|
->value(__('Save')),
|
||||||
(new Hidden(['action'], 'changeint')),
|
(new Hidden(['action'], 'changeint')),
|
||||||
dcCore::app()->formNonce(false),
|
App::nonce()->formNonce(),
|
||||||
]
|
]
|
||||||
)),
|
)),
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use ArrayObject;
|
use ArrayObject;
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Core\Backend\Filter\Filters;
|
use Dotclear\Core\Backend\Filter\Filters;
|
||||||
use Dotclear\Core\Backend\Listing\{
|
use Dotclear\Core\Backend\Listing\{
|
||||||
Listing,
|
Listing,
|
||||||
|
@ -32,7 +22,11 @@ use Dotclear\Helper\Html\Form\{
|
||||||
use Dotclear\Helper\Html\Html;
|
use Dotclear\Helper\Html\Html;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Backend feeds list.
|
* @brief zoneclearFeedServer backend feeds list.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class FeedsList extends Listing
|
class FeedsList extends Listing
|
||||||
{
|
{
|
||||||
|
@ -126,7 +120,7 @@ class FeedsList extends Listing
|
||||||
if (!is_string($url)) {
|
if (!is_string($url)) {
|
||||||
$url = '';
|
$url = '';
|
||||||
}
|
}
|
||||||
$tz = dcCore::app()->auth->getInfo('user_tz');
|
$tz = App::auth()->getInfo('user_tz');
|
||||||
if (!is_string($tz)) {
|
if (!is_string($tz)) {
|
||||||
$tz = 'UTC';
|
$tz = 'UTC';
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,28 +1,21 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use dcUtils;
|
|
||||||
use Dotclear\Core\Process;
|
use Dotclear\Core\Process;
|
||||||
use Dotclear\Database\MetaRecord;
|
use Dotclear\Database\MetaRecord;
|
||||||
use Dotclear\Helper\Html\Html;
|
use Dotclear\Helper\Html\Html;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Frontend prepend.
|
* @brief zoneclearFeedServer frontend class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class Frontend extends Process
|
class Frontend extends Process
|
||||||
{
|
{
|
||||||
|
@ -39,7 +32,7 @@ class Frontend extends Process
|
||||||
|
|
||||||
$s = ZoneclearFeedServer::instance()->settings;
|
$s = ZoneclearFeedServer::instance()->settings;
|
||||||
|
|
||||||
dcCore::app()->addBehaviors([
|
App::behavior()->addBehaviors([
|
||||||
// posts record
|
// posts record
|
||||||
'coreBlogGetPosts' => function (MetaRecord $rs): void {
|
'coreBlogGetPosts' => function (MetaRecord $rs): void {
|
||||||
RsExtPosts::$brother_extensions = $rs->extensions();
|
RsExtPosts::$brother_extensions = $rs->extensions();
|
||||||
|
@ -55,12 +48,12 @@ class Frontend extends Process
|
||||||
|
|
||||||
// Register template blocks
|
// Register template blocks
|
||||||
foreach (My::TPL_BLOCKS as $block) {
|
foreach (My::TPL_BLOCKS as $block) {
|
||||||
dcCore::app()->tpl->addBlock('zc' . $block, [Template::class, $block]);
|
App::frontend()->template()->addBlock('zc' . $block, [Template::class, $block]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register template values
|
// Register template values
|
||||||
foreach (My::TPL_VALUES as $value) {
|
foreach (My::TPL_VALUES as $value) {
|
||||||
dcCore::app()->tpl->addValue('zc' . $value, [Template::class, $value]);
|
App::frontend()->template()->addValue('zc' . $value, [Template::class, $value]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// module not active
|
// module not active
|
||||||
|
@ -70,8 +63,8 @@ class Frontend extends Process
|
||||||
|
|
||||||
// feeds update methods
|
// feeds update methods
|
||||||
if (1 == $s->bhv_pub_upd) {
|
if (1 == $s->bhv_pub_upd) {
|
||||||
dcCore::app()->addBehavior('publicBeforeDocumentV2', function (): void {
|
App::behavior()->addBehavior('publicBeforeDocumentV2', function (): void {
|
||||||
if (in_array(dcCore::app()->url->type, ['default', 'feed'])) {
|
if (in_array(App::url()->type, ['default', 'feed'])) {
|
||||||
try {
|
try {
|
||||||
ZoneclearFeedServer::instance()->checkFeedsUpdate();
|
ZoneclearFeedServer::instance()->checkFeedsUpdate();
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
@ -79,28 +72,28 @@ class Frontend extends Process
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
} elseif (2 == $s->bhv_pub_upd) {
|
} elseif (2 == $s->bhv_pub_upd) {
|
||||||
dcCore::app()->addBehavior('publicAfterDocumentV2', function (): void {
|
App::behavior()->addBehavior('publicAfterDocumentV2', function (): void {
|
||||||
try {
|
try {
|
||||||
ZoneclearFeedServer::instance()->checkFeedsUpdate();
|
ZoneclearFeedServer::instance()->checkFeedsUpdate();
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} elseif (3 == $s->bhv_pub_upd) {
|
} elseif (3 == $s->bhv_pub_upd) {
|
||||||
dcCore::app()->addBehavior('publicHeadContent', function (): void {
|
App::behavior()->addBehavior('publicHeadContent', function (): void {
|
||||||
if (is_null(dcCore::app()->blog) || dcCore::app()->url->type != 'default') {
|
if (!App::blog()->isDefined() || App::url()->type != 'default') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$blog_url = Html::escapeJS(
|
$blog_url = Html::escapeJS(
|
||||||
dcCore::app()->blog->url .
|
App::blog()->url() .
|
||||||
dcCore::app()->url->getBase('zoneclearFeedsPage') .
|
App::url()->getBase('zoneclearFeedsPage') .
|
||||||
'/zcfsupd'
|
'/zcfsupd'
|
||||||
);
|
);
|
||||||
$blog_id = Html::escapeJS(dcCore::app()->blog->id);
|
$blog_id = Html::escapeJS(App::blog()->id());
|
||||||
|
|
||||||
echo
|
echo
|
||||||
"\n<!-- JS for zoneclearFeedServer --> \n" .
|
"\n<!-- JS for zoneclearFeedServer --> \n" .
|
||||||
dcUtils::jsLoad(dcCore::app()->blog->url . dcCore::app()->url->getBase('zoneclearFeedsPage') . '/zcfsupd.js') .
|
App::plugins()->jsLoad(App::blog()->url() . App::url()->getBase('zoneclearFeedsPage') . '/zcfsupd.js') .
|
||||||
"<script type=\"text/javascript\"> \n//<![CDATA[\n" .
|
"<script type=\"text/javascript\"> \n//<![CDATA[\n" .
|
||||||
' $(function(){if(!document.getElementById){return;} ' .
|
' $(function(){if(!document.getElementById){return;} ' .
|
||||||
" $('body').zoneclearFeedServer({blog_url:'" .
|
" $('body').zoneclearFeedServer({blog_url:'" .
|
||||||
|
|
|
@ -1,26 +1,20 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Core\Process;
|
use Dotclear\Core\Process;
|
||||||
use Dotclear\Database\Structure;
|
use Dotclear\Database\Structure;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module installation.
|
* @brief zoneclearFeedServer install class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class Install extends Process
|
class Install extends Process
|
||||||
{
|
{
|
||||||
|
@ -40,7 +34,7 @@ class Install extends Process
|
||||||
Upgrade::preUpgrade();
|
Upgrade::preUpgrade();
|
||||||
|
|
||||||
// Tables
|
// Tables
|
||||||
$s = new Structure(dcCore::app()->con, dcCore::app()->prefix);
|
$s = new Structure(App::con(), App::con()->prefix());
|
||||||
$s->__get(My::TABLE_NAME)
|
$s->__get(My::TABLE_NAME)
|
||||||
->field('feed_id', 'bigint', 0, false)
|
->field('feed_id', 'bigint', 0, false)
|
||||||
->field('feed_creadt', 'timestamp', 0, false, 'now()')
|
->field('feed_creadt', 'timestamp', 0, false, 'now()')
|
||||||
|
@ -67,7 +61,7 @@ class Install extends Process
|
||||||
->index('idx_zcfs_type', 'btree', 'feed_type')
|
->index('idx_zcfs_type', 'btree', 'feed_type')
|
||||||
->index('idx_zcfs_blog', 'btree', 'blog_id');
|
->index('idx_zcfs_blog', 'btree', 'blog_id');
|
||||||
|
|
||||||
(new Structure(dcCore::app()->con, dcCore::app()->prefix))->synchronize($s);
|
(new Structure(App::con(), App::con()->prefix()))->synchronize($s);
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
$s = My::settings();
|
$s = My::settings();
|
||||||
|
@ -84,7 +78,7 @@ class Install extends Process
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dcCore::app()->error->add($e->getMessage());
|
App::error()->add($e->getMessage());
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Core\Backend\Filter\{
|
use Dotclear\Core\Backend\Filter\{
|
||||||
Filters,
|
Filters,
|
||||||
FiltersLibrary
|
FiltersLibrary
|
||||||
|
@ -37,7 +27,11 @@ use Dotclear\Helper\Html\Form\{
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Backend feeds list manage page.
|
* @brief zoneclearFeedServer backend feeds manage class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class Manage extends Process
|
class Manage extends Process
|
||||||
{
|
{
|
||||||
|
@ -64,7 +58,7 @@ class Manage extends Process
|
||||||
|
|
||||||
// not configured
|
// not configured
|
||||||
if (!$s->active || !$s->user) {
|
if (!$s->active || !$s->user) {
|
||||||
dcCore::app()->error->add(__('Module is not wel configured'));
|
App::error()->add(__('Module is not wel configured'));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -131,13 +125,13 @@ class Manage extends Process
|
||||||
$feeds_counter = $z->getFeeds($params, true)->f(0);
|
$feeds_counter = $z->getFeeds($params, true)->f(0);
|
||||||
$feeds_list = new FeedsList($feeds, $feeds_counter);
|
$feeds_list = new FeedsList($feeds, $feeds_counter);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dcCore::app()->error->add($e->getMessage());
|
App::error()->add($e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
Page::openModule(
|
Page::openModule(
|
||||||
My::id(),
|
My::id(),
|
||||||
(
|
(
|
||||||
isset($feeds_list) && !dcCore::app()->error->flag() ?
|
isset($feeds_list) && !App::error()->flag() ?
|
||||||
$feeds_filter->js(My::manageUrl(['part' => 'feeds'], '&')) .
|
$feeds_filter->js(My::manageUrl(['part' => 'feeds'], '&')) .
|
||||||
My::jsLoad('feeds')
|
My::jsLoad('feeds')
|
||||||
: ''
|
: ''
|
||||||
|
|
|
@ -1,20 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Core\Backend\Action\ActionsPosts;
|
use Dotclear\Core\Backend\Action\ActionsPosts;
|
||||||
use Dotclear\Core\Backend\{
|
use Dotclear\Core\Backend\{
|
||||||
Notices,
|
Notices,
|
||||||
|
@ -38,7 +28,11 @@ use Dotclear\Helper\L10n;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Backend feed and feed posts manage page.
|
* @brief zoneclearFeedServer backend feeds posts manage class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class ManageFeed extends Process
|
class ManageFeed extends Process
|
||||||
{
|
{
|
||||||
|
@ -70,26 +64,26 @@ class ManageFeed extends Process
|
||||||
$testfeed_params['sql'] = 'AND feed_id <> ' . $v->id . ' ';
|
$testfeed_params['sql'] = 'AND feed_id <> ' . $v->id . ' ';
|
||||||
}
|
}
|
||||||
if ($z->getFeeds($testfeed_params, true)->f(0)) {
|
if ($z->getFeeds($testfeed_params, true)->f(0)) {
|
||||||
dcCore::app()->error->add(__('Record with same feed URL already exists.'));
|
App::error()->add(__('Record with same feed URL already exists.'));
|
||||||
}
|
}
|
||||||
if (empty($v->name)) {
|
if (empty($v->name)) {
|
||||||
dcCore::app()->error->add(__('You must provide a name.'));
|
App::error()->add(__('You must provide a name.'));
|
||||||
}
|
}
|
||||||
if (empty($v->owner)) {
|
if (empty($v->owner)) {
|
||||||
dcCore::app()->error->add(__('You must provide an owner.'));
|
App::error()->add(__('You must provide an owner.'));
|
||||||
}
|
}
|
||||||
if (!$z::validateURL($v->url)) {
|
if (!$z::validateURL($v->url)) {
|
||||||
dcCore::app()->error->add(__('You must provide valid site URL.'));
|
App::error()->add(__('You must provide valid site URL.'));
|
||||||
}
|
}
|
||||||
if (!$z::validateURL($v->feed)) {
|
if (!$z::validateURL($v->feed)) {
|
||||||
dcCore::app()->error->add(__('You must provide valid feed URL.'));
|
App::error()->add(__('You must provide valid feed URL.'));
|
||||||
}
|
}
|
||||||
if (null !== $v->cat_id && !dcCore::app()->blog?->getCategory($v->cat_id)) {
|
if (null !== $v->cat_id && !App::blog()->getCategory($v->cat_id)) {
|
||||||
dcCore::app()->error->add(__('You must provide valid category.'));
|
App::error()->add(__('You must provide valid category.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// check failed
|
// check failed
|
||||||
if (dcCore::app()->error->flag()) {
|
if (App::error()->flag()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,7 +97,7 @@ class ManageFeed extends Process
|
||||||
Notices::addSuccessNotice(__('Feed successfully created.'));
|
Notices::addSuccessNotice(__('Feed successfully created.'));
|
||||||
My::redirect(['part' => 'feed', 'feed_id' => $id]);
|
My::redirect(['part' => 'feed', 'feed_id' => $id]);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dcCore::app()->error->add($e->getMessage());
|
App::error()->add($e->getMessage());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -158,13 +152,13 @@ class ManageFeed extends Process
|
||||||
'user_id' => 'P.user_id', ];
|
'user_id' => 'P.user_id', ];
|
||||||
|
|
||||||
# --BEHAVIOR-- adminPostsSortbyLexCombo
|
# --BEHAVIOR-- adminPostsSortbyLexCombo
|
||||||
dcCore::app()->callBehavior('adminPostsSortbyLexCombo', [& $sortby_lex]);
|
App::behavior()->callBehavior('adminPostsSortbyLexCombo', [& $sortby_lex]);
|
||||||
|
|
||||||
$params['no_content'] = true;
|
$params['no_content'] = true;
|
||||||
$params['feed_id'] = $v->id;
|
$params['feed_id'] = $v->id;
|
||||||
$params['order'] = (
|
$params['order'] = (
|
||||||
array_key_exists($sortby, $sortby_lex) ?
|
array_key_exists($sortby, $sortby_lex) ?
|
||||||
dcCore::app()->con->lexFields($sortby_lex[$sortby]) :
|
App::con()->lexFields($sortby_lex[$sortby]) :
|
||||||
$sortby
|
$sortby
|
||||||
) . ' ' . $order;
|
) . ' ' . $order;
|
||||||
|
|
||||||
|
@ -174,7 +168,7 @@ class ManageFeed extends Process
|
||||||
$counter = $z->getPostsByFeed($params, true);
|
$counter = $z->getPostsByFeed($params, true);
|
||||||
$post_list = new PostsList($posts, $counter->f(0));
|
$post_list = new PostsList($posts, $counter->f(0));
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dcCore::app()->error->add($e->getMessage());
|
App::error()->add($e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,7 +176,7 @@ class ManageFeed extends Process
|
||||||
Page::openModule(
|
Page::openModule(
|
||||||
My::id(),
|
My::id(),
|
||||||
(
|
(
|
||||||
$v->id && isset($post_filter) && !dcCore::app()->error->flag() ?
|
$v->id && isset($post_filter) && !App::error()->flag() ?
|
||||||
$post_filter->js(My::manageUrl(['part' => 'feed', 'feed_id' => $v->id], '&') . '#entries') .
|
$post_filter->js(My::manageUrl(['part' => 'feed', 'feed_id' => $v->id], '&') . '#entries') .
|
||||||
My::jsLoad('feed')
|
My::jsLoad('feed')
|
||||||
: ''
|
: ''
|
||||||
|
@ -385,7 +379,7 @@ class ManageFeed extends Process
|
||||||
->render();
|
->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($v->id && $v->can_view_page && isset($post_filter) && isset($post_list) && isset($posts_actions_page) && !dcCore::app()->error->flag()) {
|
if ($v->id && $v->can_view_page && isset($post_filter) && isset($post_list) && isset($posts_actions_page) && !App::error()->flag()) {
|
||||||
echo '<div class="multi-part" title="' . __('Entries') . '" id="entries">';
|
echo '<div class="multi-part" title="' . __('Entries') . '" id="entries">';
|
||||||
|
|
||||||
# show posts filters
|
# show posts filters
|
||||||
|
|
|
@ -1,24 +1,18 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Helper\Html\Html;
|
use Dotclear\Helper\Html\Html;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Backend feed manage page vars (type hinting).
|
* @brief zoneclearFeedServer backend vars definition.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class ManageFeedVars
|
class ManageFeedVars
|
||||||
{
|
{
|
||||||
|
@ -52,9 +46,9 @@ class ManageFeedVars
|
||||||
{
|
{
|
||||||
$z = ZoneclearFeedServer::instance();
|
$z = ZoneclearFeedServer::instance();
|
||||||
|
|
||||||
$feed_headlink = '<link rel="%s" title="%s" href="' . dcCore::app()->admin->getPageURL() . '&part=feed&feed_id=%s" />';
|
$feed_headlink = '<link rel="%s" title="%s" href="' . App::backend()->getPageURL() . '&part=feed&feed_id=%s" />';
|
||||||
$feed_link = '<a href="' . dcCore::app()->admin->getPageURL() . '&part=feed&feed_id=%s" title="%s">%s</a>';
|
$feed_link = '<a href="' . App::backend()->getPageURL() . '&part=feed&feed_id=%s" title="%s">%s</a>';
|
||||||
$lang = dcCore::app()->auth->getInfo('user_lang');
|
$lang = App::auth()->getInfo('user_lang');
|
||||||
|
|
||||||
// default values
|
// default values
|
||||||
$feed_id = 0;
|
$feed_id = 0;
|
||||||
|
@ -82,7 +76,7 @@ class ManageFeedVars
|
||||||
$feed = $z->getFeeds(['feed_id' => $_REQUEST['feed_id']]);
|
$feed = $z->getFeeds(['feed_id' => $_REQUEST['feed_id']]);
|
||||||
|
|
||||||
if ($feed->isEmpty()) {
|
if ($feed->isEmpty()) {
|
||||||
dcCore::app()->error->add(__('This feed does not exist.'));
|
Ap::error()->add(__('This feed does not exist.'));
|
||||||
$can_view_page = false;
|
$can_view_page = false;
|
||||||
} else {
|
} else {
|
||||||
$row = new FeedRow($feed);
|
$row = new FeedRow($feed);
|
||||||
|
@ -224,7 +218,7 @@ class ManageFeedVars
|
||||||
$cur->setField('feed_upd_int', $this->upd_int);
|
$cur->setField('feed_upd_int', $this->upd_int);
|
||||||
|
|
||||||
# --BEHAVIOR-- adminBeforeZoneclearFeedServerFeedSave - Cursor, int
|
# --BEHAVIOR-- adminBeforeZoneclearFeedServerFeedSave - Cursor, int
|
||||||
dcCore::app()->callBehavior('adminBeforeZoneclearFeedServerFeedSave', $cur, $id);
|
App::behavior()->callBehavior('adminBeforeZoneclearFeedServerFeedSave', $cur, $id);
|
||||||
|
|
||||||
if (!$id) {
|
if (!$id) {
|
||||||
// create feed
|
// create feed
|
||||||
|
@ -235,7 +229,7 @@ class ManageFeedVars
|
||||||
}
|
}
|
||||||
|
|
||||||
# --BEHAVIOR-- adminAfterZoneclearFeedServerFeedSave - Cursor - int
|
# --BEHAVIOR-- adminAfterZoneclearFeedServerFeedSave - Cursor - int
|
||||||
dcCore::app()->callBehavior('adminAfterZoneclearFeedServerFeedSave', $cur, $id);
|
App::behavior()->callBehavior('adminAfterZoneclearFeedServerFeedSave', $cur, $id);
|
||||||
|
|
||||||
return $id;
|
return $id;
|
||||||
}
|
}
|
||||||
|
|
49
src/My.php
49
src/My.php
|
@ -1,15 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
@ -17,17 +7,33 @@ namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
use Dotclear\Module\MyPlugin;
|
use Dotclear\Module\MyPlugin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This module definitions.
|
* @brief zoneclearFeedServer My helper.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class My extends MyPlugin
|
class My extends MyPlugin
|
||||||
{
|
{
|
||||||
/** @var string This module database table name */
|
/**
|
||||||
public const TABLE_NAME = \initZoneclearFeedServer::TABLE_NAME;
|
* This module database table name.
|
||||||
|
*
|
||||||
|
* @var string TABLE_NAME
|
||||||
|
*/
|
||||||
|
public const TABLE_NAME = 'zc_feed';
|
||||||
|
|
||||||
/** @var string This module meta prefix */
|
/**
|
||||||
|
* This module meta prefix.
|
||||||
|
*
|
||||||
|
* @var string META_PREFIX
|
||||||
|
*/
|
||||||
public const META_PREFIX = 'zoneclearfeed_';
|
public const META_PREFIX = 'zoneclearfeed_';
|
||||||
|
|
||||||
/** @var array<int,string> This module template blocks */
|
/**
|
||||||
|
* This module template blocks.
|
||||||
|
*
|
||||||
|
* @var array<int,string> TPL_BLOCKS
|
||||||
|
*/
|
||||||
public const TPL_BLOCKS = [
|
public const TPL_BLOCKS = [
|
||||||
'Feeds',
|
'Feeds',
|
||||||
'FeedsFooter',
|
'FeedsFooter',
|
||||||
|
@ -35,7 +41,11 @@ class My extends MyPlugin
|
||||||
'FeedIf',
|
'FeedIf',
|
||||||
];
|
];
|
||||||
|
|
||||||
/** @var array<int,string> This module template values */
|
/**
|
||||||
|
* This module template values.
|
||||||
|
*
|
||||||
|
* @var array<int,string> TPL_VALUES
|
||||||
|
*/
|
||||||
public const TPL_VALUES = [
|
public const TPL_VALUES = [
|
||||||
'FeedsCount',
|
'FeedsCount',
|
||||||
'FeedsEntriesCount',
|
'FeedsEntriesCount',
|
||||||
|
@ -55,8 +65,5 @@ class My extends MyPlugin
|
||||||
'FeedFeedURL',
|
'FeedFeedURL',
|
||||||
];
|
];
|
||||||
|
|
||||||
public static function checkCustomContext(int $context): ?bool
|
// Use default permissions
|
||||||
{
|
|
||||||
return $context == My::BACKEND ? defined('DC_CONTEXT_ADMIN') : null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use ArrayObject;
|
use ArrayObject;
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use dcUtils;
|
|
||||||
use Dotclear\Core\Backend\Combos;
|
use Dotclear\Core\Backend\Combos;
|
||||||
use Dotclear\Core\Backend\Filter\{
|
use Dotclear\Core\Backend\Filter\{
|
||||||
Filter,
|
Filter,
|
||||||
|
@ -27,7 +16,11 @@ use Dotclear\Helper\Html\Html;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Backend feed posts list filters.
|
* @brief zoneclearFeedServer backend feeds posts list filter.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class PostsFilter extends Filters
|
class PostsFilter extends Filters
|
||||||
{
|
{
|
||||||
|
@ -45,7 +38,7 @@ class PostsFilter extends Filters
|
||||||
]);
|
]);
|
||||||
|
|
||||||
# --BEHAVIOR-- zcfsPostFilter
|
# --BEHAVIOR-- zcfsPostFilter
|
||||||
dcCore::app()->callBehavior('zcfsPostFilter', $filters);
|
App::behavior()->callBehavior('zcfsPostFilter', $filters);
|
||||||
|
|
||||||
$filters = $filters->getArrayCopy();
|
$filters = $filters->getArrayCopy();
|
||||||
|
|
||||||
|
@ -62,18 +55,18 @@ class PostsFilter extends Filters
|
||||||
$users = null;
|
$users = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$users = dcCore::app()->blog?->getPostsUsers();
|
$users = App::blog()->getPostsUsers();
|
||||||
if (is_null($users) || $users->isEmpty()) {
|
if (is_null($users) || $users->isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dcCore::app()->error->add($e->getMessage());
|
App::error()->add($e->getMessage());
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$combo = Combos::getUsersCombo($users);
|
$combo = Combos::getUsersCombo($users);
|
||||||
dcUtils::lexicalKeySort($combo);
|
App::lexical()->lexicalKeySort($combo);
|
||||||
|
|
||||||
return (new Filter('user_id'))
|
return (new Filter('user_id'))
|
||||||
->param()
|
->param()
|
||||||
|
@ -95,12 +88,12 @@ class PostsFilter extends Filters
|
||||||
$categories = null;
|
$categories = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$categories = dcCore::app()->blog?->getCategories();
|
$categories = App::blog()->getCategories();
|
||||||
if (is_null($categories) || $categories->isEmpty()) {
|
if (is_null($categories) || $categories->isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dcCore::app()->error->add($e->getMessage());
|
App::error()->add($e->getMessage());
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -149,12 +142,12 @@ class PostsFilter extends Filters
|
||||||
$dates = null;
|
$dates = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$dates = dcCore::app()->blog?->getDates(['type' => 'month']);
|
$dates = App::blog()->getDates(['type' => 'month']);
|
||||||
if (is_null($dates) || $dates->isEmpty()) {
|
if (is_null($dates) || $dates->isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dcCore::app()->error->add($e->getMessage());
|
App::error()->add($e->getMessage());
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use ArrayObject;
|
use ArrayObject;
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Core\Backend\Listing\{
|
use Dotclear\Core\Backend\Listing\{
|
||||||
Listing,
|
Listing,
|
||||||
Pager
|
Pager
|
||||||
|
@ -31,7 +21,11 @@ use Dotclear\Helper\Html\Form\{
|
||||||
use Dotclear\Helper\Html\Html;
|
use Dotclear\Helper\Html\Html;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Backend feed posts lists.
|
* @brief zoneclearFeedServer backend feed posts lists.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class PostsList extends Listing
|
class PostsList extends Listing
|
||||||
{
|
{
|
||||||
|
@ -108,7 +102,7 @@ class PostsList extends Listing
|
||||||
{
|
{
|
||||||
$cat_title = (new Text('', __('None')));
|
$cat_title = (new Text('', __('None')));
|
||||||
if ($this->rs->cat_title
|
if ($this->rs->cat_title
|
||||||
&& dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([dcCore::app()->auth::PERMISSION_CATEGORIES]), dcCore::app()->blog?->id)
|
&& App::auth()->check(App::auth()->makePermissions([App::auth()::PERMISSION_CATEGORIES]), App::blog()->id())
|
||||||
) {
|
) {
|
||||||
$cat_title = (new Link())
|
$cat_title = (new Link())
|
||||||
->href('category.php?id=' . $this->rs->cat_id)
|
->href('category.php?id=' . $this->rs->cat_id)
|
||||||
|
@ -155,7 +149,7 @@ class PostsList extends Listing
|
||||||
->class('maximal')
|
->class('maximal')
|
||||||
->items([
|
->items([
|
||||||
(new Link())
|
(new Link())
|
||||||
->href(dcCore::app()->getPostAdminURL($this->rs->post_type, $this->rs->post_id))
|
->href(App::postTypes()->getPostAdminURL($this->rs->post_type, $this->rs->post_id))
|
||||||
->title(Html::escapeHTML($this->rs->getURL()))
|
->title(Html::escapeHTML($this->rs->getURL()))
|
||||||
->text(Html::escapeHTML(trim(Html::clean($this->rs->post_title)))),
|
->text(Html::escapeHTML(trim(Html::clean($this->rs->post_title)))),
|
||||||
]),
|
]),
|
||||||
|
|
|
@ -1,24 +1,18 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Core\Process;
|
use Dotclear\Core\Process;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module prepend.
|
* @brief zoneclearFeedServer prepend class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class Prepend extends Process
|
class Prepend extends Process
|
||||||
{
|
{
|
||||||
|
@ -34,11 +28,11 @@ class Prepend extends Process
|
||||||
}
|
}
|
||||||
|
|
||||||
// public url for page of description of the flux
|
// public url for page of description of the flux
|
||||||
dcCore::app()->url->register(
|
App::url()->register(
|
||||||
'zoneclearFeedsPage',
|
'zoneclearFeedsPage',
|
||||||
'zcfeeds',
|
'zcfeeds',
|
||||||
'^zcfeeds(.*?)$',
|
'^zcfeeds(.*?)$',
|
||||||
[UrlHandler::class, 'zoneclearFeedsPage']
|
UrlHandler::zoneclearFeedsPage(...)
|
||||||
);
|
);
|
||||||
|
|
||||||
// report zoneclearFeedServer activities
|
// report zoneclearFeedServer activities
|
||||||
|
|
|
@ -1,30 +1,26 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use context;
|
use Dotclear\App;
|
||||||
use dcCore;
|
use Dotclear\Core\Frontend\Ctx;
|
||||||
use rsExtPost;
|
|
||||||
use rsExtPostPublic;
|
|
||||||
use Dotclear\Database\MetaRecord;
|
use Dotclear\Database\MetaRecord;
|
||||||
use Dotclear\Helper\Html\Html;
|
use Dotclear\Helper\Html\Html;
|
||||||
|
use Dotclear\Schema\Extension\Post;
|
||||||
|
use Dotclear\Schema\Extension\PostPublic;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @brief zoneclearFeedServer posts record extension.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
* Posts record extension to integrate feed info.
|
* Posts record extension to integrate feed info.
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class RsExtPosts extends rsExtPost
|
class RsExtPosts extends Post
|
||||||
{
|
{
|
||||||
/** @var array<string,mixed> $brother_extensions Stack posts record extensions */
|
/** @var array<string,mixed> $brother_extensions Stack posts record extensions */
|
||||||
public static array $brother_extensions = [];
|
public static array $brother_extensions = [];
|
||||||
|
@ -39,7 +35,7 @@ class RsExtPosts extends rsExtPost
|
||||||
*/
|
*/
|
||||||
public static function zcFeed(MetaRecord $rs, string $info): ?string
|
public static function zcFeed(MetaRecord $rs, string $info): ?string
|
||||||
{
|
{
|
||||||
$meta = dcCore::app()->meta->getMetadata([
|
$meta = App::meta()->getMetadata([
|
||||||
'post_id' => $rs->f('post_id'),
|
'post_id' => $rs->f('post_id'),
|
||||||
'meta_type' => My::META_PREFIX . $info,
|
'meta_type' => My::META_PREFIX . $info,
|
||||||
'limit' => 1,
|
'limit' => 1,
|
||||||
|
@ -61,10 +57,10 @@ class RsExtPosts extends rsExtPost
|
||||||
$ext = static::$brother_extensions;
|
$ext = static::$brother_extensions;
|
||||||
if (isset($ext[$type]) && is_callable($ext[$type])) {
|
if (isset($ext[$type]) && is_callable($ext[$type])) {
|
||||||
$func = $ext[$type];
|
$func = $ext[$type];
|
||||||
} elseif (is_callable([rsExtPostPublic::class, $type])) {
|
} elseif (is_callable([PostPublic::class, $type])) {
|
||||||
$func = [rsExtPostPublic::class, $type];
|
$func = [PostPublic::class, $type];
|
||||||
} elseif (is_callable([rsExtPost::class, $type])) {
|
} elseif (is_callable([Post::class, $type])) {
|
||||||
$func = [rsExtPost::class, $type];
|
$func = [Post::class, $type];
|
||||||
} else {
|
} else {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
@ -118,7 +114,7 @@ class RsExtPosts extends rsExtPost
|
||||||
{
|
{
|
||||||
$url = $rs->__call('zcFeed', ['url']);
|
$url = $rs->__call('zcFeed', ['url']);
|
||||||
$site = $rs->__call('zcFeed', ['site']);
|
$site = $rs->__call('zcFeed', ['site']);
|
||||||
$full = in_array(dcCore::app()->url->type, ZoneclearFeedServer::instance()->settings->post_title_redir);
|
$full = in_array(App::url()->type, ZoneclearFeedServer::instance()->settings->post_title_redir);
|
||||||
|
|
||||||
return is_string($site) && is_string($url) && $full ?
|
return is_string($site) && is_string($url) && $full ?
|
||||||
ZoneclearFeedServer::instance()::absoluteURL($site, $url) :
|
ZoneclearFeedServer::instance()::absoluteURL($site, $url) :
|
||||||
|
@ -129,7 +125,7 @@ class RsExtPosts extends rsExtPost
|
||||||
* Get post content from post to feed.
|
* Get post content from post to feed.
|
||||||
*
|
*
|
||||||
* @param MetaRecord $rs The record instance
|
* @param MetaRecord $rs The record instance
|
||||||
* @param mixed $absolute_urls Serve absolute URL (type "mixed" from rsExtPost)
|
* @param mixed $absolute_urls Serve absolute URL (type "mixed" from Post)
|
||||||
*
|
*
|
||||||
* @return string The post content
|
* @return string The post content
|
||||||
*/
|
*/
|
||||||
|
@ -140,14 +136,14 @@ class RsExtPosts extends rsExtPost
|
||||||
$content = self::zcFeedBrother('getContent', [&$rs, $absolute_urls]);
|
$content = self::zcFeedBrother('getContent', [&$rs, $absolute_urls]);
|
||||||
|
|
||||||
if (is_string($url) && is_string($sitename) && $rs->f('post_type') == 'post') {
|
if (is_string($url) && is_string($sitename) && $rs->f('post_type') == 'post') {
|
||||||
if (in_array(dcCore::app()->url->type, ZoneclearFeedServer::instance()->settings->post_full_tpl)) {
|
if (in_array(App::url()->type, ZoneclearFeedServer::instance()->settings->post_full_tpl)) {
|
||||||
return $content . sprintf(
|
return $content . sprintf(
|
||||||
'<p class="zoneclear-original"><em>%s</em></p>',
|
'<p class="zoneclear-original"><em>%s</em></p>',
|
||||||
sprintf(__('Original post on <a href="%s">%s</a>'), $url, $sitename)
|
sprintf(__('Original post on <a href="%s">%s</a>'), $url, $sitename)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
$content = context::remove_html($content);
|
$content = Ctx::remove_html($content);
|
||||||
$content = context::cut_string($content, 350);
|
$content = Ctx::cut_string($content, 350);
|
||||||
$content = Html::escapeHTML($content);
|
$content = Html::escapeHTML($content);
|
||||||
|
|
||||||
return sprintf(
|
return sprintf(
|
||||||
|
|
|
@ -1,21 +1,15 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module settings (type hinting).
|
* @brief zoneclearFeedServer settings.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class Settings
|
class Settings
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,27 +1,21 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use ArrayObject;
|
use ArrayObject;
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use dcTemplate;
|
use Dotclear\Core\Frontend\Tpl;
|
||||||
use Dotclear\Helper\Html\Html;
|
use Dotclear\Helper\Html\Html;
|
||||||
use Dotclear\Helper\L10n;
|
use Dotclear\Helper\L10n;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Frontend template blocks and values.
|
* @brief zoneclearFeedServer frontend tempalte class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class Template
|
class Template
|
||||||
{
|
{
|
||||||
|
@ -82,67 +76,67 @@ class Template
|
||||||
|
|
||||||
return
|
return
|
||||||
'<?php ' . $p .
|
'<?php ' . $p .
|
||||||
'dcCore::app()->ctx->feeds_params = $zcfs_params;' . "\n" .
|
'App::frontend()->context()->feeds_params = $zcfs_params;' . "\n" .
|
||||||
'$zcfs = ' . ZoneclearFeedServer::class . '::instance();' . "\n" .
|
'$zcfs = ' . ZoneclearFeedServer::class . '::instance();' . "\n" .
|
||||||
'dcCore::app()->ctx->feeds = $zcfs->getFeeds($zcfs_params); unset($zcfs_params,$zcfs);' . "\n" .
|
'App::frontend()->context()->feeds = $zcfs->getFeeds($zcfs_params); unset($zcfs_params,$zcfs);' . "\n" .
|
||||||
"?>\n" .
|
"?>\n" .
|
||||||
'<?php while (dcCore::app()->ctx->feeds->fetch()) : ?>' . $c . '<?php endwhile; ' .
|
'<?php while (App::frontend()->context()->feeds->fetch()) : ?>' . $c . '<?php endwhile; ' .
|
||||||
'dcCore::app()->ctx->feeds = null; dcCore::app()->ctx->feeds_params = null; ?>';
|
'App::frontend()->context()->feeds = null; App::frontend()->context()->feeds_params = null; ?>';
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedIf(ArrayObject $a, string $c): string
|
public static function FeedIf(ArrayObject $a, string $c): string
|
||||||
{
|
{
|
||||||
$if = [];
|
$if = [];
|
||||||
|
|
||||||
$operator = isset($a['operator']) && is_string($a['operator']) ? dcTemplate::getOperator($a['operator']) : '&&';
|
$operator = isset($a['operator']) && is_string($a['operator']) ? Tpl::getOperator($a['operator']) : '&&';
|
||||||
|
|
||||||
if (isset($a['type']) && is_string($a['type'])) {
|
if (isset($a['type']) && is_string($a['type'])) {
|
||||||
$type = trim($a['type']);
|
$type = trim($a['type']);
|
||||||
$type = !empty($type) ? $type : 'feed';
|
$type = !empty($type) ? $type : 'feed';
|
||||||
$if[] = 'dcCore::app()->ctx->feeds->feed_type == "' . addslashes($type) . '"';
|
$if[] = 'App::frontend()->context()->feeds->feed_type == "' . addslashes($type) . '"';
|
||||||
}
|
}
|
||||||
if (isset($a['site_url']) && is_string($a['site_url'])) {
|
if (isset($a['site_url']) && is_string($a['site_url'])) {
|
||||||
$url = trim($a['site_url']);
|
$url = trim($a['site_url']);
|
||||||
if (substr($url, 0, 1) == '!') {
|
if (substr($url, 0, 1) == '!') {
|
||||||
$url = substr($url, 1);
|
$url = substr($url, 1);
|
||||||
$if[] = 'dcCore::app()->ctx->feeds->feed_url != "' . addslashes($url) . '"';
|
$if[] = 'App::frontend()->context()->feeds->feed_url != "' . addslashes($url) . '"';
|
||||||
} else {
|
} else {
|
||||||
$if[] = 'dcCore::app()->ctx->feeds->feed_url == "' . addslashes($url) . '"';
|
$if[] = 'App::frontend()->context()->feeds->feed_url == "' . addslashes($url) . '"';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isset($a['feed_url']) && is_string($a['feed_url'])) {
|
if (isset($a['feed_url']) && is_string($a['feed_url'])) {
|
||||||
$url = trim($a['feed_url']);
|
$url = trim($a['feed_url']);
|
||||||
if (substr($url, 0, 1) == '!') {
|
if (substr($url, 0, 1) == '!') {
|
||||||
$url = substr($url, 1);
|
$url = substr($url, 1);
|
||||||
$if[] = 'dcCore::app()->ctx->feeds->feed_feed != "' . addslashes($url) . '"';
|
$if[] = 'App::frontend()->context()->feeds->feed_feed != "' . addslashes($url) . '"';
|
||||||
} else {
|
} else {
|
||||||
$if[] = 'dcCore::app()->ctx->feeds->feed_feed == "' . addslashes($url) . '"';
|
$if[] = 'App::frontend()->context()->feeds->feed_feed == "' . addslashes($url) . '"';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isset($a['category']) && is_string($a['category'])) {
|
if (isset($a['category']) && is_string($a['category'])) {
|
||||||
$category = addslashes(trim($a['category']));
|
$category = addslashes(trim($a['category']));
|
||||||
if (substr($category, 0, 1) == '!') {
|
if (substr($category, 0, 1) == '!') {
|
||||||
$category = substr($category, 1);
|
$category = substr($category, 1);
|
||||||
$if[] = '(dcCore::app()->ctx->feeds->cat_url != "' . $category . '")';
|
$if[] = '(App::frontend()->context()->feeds->cat_url != "' . $category . '")';
|
||||||
} else {
|
} else {
|
||||||
$if[] = '(dcCore::app()->ctx->feeds->cat_url == "' . $category . '")';
|
$if[] = '(App::frontend()->context()->feeds->cat_url == "' . $category . '")';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isset($a['first'])) {
|
if (isset($a['first'])) {
|
||||||
$sign = (bool) $a['first'] ? '=' : '!';
|
$sign = (bool) $a['first'] ? '=' : '!';
|
||||||
$if[] = 'dcCore::app()->ctx->feeds->index() ' . $sign . '= 0';
|
$if[] = 'App::frontend()->context()->feeds->index() ' . $sign . '= 0';
|
||||||
}
|
}
|
||||||
if (isset($a['odd'])) {
|
if (isset($a['odd'])) {
|
||||||
$sign = (bool) $a['odd'] ? '=' : '!';
|
$sign = (bool) $a['odd'] ? '=' : '!';
|
||||||
$if[] = '(dcCore::app()->ctx->feeds->index()+1)%2 ' . $sign . ' = 1';
|
$if[] = '(App::frontend()->context()->feeds->index()+1)%2 ' . $sign . ' = 1';
|
||||||
}
|
}
|
||||||
if (isset($a['has_category'])) {
|
if (isset($a['has_category'])) {
|
||||||
$sign = (bool) $a['has_category'] ? '' : '!';
|
$sign = (bool) $a['has_category'] ? '' : '!';
|
||||||
$if[] = $sign . 'dcCore::app()->ctx->feeds->cat_id';
|
$if[] = $sign . 'App::frontend()->context()->feeds->cat_id';
|
||||||
}
|
}
|
||||||
if (isset($a['has_description'])) {
|
if (isset($a['has_description'])) {
|
||||||
$sign = (bool) $a['has_description'] ? '' : '!';
|
$sign = (bool) $a['has_description'] ? '' : '!';
|
||||||
$if[] = $sign . 'dcCore::app()->ctx->feeds->feed_desc';
|
$if[] = $sign . 'App::frontend()->context()->feeds->feed_desc';
|
||||||
}
|
}
|
||||||
|
|
||||||
return empty($if) ?
|
return empty($if) ?
|
||||||
|
@ -155,7 +149,7 @@ class Template
|
||||||
$ret = Html::escapeHTML(isset($a['return']) && is_string($a['return']) ? $a['return'] : 'first');
|
$ret = Html::escapeHTML(isset($a['return']) && is_string($a['return']) ? $a['return'] : 'first');
|
||||||
|
|
||||||
return
|
return
|
||||||
'<?php if (dcCore::app()->ctx->feeds->index() == 0) { ' .
|
'<?php if (App::frontend()->context()->feeds->index() == 0) { ' .
|
||||||
"echo '" . addslashes($ret) . "'; } ?>";
|
"echo '" . addslashes($ret) . "'; } ?>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,79 +158,79 @@ class Template
|
||||||
$ret = Html::escapeHTML(isset($a['return']) && is_string($a['return']) ? $a['return'] : 'odd');
|
$ret = Html::escapeHTML(isset($a['return']) && is_string($a['return']) ? $a['return'] : 'odd');
|
||||||
|
|
||||||
return
|
return
|
||||||
'<?php if ((dcCore::app()->ctx->feeds->index()+1)%2 == 1) { ' .
|
'<?php if ((App::frontend()->context()->feeds->index()+1)%2 == 1) { ' .
|
||||||
"echo '" . addslashes($ret) . "'; } ?>";
|
"echo '" . addslashes($ret) . "'; } ?>";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedDesc(ArrayObject $a): string
|
public static function FeedDesc(ArrayObject $a): string
|
||||||
{
|
{
|
||||||
return self::getValue($a, 'dcCore::app()->ctx->feeds->feed_desc');
|
return self::getValue($a, 'App::frontend()->context()->feeds->feed_desc');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedOwner(ArrayObject $a): string
|
public static function FeedOwner(ArrayObject $a): string
|
||||||
{
|
{
|
||||||
return self::getValue($a, 'dcCore::app()->ctx->feeds->feed_owner');
|
return self::getValue($a, 'App::frontend()->context()->feeds->feed_owner');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedCategory(ArrayObject $a): string
|
public static function FeedCategory(ArrayObject $a): string
|
||||||
{
|
{
|
||||||
return self::getValue($a, 'dcCore::app()->ctx->feeds->cat_title');
|
return self::getValue($a, 'App::frontend()->context()->feeds->cat_title');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedCategoryID(ArrayObject $a): string
|
public static function FeedCategoryID(ArrayObject $a): string
|
||||||
{
|
{
|
||||||
return self::getValue($a, 'dcCore::app()->ctx->feeds->cat_id');
|
return self::getValue($a, 'App::frontend()->context()->feeds->cat_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedCategoryURL(ArrayObject $a): string
|
public static function FeedCategoryURL(ArrayObject $a): string
|
||||||
{
|
{
|
||||||
return self::getValue($a, 'dcCore::app()->blog->url.dcCore::app()->url->getBase(\'category\').\'/\'.Html::sanitizeURL(dcCore::app()->ctx->feeds->cat_url)');
|
return self::getValue($a, 'App::blog()->url().App::url()->getBase(\'category\').\'/\'.Html::sanitizeURL(App::frontend()->context()->feeds->cat_url)');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedCategoryShortURL(ArrayObject $a): string
|
public static function FeedCategoryShortURL(ArrayObject $a): string
|
||||||
{
|
{
|
||||||
return self::getValue($a, 'dcCore::app()->ctx->feeds->cat_url');
|
return self::getValue($a, 'App::frontend()->context()->feeds->cat_url');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedID(ArrayObject $a): string
|
public static function FeedID(ArrayObject $a): string
|
||||||
{
|
{
|
||||||
return self::getValue($a, 'dcCore::app()->ctx->feeds->feed_id');
|
return self::getValue($a, 'App::frontend()->context()->feeds->feed_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedLang(ArrayObject $a): string
|
public static function FeedLang(ArrayObject $a): string
|
||||||
{
|
{
|
||||||
return empty($a['full']) ?
|
return empty($a['full']) ?
|
||||||
self::getValue($a, 'dcCore::app()->ctx->feeds->feed_lang') :
|
self::getValue($a, 'App::frontend()->context()->feeds->feed_lang') :
|
||||||
'<?php $langs = ' . L10n::class . '::getISOcodes(); if (isset($langs[dcCore::app()->ctx->feeds->feed_lang])) { ?>' .
|
'<?php $langs = ' . L10n::class . '::getISOcodes(); if (isset($langs[App::frontend()->context()->feeds->feed_lang])) { ?>' .
|
||||||
self::getValue($a, '$langs[dcCore::app()->ctx->feeds->feed_lang]') .
|
self::getValue($a, '$langs[App::frontend()->context()->feeds->feed_lang]') .
|
||||||
'<?php } else { ?>' .
|
'<?php } else { ?>' .
|
||||||
self::getValue($a, 'dcCore::app()->ctx->feeds->feed_lang') .
|
self::getValue($a, 'App::frontend()->context()->feeds->feed_lang') .
|
||||||
'<?php ; } unset($langs); ?>';
|
'<?php ; } unset($langs); ?>';
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedName(ArrayObject $a): string
|
public static function FeedName(ArrayObject $a): string
|
||||||
{
|
{
|
||||||
return self::getValue($a, 'dcCore::app()->ctx->feeds->feed_name');
|
return self::getValue($a, 'App::frontend()->context()->feeds->feed_name');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedSiteURL(ArrayObject $a): string
|
public static function FeedSiteURL(ArrayObject $a): string
|
||||||
{
|
{
|
||||||
return self::getValue($a, 'dcCore::app()->ctx->feeds->feed_url');
|
return self::getValue($a, 'App::frontend()->context()->feeds->feed_url');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedFeedURL(ArrayObject $a): string
|
public static function FeedFeedURL(ArrayObject $a): string
|
||||||
{
|
{
|
||||||
return self::getValue($a, 'dcCore::app()->ctx->feeds->feed_feed');
|
return self::getValue($a, 'App::frontend()->context()->feeds->feed_feed');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedsHeader(ArrayObject $a, string $c): string
|
public static function FeedsHeader(ArrayObject $a, string $c): string
|
||||||
{
|
{
|
||||||
return '<?php if (dcCore::app()->ctx->feeds->isStart()) : ?>' . $c . '<?php endif; ?>';
|
return '<?php if (App::frontend()->context()->feeds->isStart()) : ?>' . $c . '<?php endif; ?>';
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedsFooter(ArrayObject $a, string $c): string
|
public static function FeedsFooter(ArrayObject $a, string $c): string
|
||||||
{
|
{
|
||||||
return '<?php if (dcCore::app()->ctx->feeds->isEnd()) : ?>' . $c . '<?php endif; ?>';
|
return '<?php if (App::frontend()->context()->feeds->isEnd()) : ?>' . $c . '<?php endif; ?>';
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function FeedsCount(ArrayObject $a): string
|
public static function FeedsCount(ArrayObject $a): string
|
||||||
|
@ -246,7 +240,7 @@ class Template
|
||||||
$more = isset($a['more']) && is_string($a['more']) ? addslashes($a['more']) : '%d sources';
|
$more = isset($a['more']) && is_string($a['more']) ? addslashes($a['more']) : '%d sources';
|
||||||
|
|
||||||
return
|
return
|
||||||
"<?php \$fcount = dcCore::app()->ctx->feeds->count(); \n" .
|
"<?php \$fcount = App::frontend()->context()->feeds->count(); \n" .
|
||||||
"if (\$fcount == 0) {\n" .
|
"if (\$fcount == 0) {\n" .
|
||||||
" printf(__('" . $none . "'),\$fcount);\n" .
|
" printf(__('" . $none . "'),\$fcount);\n" .
|
||||||
"} elseif (\$fcount == 1) {\n" .
|
"} elseif (\$fcount == 1) {\n" .
|
||||||
|
@ -288,7 +282,7 @@ class Template
|
||||||
|
|
||||||
return
|
return
|
||||||
'<?php $zcfs = ' . ZoneclearFeedServer::class . "::instance(); \n" .
|
'<?php $zcfs = ' . ZoneclearFeedServer::class . "::instance(); \n" .
|
||||||
"\$fcount = \$zc->getPostsByFeed(array('feed_id'=>dcCore::app()->ctx->feeds->feed_id),true)->f(0); \n" .
|
"\$fcount = \$zc->getPostsByFeed(array('feed_id'=>App::frontend()->context()->feeds->feed_id),true)->f(0); \n" .
|
||||||
"if (\$fcount == 0) {\n" .
|
"if (\$fcount == 0) {\n" .
|
||||||
" printf(__('" . $none . "'),\$fcount);\n" .
|
" printf(__('" . $none . "'),\$fcount);\n" .
|
||||||
"} elseif (\$fcount == 1) {\n" .
|
"} elseif (\$fcount == 1) {\n" .
|
||||||
|
@ -300,6 +294,6 @@ class Template
|
||||||
|
|
||||||
protected static function getValue(ArrayObject $a, string $v): string
|
protected static function getValue(ArrayObject $a, string $v): string
|
||||||
{
|
{
|
||||||
return '<?php echo ' . sprintf(dcCore::app()->tpl->getFilters($a), $v) . '; ?>';
|
return '<?php echo ' . sprintf(App::fontend()->template()->getFilters($a), $v) . '; ?>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +1,18 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
|
||||||
use Dotclear\Core\Process;
|
use Dotclear\Core\Process;
|
||||||
use Dotclear\Plugin\Uninstaller\Uninstaller;
|
use Dotclear\Plugin\Uninstaller\Uninstaller;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plugin Uninstaller actions.
|
* @brief zoneclearFeedServer uninstall class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class Uninstall extends Process
|
class Uninstall extends Process
|
||||||
{
|
{
|
||||||
|
@ -30,7 +23,7 @@ class Uninstall extends Process
|
||||||
|
|
||||||
public static function process(): bool
|
public static function process(): bool
|
||||||
{
|
{
|
||||||
if (!self::status() || !dcCore::app()->plugins->moduleExists('Uninstaller')) {
|
if (!self::status()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use dcMeta;
|
|
||||||
use Dotclear\Database\Statement\{
|
use Dotclear\Database\Statement\{
|
||||||
DeleteStatement,
|
DeleteStatement,
|
||||||
SelectStatement
|
SelectStatement
|
||||||
|
@ -29,9 +18,11 @@ use Dotclear\Plugin\Uninstaller\{
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plugin Uninstaller Cleaner object.
|
* @brief zoneclearFeedServer uninstall cleaner.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
*
|
*
|
||||||
* This add special action for feed posts metadata.
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class UninstallCleaner extends CleanerParent
|
class UninstallCleaner extends CleanerParent
|
||||||
{
|
{
|
||||||
|
@ -66,7 +57,7 @@ class UninstallCleaner extends CleanerParent
|
||||||
public function values(): array
|
public function values(): array
|
||||||
{
|
{
|
||||||
$sql = new SelectStatement();
|
$sql = new SelectStatement();
|
||||||
$sql->from(dcCore::app()->prefix . dcMeta::META_TABLE_NAME)
|
$sql->from(App::con()->prefix() . App::meta()::META_TABLE_NAME)
|
||||||
->columns([
|
->columns([
|
||||||
$sql->as($sql->count('*'), 'counter'),
|
$sql->as($sql->count('*'), 'counter'),
|
||||||
])
|
])
|
||||||
|
@ -92,7 +83,7 @@ class UninstallCleaner extends CleanerParent
|
||||||
{
|
{
|
||||||
if ($action == 'delete_all') {
|
if ($action == 'delete_all') {
|
||||||
$sql = new DeleteStatement();
|
$sql = new DeleteStatement();
|
||||||
$sql->from(dcCore::app()->prefix . dcMeta::META_TABLE_NAME)
|
$sql->from(App::con()->prefix() . App::meta()::META_TABLE_NAME)
|
||||||
->where($sql->like('meta_type', My::META_PREFIX . '%'))
|
->where($sql->like('meta_type', My::META_PREFIX . '%'))
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use dcNamespace;
|
|
||||||
use Dotclear\Database\Statement\{
|
use Dotclear\Database\Statement\{
|
||||||
SelectStatement,
|
SelectStatement,
|
||||||
UpdateStatement
|
UpdateStatement
|
||||||
|
@ -23,13 +12,17 @@ use Dotclear\Database\Statement\{
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module versions upgrades.
|
* @brief zoneclearFeedServer upgrade class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class Upgrade
|
class Upgrade
|
||||||
{
|
{
|
||||||
public static function preUpgrade(): void
|
public static function preUpgrade(): void
|
||||||
{
|
{
|
||||||
$current = dcCore::app()->getVersion(My::id());
|
$current = App::version()->getVersion(My::id());
|
||||||
if (!is_string($current) || empty($current)) {
|
if (!is_string($current) || empty($current)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -59,7 +52,7 @@ class Upgrade
|
||||||
'zoneclearFeedServer_post_title_redir' => 'post_title_redir',
|
'zoneclearFeedServer_post_title_redir' => 'post_title_redir',
|
||||||
];
|
];
|
||||||
|
|
||||||
$cur = dcCore::app()->con->openCursor(dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME);
|
$cur = App::blogWorkspace()->openBlogWorkspaceCursor();
|
||||||
foreach ($setting_ids as $old => $new) {
|
foreach ($setting_ids as $old => $new) {
|
||||||
$cur->clean();
|
$cur->clean();
|
||||||
$cur->setField('setting_id', $new);
|
$cur->setField('setting_id', $new);
|
||||||
|
@ -69,13 +62,13 @@ class Upgrade
|
||||||
$sql
|
$sql
|
||||||
->where('setting_id = ' . $sql->quote($old))
|
->where('setting_id = ' . $sql->quote($old))
|
||||||
->and('setting_ns = ' . $sql->quote('zoneclearFeedServer'))
|
->and('setting_ns = ' . $sql->quote('zoneclearFeedServer'))
|
||||||
->update();
|
->update($cur);
|
||||||
}
|
}
|
||||||
|
|
||||||
// use json rather than serialise for settings array
|
// use json rather than serialise for settings array
|
||||||
$sql = new SelectStatement();
|
$sql = new SelectStatement();
|
||||||
$record = $sql
|
$record = $sql
|
||||||
->from(dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME)
|
->from(App::con()->prefix() . App::blogWorkspace()::NS_TABLE_NAME)
|
||||||
->where('setting_ns = ' . $sql->quote(My::id()))
|
->where('setting_ns = ' . $sql->quote(My::id()))
|
||||||
->select();
|
->select();
|
||||||
|
|
||||||
|
@ -88,7 +81,7 @@ class Upgrade
|
||||||
'post_title_redir' => ['feed'],
|
'post_title_redir' => ['feed'],
|
||||||
];
|
];
|
||||||
|
|
||||||
$cur = dcCore::app()->con->openCursor(dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME);
|
$cur = App::blogWorkspace()->openBlogWorkspaceCursor();
|
||||||
while ($record->fetch()) {
|
while ($record->fetch()) {
|
||||||
foreach ($setting_values as $key => $default) {
|
foreach ($setting_values as $key => $default) {
|
||||||
try {
|
try {
|
||||||
|
@ -105,7 +98,7 @@ class Upgrade
|
||||||
->where('setting_id = ' . $sql->quote($key))
|
->where('setting_id = ' . $sql->quote($key))
|
||||||
->and('setting_ns = ' . $sql->quote($record->f('setting_ns')))
|
->and('setting_ns = ' . $sql->quote($record->f('setting_ns')))
|
||||||
->and('blog_id ' . (null === $record->f('blog_id') ? 'IS NULL ' : ('= ' . $sql->quote($record->f('blog_id')))))
|
->and('blog_id ' . (null === $record->f('blog_id') ? 'IS NULL ' : ('= ' . $sql->quote($record->f('blog_id')))))
|
||||||
->update();
|
->update($cur);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -115,7 +108,7 @@ class Upgrade
|
||||||
// change settings type of json string to array
|
// change settings type of json string to array
|
||||||
$sql = new UpdateStatement();
|
$sql = new UpdateStatement();
|
||||||
$sql
|
$sql
|
||||||
->ref(dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME)
|
->ref(App::con()->prefix() . App::blogWorkspace()::NS_TABLE_NAME)
|
||||||
->column('setting_type')
|
->column('setting_type')
|
||||||
->value('array')
|
->value('array')
|
||||||
->where('setting_id ' . $sql->in([
|
->where('setting_id ' . $sql->in([
|
||||||
|
|
|
@ -1,31 +1,25 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use dcUrlHandlers;
|
use Dotclear\Core\Frontend\Url;
|
||||||
use Dotclear\Helper\Html\Html;
|
use Dotclear\Helper\Html\Html;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Frontend URL handler.
|
* @brief zoneclearFeedServer frontend URL handler.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
*
|
*
|
||||||
* This adds public page that list feeds.
|
* This adds public page that list feeds.
|
||||||
* And serve an endpoint to update feeds through js.
|
* And serve an endpoint to update feeds through js.
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class UrlHandler extends dcUrlHandlers
|
class UrlHandler extends Url
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Feeds source page and update methods.
|
* Feeds source page and update methods.
|
||||||
|
@ -38,14 +32,14 @@ class UrlHandler extends dcUrlHandlers
|
||||||
$s = $z->settings;
|
$s = $z->settings;
|
||||||
|
|
||||||
# Not active
|
# Not active
|
||||||
if (is_null(dcCore::app()->blog) || !$s->active) {
|
if (!App::blog()->isDefined() || !$s->active) {
|
||||||
self::p404();
|
self::p404();
|
||||||
}
|
}
|
||||||
|
|
||||||
# Update feeds (from ajax or other post resquest)
|
# Update feeds (from ajax or other post resquest)
|
||||||
if ($args == '/zcfsupd' && 3 == $s->bhv_pub_upd) {
|
if ($args == '/zcfsupd' && 3 == $s->bhv_pub_upd) {
|
||||||
$msg = '';
|
$msg = '';
|
||||||
if (!empty($_POST['blogId']) && Html::escapeJS(dcCore::app()->blog->id) == $_POST['blogId']) {
|
if (!empty($_POST['blogId']) && Html::escapeJS(App::blog()->id()) == $_POST['blogId']) {
|
||||||
try {
|
try {
|
||||||
if ($z->checkFeedsUpdate()) {
|
if ($z->checkFeedsUpdate()) {
|
||||||
$msg = sprintf(
|
$msg = sprintf(
|
||||||
|
@ -76,7 +70,7 @@ class UrlHandler extends dcUrlHandlers
|
||||||
|
|
||||||
# Server js
|
# Server js
|
||||||
} elseif ($args == '/zcfsupd.js' && 3 == $s->bhv_pub_upd) {
|
} elseif ($args == '/zcfsupd.js' && 3 == $s->bhv_pub_upd) {
|
||||||
dcCore::app()->tpl->setPath(dcCore::app()->tpl->getPath(), My::path() . '/default-templates');
|
App::frontend()->template()->setPath(App::frontend()->template()->getPath(), My::path() . '/default-templates');
|
||||||
self::serveDocument(
|
self::serveDocument(
|
||||||
'zcfsupd.js',
|
'zcfsupd.js',
|
||||||
'text/javascript',
|
'text/javascript',
|
||||||
|
@ -86,16 +80,16 @@ class UrlHandler extends dcUrlHandlers
|
||||||
|
|
||||||
# Server feeds description page
|
# Server feeds description page
|
||||||
} elseif (in_array($args, ['', '/']) && $s->pub_active) {
|
} elseif (in_array($args, ['', '/']) && $s->pub_active) {
|
||||||
$theme = dcCore::app()->blog->settings->get('system')->get('theme');
|
$theme = App::blog()->settings()->get('system')->get('theme');
|
||||||
if (!is_string($theme)) {
|
if (!is_string($theme)) {
|
||||||
self::p404();
|
self::p404();
|
||||||
}
|
}
|
||||||
$tplset = dcCore::app()->themes->getDefine($theme)->get('tplset');
|
$tplset = App::themes()->getDefine($theme)->get('tplset');
|
||||||
$path = My::path() . '/default-templates/';
|
$path = My::path() . '/default-templates/';
|
||||||
if (!empty($tplset) && is_dir($path . $tplset)) {
|
if (!empty($tplset) && is_dir($path . $tplset)) {
|
||||||
dcCore::app()->tpl->setPath(dcCore::app()->tpl->getPath(), $path . $tplset);
|
App::frontend()->template()->setPath(App::frontend()->template()->getPath(), $path . $tplset);
|
||||||
} else {
|
} else {
|
||||||
dcCore::app()->tpl->setPath(dcCore::app()->tpl->getPath(), $path . DC_DEFAULT_TPLSET);
|
App::frontend()->template()->setPath(App::frontend()->template()->getPath(), $path . App::config()->defaultTplset());
|
||||||
}
|
}
|
||||||
self::serveDocument('zcfeeds.html');
|
self::serveDocument('zcfeeds.html');
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,29 +1,23 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use dcCore;
|
use Dotclear\App;
|
||||||
use Dotclear\Helper\Html\Html;
|
use Dotclear\Helper\Html\Html;
|
||||||
use Dotclear\Plugin\widgets\WidgetsStack;
|
use Dotclear\Plugin\widgets\WidgetsStack;
|
||||||
use Dotclear\Plugin\widgets\WidgetsElement;
|
use Dotclear\Plugin\widgets\WidgetsElement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Widgets.
|
* @brief zoneclearFeedServer widgets.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
*
|
*
|
||||||
* A widget to list feeds source.
|
* A widget to list feeds source.
|
||||||
* A widget to list feeds statistics.
|
* A widget to list feeds statistics.
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class Widgets
|
class Widgets
|
||||||
{
|
{
|
||||||
|
@ -36,7 +30,7 @@ class Widgets
|
||||||
->create(
|
->create(
|
||||||
'zcfssource',
|
'zcfssource',
|
||||||
__('Feeds server: sources'),
|
__('Feeds server: sources'),
|
||||||
[self::class, 'publicSource'],
|
self::publicSource(...),
|
||||||
null,
|
null,
|
||||||
__('List sources of feeds')
|
__('List sources of feeds')
|
||||||
)
|
)
|
||||||
|
@ -85,7 +79,7 @@ class Widgets
|
||||||
->create(
|
->create(
|
||||||
'zcfsnumber',
|
'zcfsnumber',
|
||||||
__('Feeds server: numbers'),
|
__('Feeds server: numbers'),
|
||||||
[self::class, 'publicNumber'],
|
self::publicNumber(...),
|
||||||
null,
|
null,
|
||||||
__('Show some numbers about feeds')
|
__('Show some numbers about feeds')
|
||||||
)
|
)
|
||||||
|
@ -140,7 +134,7 @@ class Widgets
|
||||||
|
|
||||||
if ($w->__get('offline')
|
if ($w->__get('offline')
|
||||||
|| !$s->active
|
|| !$s->active
|
||||||
|| !$w->checkHomeOnly(dcCore::app()->url->type)
|
|| !$w->checkHomeOnly(App::url()->type)
|
||||||
) {
|
) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
@ -173,7 +167,7 @@ class Widgets
|
||||||
if ($w->__get('pagelink') && $s->pub_active) {
|
if ($w->__get('pagelink') && $s->pub_active) {
|
||||||
$pub = sprintf(
|
$pub = sprintf(
|
||||||
'<p><strong><a href="%s">%s</a></strong></p>',
|
'<p><strong><a href="%s">%s</a></strong></p>',
|
||||||
dcCore::app()->blog?->url . dcCore::app()->url->getBase('zoneclearFeedsPage'),
|
App::blog()->url() . App::url()->getBase('zoneclearFeedsPage'),
|
||||||
Html::escapeHTML(is_string($w->__get('pagelink')) ? $w->__get('pagelink') : '')
|
Html::escapeHTML(is_string($w->__get('pagelink')) ? $w->__get('pagelink') : '')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -199,7 +193,7 @@ class Widgets
|
||||||
|
|
||||||
if ($w->__get('offline')
|
if ($w->__get('offline')
|
||||||
|| !$s->active
|
|| !$s->active
|
||||||
|| !$w->checkHomeOnly(dcCore::app()->url->type)
|
|| !$w->checkHomeOnly(App::url()->type)
|
||||||
) {
|
) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
@ -221,7 +215,7 @@ class Widgets
|
||||||
if ($s->pub_active) {
|
if ($s->pub_active) {
|
||||||
$text = sprintf(
|
$text = sprintf(
|
||||||
'<a href="%s">%s</a>',
|
'<a href="%s">%s</a>',
|
||||||
dcCore::app()->blog?->url . dcCore::app()->url->getBase('zoneclearFeedsPage'),
|
App::blog()->url() . App::url()->getBase('zoneclearFeedsPage'),
|
||||||
$text
|
$text
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,26 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* @brief zoneclearFeedServer, a plugin for Dotclear 2
|
|
||||||
*
|
|
||||||
* @package Dotclear
|
|
||||||
* @subpackage Plugin
|
|
||||||
*
|
|
||||||
* @author Jean-Christian Denis, BG, Pierre Van Glabeke
|
|
||||||
*
|
|
||||||
* @copyright Jean-Christian Denis
|
|
||||||
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
|
||||||
*/
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Dotclear\Plugin\zoneclearFeedServer;
|
namespace Dotclear\Plugin\zoneclearFeedServer;
|
||||||
|
|
||||||
use ArrayObject;
|
use ArrayObject;
|
||||||
use dcAuth;
|
use Dotclear\App;
|
||||||
use dcBlog;
|
|
||||||
use dcCategories;
|
|
||||||
use dcCore;
|
|
||||||
use dcMeta;
|
|
||||||
use dcUtils;
|
|
||||||
use Dotclear\Database\{
|
use Dotclear\Database\{
|
||||||
Cursor,
|
Cursor,
|
||||||
MetaRecord
|
MetaRecord
|
||||||
|
@ -44,29 +29,61 @@ use Dotclear\Helper\Text;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main module class.
|
* @brief zoneclearFeedServer main class.
|
||||||
|
* @ingroup zoneclearFeedServer
|
||||||
|
*
|
||||||
|
* @author Jean-Christian Denis
|
||||||
|
* @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
*/
|
*/
|
||||||
class ZoneclearFeedServer
|
class ZoneclearFeedServer
|
||||||
{
|
{
|
||||||
/** @var int Net HTTP feed reader timeout */
|
/**
|
||||||
|
* .
|
||||||
|
*
|
||||||
|
* @var int NET_HTTP_TIMEOUT
|
||||||
|
*/
|
||||||
public const NET_HTTP_TIMEOUT = 5;
|
public const NET_HTTP_TIMEOUT = 5;
|
||||||
|
|
||||||
/** @var string Net HTTP feed reader agent */
|
/**
|
||||||
|
* Net HTTP feed reader agent.
|
||||||
|
*
|
||||||
|
* @var string NET_HTTP_AGENT
|
||||||
|
*/
|
||||||
public const NET_HTTP_AGENT = 'zoneclearFeedServer - http://zoneclear.org';
|
public const NET_HTTP_AGENT = 'zoneclearFeedServer - http://zoneclear.org';
|
||||||
|
|
||||||
/** @var int Net HTTP feed reader max redirect */
|
/**
|
||||||
|
* Net HTTP feed reader max redirect.
|
||||||
|
*
|
||||||
|
* @var int NET_HTTP_MAX_REDIRECT
|
||||||
|
*/
|
||||||
public const NET_HTTP_MAX_REDIRECT = 2;
|
public const NET_HTTP_MAX_REDIRECT = 2;
|
||||||
|
|
||||||
/** @var ZoneclearFeedServer Self instance */
|
/**
|
||||||
|
* Self instance.
|
||||||
|
*
|
||||||
|
* @var ZoneclearFeedServer $instance
|
||||||
|
*/
|
||||||
private static $instance;
|
private static $instance;
|
||||||
|
|
||||||
/** @var Settings The settings instance */
|
/**
|
||||||
|
* .
|
||||||
|
*
|
||||||
|
* @var Settings $settings
|
||||||
|
*/
|
||||||
public readonly Settings $settings;
|
public readonly Settings $settings;
|
||||||
|
|
||||||
/** @var null|string $lock File lock for update */
|
/**
|
||||||
|
* File lock for update.
|
||||||
|
*
|
||||||
|
* @var null|string $lock
|
||||||
|
*/
|
||||||
private static $lock = null;
|
private static $lock = null;
|
||||||
|
|
||||||
/** @var null|string $user Affiliate user ID */
|
/**
|
||||||
|
* Affiliate user ID.
|
||||||
|
*
|
||||||
|
* @var null|string $user
|
||||||
|
*/
|
||||||
private $user = null;
|
private $user = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -98,7 +115,7 @@ class ZoneclearFeedServer
|
||||||
*/
|
*/
|
||||||
public function openCursor(): Cursor
|
public function openCursor(): Cursor
|
||||||
{
|
{
|
||||||
return dcCore::app()->con->openCursor(dcCore::app()->prefix . My::TABLE_NAME);
|
return App::con()->openCursor(App::con()->prefix() . My::TABLE_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -109,7 +126,7 @@ class ZoneclearFeedServer
|
||||||
*/
|
*/
|
||||||
public function updateFeed(int $id, Cursor $cur): void
|
public function updateFeed(int $id, Cursor $cur): void
|
||||||
{
|
{
|
||||||
dcCore::app()->con->writeLock(dcCore::app()->prefix . My::TABLE_NAME);
|
App::con()->writeLock(App::con()->prefix() . My::TABLE_NAME);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if ($id < 1) {
|
if ($id < 1) {
|
||||||
|
@ -121,18 +138,18 @@ class ZoneclearFeedServer
|
||||||
$cur->update(sprintf(
|
$cur->update(sprintf(
|
||||||
"WHERE feed_id = %s AND blog_id = '%s' ",
|
"WHERE feed_id = %s AND blog_id = '%s' ",
|
||||||
$id,
|
$id,
|
||||||
dcCore::app()->con->escapeStr((string) dcCore::app()->blog?->id)
|
App::con()->escapeStr(App::blog()->id())
|
||||||
));
|
));
|
||||||
dcCore::app()->con->unlock();
|
App::con()->unlock();
|
||||||
$this->trigger();
|
$this->trigger();
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dcCore::app()->con->unlock();
|
App::con()->unlock();
|
||||||
|
|
||||||
throw $e;
|
throw $e;
|
||||||
}
|
}
|
||||||
|
|
||||||
# --BEHAVIOR-- zoneclearFeedServerAfterUpdateFeed -- Cursor, int
|
# --BEHAVIOR-- zoneclearFeedServerAfterUpdateFeed -- Cursor, int
|
||||||
dcCore::app()->callBehavior('zoneclearFeedServerAfterUpdateFeed', $cur, $id);
|
App::behavior()->callBehavior('zoneclearFeedServerAfterUpdateFeed', $cur, $id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -144,20 +161,20 @@ class ZoneclearFeedServer
|
||||||
*/
|
*/
|
||||||
public function addFeed(Cursor $cur): int
|
public function addFeed(Cursor $cur): int
|
||||||
{
|
{
|
||||||
dcCore::app()->con->writeLock(dcCore::app()->prefix . My::TABLE_NAME);
|
App::con()->writeLock(App::con()->prefix() . My::TABLE_NAME);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$cur->setField('feed_id', $this->getNextId());
|
$cur->setField('feed_id', $this->getNextId());
|
||||||
$cur->setField('blog_id', dcCore::app()->con->escapeStr((string) dcCore::app()->blog?->id));
|
$cur->setField('blog_id', App::con()->escapeStr(App::blog()->id()));
|
||||||
$cur->setField('feed_creadt', date('Y-m-d H:i:s'));
|
$cur->setField('feed_creadt', date('Y-m-d H:i:s'));
|
||||||
|
|
||||||
$this->getFeedCursor($cur);
|
$this->getFeedCursor($cur);
|
||||||
|
|
||||||
$cur->insert();
|
$cur->insert();
|
||||||
dcCore::app()->con->unlock();
|
App::con()->unlock();
|
||||||
$this->trigger();
|
$this->trigger();
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dcCore::app()->con->unlock();
|
App::con()->unlock();
|
||||||
|
|
||||||
throw $e;
|
throw $e;
|
||||||
}
|
}
|
||||||
|
@ -165,7 +182,7 @@ class ZoneclearFeedServer
|
||||||
$id = is_numeric($cur->getField('feed_id')) ? (int) $cur->getField('feed_id') : 0;
|
$id = is_numeric($cur->getField('feed_id')) ? (int) $cur->getField('feed_id') : 0;
|
||||||
|
|
||||||
# --BEHAVIOR-- zoneclearFeedServerAfterAddFeed -- Cursor, int
|
# --BEHAVIOR-- zoneclearFeedServerAfterAddFeed -- Cursor, int
|
||||||
dcCore::app()->callBehavior('zoneclearFeedServerAfterAddFeed', $cur, $id);
|
App::behavior()->callBehavior('zoneclearFeedServerAfterAddFeed', $cur, $id);
|
||||||
|
|
||||||
return $id;
|
return $id;
|
||||||
}
|
}
|
||||||
|
@ -193,7 +210,7 @@ class ZoneclearFeedServer
|
||||||
}
|
}
|
||||||
|
|
||||||
$cur = $this->openCursor();
|
$cur = $this->openCursor();
|
||||||
dcCore::app()->con->writeLock(dcCore::app()->prefix . My::TABLE_NAME);
|
App::con()->writeLock(App::con()->prefix() . My::TABLE_NAME);
|
||||||
|
|
||||||
$cur->setField('feed_upddt', date('Y-m-d H:i:s'));
|
$cur->setField('feed_upddt', date('Y-m-d H:i:s'));
|
||||||
$cur->setField('feed_status', (int) $enable);
|
$cur->setField('feed_status', (int) $enable);
|
||||||
|
@ -204,18 +221,18 @@ class ZoneclearFeedServer
|
||||||
$cur->update(sprintf(
|
$cur->update(sprintf(
|
||||||
"WHERE feed_id = %s AND blog_id = '%s' ",
|
"WHERE feed_id = %s AND blog_id = '%s' ",
|
||||||
$id,
|
$id,
|
||||||
dcCore::app()->con->escapeStr((string) dcCore::app()->blog?->id)
|
App::con()->escapeStr(App::blog()->id())
|
||||||
));
|
));
|
||||||
dcCore::app()->con->unlock();
|
App::con()->unlock();
|
||||||
$this->trigger();
|
$this->trigger();
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dcCore::app()->con->unlock();
|
App::con()->unlock();
|
||||||
|
|
||||||
throw $e;
|
throw $e;
|
||||||
}
|
}
|
||||||
|
|
||||||
# --BEHAVIOR-- zoneclearFeedServerAfterEnableFeed -- int, bool, int
|
# --BEHAVIOR-- zoneclearFeedServerAfterEnableFeed -- int, bool, int
|
||||||
dcCore::app()->callBehavior('zoneclearFeedServerAfterEnableFeed', $id, $enable, $time);
|
App::behavior()->callBehavior('zoneclearFeedServerAfterEnableFeed', $id, $enable, $time);
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -231,12 +248,12 @@ class ZoneclearFeedServer
|
||||||
}
|
}
|
||||||
|
|
||||||
# --BEHAVIOR-- zoneclearFeedServerBeforeDeleteFeed -- int
|
# --BEHAVIOR-- zoneclearFeedServerBeforeDeleteFeed -- int
|
||||||
dcCore::app()->callBehavior('zoneclearFeedServerBeforeDeleteFeed', $id);
|
App::behavior()->callBehavior('zoneclearFeedServerBeforeDeleteFeed', $id);
|
||||||
|
|
||||||
$sql = new DeleteStatement();
|
$sql = new DeleteStatement();
|
||||||
$sql->from(dcCore::app()->prefix . My::TABLE_NAME)
|
$sql->from(App::con()->prefix() . My::TABLE_NAME)
|
||||||
->where('feed_id ' . $sql->in($id))
|
->where('feed_id ' . $sql->in($id))
|
||||||
->and('blog_id = ' . $sql->quote((string) dcCore::app()->blog?->id))
|
->and('blog_id = ' . $sql->quote(App::blog()->id()))
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
$this->trigger();
|
$this->trigger();
|
||||||
|
@ -253,7 +270,7 @@ class ZoneclearFeedServer
|
||||||
public static function deletePostsMeta(?int $id): void
|
public static function deletePostsMeta(?int $id): void
|
||||||
{
|
{
|
||||||
$sql = new DeleteStatement();
|
$sql = new DeleteStatement();
|
||||||
$sql->from(dcCore::app()->prefix . dcMeta::META_TABLE_NAME)
|
$sql->from(App::con()->prefix() . App::meta()::META_TABLE_NAME)
|
||||||
->where('meta_type ' . $sql->in([
|
->where('meta_type ' . $sql->in([
|
||||||
My::META_PREFIX . 'url',
|
My::META_PREFIX . 'url',
|
||||||
My::META_PREFIX . 'author',
|
My::META_PREFIX . 'author',
|
||||||
|
@ -287,18 +304,18 @@ class ZoneclearFeedServer
|
||||||
$sql->join(
|
$sql->join(
|
||||||
(new JoinStatement())
|
(new JoinStatement())
|
||||||
->left()
|
->left()
|
||||||
->from(dcCore::app()->prefix . dcMeta::META_TABLE_NAME . ' F')
|
->from(App::con()->prefix() . App::meta()::META_TABLE_NAME . ' F')
|
||||||
->on('P.post_id = F.post_id')
|
->on('P.post_id = F.post_id')
|
||||||
->statement()
|
->statement()
|
||||||
);
|
);
|
||||||
|
|
||||||
$params['sql'] = "AND P.blog_id = '" . dcCore::app()->con->escapeStr((string) dcCore::app()->blog?->id) . "' " .
|
$params['sql'] = "AND P.blog_id = '" . App::con()->escapeStr(App::blog()->id()) . "' " .
|
||||||
"AND F.meta_type = '" . My::META_PREFIX . "id' " .
|
"AND F.meta_type = '" . My::META_PREFIX . "id' " .
|
||||||
"AND F.meta_id = '" . dcCore::app()->con->escapeStr((string) $params['feed_id']) . "' ";
|
"AND F.meta_id = '" . App::con()->escapeStr((string) $params['feed_id']) . "' ";
|
||||||
|
|
||||||
unset($params['feed_id']);
|
unset($params['feed_id']);
|
||||||
|
|
||||||
$rs = dcCore::app()->blog?->getPosts($params, $count_only, $sql);
|
$rs = App::blog()->getPosts($params, $count_only, $sql);
|
||||||
|
|
||||||
return is_null($rs) ? MetaRecord::newFromArray([]) : $rs;
|
return is_null($rs) ? MetaRecord::newFromArray([]) : $rs;
|
||||||
}
|
}
|
||||||
|
@ -332,17 +349,17 @@ class ZoneclearFeedServer
|
||||||
'C.cat_title, C.cat_url, C.cat_desc ';
|
'C.cat_title, C.cat_url, C.cat_desc ';
|
||||||
}
|
}
|
||||||
|
|
||||||
$strReq .= 'FROM ' . dcCore::app()->prefix . My::TABLE_NAME . ' Z ' .
|
$strReq .= 'FROM ' . App::con()->prefix() . My::TABLE_NAME . ' Z ' .
|
||||||
'LEFT OUTER JOIN ' . dcCore::app()->prefix . dcCategories::CATEGORY_TABLE_NAME . ' C ON Z.cat_id = C.cat_id ';
|
'LEFT OUTER JOIN ' . App::con()->prefix() . App::categories()::CATEGORY_TABLE_NAME . ' C ON Z.cat_id = C.cat_id ';
|
||||||
|
|
||||||
if (!empty($params['from']) && is_string($params['from'])) {
|
if (!empty($params['from']) && is_string($params['from'])) {
|
||||||
$strReq .= $params['from'] . ' ';
|
$strReq .= $params['from'] . ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
$strReq .= "WHERE Z.blog_id = '" . dcCore::app()->con->escapeStr((string) dcCore::app()->blog?->id) . "' ";
|
$strReq .= "WHERE Z.blog_id = '" . App::con()->escapeStr(App::blog()->id()) . "' ";
|
||||||
|
|
||||||
if (isset($params['feed_type']) && is_string($params['feed_type'])) {
|
if (isset($params['feed_type']) && is_string($params['feed_type'])) {
|
||||||
$strReq .= "AND Z.feed_type = '" . dcCore::app()->con->escapeStr((string) $params['feed_type']) . "' ";
|
$strReq .= "AND Z.feed_type = '" . App::con()->escapeStr((string) $params['feed_type']) . "' ";
|
||||||
} else {
|
} else {
|
||||||
$strReq .= "AND Z.feed_type = 'feed' ";
|
$strReq .= "AND Z.feed_type = 'feed' ";
|
||||||
}
|
}
|
||||||
|
@ -353,21 +370,21 @@ class ZoneclearFeedServer
|
||||||
} elseif (is_numeric($params['feed_id'])) {
|
} elseif (is_numeric($params['feed_id'])) {
|
||||||
$params['feed_id'] = [(int) $params['feed_id']];
|
$params['feed_id'] = [(int) $params['feed_id']];
|
||||||
}
|
}
|
||||||
$strReq .= 'AND Z.feed_id ' . dcCore::app()->con->in($params['feed_id']);
|
$strReq .= 'AND Z.feed_id ' . App::con()->in($params['feed_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($params['feed_feed']) && is_string($params['feed_feed'])) {
|
if (isset($params['feed_feed']) && is_string($params['feed_feed'])) {
|
||||||
$strReq .= "AND Z.feed_feed = '" . dcCore::app()->con->escapeStr((string) $params['feed_feed']) . "' ";
|
$strReq .= "AND Z.feed_feed = '" . App::con()->escapeStr((string) $params['feed_feed']) . "' ";
|
||||||
}
|
}
|
||||||
if (isset($params['feed_url']) && is_string($params['feed_url'])) {
|
if (isset($params['feed_url']) && is_string($params['feed_url'])) {
|
||||||
$strReq .= "AND Z.feed_url = '" . dcCore::app()->con->escapeStr((string) $params['feed_url']) . "' ";
|
$strReq .= "AND Z.feed_url = '" . App::con()->escapeStr((string) $params['feed_url']) . "' ";
|
||||||
}
|
}
|
||||||
if (isset($params['feed_status'])) {
|
if (isset($params['feed_status'])) {
|
||||||
$strReq .= 'AND Z.feed_status = ' . ((int) $params['feed_status']) . ' ';
|
$strReq .= 'AND Z.feed_status = ' . ((int) $params['feed_status']) . ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($params['q']) && is_string($params['q'])) {
|
if (!empty($params['q']) && is_string($params['q'])) {
|
||||||
$q = dcCore::app()->con->escapeStr((string) str_replace('*', '%', strtolower($params['q'])));
|
$q = App::con()->escapeStr((string) str_replace('*', '%', strtolower($params['q'])));
|
||||||
$strReq .= "AND LOWER(Z.feed_name) LIKE '" . $q . "' ";
|
$strReq .= "AND LOWER(Z.feed_name) LIKE '" . $q . "' ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,7 +394,7 @@ class ZoneclearFeedServer
|
||||||
|
|
||||||
if (!$count_only) {
|
if (!$count_only) {
|
||||||
if (!empty($params['order']) && is_string($params['order'])) {
|
if (!empty($params['order']) && is_string($params['order'])) {
|
||||||
$strReq .= 'ORDER BY ' . dcCore::app()->con->escapeStr((string) $params['order']) . ' ';
|
$strReq .= 'ORDER BY ' . App::con()->escapeStr((string) $params['order']) . ' ';
|
||||||
} else {
|
} else {
|
||||||
$strReq .= 'ORDER BY Z.feed_upddt DESC ';
|
$strReq .= 'ORDER BY Z.feed_upddt DESC ';
|
||||||
}
|
}
|
||||||
|
@ -388,11 +405,11 @@ class ZoneclearFeedServer
|
||||||
$params['limit'] = (int) $params['limit'];
|
$params['limit'] = (int) $params['limit'];
|
||||||
}
|
}
|
||||||
if (is_int($params['limit']) || is_array($params['limit'])) {
|
if (is_int($params['limit']) || is_array($params['limit'])) {
|
||||||
$strReq .= dcCore::app()->con->limit($params['limit']);
|
$strReq .= App::con()->limit($params['limit']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new MetaRecord(dcCore::app()->con->select($strReq));
|
return new MetaRecord(App::con()->select($strReq));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -405,7 +422,7 @@ class ZoneclearFeedServer
|
||||||
$sql = new SelectStatement();
|
$sql = new SelectStatement();
|
||||||
$rs = $sql
|
$rs = $sql
|
||||||
->column($sql->max('feed_id'))
|
->column($sql->max('feed_id'))
|
||||||
->from(dcCore::app()->prefix . My::TABLE_NAME)
|
->from(App::con()->prefix() . My::TABLE_NAME)
|
||||||
->select();
|
->select();
|
||||||
|
|
||||||
return (int) $rs?->f(0) + 1;
|
return (int) $rs?->f(0) + 1;
|
||||||
|
@ -420,14 +437,14 @@ class ZoneclearFeedServer
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
# Cache writable ?
|
# Cache writable ?
|
||||||
if (!is_writable(DC_TPL_CACHE)) {
|
if (!is_writable(App::config()->cacheRoot())) {
|
||||||
throw new Exception("Can't write in cache fodler");
|
throw new Exception("Can't write in cache fodler");
|
||||||
}
|
}
|
||||||
# Set file path
|
# Set file path
|
||||||
$f_md5 = md5((string) dcCore::app()->blog?->id);
|
$f_md5 = md5(App::blog()->id());
|
||||||
$file = sprintf(
|
$file = sprintf(
|
||||||
'%s/%s/%s/%s/%s.txt',
|
'%s/%s/%s/%s/%s.txt',
|
||||||
DC_TPL_CACHE,
|
App::config()->cacheRoot(),
|
||||||
My::id(),
|
My::id(),
|
||||||
substr($f_md5, 0, 2),
|
substr($f_md5, 0, 2),
|
||||||
substr($f_md5, 2, 2),
|
substr($f_md5, 2, 2),
|
||||||
|
@ -480,7 +497,7 @@ class ZoneclearFeedServer
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$tz = dcCore::app()->blog?->settings->get('system')->get('blog_timezone');
|
$tz = App::blog()->settings()->get('system')->get('blog_timezone');
|
||||||
Date::setTZ(is_string($tz) ? $tz : 'UTC');
|
Date::setTZ(is_string($tz) ? $tz : 'UTC');
|
||||||
$time = time();
|
$time = time();
|
||||||
|
|
||||||
|
@ -500,8 +517,8 @@ class ZoneclearFeedServer
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
|
||||||
$cur_post = dcCore::app()->con->openCursor(dcCore::app()->prefix . dcBlog::POST_TABLE_NAME);
|
$cur_post = App::blog()->openPostCursor();
|
||||||
$cur_meta = dcCore::app()->con->openCursor(dcCore::app()->prefix . dcMeta::META_TABLE_NAME);
|
$cur_meta = App::meta()->openMetaCursor();
|
||||||
|
|
||||||
while ($f->fetch()) {
|
while ($f->fetch()) {
|
||||||
$row = new FeedRow($f);
|
$row = new FeedRow($f);
|
||||||
|
@ -540,7 +557,7 @@ class ZoneclearFeedServer
|
||||||
# Set update time of this feed
|
# Set update time of this feed
|
||||||
$this->enableFeed($row->id, (bool) $row->status, $time);
|
$this->enableFeed($row->id, (bool) $row->status, $time);
|
||||||
|
|
||||||
dcCore::app()->con->begin();
|
App::con()->begin();
|
||||||
|
|
||||||
foreach ($feed->items as $item) {
|
foreach ($feed->items as $item) {
|
||||||
$item_TS = $item->TS ? $item->TS : $time;
|
$item_TS = $item->TS ? $item->TS : $time;
|
||||||
|
@ -555,7 +572,7 @@ class ZoneclearFeedServer
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$item_link = dcCore::app()->con->escapeStr((string) $item_link);
|
$item_link = App::con()->escapeStr((string) $item_link);
|
||||||
$is_new_published_entry = false;
|
$is_new_published_entry = false;
|
||||||
|
|
||||||
# Not updated since last visit
|
# Not updated since last visit
|
||||||
|
@ -576,15 +593,15 @@ class ZoneclearFeedServer
|
||||||
'P.post_id',
|
'P.post_id',
|
||||||
'P.post_status',
|
'P.post_status',
|
||||||
])
|
])
|
||||||
->from($sql->as(dcCore::app()->prefix . dcBlog::POST_TABLE_NAME, 'P'))
|
->from($sql->as(App::con()->prefix() . App::blog()::POST_TABLE_NAME, 'P'))
|
||||||
->join(
|
->join(
|
||||||
(new JoinStatement())
|
(new JoinStatement())
|
||||||
->inner()
|
->inner()
|
||||||
->from($sql->as(dcCore::app()->prefix . dcMeta::META_TABLE_NAME, 'M'))
|
->from($sql->as(App::con()->prefix() . App::meta()::META_TABLE_NAME, 'M'))
|
||||||
->on('P.post_id = M.post_id')
|
->on('P.post_id = M.post_id')
|
||||||
->statement()
|
->statement()
|
||||||
)
|
)
|
||||||
->where('blog_id = ' . $sql->quote((string) dcCore::app()->blog?->id))
|
->where('blog_id = ' . $sql->quote(App::blog()->id()))
|
||||||
->and("meta_type = '" . My::META_PREFIX . "url'")
|
->and("meta_type = '" . My::META_PREFIX . "url'")
|
||||||
->and('meta_id = ' . $sql->quote($item_link))
|
->and('meta_id = ' . $sql->quote($item_link))
|
||||||
->select();
|
->select();
|
||||||
|
@ -609,14 +626,14 @@ class ZoneclearFeedServer
|
||||||
# Create entry
|
# Create entry
|
||||||
if ($old_post->isEmpty()) {
|
if ($old_post->isEmpty()) {
|
||||||
# Post
|
# Post
|
||||||
$cur_post->setField('user_id', dcCore::app()->auth->userID());
|
$cur_post->setField('user_id', App::auth()->userID());
|
||||||
$cur_post->setField('post_format', 'xhtml');
|
$cur_post->setField('post_format', 'xhtml');
|
||||||
$cur_post->setField('post_status', $s->post_status_new);
|
$cur_post->setField('post_status', $s->post_status_new ? App::blog()::POST_PUBLISHED : App::blog()::POST_UNPUBLISHED);
|
||||||
$cur_post->setField('post_open_comment', 0);
|
$cur_post->setField('post_open_comment', 0);
|
||||||
$cur_post->setField('post_open_tb', 0);
|
$cur_post->setField('post_open_tb', 0);
|
||||||
|
|
||||||
$post_id = dcCore::app()->auth->sudo(
|
$post_id = App::auth()->sudo(
|
||||||
[dcCore::app()->blog, 'addPost'],
|
App::blog()->addPost(...),
|
||||||
$cur_post
|
$cur_post
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -629,22 +646,22 @@ class ZoneclearFeedServer
|
||||||
} else {
|
} else {
|
||||||
$post_id = is_numeric($old_post->f('post_id')) ? (int) $old_post->f('post_id') : 0;
|
$post_id = is_numeric($old_post->f('post_id')) ? (int) $old_post->f('post_id') : 0;
|
||||||
|
|
||||||
dcCore::app()->auth->sudo(
|
App::auth()->sudo(
|
||||||
[dcCore::app()->blog, 'updPost'],
|
App::blog()->updPost(...),
|
||||||
$post_id,
|
$post_id,
|
||||||
$cur_post
|
$cur_post
|
||||||
);
|
);
|
||||||
|
|
||||||
# Quick delete old meta
|
# Quick delete old meta
|
||||||
$sql = new DeleteStatement();
|
$sql = new DeleteStatement();
|
||||||
$sql->from(dcCore::app()->prefix . dcMeta::META_TABLE_NAME)
|
$sql->from(App::con()->prefix() . App::meta()::META_TABLE_NAME)
|
||||||
->where('post_id = ' . $post_id)
|
->where('post_id = ' . $post_id)
|
||||||
->and($sql->like('meta_type', My::META_PREFIX . '%'))
|
->and($sql->like('meta_type', My::META_PREFIX . '%'))
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
# Delete old tags
|
# Delete old tags
|
||||||
dcCore::app()->auth->sudo(
|
App::auth()->sudo(
|
||||||
[dcCore::app()->meta, 'delPostMeta'],
|
App::meta()->delPostMeta(...),
|
||||||
$post_id,
|
$post_id,
|
||||||
'tag'
|
'tag'
|
||||||
);
|
);
|
||||||
|
@ -683,11 +700,11 @@ class ZoneclearFeedServer
|
||||||
$cur_meta->insert();
|
$cur_meta->insert();
|
||||||
|
|
||||||
# Add new tags
|
# Add new tags
|
||||||
$tags = dcCore::app()->meta->splitMetaValues($row->tags);
|
$tags = App::meta()->splitMetaValues($row->tags);
|
||||||
if ($row->get_tags) {
|
if ($row->get_tags) {
|
||||||
# Some feed subjects contains more than one tag
|
# Some feed subjects contains more than one tag
|
||||||
foreach ($item->subject as $subjects) {
|
foreach ($item->subject as $subjects) {
|
||||||
$tmp = dcCore::app()->meta->splitMetaValues($subjects);
|
$tmp = App::meta()->splitMetaValues($subjects);
|
||||||
$tags = array_merge($tags, $tmp);
|
$tags = array_merge($tags, $tmp);
|
||||||
}
|
}
|
||||||
$tags = array_unique($tags);
|
$tags = array_unique($tags);
|
||||||
|
@ -709,33 +726,33 @@ class ZoneclearFeedServer
|
||||||
}
|
}
|
||||||
if (!in_array($tag, $formated_tags)) {
|
if (!in_array($tag, $formated_tags)) {
|
||||||
$formated_tags[] = $tag;
|
$formated_tags[] = $tag;
|
||||||
dcCore::app()->auth->sudo(
|
App::auth()->sudo(
|
||||||
[dcCore::app()->meta, 'delPostMeta'],
|
App::meta()->delPostMeta(...),
|
||||||
$post_id,
|
$post_id,
|
||||||
'tag',
|
'tag',
|
||||||
dcMeta::sanitizeMetaID($tag)
|
App::meta()::sanitizeMetaID($tag)
|
||||||
);
|
);
|
||||||
dcCore::app()->auth->sudo(
|
App::auth()->sudo(
|
||||||
[dcCore::app()->meta, 'setPostMeta'],
|
App::meta()->setPostMeta(...),
|
||||||
$post_id,
|
$post_id,
|
||||||
'tag',
|
'tag',
|
||||||
dcMeta::sanitizeMetaID($tag)
|
App::meta()::sanitizeMetaID($tag)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
dcCore::app()->con->rollback();
|
App::con()->rollback();
|
||||||
$this->enableUser(false);
|
$this->enableUser(false);
|
||||||
$this->unlockUpdate();
|
$this->unlockUpdate();
|
||||||
|
|
||||||
throw $e;
|
throw $e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dcCore::app()->con->commit();
|
App::con()->commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
# --BEHAVIOR-- zoneclearFeedServerAfterCheckFeedUpdate -- FeedRow
|
# --BEHAVIOR-- zoneclearFeedServerAfterCheckFeedUpdate -- FeedRow
|
||||||
dcCore::app()->callBehavior('zoneclearFeedServerAfterCheckFeedUpdate', $row);
|
App::behavior()->callBehavior('zoneclearFeedServerAfterCheckFeedUpdate', $row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($enabled) {
|
if ($enabled) {
|
||||||
|
@ -756,21 +773,18 @@ class ZoneclearFeedServer
|
||||||
# Enable
|
# Enable
|
||||||
if ($enable) {
|
if ($enable) {
|
||||||
// backup current user
|
// backup current user
|
||||||
if (!is_null(dcCore::app()->auth->userID()) && !is_string(dcCore::app()->auth->userID())) {
|
if (!is_null(App::auth()->userID()) && !is_string(App::auth()->userID())) {
|
||||||
throw new Exception('Unable to backup user');
|
throw new Exception('Unable to backup user');
|
||||||
}
|
}
|
||||||
$this->user = dcCore::app()->auth->userID();
|
$this->user = App::auth()->userID();
|
||||||
// set zcfs posts user
|
// set zcfs posts user
|
||||||
if (!dcCore::app()->auth->checkUser($this->settings->user)) {
|
if (!App::auth()->checkUser($this->settings->user)) {
|
||||||
throw new Exception('Unable to set user');
|
throw new Exception('Unable to set user');
|
||||||
}
|
}
|
||||||
# Disable
|
# Disable
|
||||||
} else {
|
} else {
|
||||||
// auth on branch My goes readonly
|
|
||||||
//dcCore::app()->auth = null;
|
|
||||||
//dcCore::app()->auth = new dcAuth();
|
|
||||||
// restore current user
|
// restore current user
|
||||||
dcCore::app()->auth->checkUser($this->user ?? '');
|
App::auth()->checkUser($this->user ?? '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -785,7 +799,7 @@ class ZoneclearFeedServer
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$feed_reader = new Reader();
|
$feed_reader = new Reader();
|
||||||
$feed_reader->setCacheDir(DC_TPL_CACHE);
|
$feed_reader->setCacheDir(App::config()->cacheRoot());
|
||||||
$feed_reader->setTimeout(self::NET_HTTP_TIMEOUT);
|
$feed_reader->setTimeout(self::NET_HTTP_TIMEOUT);
|
||||||
$feed_reader->setMaxRedirects(self::NET_HTTP_MAX_REDIRECT);
|
$feed_reader->setMaxRedirects(self::NET_HTTP_MAX_REDIRECT);
|
||||||
$feed_reader->setUserAgent(self::NET_HTTP_AGENT);
|
$feed_reader->setUserAgent(self::NET_HTTP_AGENT);
|
||||||
|
@ -801,7 +815,7 @@ class ZoneclearFeedServer
|
||||||
*/
|
*/
|
||||||
private function trigger(): void
|
private function trigger(): void
|
||||||
{
|
{
|
||||||
dcCore::app()->blog?->triggerBlog();
|
App::blog()->triggerBlog();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -864,7 +878,7 @@ class ZoneclearFeedServer
|
||||||
# Get super admins
|
# Get super admins
|
||||||
$sql = new SelectStatement();
|
$sql = new SelectStatement();
|
||||||
$rs = $sql
|
$rs = $sql
|
||||||
->from(dcCore::app()->prefix . dcAuth::USER_TABLE_NAME)
|
->from(App::con()->prefix() . App::auth()::USER_TABLE_NAME)
|
||||||
->columns([
|
->columns([
|
||||||
'user_id',
|
'user_id',
|
||||||
'user_super',
|
'user_super',
|
||||||
|
@ -878,7 +892,7 @@ class ZoneclearFeedServer
|
||||||
|
|
||||||
if (!is_null($rs) && !$rs->isEmpty()) {
|
if (!is_null($rs) && !$rs->isEmpty()) {
|
||||||
while ($rs->fetch()) {
|
while ($rs->fetch()) {
|
||||||
$user_cn = dcUtils::getUserCN(
|
$user_cn = App::users()->getUserCN(
|
||||||
$rs->f('user_id'),
|
$rs->f('user_id'),
|
||||||
$rs->f('user_name'),
|
$rs->f('user_name'),
|
||||||
$rs->f('user_firstname'),
|
$rs->f('user_firstname'),
|
||||||
|
@ -898,22 +912,22 @@ class ZoneclearFeedServer
|
||||||
'U.user_firstname',
|
'U.user_firstname',
|
||||||
'U.user_displayname',
|
'U.user_displayname',
|
||||||
])
|
])
|
||||||
->from($sql->as(dcCore::app()->prefix . dcAuth::USER_TABLE_NAME, 'U'))
|
->from($sql->as(App::con()->prefix() . App::auth()::USER_TABLE_NAME, 'U'))
|
||||||
->join(
|
->join(
|
||||||
(new JoinStatement())
|
(new JoinStatement())
|
||||||
->left()
|
->left()
|
||||||
->from($sql->as(dcCore::app()->prefix . dcAuth::PERMISSIONS_TABLE_NAME, 'P'))
|
->from($sql->as(App::con()->prefix() . App::auth()::PERMISSIONS_TABLE_NAME, 'P'))
|
||||||
->on('U.user_id = P.user_id')
|
->on('U.user_id = P.user_id')
|
||||||
->statement()
|
->statement()
|
||||||
)
|
)
|
||||||
->where('U.user_status = 1')
|
->where('U.user_status = 1')
|
||||||
->and('P.blog_id = ' . $sql->quote((string) dcCore::app()->blog?->id))
|
->and('P.blog_id = ' . $sql->quote(App::blog()->id()))
|
||||||
->and($sql->like('P.permissions', '%|admin|%'))
|
->and($sql->like('P.permissions', '%|admin|%'))
|
||||||
->select();
|
->select();
|
||||||
|
|
||||||
if (!is_null($rs) && !$rs->isEmpty()) {
|
if (!is_null($rs) && !$rs->isEmpty()) {
|
||||||
while ($rs->fetch()) {
|
while ($rs->fetch()) {
|
||||||
$user_cn = dcUtils::getUserCN(
|
$user_cn = App::users()->getUserCN(
|
||||||
$rs->f('user_id'),
|
$rs->f('user_id'),
|
||||||
$rs->f('user_name'),
|
$rs->f('user_name'),
|
||||||
$rs->f('user_firstname'),
|
$rs->f('user_firstname'),
|
||||||
|
@ -943,7 +957,7 @@ class ZoneclearFeedServer
|
||||||
]);
|
]);
|
||||||
|
|
||||||
# --BEHAVIOR-- zoneclearFeedServerPublicUrlTypes -- ArrayObject
|
# --BEHAVIOR-- zoneclearFeedServerPublicUrlTypes -- ArrayObject
|
||||||
dcCore::app()->callBehavior('zoneclearFeedServerPublicUrlTypes', $types);
|
App::behavior()->callBehavior('zoneclearFeedServerPublicUrlTypes', $types);
|
||||||
|
|
||||||
return $types->getArrayCopy();
|
return $types->getArrayCopy();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue