PageRenderTime 46ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/phpical/preferences.php

https://gitlab.com/endomorphosis/fusenews
PHP | 303 lines | 274 code | 23 blank | 6 comment | 56 complexity | 1cefcabfdbe7990d027e5d9794d4931f MD5 | raw file
  1. <?php
  2. define('BASE','./');
  3. $current_view = 'preferences';
  4. require_once(BASE.'functions/init.inc.php');
  5. require_once(BASE.'functions/template.php');
  6. $display_date = $lang['l_preferences'];
  7. if ($phpiCal_config->allow_preferences != 'yes') {
  8. exit(error($lang['l_prefs_off'], $cal));
  9. }
  10. $current_view = "preferences";
  11. $back_page = BASE.$phpiCal_config->default_view.'.php?cal='.$cal.'&amp;getdate='.$getdate.'&amp;cpath='.$cpath;
  12. if ($phpiCal_config->allow_preferences == 'no') header("Location: $back_page");
  13. if (isset($_GET['action'])) {
  14. $action = $_GET['action'];
  15. } else {
  16. $action = '';
  17. }
  18. $startdays = array ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
  19. if ($action == 'setcookie') {
  20. $cookie_language = $_POST['cookie_language'];
  21. $cookie_cpath = $_POST['cpath'];
  22. $cookie_calendar = $_POST['cookie_calendar'];
  23. $cookie_view = $_POST['cookie_view'];
  24. $cookie_style = $_POST['cookie_style'];
  25. $cookie_startday = $_POST['cookie_startday'];
  26. $cookie_time = $_POST['cookie_time'];
  27. $cookie_timeformat = $_POST['cookie_timeformat'];
  28. $cookie_endtime = $_POST['cookie_endtime'];
  29. $cookie_timezone = $_POST['cookie_timezone'];
  30. $cookie_unset = @$_POST['unset'];
  31. $the_cookie = array (
  32. "cookie_language" => "$cookie_language",
  33. "cookie_calendar" => "$cookie_calendar",
  34. "cookie_view" => "$cookie_view",
  35. "cookie_startday" => "$cookie_startday",
  36. "cookie_style" => "$cookie_style",
  37. "cookie_time" => "$cookie_time",
  38. "cookie_endtime" => "$cookie_endtime",
  39. "cookie_timeformat" => "$cookie_timeformat",
  40. "cookie_cpath" => "$cookie_cpath",
  41. "cookie_timezone" => "$cookie_timezone"
  42. );
  43. $the_cookie = addslashes(serialize($the_cookie));
  44. if (isset($cookie_unset)) {
  45. setcookie("$cookie_name","$the_cookie",time()-(60*60*24*7) ,"/","$phpiCal_config->cookie_uri",0);
  46. } else {
  47. setcookie("$cookie_name","$the_cookie",time()+(60*60*24*7*12*10) ,"/","$phpiCal_config->cookie_uri",0);
  48. if (isset($_POST['cookie_view']))
  49. $phpiCal_config->default_view = $_POST['cookie_view'];
  50. if (isset($_POST['cookie_style']) && is_dir(BASE.'templates/'.$_POST['cookie_style'].'/'))
  51. $phpiCal_config->template = $_POST['cookie_style'];
  52. if (isset($_POST['cookie_language']) && is_file(BASE.'languages/'.strtolower($_POST['cookie_language']).'.inc.php'))
  53. include(BASE.'languages/'.strtolower($_POST['cookie_language']).'.inc.php');
  54. }
  55. $_COOKIE[$cookie_name] = $the_cookie;
  56. $cpath = $cookie_cpath;
  57. $cal = $cookie_calendar;
  58. }
  59. if (isset($_COOKIE[$cookie_name])) {
  60. $phpicalendar = unserialize(stripslashes($_COOKIE[$cookie_name]));
  61. $cookie_language = $phpicalendar['cookie_language'];
  62. $cookie_calendar = $phpicalendar['cookie_calendar'];
  63. $cookie_view = $phpicalendar['cookie_view'];
  64. $cookie_style = $phpicalendar['cookie_style'];
  65. $cookie_startday = $phpicalendar['cookie_startday'];
  66. $cookie_time = $phpicalendar['cookie_time'];
  67. $cookie_endtime = $phpicalendar['cookie_endtime'];
  68. $cookie_timeformat = $phpicalendar['cookie_timeformat'];
  69. $cookie_timezone = $phpicalendar['cookie_timezone'];
  70. if ($cookie_unset) {
  71. unset ($cookie_language, $cookie_calendar, $cookie_view, $cookie_style, $cookie_startday, $cookie_time, $cookie_endtime, $cookie_timeformat, $cookie_timezone);
  72. }
  73. }
  74. if ((!isset($_COOKIE[$cookie_name])) || isset($cookie_unset)) {
  75. # No cookie set -> use defaults from config file.
  76. $cookie_language = ucfirst($language);
  77. $cookie_calendar = $phpiCal_config->default_cal;
  78. $cookie_view = $phpiCal_config->default_view;
  79. $cookie_style = $phpiCal_config->template;
  80. $cookie_startday = $phpiCal_config->week_start_day;
  81. $cookie_time = $phpiCal_config->day_start;
  82. $cookie_endtime = $phpiCal_config->day_end;
  83. $cookie_timeformat = $timeFormat;
  84. $cookie_timezone = $phpiCal_config->timezone;
  85. }
  86. if ($action == 'setcookie') {
  87. if (!$cookie_unset) {
  88. $message = $lang['l_prefs_set'];
  89. } else {
  90. $message = $lang['l_prefs_unset'];
  91. }
  92. } else {
  93. $message = '';
  94. }
  95. // select for languages
  96. $dir_handle = @opendir(BASE.'languages/');
  97. $tmp_pref_language = urlencode(ucfirst($language));
  98. $language_select = '';
  99. while ($file = readdir($dir_handle)) {
  100. if (substr($file, -8) == ".inc.php") {
  101. $language_tmp = urlencode(ucfirst(substr($file, 0, -8)));
  102. if ($language_tmp == $cookie_language) {
  103. $language_select .= '<option value="'.$language_tmp.'" selected="selected">'.$language_tmp.'</option>';
  104. } else {
  105. $language_select .= '<option value="'.$language_tmp.'">'.$language_tmp.'</option>';
  106. }
  107. }
  108. }
  109. closedir($dir_handle);
  110. // select for calendars
  111. $calendar_select = display_ical_list(availableCalendars($username, $password, $phpiCal_config->ALL_CALENDARS_COMBINED),TRUE);
  112. $calendar_select .="<option value=\"$phpiCal_config->ALL_CALENDARS_COMBINED\">$all_cal_comb_lang</option>";
  113. $calendar_select = str_replace("<option value=\"$cookie_calendar\">","<option value=\"$cookie_calendar\" selected='selected'>",$calendar_select);
  114. // select for dayview
  115. $view_select = ($phpiCal_config->default_view == 'day' ) ? '<option value="day" selected="selected">{L_DAY}</option>' : '<option value="day">{L_DAY}</option>';
  116. $view_select .= ($phpiCal_config->default_view == 'week' ) ? '<option value="week" selected="selected">{L_WEEK}</option>' : '<option value="week">{L_WEEK}</option>';
  117. $view_select .= ($phpiCal_config->default_view == 'month') ? '<option value="month" selected="selected">{L_MONTH}</option>' : '<option value="month">{L_MONTH}</option>';
  118. // select for time
  119. $time_select = '';
  120. for ($i = 000; $i <= 2400; $i += 100) {
  121. $s = sprintf("%04d", $i);
  122. $time_select .= '<option value="'.$s.'"';
  123. if ($s == $cookie_time) {
  124. $time_select .= ' selected="selected"';
  125. }
  126. $time_select .= ">$s</option>\n";
  127. }
  128. $endtime_select = '';
  129. for ($i = 000; $i <= 2400; $i += 100) {
  130. $s = sprintf("%04d", $i);
  131. $endtime_select .= '<option value="'.$s.'"';
  132. if ($s == $cookie_endtime) {
  133. $endtime_select .= ' selected="selected"';
  134. }
  135. $endtime_select .= ">$s</option>\n";
  136. }
  137. $timeformat_select = '';
  138. $timeformat_arr = array(
  139. 'g:i',
  140. 'h:i',
  141. 'g:i A',
  142. 'h:i A',
  143. 'G:i',
  144. 'H:i',
  145. );
  146. $example_time = strtotime("19700101 08:00:00");
  147. foreach ($timeformat_arr as $i => $s) {
  148. $s = date($timeformat_arr[$i], $example_time)."/".date($timeformat_arr[$i], ($example_time + 12*60*60));
  149. $timeformat_select .= '<option value="'.urlencode($timeformat_arr[$i]).'"';
  150. if ($timeformat_arr[$i] == $cookie_timeformat) {
  151. $timeformat_select .= ' selected="selected"';
  152. }
  153. $timeformat_select .= ">$s</option>\n";
  154. }
  155. // select for day of week
  156. $i=0;
  157. $startday_select = '';
  158. foreach ($daysofweek_lang as $daysofweek) {
  159. if ($startdays[$i] == $cookie_startday) {
  160. $startday_select .= '<option value="'.$startdays[$i].'" selected="selected">'.$daysofweek.'</option>';
  161. } else {
  162. $startday_select .= '<option value="'.$startdays[$i].'">'.$daysofweek.'</option>';
  163. }
  164. $i++;
  165. }
  166. $timezone_subset = array(
  167. '',
  168. 'GMT',
  169. 'US/Hawaii',
  170. 'US/Pacific',
  171. 'US/Mountain',
  172. 'US/Central',
  173. 'US/Eastern',
  174. 'Canada/Newfoundland',
  175. 'CET',
  176. 'EET',
  177. 'Etc/GMT-14',
  178. 'Etc/GMT-13',
  179. 'Etc/GMT-12',
  180. 'Etc/GMT-11',
  181. 'Etc/GMT-10',
  182. 'Etc/GMT-9',
  183. 'Etc/GMT-8',
  184. 'Etc/GMT-7',
  185. 'Etc/GMT-6',
  186. 'Etc/GMT-5',
  187. 'Etc/GMT-4',
  188. 'Etc/GMT-3',
  189. 'Etc/GMT-2',
  190. 'Etc/GMT-1',
  191. 'Etc/GMT+1',
  192. 'Etc/GMT+2',
  193. 'Etc/GMT+3',
  194. 'Etc/GMT+4',
  195. 'Etc/GMT+5',
  196. 'Etc/GMT+6',
  197. 'Etc/GMT+7',
  198. 'Etc/GMT+8',
  199. 'Etc/GMT+9',
  200. 'Etc/GMT+10',
  201. 'Etc/GMT+11',
  202. 'Etc/GMT+12',
  203. 'MET',
  204. 'Mexico/General',
  205. 'NZ',
  206. 'WET'
  207. );
  208. $timezone_select = '';
  209. foreach ($timezone_subset as $timezone) {
  210. if ($timezone == $cookie_timezone) {
  211. $timezone_select .= "<option value='$timezone' selected='selected'>$timezone</option>\n";
  212. } else {
  213. $timezone_select .= "<option value='$timezone'>$timezone</option>\n";
  214. }
  215. }
  216. $dir_handle = @opendir(BASE.'templates/');
  217. $style_select = '';
  218. while ($file = readdir($dir_handle)) {
  219. if (($file != ".") && ($file != "..") && ($file != "CVS")) {
  220. if (is_dir(BASE.'templates/'.$file)) {
  221. $file_disp = ucfirst($file);
  222. $style_select .= ($file == "$cookie_style") ? "<option value=\"$file\" selected=\"selected\">$file_disp</option>\n" : "<option value=\"$file\">$file_disp</option>\n";
  223. }
  224. }
  225. }
  226. closedir($dir_handle);
  227. $page = new Page(BASE.'templates/'.$phpiCal_config->template.'/preferences.tpl');
  228. $page->replace_files(array(
  229. 'header' => BASE.'templates/'.$phpiCal_config->template.'/header.tpl',
  230. 'footer' => BASE.'templates/'.$phpiCal_config->template.'/footer.tpl'
  231. ));
  232. $page->replace_tags(array(
  233. 'version' => $phpiCal_config->phpicalendar_version,
  234. 'charset' => $phpiCal_config->charset,
  235. 'template' => $phpiCal_config->template,
  236. 'default_path' => $phpiCal_config->default_path,
  237. 'cpath' => $cpath,
  238. 'cal' => $cal,
  239. 'getdate' => $getdate,
  240. 'calendar_name' => $cal_displayname,
  241. 'display_date' => $display_date,
  242. 'rss_powered' => $rss_powered,
  243. 'rss_available' => '',
  244. 'rss_valid' => '',
  245. 'event_js' => '',
  246. 'language_select' => $language_select,
  247. 'timezone_select' => $timezone_select,
  248. 'calendar_select' => $calendar_select,
  249. 'view_select' => $view_select,
  250. 'time_select' => $time_select,
  251. 'endtime_select' => $endtime_select,
  252. 'timeformat_select' => $timeformat_select,
  253. 'startday_select' => $startday_select,
  254. 'style_select' => $style_select,
  255. 'display_date' => $lang['l_preferences'],
  256. 'message' => $message,
  257. 'l_preferences' => $lang['l_preferences'],
  258. 'l_prefs_subhead' => $lang['l_prefs_subhead'],
  259. 'l_select_lang' => $lang['l_select_lang'],
  260. 'l_select_view' => $lang['l_select_view'],
  261. 'l_select_time' => $lang['l_select_time'],
  262. 'l_select_timezone' => $lang['l_select_timezone'],
  263. 'l_select_endtime' => $lang['l_select_endtime'],
  264. 'l_select_timeformat'=> $lang['l_select_timeformat'],
  265. 'l_select_day' => $lang['l_select_day'],
  266. 'l_select_cal' => $lang['l_select_cal'],
  267. 'l_select_style' => $lang['l_select_style'],
  268. 'l_unset_prefs' => $lang['l_unset_prefs'],
  269. 'l_set_prefs' => $lang['l_set_prefs'],
  270. 'l_day' => $lang['l_day'],
  271. 'l_week' => $lang['l_week'],
  272. 'l_month' => $lang['l_month'],
  273. 'l_year' => $lang['l_year'],
  274. 'l_subscribe' => $lang['l_subscribe'],
  275. 'l_download' => $lang['l_download'],
  276. 'l_powered_by' => $lang['l_powered_by'],
  277. 'l_this_site_is' => $lang['l_this_site_is']
  278. ));
  279. $page->output();
  280. ?>