1 <?php
2 global $lib_exe;
3 $lib_exe = false;
4 if(strpos(dirname(__FILE__), 'lib/exe')) {
5    define("INC_DIR", "../../inc");
6    $lib_exe = true;
7 }
8 else {
9   define("INC_DIR", "./inc");
10  }
11 
12 require_once  INC_DIR . '/init.php';
13 require_once DOKU_INC . 'lib/plugins/news/scripts/rss.php';
14 require_once DOKU_INC . 'lib/plugins/news/helper.php';
15 $newsfeed_ini = DOKU_INC . 'lib/plugins/news/scripts/newsfeed.ini';
16 global $conf;
17 global $newsChannelTitle;
18 global $newsChannelDescription;
19 global $newsChannelTtl;
20 global $newsFeedURL,$INPUT, $helper;
21 $newsFeedURL = "";
22 $refresh=false;
23 $title = "";
24 $test = "";
25 $helper = new  helper_plugin_news();
26 
27 if(isset($_POST) && isset($_POST['feed']) && $_POST['feed']=='refresh') {
28   $refresh = true;
29   if(isset($_POST['title'])) {
30       $title = $INPUT->str('title');
31   }
32 }
33 else if($argc > 1) {
34     $title = $argv[1];
35 }
36 else if(isset($_GET) && isset($_GET['feed'])) {
37   $title = $INPUT->str('feed');
38 }
39 if(isset($_POST)  || isset($_GET) ) {
40   if(isset($_REQUEST['test']) && !is_writable(DOKU_INC) ) {
41      echo  DOKU_INC . " is not writable by the web server.<br />Please check your permissions.";
42      return;
43   }
44 }
45 $minute = 60;
46 $default_ttl = 720*$minute;
47 $ttl = 0;
48 $filetime = 0;
49 $curent_time = time();
50 if($title) {
51    $xml_file = DOKU_INC . $title . '_news.xml';
52 }
53 else {
54  $xml_file = DOKU_INC . 'news_feed.xml';
55  }
56  if(file_exists($newsfeed_ini)) {
57     $ini_array = parse_ini_file($newsfeed_ini, true);
58     $which = isset($ini_array[$title]) ? $title : 'default';
59     $newsChannelTitle = $ini_array[$which]['title'];
60     $newsChannelDescription = $ini_array[$which]['description'] ;
61     $newsChannelTtl = isset($ini_array[$which]['ttl']) ? $ini_array[$which]['ttl'] : $helper->ttl();
62 
63 }
64 
65 	if(isset($conf['plugin']['news'])) {
66 		if(isset($conf['plugin']['news']['ttl'])) {
67 			$ttl = $conf['plugin']['news']['ttl'];
68 			if($ttl) $ttl *= $minute;
69 		}
70 		if(!$newsChannelTitle && isset($conf['plugin']['news']['title'])) {
71 			$newsChannelTitle = $conf['plugin']['news']['title'];
72 		}
73 		if(!$newsChannelDescription && isset($conf['plugin']['news']['desc'])) {
74 			$newsChannelDescription = $conf['plugin']['news']['desc'];
75 		}
76 		if(!$newsChannelTtl && isset($conf['plugin']['news']['ttl'])) {
77 			$newsChannelTtl = $conf['plugin']['news']['ttl'];
78 		}
79 	 	if(isset($conf['plugin']['news']['url'])) {
80 			$newsFeedURL = $conf['plugin']['news']['url'];
81 		}
82 	}
83 
84 	if(!$ttl) $ttl = $default_ttl;
85     if(@file_exists($xml_file)) {
86 	    $filetime = filemtime($xml_file);
87 	}
88 
89 	$time_elapsed = ($curent_time - $filetime);
90 	if($time_elapsed >= $ttl || $lib_exe || $refresh) {
91 		new externalNewsFeed($xml_file,$ttl/$minute,$title);
92 		if($lib_exe) {
93 		    chmod($xml_file, 0666);
94 		}
95 	}
96 	if(!$lib_exe && ! $refresh) {
97       header('Content-type: application/xml');
98 	  readfile($xml_file);
99 	  }
100 
101 	if($refresh) {
102             header('Content-type: text/html');
103 			if(@file_exists($xml_file)) {
104 				$create_time= filectime($xml_file);
105 				if($create_time >= $current_time) {
106 				  echo '<span style="font-size: 11pt">';
107 				   echo 'Feed generated: ' . date('r',$create_time) , '</span><br/>';
108 				}
109 				else echo "New Feed may not have been not created<br />";
110 			}
111 
112          	        $id = htmlentities(urldecode($INPUT->str('feed_ref')));
113 			$ret_url = DOKU_URL . 'doku.php?id=' . $id;
114 			echo '<br /><a href ="' . $ret_url . '" style="font-size: 12pt;color:#8cacbb">Return to ' . $id . '</a>';
115 	}
116 
117 
118  exit;
119 
120 ?>