15f08124fSSzymon Olewniczak<?php 25f08124fSSzymon Olewniczak// must be run within DokuWiki 35f08124fSSzymon Olewniczakif (!defined('DOKU_INC')) die(); 45f08124fSSzymon Olewniczak 55f08124fSSzymon Olewniczak/** 65f08124fSSzymon Olewniczak * All DokuWiki plugins to extend the parser/rendering mechanism 75f08124fSSzymon Olewniczak * need to inherit from this class 85f08124fSSzymon Olewniczak */ 95f08124fSSzymon Olewniczakclass action_plugin_ireadit_notification extends DokuWiki_Action_Plugin 105f08124fSSzymon Olewniczak{ 115f08124fSSzymon Olewniczak public function register(Doku_Event_Handler $controller) 125f08124fSSzymon Olewniczak { 135f08124fSSzymon Olewniczak $controller->register_hook('PLUGIN_NOTIFICATION_REGISTER_SOURCE', 'AFTER', $this, 'add_notifications_source'); 145f08124fSSzymon Olewniczak $controller->register_hook('PLUGIN_NOTIFICATION_GATHER', 'AFTER', $this, 'add_notifications'); 155f08124fSSzymon Olewniczak $controller->register_hook('PLUGIN_NOTIFICATION_CACHE_DEPENDENCIES', 'AFTER', $this, 'add_notification_cache_dependencies'); 165f08124fSSzymon Olewniczak } 175f08124fSSzymon Olewniczak 185f08124fSSzymon Olewniczak public function add_notifications_source(Doku_Event $event) 195f08124fSSzymon Olewniczak { 205f08124fSSzymon Olewniczak $event->data[] = 'ireadit'; 215f08124fSSzymon Olewniczak } 225f08124fSSzymon Olewniczak 235f08124fSSzymon Olewniczak public function add_notification_cache_dependencies(Doku_Event $event) 245f08124fSSzymon Olewniczak { 255f08124fSSzymon Olewniczak if (!in_array('ireadit', $event->data['plugins'])) return; 265f08124fSSzymon Olewniczak 275f08124fSSzymon Olewniczak /** @var \helper_plugin_ireadit_db $db_helper */ 285f08124fSSzymon Olewniczak $db_helper = plugin_load('helper', 'ireadit_db'); 295f08124fSSzymon Olewniczak $event->data['dependencies'][] = $db_helper->getDB()->getAdapter()->getDbFile(); 305f08124fSSzymon Olewniczak } 315f08124fSSzymon Olewniczak 325f08124fSSzymon Olewniczak public function add_notifications(Doku_Event $event) 335f08124fSSzymon Olewniczak { 345f08124fSSzymon Olewniczak if (!in_array('ireadit', $event->data['plugins'])) return; 355f08124fSSzymon Olewniczak 365f08124fSSzymon Olewniczak /** @var \helper_plugin_ireadit_db $db_helper */ 375f08124fSSzymon Olewniczak $db_helper = plugin_load('helper', 'ireadit_db'); 385f08124fSSzymon Olewniczak $sqlite = $db_helper->getDB(); 395f08124fSSzymon Olewniczak 405f08124fSSzymon Olewniczak $user = $event->data['user']; 415f08124fSSzymon Olewniczak 425f08124fSSzymon Olewniczak $res = $sqlite->query('SELECT page, rev FROM ireadit 435f08124fSSzymon Olewniczak WHERE timestamp IS NULL 445f08124fSSzymon Olewniczak AND user = ? 455f08124fSSzymon Olewniczak ORDER BY timestamp', $user); 465f08124fSSzymon Olewniczak 475f08124fSSzymon Olewniczak $notifications = $sqlite->res2arr($res); 485f08124fSSzymon Olewniczak 495f08124fSSzymon Olewniczak foreach ($notifications as $notification) { 505f08124fSSzymon Olewniczak $page = $notification['page']; 515f08124fSSzymon Olewniczak $rev = $notification['rev']; 525f08124fSSzymon Olewniczak 53*466d66feSSzymon Olewniczak $link = '<a class="wikilink1" href="' . wl($page, '', true) . '">'; 545f08124fSSzymon Olewniczak if (useHeading('content')) { 555f08124fSSzymon Olewniczak $heading = p_get_first_heading($page); 565f08124fSSzymon Olewniczak if (!blank($heading)) { 575f08124fSSzymon Olewniczak $link .= $heading; 585f08124fSSzymon Olewniczak } else { 595f08124fSSzymon Olewniczak $link .= noNSorNS($page); 605f08124fSSzymon Olewniczak } 615f08124fSSzymon Olewniczak } else { 625f08124fSSzymon Olewniczak $link .= noNSorNS($page); 635f08124fSSzymon Olewniczak } 645f08124fSSzymon Olewniczak $link .= '</a>'; 655f08124fSSzymon Olewniczak $full = sprintf($this->getLang('notification full'), $link); 665f08124fSSzymon Olewniczak $event->data['notifications'][] = [ 675f08124fSSzymon Olewniczak 'plugin' => 'ireadit', 68*466d66feSSzymon Olewniczak 'id' => $page . ':' . $rev, 695f08124fSSzymon Olewniczak 'full' => $full, 705f08124fSSzymon Olewniczak 'brief' => $link, 715f08124fSSzymon Olewniczak 'timestamp' => (int)$rev 725f08124fSSzymon Olewniczak ]; 735f08124fSSzymon Olewniczak } 745f08124fSSzymon Olewniczak } 755f08124fSSzymon Olewniczak} 76