add experimental base for plugin vfeeds (3 pane mode not yet
implemented)
This commit is contained in:
parent
cedfac22e3
commit
a413f53ebf
|
@ -217,9 +217,38 @@ class Feeds extends Handler_Protected {
|
||||||
$search_mode = $method;
|
$search_mode = $method;
|
||||||
}
|
}
|
||||||
// error_log("search_mode: " . $search_mode);
|
// error_log("search_mode: " . $search_mode);
|
||||||
$qfh_ret = queryFeedHeadlines($this->link, $feed, $limit, $view_mode, $cat_view,
|
|
||||||
$search, $search_mode, $override_order, $offset, 0,
|
if (!$cat_view && is_numeric($feed) && $feed < PLUGIN_FEED_BASE_INDEX) {
|
||||||
false, 0, $include_children);
|
global $pluginhost;
|
||||||
|
|
||||||
|
$handler = $pluginhost->get_feed_handler(
|
||||||
|
PluginHost::feed_to_pfeed_id($feed));
|
||||||
|
|
||||||
|
// function queryFeedHeadlines($link, $feed, $limit, $view_mode, $cat_view, $search, $search_mode, $override_order = false, $offset = 0, $owner_uid = 0, $filter = false, $since_id = 0, $include_children = false, $ignore_vfeed_group = false) {
|
||||||
|
|
||||||
|
if ($handler) {
|
||||||
|
$options = array(
|
||||||
|
"limit" => $limit,
|
||||||
|
"view_mode" => $view_mode,
|
||||||
|
"cat_view" => $cat_view,
|
||||||
|
"search" => $search,
|
||||||
|
"search_mode" => $search_mode,
|
||||||
|
"override_order" => $override_order,
|
||||||
|
"offset" => $offset,
|
||||||
|
"owner_uid" => $_SESSION["uid"],
|
||||||
|
"filter" => false,
|
||||||
|
"since_id" => 0,
|
||||||
|
"include_children" => $include_children);
|
||||||
|
|
||||||
|
$qfh_ret = $handler->get_headlines(PluginHost::feed_to_pfeed_id($feed),
|
||||||
|
$options);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$qfh_ret = queryFeedHeadlines($this->link, $feed, $limit, $view_mode, $cat_view,
|
||||||
|
$search, $search_mode, $override_order, $offset, 0,
|
||||||
|
false, 0, $include_children);
|
||||||
|
}
|
||||||
|
|
||||||
if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H1", $timing_info);
|
if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H1", $timing_info);
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ class PluginHost {
|
||||||
private $handlers = array();
|
private $handlers = array();
|
||||||
private $commands = array();
|
private $commands = array();
|
||||||
private $storage = array();
|
private $storage = array();
|
||||||
|
private $feeds = array();
|
||||||
private $owner_uid;
|
private $owner_uid;
|
||||||
private $debug;
|
private $debug;
|
||||||
|
|
||||||
|
@ -301,5 +302,43 @@ class PluginHost {
|
||||||
function get_debug() {
|
function get_debug() {
|
||||||
return $this->debug;
|
return $this->debug;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Plugin feed functions are *EXPERIMENTAL*!
|
||||||
|
|
||||||
|
// cat_id: only -1 is supported (Special)
|
||||||
|
function add_feed($cat_id, $title, $icon, $sender) {
|
||||||
|
if (!$this->feeds[$cat_id]) $this->feeds[$cat_id] = array();
|
||||||
|
|
||||||
|
$id = count($this->feeds[$cat_id]);
|
||||||
|
|
||||||
|
array_push($this->feeds[$cat_id],
|
||||||
|
array('id' => $id, 'title' => $title, 'sender' => $sender, 'icon' => $icon));
|
||||||
|
|
||||||
|
return $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_feeds($cat_id) {
|
||||||
|
return $this->feeds[$cat_id];
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert feed_id (e.g. -129) to pfeed_id first
|
||||||
|
function get_feed_handler($pfeed_id) {
|
||||||
|
foreach ($this->feeds as $cat) {
|
||||||
|
foreach ($cat as $feed) {
|
||||||
|
if ($feed['id'] == $pfeed_id) {
|
||||||
|
return $feed['sender'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static function pfeed_to_feed_id($label) {
|
||||||
|
return PLUGIN_FEED_BASE_INDEX - 1 - abs($label);
|
||||||
|
}
|
||||||
|
|
||||||
|
static function feed_to_pfeed_id($feed) {
|
||||||
|
return PLUGIN_FEED_BASE_INDEX - 1 + abs($feed);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -115,6 +115,32 @@ class Pref_Feeds extends Handler_Protected {
|
||||||
array_push($cat['items'], $this->feedlist_init_feed($i));
|
array_push($cat['items'], $this->feedlist_init_feed($i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Plugin feeds for -1 */
|
||||||
|
|
||||||
|
global $pluginhost;
|
||||||
|
|
||||||
|
$feeds = $pluginhost->get_feeds(-1);
|
||||||
|
|
||||||
|
if ($feeds) {
|
||||||
|
foreach ($feeds as $feed) {
|
||||||
|
$feed_id = PluginHost::pfeed_to_feed_id($feed['id']);
|
||||||
|
|
||||||
|
$item = array();
|
||||||
|
$item['id'] = 'FEED:' . $feed_id;
|
||||||
|
$item['bare_id'] = (int)$feed_id;
|
||||||
|
$item['name'] = $feed['title'];
|
||||||
|
$item['checkbox'] = false;
|
||||||
|
$item['error'] = '';
|
||||||
|
$item['icon'] = $feed['icon'];
|
||||||
|
|
||||||
|
$item['param'] = '';
|
||||||
|
$item['unread'] = 0; //$feed['sender']->get_unread($feed['id']);
|
||||||
|
$item['type'] = 'feed';
|
||||||
|
|
||||||
|
array_push($cat['items'], $item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($enable_cats) {
|
if ($enable_cats) {
|
||||||
array_push($root['items'], $cat);
|
array_push($root['items'], $cat);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
define('SCHEMA_VERSION', 109);
|
define('SCHEMA_VERSION', 109);
|
||||||
|
|
||||||
define('LABEL_BASE_INDEX', -1024);
|
define('LABEL_BASE_INDEX', -1024);
|
||||||
|
define('PLUGIN_FEED_BASE_INDEX', -128);
|
||||||
|
|
||||||
$fetch_last_error = false;
|
$fetch_last_error = false;
|
||||||
$pluginhost = false;
|
$pluginhost = false;
|
||||||
|
@ -1430,6 +1431,20 @@
|
||||||
array_push($ret_arr, $cv);
|
array_push($ret_arr, $cv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
global $pluginhost;
|
||||||
|
|
||||||
|
if ($pluginhost) {
|
||||||
|
$feeds = $pluginhost->get_feeds(-1);
|
||||||
|
|
||||||
|
foreach ($feeds as $feed) {
|
||||||
|
$cv = array("id" => PluginHost::pfeed_to_feed_id($feed['id']),
|
||||||
|
"counter" => $feed['sender']->get_unread($feed['id']));
|
||||||
|
|
||||||
|
array_push($ret_arr, $cv);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return $ret_arr;
|
return $ret_arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
<?php
|
||||||
|
class Example_VFeed extends Plugin {
|
||||||
|
|
||||||
|
// Demonstrates how to create a dummy special feed and chain
|
||||||
|
// headline generation to queryFeedHeadlines();
|
||||||
|
|
||||||
|
// Not implemented yet: stuff for 3 panel mode
|
||||||
|
|
||||||
|
private $link;
|
||||||
|
private $host;
|
||||||
|
private $dummy_id;
|
||||||
|
|
||||||
|
function about() {
|
||||||
|
return array(1.0,
|
||||||
|
"Example vfeed plugin",
|
||||||
|
"fox",
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function init($host) {
|
||||||
|
$this->link = $host->get_link();
|
||||||
|
$this->host = $host;
|
||||||
|
|
||||||
|
$this->dummy_id = $host->add_feed(-1, 'Dummy feed', 'images/pub_set.svg', $this);
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_unread($feed_id) {
|
||||||
|
return 1234;
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_headlines($feed_id, $options) {
|
||||||
|
$qfh_ret = queryFeedHeadlines($this->link, -4,
|
||||||
|
$options['limit'],
|
||||||
|
$options['view_mode'], $options['cat_view'],
|
||||||
|
$options['search'],
|
||||||
|
$options['search_mode'],
|
||||||
|
$options['override_order'],
|
||||||
|
$options['offset'],
|
||||||
|
$options['owner_uid'],
|
||||||
|
$options['filter'],
|
||||||
|
$options['since_id'],
|
||||||
|
$options['include_children']);
|
||||||
|
|
||||||
|
$qfh_ret[1] = 'Dummy feed';
|
||||||
|
|
||||||
|
return $qfh_ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
Loading…
Reference in New Issue