Skip to content

Commit

Permalink
Make top pages available via DokuWiki's feed
Browse files Browse the repository at this point in the history
Feed supports the same parameters as syntax
  • Loading branch information
annda committed Nov 24, 2020
1 parent e677b52 commit 2378739
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 3 deletions.
53 changes: 52 additions & 1 deletion action.php
Expand Up @@ -21,6 +21,8 @@ public function register(Doku_Event_Handler $controller)
$JSINFO['act'] = $ACT;

$controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'handleAjax');
$controller->register_hook('FEED_MODE_UNKNOWN', 'BEFORE', $this, 'handleFeed');
$controller->register_hook('FEED_ITEM_ADD', 'BEFORE', $this, 'handleFeedItemAdd');
}

/**
Expand All @@ -47,6 +49,55 @@ public function handleAjax(Doku_Event $event)
echo 'counted';
}

}
/**
* Fetch and add top pages to FeedCreator.
*
* Supported feed parameters:
* - mode: plugin-top (required)
* - lang: optional
* - month: optional (YYYYMM)
* - num: optional number of results (default = 10)
*
* @param Doku_Event $event
*/
public function handleFeed(Doku_Event $event)
{
$opt = $event->data['opt'];
if ($opt['feed_mode'] !== 'plugin-top') return;

$event->preventDefault();

// set defaults as expected by the helper's best() method
$lang = isset($opt['lang']) ? $opt['lang'] : null;
$month = isset($opt['month']) ? $opt['month'] : null;
$num = isset($opt['num']) ? $opt['num'] : 10;

/** @var helper_plugin_top $hlp */
$hlp = plugin_load('helper', 'top');
$pages = $hlp->best($lang, $month, $num);

if (empty($pages)) return;

foreach ($pages as $page) {
$event->data['data'][] = [
'id' => $page['page'],
'score' => $page['value'],
];
}
}

/**
* Set our data in feed item
*
* @param Doku_Event $event
*/
public function handleFeedItemAdd(Doku_Event $event)
{
if ($event->data['opt']['feed_mode'] !== 'plugin-top') return;

$event->data['item']->title = $event->data['ditem']['id'];
$event->data['item']->link = hsc(wl($event->data['ditem']['id'], '', true));
$event->data['item']->description = $event->data['ditem']['score'];
}
}
// vim:ts=4:sw=4:et:
4 changes: 2 additions & 2 deletions helper.php
Expand Up @@ -65,8 +65,8 @@ public function add($page)
/**
* Get the most visited pages
*
* @param $lang
* @param $month
* @param string|null $lang
* @param string|null $month
* @param int $num
* @return array
*/
Expand Down

0 comments on commit 2378739

Please sign in to comment.