Merge branch 'marked-hook' into 'master'
add plugin hooks invoked when articles get un/marked or un/published See merge request tt-rss/tt-rss!123
This commit is contained in:
@@ -284,6 +284,12 @@ class API extends Handler {
|
|||||||
WHERE ref_id IN ($article_qmarks) AND owner_uid = ?");
|
WHERE ref_id IN ($article_qmarks) AND owner_uid = ?");
|
||||||
$sth->execute([...$article_ids, $_SESSION['uid']]);
|
$sth->execute([...$article_ids, $_SESSION['uid']]);
|
||||||
|
|
||||||
|
if ($field == 'marked')
|
||||||
|
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_MARK_TOGGLED, $article_ids);
|
||||||
|
|
||||||
|
if ($field == 'published')
|
||||||
|
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_PUBLISH_TOGGLED, $article_ids);
|
||||||
|
|
||||||
$num_updated = $sth->rowCount();
|
$num_updated = $sth->rowCount();
|
||||||
|
|
||||||
return $this->_wrap(self::STATUS_OK, array("status" => "OK",
|
return $this->_wrap(self::STATUS_OK, array("status" => "OK",
|
||||||
|
|||||||
@@ -98,6 +98,8 @@ class Article extends Handler_Protected {
|
|||||||
int_id = ? AND owner_uid = ?");
|
int_id = ? AND owner_uid = ?");
|
||||||
$sth->execute([$int_id, $owner_uid]);
|
$sth->execute([$int_id, $owner_uid]);
|
||||||
|
|
||||||
|
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_PUBLISH_TOGGLED, [$ref_id]);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$sth = $pdo->prepare("INSERT INTO ttrss_user_entries
|
$sth = $pdo->prepare("INSERT INTO ttrss_user_entries
|
||||||
@@ -106,6 +108,8 @@ class Article extends Handler_Protected {
|
|||||||
VALUES
|
VALUES
|
||||||
(?, '', NULL, NULL, ?, true, '', '', NOW(), '', false, NOW())");
|
(?, '', NULL, NULL, ?, true, '', '', NOW(), '', false, NOW())");
|
||||||
$sth->execute([$ref_id, $owner_uid]);
|
$sth->execute([$ref_id, $owner_uid]);
|
||||||
|
|
||||||
|
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_PUBLISH_TOGGLED, [$ref_id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count($labels) != 0) {
|
if (count($labels) != 0) {
|
||||||
@@ -144,6 +148,8 @@ class Article extends Handler_Protected {
|
|||||||
(?, '', NULL, NULL, ?, true, '', '', NOW(), '', false, NOW())");
|
(?, '', NULL, NULL, ?, true, '', '', NOW(), '', false, NOW())");
|
||||||
$sth->execute([$ref_id, $owner_uid]);
|
$sth->execute([$ref_id, $owner_uid]);
|
||||||
|
|
||||||
|
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_PUBLISH_TOGGLED, [$ref_id]);
|
||||||
|
|
||||||
if (count($labels) != 0) {
|
if (count($labels) != 0) {
|
||||||
foreach ($labels as $label) {
|
foreach ($labels as $label) {
|
||||||
Labels::add_article($ref_id, trim($label), $owner_uid);
|
Labels::add_article($ref_id, trim($label), $owner_uid);
|
||||||
|
|||||||
@@ -713,4 +713,26 @@ abstract class Plugin {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Invoked after passed article IDs were either marked (i.e. starred) or unmarked.
|
||||||
|
*
|
||||||
|
* **Note** resulting state of the articles is not passed to this function (because
|
||||||
|
* tt-rss may do invert operation on ID range), you will need to get this from the database.
|
||||||
|
* @param array<int> $article_ids ref_ids
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function hook_articles_mark_toggled(array $article_ids) {
|
||||||
|
user_error("Dummy method invoked.", E_USER_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Invoked after passed article IDs were either published or unpublished.
|
||||||
|
*
|
||||||
|
* **Note** resulting state of the articles is not passed to this function (because
|
||||||
|
* tt-rss may do invert operation on ID range), you will need to get this from the database.
|
||||||
|
*
|
||||||
|
* @param array<int> $article_ids ref_ids
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function hook_articles_publish_toggled(array $article_ids) {
|
||||||
|
user_error("Dummy method invoked.", E_USER_ERROR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -199,6 +199,12 @@ class PluginHost {
|
|||||||
/** @see Plugin::hook_validate_session() */
|
/** @see Plugin::hook_validate_session() */
|
||||||
const HOOK_VALIDATE_SESSION = "hook_validate_session";
|
const HOOK_VALIDATE_SESSION = "hook_validate_session";
|
||||||
|
|
||||||
|
/** @see Plugin::hook_articles_mark_toggled() */
|
||||||
|
const HOOK_ARTICLES_MARK_TOGGLED = "hook_articles_mark_toggled";
|
||||||
|
|
||||||
|
/** @see Plugin::hook_articles_publish_toggled() */
|
||||||
|
const HOOK_ARTICLES_PUBLISH_TOGGLED = "hook_articles_publish_toggled";
|
||||||
|
|
||||||
const KIND_ALL = 1;
|
const KIND_ALL = 1;
|
||||||
const KIND_SYSTEM = 2;
|
const KIND_SYSTEM = 2;
|
||||||
const KIND_USER = 3;
|
const KIND_USER = 3;
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ class RPC extends Handler_Protected {
|
|||||||
|
|
||||||
$sth->execute([$mark, $id, $_SESSION['uid']]);
|
$sth->execute([$mark, $id, $_SESSION['uid']]);
|
||||||
|
|
||||||
|
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_MARK_TOGGLED, [$id]);
|
||||||
|
|
||||||
print json_encode(array("message" => "UPDATE_COUNTERS"));
|
print json_encode(array("message" => "UPDATE_COUNTERS"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,6 +97,8 @@ class RPC extends Handler_Protected {
|
|||||||
|
|
||||||
$sth->execute([$pub, $id, $_SESSION['uid']]);
|
$sth->execute([$pub, $id, $_SESSION['uid']]);
|
||||||
|
|
||||||
|
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_PUBLISH_TOGGLED, [$id]);
|
||||||
|
|
||||||
print json_encode(array("message" => "UPDATE_COUNTERS"));
|
print json_encode(array("message" => "UPDATE_COUNTERS"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -345,6 +349,8 @@ class RPC extends Handler_Protected {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$sth->execute([...$ids, $_SESSION['uid']]);
|
$sth->execute([...$ids, $_SESSION['uid']]);
|
||||||
|
|
||||||
|
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_MARK_TOGGLED, $ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -369,6 +375,8 @@ class RPC extends Handler_Protected {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$sth->execute([...$ids, $_SESSION['uid']]);
|
$sth->execute([...$ids, $_SESSION['uid']]);
|
||||||
|
|
||||||
|
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_PUBLISH_TOGGLED, $ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
function log(): void {
|
function log(): void {
|
||||||
|
|||||||
@@ -1132,6 +1132,12 @@ class RSSUtils {
|
|||||||
$sth->execute([$ref_id, $feed_obj->owner_uid, $feed, $unread, $last_read_qpart, $marked,
|
$sth->execute([$ref_id, $feed_obj->owner_uid, $feed, $unread, $last_read_qpart, $marked,
|
||||||
$published, $score]);
|
$published, $score]);
|
||||||
|
|
||||||
|
if ($marked)
|
||||||
|
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_MARK_TOGGLED, [$ref_id]);
|
||||||
|
|
||||||
|
if ($published)
|
||||||
|
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_ARTICLES_PUBLISH_TOGGLED, [$ref_id]);
|
||||||
|
|
||||||
$sth = $pdo->prepare("SELECT int_id FROM ttrss_user_entries WHERE
|
$sth = $pdo->prepare("SELECT int_id FROM ttrss_user_entries WHERE
|
||||||
ref_id = ? AND owner_uid = ? AND
|
ref_id = ? AND owner_uid = ? AND
|
||||||
feed_id = ? LIMIT 1");
|
feed_id = ? LIMIT 1");
|
||||||
|
|||||||
Reference in New Issue
Block a user