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

/root/calendar_post.php

http://phpbb3calendar.googlecode.com/
PHP | 295 lines | 234 code | 30 blank | 31 comment | 29 complexity | 5dbf7438953d95c4a406f0ad465eb543 MD5 | raw file
  1. <?php
  2. /**
  3. *
  4. * @package phpBB3
  5. * @version $Id: calendar_post.php,v ALPHA 3 2007/10/02 10:00:00 Jcc264 Exp $
  6. * @copyright (c) 2007 M and J Media
  7. * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  8. *
  9. */
  10. /**
  11. * @ignore
  12. */
  13. define('IN_PHPBB', true);
  14. $phpbb_root_path = './';
  15. $phpEx = substr(strrchr(__FILE__, '.'), 1);
  16. include($phpbb_root_path . 'common.'.$phpEx);
  17. include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
  18. include($phpbb_root_path . 'includes/functions_calendar.'.$phpEx);
  19. // Start session management
  20. $user->session_begin();
  21. $auth->acl($user->data);
  22. $user->setup(array('posting', 'mods/calendar'));
  23. $user_id = $user->data['user_id'];
  24. //Permisions
  25. $POST_NEW = $auth->acl_get('u_new_event');
  26. $EDIT_SELF = $auth->acl_get('u_edit_event');
  27. $DELETE_SELF = $auth->acl_get('u_delete_event');
  28. $EDIT_OTHERS = ($auth->acl_get('m_edit_event') || $auth->acl_get('a_edit_event'));
  29. $DELETE_OTHERS = ($auth->acl_get('m_delete_event') || $auth->acl_get('a_delete_event'));
  30. $event_id = request_var('event_id',0);
  31. $sql = "SELECT * FROM phpbb_calendar
  32. WHERE event_id='$event_id'";
  33. $result = $db->sql_query($sql);
  34. $event_row = $db->sql_fetchrow($result);
  35. $db->sql_freeresult($result);
  36. $poster_id = (isset($event_row['user_id'])?$event_row['user_id']:$user_id);
  37. $IS_EDIT = (empty($event_row))?false:true;
  38. //Kll people who dont belong here
  39. if($IS_EDIT && (!$EDIT_OTHERS || (!$EDIT_SELF && $poster_id == $user_id)))
  40. {
  41. //This kills edit attemps with no permisions
  42. header('Location:calendar.php');
  43. exit;
  44. }
  45. if(!$IS_EDIT && !$POST_NEW)
  46. {
  47. //Kills new post attempt
  48. header('Location:calendar.php');
  49. exit;
  50. }
  51. if(isset($_POST['cancel']))
  52. {
  53. //returns after a post cancel
  54. header('Location:calendar.php');
  55. exit;
  56. }
  57. //$template->assign_var('S_NEW_MESSAGE', true);
  58. //Get users group info
  59. $sql = 'SELECT ug.group_id, g.group_name FROM ' . USER_GROUP_TABLE . ' ug
  60. INNER JOIN ' . GROUPS_TABLE . ' g
  61. ON ug.group_id=g.group_id
  62. WHERE ug.user_id='.$poster_id.' AND ug.user_pending!=1
  63. ORDER BY ug.group_id';
  64. $result = $db->sql_query($sql);
  65. $user_groups = array();
  66. $user_groups[-1] = 'Personal';
  67. $user_groups[0] = 'Public';
  68. while($grow = $db->sql_fetchrow($result))
  69. {
  70. $user_groups[$grow['group_id']] = $grow['group_name'];
  71. }
  72. $db->sql_freeresult($result);
  73. //*******************************************************************************************************************************
  74. //Check for delete requests
  75. if((request_var('delete',0) == 1) && $IS_EDIT && ($DELETE_OTHERS || (!$DELETE_SELF && $poster_id == $user_id)))
  76. {
  77. $sql = "DELETE FROM phpbb_calendar WHERE event_id=$event_id";
  78. $message = 'This event has been deleted successfully.';
  79. $db->sql_query($sql);
  80. $meta_info = 'calendar.php';
  81. meta_refresh(3, $meta_info);
  82. trigger_error($message);
  83. exit;
  84. }
  85. //*******************************************************************************************************************************
  86. //User is posting a edit or a new event
  87. if(isset($_POST['post']))
  88. {
  89. //Check for missing information
  90. $event_name = utf8_normalize_nfc(request_var('name','', true));
  91. if($event_name == '')
  92. {
  93. $error[]=(($IS_EDIT)?$user->lang['calendar_edit_name_error']:$user->lang['calendar_post_name_error']);
  94. }
  95. if(!$event_start_time = gen_db_time(request_var('time','')))
  96. {
  97. $error[]=(($IS_EDIT)?$user->lang['calendar_edit_time_error']:$user->lang['calendar_post_time_error']);
  98. }
  99. if(!$event_start_date = gen_db_date(request_var('date','')))
  100. {
  101. $error[]=(($IS_EDIT)?$user->lang['calendar_edit_date_error']:$user->lang['calendar_post_date_error']);
  102. }
  103. $event_desc = utf8_normalize_nfc(request_var('message', '', true));
  104. if($event_desc == '')
  105. {
  106. $error[]=(($IS_EDIT)?$user->lang['calendar_edit_desc_error']:$user->lang['calendar_post_desc_error']);
  107. }
  108. if (isset($error))
  109. {
  110. if ($IS_EDIT)
  111. {
  112. //this is a edit
  113. $template->assign_vars(array(
  114. 'S_HIDDEN_FIELDS' => '<input type="hidden" name="event_id" value="'.$event_id.'">',
  115. 'S_EDIT' => true,
  116. ));
  117. }
  118. $posted_groups = (empty($_POST['group'])?array():$_POST['group']);
  119. foreach($user_groups as $g_num => $g_name)
  120. {
  121. $template->assign_block_vars('group_row',array(
  122. 'GROUP_ID' => $g_num,
  123. 'GROUP_NAME' => ucwords(strtolower( str_replace('_', ' ',$g_name))),
  124. 'GROUP_SELECT' => (in_array($g_num, $posted_groups)?'selected':''),
  125. ));
  126. }
  127. $template->assign_vars(array(
  128. 'ERROR' => implode("<br/>", $error),
  129. 'NUM_GROUPS' => count($user_groups),
  130. 'S_SMILIES_CHECKED' => (request_var('disable_smilies',0)) ? ' checked="checked"':'',
  131. 'S_BBCODE_CHECKED' => (request_var('disable_bbcode',0)) ? ' checked="checked"':'',
  132. 'S_MAGIC_URL_CHECKED' => (request_var('disable_magic_url',0)) ? ' checked="checked"':'',
  133. 'SUBJECT' => $event_name,
  134. 'DATE_IN' => gen_display_date($event_start_date),
  135. 'TIME_IN' => gen_display_time($event_start_time),
  136. 'MESSAGE' => $event_desc,
  137. ));
  138. }
  139. else
  140. {
  141. //no error
  142. //put event to db
  143. if (empty($_POST['group']))
  144. {
  145. $groups = 0;
  146. }
  147. else
  148. {
  149. $groups=implode(";", $_POST['group']);
  150. }
  151. $smilies = (request_var('disable_smilies',0)?false:true);
  152. $bbcode = (request_var('disable_bbcode',0)?false:true);
  153. $urls = (request_var('disable_magic_url',0)?false:true);
  154. $text = utf8_normalize_nfc(request_var('message', '', true));
  155. $bitfield = $options = $bbcode_user_id = ''; // will be modified by generate_text_for_storage
  156. generate_text_for_storage($text, $bbcode_user_id, $bitfield, $options, $bbcode, $urls, $smilies);
  157. $sql_ary = array(
  158. 'user_id' => $poster_id,
  159. 'event_name' => $event_name,
  160. 'event_desc' => $text,
  161. 'event_groups' => $groups,
  162. 'enable_bbcode' => $bbcode,
  163. 'enable_html' => $urls,
  164. 'enable_smilies' => $smilies,
  165. 'bbcode_uid' => $bbcode_user_id,
  166. 'bbcode_bitfield' => $bitfield,
  167. 'event_start_day' => $event_start_date,
  168. 'event_start_time' => $event_start_time,
  169. );
  170. if ($IS_EDIT)
  171. {
  172. $sql = 'UPDATE phpbb_calendar
  173. SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
  174. WHERE event_id = ' . $event_id;
  175. $message = 'This event has been edited successfully.';
  176. }
  177. else
  178. {
  179. $sql = 'INSERT INTO phpbb_calendar ' . $db->sql_build_array('INSERT', $sql_ary);
  180. $message = 'This event has been posted successfully.';
  181. }
  182. $db->sql_query($sql);
  183. $meta_info = 'calendar.php';
  184. meta_refresh(3, $meta_info);
  185. trigger_error($message);
  186. exit;
  187. }
  188. }
  189. //*******************************************************************************************************************************
  190. else
  191. {
  192. if($IS_EDIT)
  193. {
  194. //Display edit only information
  195. decode_message($event_row['event_desc'], $event_row['bbcode_uid']);
  196. $event_groups = explode(';',$event_row['event_groups']);
  197. foreach($user_groups as $g_num => $g_name)
  198. {
  199. $template->assign_block_vars('group_row',array(
  200. 'GROUP_ID' => $g_num,
  201. 'GROUP_NAME' => ucwords(strtolower( str_replace('_', ' ',$g_name))),
  202. 'GROUP_SELECT' => (in_array($g_num, $event_groups)?'selected':''),
  203. ));
  204. }
  205. $template->assign_vars(array(
  206. 'NUM_GROUPS' => count($user_groups),
  207. 'S_SMILIES_CHECKED' => ($event_row['enable_smilies']) ? '':' checked="checked"',
  208. 'S_BBCODE_CHECKED' => ($event_row['enable_bbcode']) ? '':' checked="checked"',
  209. 'S_MAGIC_URL_CHECKED' => ($event_row['enable_html']) ? '':' checked="checked"',
  210. 'S_EDIT' => true,
  211. 'SUBJECT' => $event_row['event_name'],
  212. 'DATE_IN' => gen_display_date($event_row['event_start_day']),
  213. 'TIME_IN' => gen_display_time($event_row['event_start_time']),
  214. 'MESSAGE' => $event_row['event_desc'],
  215. 'S_HIDDEN_FIELDS' => '<input type="hidden" name="event_id" value="'.$event_id.'">',
  216. ));
  217. }
  218. //*******************************************************************************************************************************
  219. else
  220. {
  221. $event_groups = explode(';',$event_row['event_groups']);
  222. foreach($user_groups as $g_num => $g_name)
  223. {
  224. $template->assign_block_vars('group_row',array(
  225. 'GROUP_ID' => $g_num,
  226. 'GROUP_NAME' => ucwords(strtolower( str_replace('_', ' ',$g_name))),
  227. ));
  228. }
  229. $template->assign_vars(array(
  230. 'NUM_GROUPS' => count($user_groups),
  231. 'S_SMILIES_CHECKED' => ($smilies_checked) ? ' checked="checked"' : '',
  232. 'S_BBCODE_CHECKED' => ($bbcode_checked) ? ' checked="checked"' : '',
  233. 'S_MAGIC_URL_CHECKED' => ($urls_checked) ? ' checked="checked"' : '',
  234. ));
  235. }
  236. }
  237. $smilies_status = ($config['allow_smilies']) ? true : false;
  238. $bbcode_status = ($config['allow_bbcode']) ? true : false;
  239. $url_status = ($config['allow_post_links']) ? true : false;
  240. $template->assign_vars(array(
  241. 'U_POST_ACTION' => 'calendar_post.php',
  242. 'S_BBCODE_ALLOWED' => $bbcode_status,
  243. 'S_LINKS_ALLOWED' => $url_status,
  244. 'S_SMILIES_ALLOWED' => $smilies_status,
  245. 'SMILIES_STATUS' => ($smilies_status) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF'],
  246. 'BBCODE_STATUS' => ($bbcode_status) ? sprintf($user->lang['BBCODE_IS_ON'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>') : sprintf($user->lang['BBCODE_IS_OFF'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>'),
  247. 'URL_STATUS' => ($url_status) ? $user->lang['URL_IS_ON'] : $user->lang['URL_IS_OFF'],
  248. 'L_ADD_EVENT' => $user->lang['calendar_add_event'],
  249. 'L_DELETE_EVENT' => $user->lang['calendar_delete_event'],
  250. 'L_DELETE_EVENT_WARN' => $user->lang['calendar_delete_warn'],
  251. 'L_EVENT_NAME' => $user->lang['calendar_event_name'],
  252. 'L_EVENT_DESC' => $user->lang['calendar_event_desc'],
  253. 'L_EVENT_DESC_EXPLAIN' => $user->lang['calendar_event_desc_exp'],
  254. 'L_EVENT_START' => $user->lang['calendar_event_start'],
  255. 'L_EVENT_END' => $user->lang['calendar_event_end'],
  256. ));
  257. generate_smilies('inline', 1);
  258. //Genarate the Page
  259. $page_title="Calendar";
  260. page_header($page_title);
  261. $template->set_filenames(array(
  262. 'body' => 'calendar_post.html')
  263. );
  264. page_footer();
  265. ?>