1c7d53eabSSzymon Olewniczak<?php 2b664e7d8SSzymon Olewniczak 31989ee26SSzymon Olewniczakuse dokuwiki\Extension\ActionPlugin; 41989ee26SSzymon Olewniczakuse dokuwiki\Extension\EventHandler; 51989ee26SSzymon Olewniczakuse dokuwiki\Extension\Event; 6c7d53eabSSzymon Olewniczak 71989ee26SSzymon Olewniczakclass action_plugin_approve_notification extends ActionPlugin 81989ee26SSzymon Olewniczak{ 9c7d53eabSSzymon Olewniczak /** 101989ee26SSzymon Olewniczak * @inheritDoc 11c7d53eabSSzymon Olewniczak */ 121989ee26SSzymon Olewniczak public function register(EventHandler $controller) 13c7d53eabSSzymon Olewniczak { 141989ee26SSzymon Olewniczak $controller->register_hook('PLUGIN_NOTIFICATION_REGISTER_SOURCE', 'AFTER', $this, 'addNotificationsSource'); 151989ee26SSzymon Olewniczak $controller->register_hook('PLUGIN_NOTIFICATION_GATHER', 'AFTER', $this, 'addNotifications'); 161989ee26SSzymon Olewniczak $controller->register_hook('PLUGIN_NOTIFICATION_CACHE_DEPENDENCIES', 'AFTER', $this, 'addNotificationCacheDependencies'); 17c7d53eabSSzymon Olewniczak } 18c7d53eabSSzymon Olewniczak 191989ee26SSzymon Olewniczak public function addNotificationsSource(Event $event) 20c7d53eabSSzymon Olewniczak { 21c7d53eabSSzymon Olewniczak $event->data[] = 'approve'; 22c7d53eabSSzymon Olewniczak } 23c7d53eabSSzymon Olewniczak 241989ee26SSzymon Olewniczak public function addNotificationCacheDependencies(Event $event) 25c7d53eabSSzymon Olewniczak { 26c7d53eabSSzymon Olewniczak if (!in_array('approve', $event->data['plugins'])) return; 27c7d53eabSSzymon Olewniczak 28b59355cdSSzymon Olewniczak /** @var \helper_plugin_approve_db $db */ 29b59355cdSSzymon Olewniczak $db = $this->loadHelper('approve_db'); 301989ee26SSzymon Olewniczak $event->data['dependencies'][] = $db->getDbFile(); 31c7d53eabSSzymon Olewniczak } 32c7d53eabSSzymon Olewniczak 331989ee26SSzymon Olewniczak public function addNotifications(Event $event) 34c7d53eabSSzymon Olewniczak { 35c7d53eabSSzymon Olewniczak if (!in_array('approve', $event->data['plugins'])) return; 36c7d53eabSSzymon Olewniczak 37b664e7d8SSzymon Olewniczak $user = $event->data['user']; 381989ee26SSzymon Olewniczak 39b59355cdSSzymon Olewniczak /** @var \helper_plugin_approve_db $db */ 40b59355cdSSzymon Olewniczak $db = $this->loadHelper('approve_db'); 41c7d53eabSSzymon Olewniczak 42b664e7d8SSzymon Olewniczak $states = ['draft', 'ready_for_approval']; 439b6ad60bSSzymon Olewniczak if ($this->getConf('ready_for_approval_notification')) { 44b664e7d8SSzymon Olewniczak $states = ['ready_for_approval']; 459b6ad60bSSzymon Olewniczak } 46c7d53eabSSzymon Olewniczak 471989ee26SSzymon Olewniczak $notifications = $db->getPages($user, $states); 48c7d53eabSSzymon Olewniczak 49c7d53eabSSzymon Olewniczak foreach ($notifications as $notification) { 50*efd48b48SSzymon Olewniczak $id = $notification['id']; 51c7d53eabSSzymon Olewniczak $rev = $notification['rev']; 52c7d53eabSSzymon Olewniczak 53*efd48b48SSzymon Olewniczak $link = '<a class="wikilink1" href="' . wl($id, '', true) . '">'; 54c7d53eabSSzymon Olewniczak if (useHeading('content')) { 55*efd48b48SSzymon Olewniczak $heading = p_get_first_heading($id); 56c7d53eabSSzymon Olewniczak if (!blank($heading)) { 57c7d53eabSSzymon Olewniczak $link .= $heading; 58c7d53eabSSzymon Olewniczak } else { 59*efd48b48SSzymon Olewniczak $link .= noNSorNS($id); 60c7d53eabSSzymon Olewniczak } 61c7d53eabSSzymon Olewniczak } else { 62*efd48b48SSzymon Olewniczak $link .= noNSorNS($id); 63c7d53eabSSzymon Olewniczak } 64c7d53eabSSzymon Olewniczak $link .= '</a>'; 65c7d53eabSSzymon Olewniczak $full = sprintf($this->getLang('notification full'), $link); 66c7d53eabSSzymon Olewniczak $event->data['notifications'][] = [ 67e000d14fSSzymon Olewniczak 'plugin' => 'approve', 68*efd48b48SSzymon Olewniczak 'id' => $id.':'.$rev, 69c7d53eabSSzymon Olewniczak 'full' => $full, 70c7d53eabSSzymon Olewniczak 'brief' => $link, 71c7d53eabSSzymon Olewniczak 'timestamp' => (int)$rev 72c7d53eabSSzymon Olewniczak ]; 73c7d53eabSSzymon Olewniczak } 74c7d53eabSSzymon Olewniczak } 75c7d53eabSSzymon Olewniczak} 76