1 <?php
2     /**
3      *  newfeed plugin
4      * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
5      */
6 
7     // must be run within DokuWiki
8     if(!defined('DOKU_INC')) die();
9 
10     if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
11     require_once(DOKU_PLUGIN.'syntax.php');
12 
13 
14 
15     /**
16      * All DokuWiki plugins to extend the parser/rendering mechanism
17      * need to inherit from this class
18      */
19     class syntax_plugin_news_button extends DokuWiki_Syntax_Plugin {
20         var $helper;
21 
22 	    function syntax_plugin_news_feed() {
23 		   //$this->helper =& plugin_load('helper', 'news');
24 		}
25         /**
26          * return some info
27          */
28         function getInfo(){
29             return array(
30                 'author' => 'Myron Turner',
31                 'email'  => 'turnermm02@shaw.ca',
32                 'date'   => '2011-10-18',
33                 'name'   => 'news Plugin',
34                 'desc'   => 'creates newsfeed refresh button',
35                 'url'    => 'http://www.mturner.org',
36             );
37         }
38 
39         function getType(){ return 'substition'; }
40 
41 		function getSort(){ return 168; }
42 
43 		function connectTo($mode) {
44 		    $this->Lexer->addSpecialPattern('~~NEWS_REFRESH.*?~~',$mode,'plugin_news_button');
45 		}
46 
47         /**
48          * Handle the match
49          */
50         function handle($match, $state, $pos, Doku_Handler $handler){
51 
52 	   global $USERINFO;
53 	   global $ID;
54 	   global $INFO;
55 
56       if(!isset($USERINFO)) return false;
57 	  if(isset($INFO['perm']) && $INFO['perm'] < 2) return;
58 	   $match=substr($match,15,-2);
59       // msg($match);
60        $match = trim($match);
61        if($match) {
62           $title = $match;
63        }
64 
65        $action =  DOKU_URL . 'newsfeed.php';
66        $button_name = $this->getLang('btn_generate');
67        $button="<form class='button' method='POST' action='$action '>";
68        $button .= "<div class='no'>";
69        //msg($match);
70        if($match) {
71            $button .= "<input type='hidden' name='title' value='$title' />";
72        }
73        $button .= "<input type='hidden' name='feed' value='refresh' /><input type='hidden' name='feed_ref' value='" . $ID. "' /><input type='submit' value='$button_name' class='button' title='refresh' /></div></form>";
74 
75             switch ($state) {
76 
77 			    case DOKU_LEXER_SPECIAL : return array($state, $button);
78 
79             }
80 
81             return false;
82         }
83 
84         /**
85          * Create output
86          */
87         function render($mode, Doku_Renderer $renderer, $data) {
88 
89 	    global $USERINFO;
90 	    global $INFO;
91 
92         if(!isset($USERINFO)) return false;
93         if(isset($INFO['perm']) && $INFO['perm'] < 2) return;
94 
95             if($mode == 'xhtml'){
96                 list($state, $button) = $data;
97                 switch ($state) {
98 				  case DOKU_LEXER_SPECIAL :
99 				  $renderer->doc .= $button;
100 				  return true;
101                 }
102             }
103             return false;
104         }
105 
106 
107 
108 }
109