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

/drafts.php

http://github.com/MightyGorgon/icy_phoenix
PHP | 247 lines | 210 code | 25 blank | 12 comment | 25 complexity | a31513dbeab8933902b36300b88dda36 MD5 | raw file
Possible License(s): AGPL-1.0
  1. <?php
  2. /**
  3. *
  4. * @package Icy Phoenix
  5. * @version $Id$
  6. * @copyright (c) 2008 Icy Phoenix
  7. * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  8. *
  9. */
  10. define('IN_ICYPHOENIX', true);
  11. if (!defined('IP_ROOT_PATH')) define('IP_ROOT_PATH', './');
  12. if (!defined('PHP_EXT')) define('PHP_EXT', substr(strrchr(__FILE__, '.'), 1));
  13. include(IP_ROOT_PATH . 'common.' . PHP_EXT);
  14. // Start session management
  15. $user->session_begin();
  16. $auth->acl($user->data);
  17. $user->setup();
  18. // End session management
  19. if (!$config['allow_drafts'])
  20. {
  21. message_die(GENERAL_MESSAGE, $lang['Not_Auth_View']);
  22. }
  23. $mode = request_var('mode', '', true);
  24. $mode = check_var_value($mode, array('loadr', 'loadn', 'loadp', 'delete'), '');
  25. if (!empty($_POST['kill_drafts']))
  26. {
  27. $mode = 'delete';
  28. }
  29. $start = request_var('start', 0);
  30. $start = ($start < 0) ? 0 : $start;
  31. if (!$user->data['session_logged_in'])
  32. {
  33. $redirect = (isset($start)) ? ('&start=' . $start) : '';
  34. redirect(append_sid(CMS_PAGE_LOGIN . '?redirect=drafts.' . PHP_EXT . $redirect, true));
  35. }
  36. $draft_id = request_var('d', 0);
  37. $draft_id = ($draft_id < 0) ? 0 : $draft_id;
  38. if (($draft_id > 0) || !empty($_POST['kill_drafts']))
  39. {
  40. if ($mode == 'loadr')
  41. {
  42. redirect(append_sid(CMS_PAGE_POSTING . '?d=' . $draft_id . '&mode=reply' . '&draft_mode=draft_load', true));
  43. }
  44. elseif ($mode == 'loadn')
  45. {
  46. redirect(append_sid(CMS_PAGE_POSTING . '?d=' . $draft_id . '&mode=newtopic' . '&draft_mode=draft_load', true));
  47. }
  48. elseif ($mode == 'loadp')
  49. {
  50. redirect(append_sid(CMS_PAGE_PRIVMSG . '?d=' . $draft_id . '&mode=post' . '&draft_mode=draft_load', true));
  51. }
  52. elseif ($mode == 'delete')
  53. {
  54. if(!isset($_POST['confirm']))
  55. {
  56. $nav_server_url = create_server_url();
  57. $breadcrumbs['address'] = $lang['Nav_Separator'] . '<a href="' . $nav_server_url . append_sid(CMS_PAGE_PROFILE) . '">' . $lang['Profile'] . '</a>' . $lang['Nav_Separator'] . '<a class="nav-current" href="' . $nav_server_url . append_sid('drafts.' . PHP_EXT) . '">' . $lang['Drafts'] . '</a>';
  58. $ref_url = explode('/', $_SERVER['HTTP_REFERER']);
  59. $s_hidden_fields = '';
  60. if (is_array($_POST['drafts_list']))
  61. {
  62. for ($i = 0; $i < sizeof($_POST['drafts_list']); $i++)
  63. {
  64. $s_hidden_fields .= '<input type="hidden" name="drafts_list[]" value="' . $_POST['drafts_list'][$i] . '" />';
  65. }
  66. $s_hidden_fields .= '<input type="hidden" name="kill_drafts" value="true" />';
  67. }
  68. $s_hidden_fields .= '<input type="hidden" name="ref_url" value="' . htmlspecialchars($ref_url[sizeof($ref_url) - 1]) . '" />';
  69. $s_hidden_fields .= '<input type="hidden" name="d" value="' . $draft_id . '" />';
  70. $s_hidden_fields .= '<input type="hidden" name="mode" value="' . $mode . '" />';
  71. $template->assign_vars(array(
  72. 'MESSAGE_TITLE' => $lang['Confirm'],
  73. 'MESSAGE_TEXT' => $lang['Drafts_Delete_Question'],
  74. 'L_YES' => $lang['Yes'],
  75. 'L_NO' => $lang['No'],
  76. 'S_CONFIRM_ACTION' => append_sid('drafts.' . PHP_EXT),
  77. 'S_HIDDEN_FIELDS' => $s_hidden_fields
  78. )
  79. );
  80. full_page_generation('confirm_body.tpl', $lang['Drafts'], '', '');
  81. }
  82. else
  83. {
  84. if (is_array($_POST['drafts_list']))
  85. {
  86. $draft_ids = implode(',', $_POST['drafts_list']);
  87. $sql_del = "DELETE FROM " . DRAFTS_TABLE . " WHERE draft_id IN (" . $draft_ids . ")";
  88. $result_del = $db->sql_query($sql_del);
  89. }
  90. else
  91. {
  92. $sql_del = "DELETE FROM " . DRAFTS_TABLE . " WHERE draft_id = '" . $draft_id . "'";
  93. $result_del = $db->sql_query($sql_del);
  94. }
  95. }
  96. }
  97. }
  98. // Generate the page
  99. $nav_server_url = create_server_url();
  100. $breadcrumbs['address'] = $lang['Nav_Separator'] . '<a href="' . $nav_server_url . append_sid(CMS_PAGE_PROFILE_MAIN) . '">' . $lang['Profile'] . '</a>' . $lang['Nav_Separator'] . '<a class="nav-current" href="' . $nav_server_url . append_sid('drafts.' . PHP_EXT) . '">' . $lang['Drafts'] . '</a>';
  101. $breadcrumbs['bottom_right_links'] = '<a href="#" onclick="setCheckboxes(\'drafts_form\', \'drafts_list[]\', true); return false;">' . $lang['MARK_ALL'] . '</a>&nbsp;&bull;&nbsp;<a href="#" onclick="setCheckboxes(\'drafts_form\', \'drafts_list[]\', false); return false;">' . $lang['UNMARK_ALL'] . '</a>';
  102. include_once(IP_ROOT_PATH . 'includes/users_zebra_block.' . PHP_EXT);
  103. $template->assign_vars(array(
  104. 'S_FORM_ACTION' => append_sid('drafts.' . PHP_EXT),
  105. 'L_NO_DRAFTS' => $lang['Drafts_No_Drafts'],
  106. 'L_DRAFTS_CATEGORY' => $lang['Category'],
  107. 'L_DRAFTS_TYPE' => $lang['Drafts_Type'],
  108. 'L_DRAFTS_SUBJECT' => $lang['Drafts_Subject'],
  109. 'L_DRAFTS_ACTION' => $lang['Drafts_Action'],
  110. 'L_DRAFTS_DELETE_SEL' => $lang['Drafts_Delete_Sel'],
  111. 'L_DRAFTS_LOAD' => $lang['Drafts_Load'],
  112. 'L_DRAFTS_DELETE' => $lang['Delete'],
  113. 'L_CHECK_ALL' => $lang['Check_All'],
  114. 'L_UNCHECK_ALL' => $lang['UnCheck_All'],
  115. )
  116. );
  117. $sql = "SELECT COUNT(*) as drafts_count FROM " . DRAFTS_TABLE . " d WHERE d.user_id = " . $user->data['user_id'];
  118. $result = $db->sql_query($sql);
  119. $row = $db->sql_fetchrow($result);
  120. $drafts_count = ($row['drafts_count']) ? $row['drafts_count'] : 0;
  121. $db->sql_freeresult($result);
  122. $no_drafts = ($drafts_count == 0) ? true : false;
  123. //die(($no_drafts == false) ? 'FALSE' : 'TRUE');
  124. if ($no_drafts == false)
  125. {
  126. $sql = "SELECT d.*
  127. FROM " . DRAFTS_TABLE . " d
  128. WHERE d.user_id = '" . $user->data['user_id'] . "'
  129. ORDER BY d.save_time DESC
  130. LIMIT $start, " . $config['topics_per_page'];
  131. $result = $db->sql_query($sql);
  132. $draft_row = $db->sql_fetchrowset($result);
  133. $db->sql_freeresult($result);
  134. $row_class = '';
  135. for ($i = 0; $i < sizeof($draft_row); $i++)
  136. {
  137. if ($i == 0)
  138. {
  139. $template->assign_block_vars('switch_drafts', array());
  140. }
  141. $draft_row[$i]['draft_cat'] = '';
  142. $draft_row[$i]['draft_title'] = '';
  143. $draft_load = '';
  144. $draft_type = '';
  145. $draft_cat_link = '';
  146. $draft_title_link = '';
  147. if ($draft_row[$i]['topic_id'] != 0)
  148. {
  149. $sql_d = "SELECT t.*, f.*
  150. FROM " . TOPICS_TABLE . " t,
  151. " . FORUMS_TABLE . " f
  152. WHERE t.topic_id = '" . $draft_row[$i]['topic_id'] . "'
  153. AND f.forum_id = t.forum_id
  154. LIMIT 1";
  155. $result_d = $db->sql_query($sql_d);
  156. $draft_row_data = $db->sql_fetchrow($result_d);
  157. $db->sql_freeresult($result_d);
  158. $draft_image = '<img src="' . $images['topic_nor_read'] . '" alt="" />';
  159. $draft_type = $lang['Drafts_NM'];
  160. $draft_load = 'loadr';
  161. $draft_cat_link = append_sid(IP_ROOT_PATH . CMS_PAGE_VIEWFORUM . '?' . POST_FORUM_URL . '=' . $draft_row_data['forum_id']);
  162. $draft_title_link = append_sid(IP_ROOT_PATH . CMS_PAGE_VIEWTOPIC . '?' . POST_TOPIC_URL . '=' . $draft_row[$i]['topic_id']);
  163. $draft_row[$i]['draft_cat'] = '<a href="' . $draft_cat_link . '">' . $draft_row_data['forum_name'] . '</a>';
  164. $draft_row[$i]['draft_title'] = '<a href="' . $draft_title_link . '">' . $draft_row_data['topic_title'] . '</a>';
  165. }
  166. elseif ($draft_row[$i]['forum_id'] != 0)
  167. {
  168. $sql_d = "SELECT f.*
  169. FROM " . FORUMS_TABLE . " f
  170. WHERE f.forum_id = '" . $draft_row[$i]['forum_id'] . "'
  171. LIMIT 1";
  172. $result_d = $db->sql_query($sql_d);
  173. $draft_row_data = $db->sql_fetchrow($result_d);
  174. $db->sql_freeresult($result_d);
  175. $draft_image = '<img src="' . $images['topic_nor_unread'] . '" alt="" />';
  176. $draft_type = $lang['Drafts_NT'];
  177. $draft_load = 'loadn';
  178. $draft_cat_link = append_sid(IP_ROOT_PATH . CMS_PAGE_VIEWFORUM . '?' . POST_FORUM_URL . '=' . $draft_row_data['forum_id']);
  179. $draft_title_link = append_sid(IP_ROOT_PATH . 'drafts.' . PHP_EXT . '?mode=' . $draft_load . '&amp;d=' . $draft_row[$i]['draft_id']);
  180. $draft_row[$i]['draft_cat'] = '<a href="' . $draft_cat_link . '">' . $draft_row_data['forum_name'] . '</a>';
  181. $draft_row[$i]['draft_title'] = '<a href="' . $draft_title_link . '">' . $draft_row[$i]['draft_subject'] . '</a>';
  182. }
  183. else
  184. {
  185. $draft_image = '<img src="' . $images['topic_nor_read'] . '" alt="" />';
  186. $draft_type = $lang['Drafts_NPM'];
  187. $draft_load = 'loadp';
  188. $draft_cat_link = append_sid(IP_ROOT_PATH . CMS_PAGE_PRIVMSG);
  189. $draft_title_link = append_sid(IP_ROOT_PATH . 'drafts.' . PHP_EXT . '?mode=' . $draft_load . '&amp;d=' . $draft_row[$i]['draft_id']);
  190. $draft_subject = $draft_row[$i]['draft_subject'] ? $draft_row[$i]['draft_subject'] : '...'; // Missing subject produces an empty link
  191. $draft_row[$i]['draft_cat'] = '<a href="' . $draft_cat_link . '">' . $lang['Drafts_NPM'] . '</a>';
  192. $draft_row[$i]['draft_title'] = '<a href="' . $draft_title_link . '">' . $draft_subject . '</a>';
  193. }
  194. $row_class = ip_zebra_rows($row_class);
  195. $template->assign_block_vars('draft_row', array(
  196. 'ROW_CLASS' => $row_class,
  197. 'S_DRAFT_ID' => $draft_row[$i]['draft_id'],
  198. 'DRAFT_IMG' => $draft_image,
  199. 'DRAFT_TYPE' => $draft_type,
  200. 'DRAFT_CAT_LINK' => $draft_cat_link,
  201. 'DRAFT_CAT' => $draft_row[$i]['draft_cat'],
  202. 'DRAFT_TITLE_LINK' => $draft_title_link,
  203. 'DRAFT_TITLE' => $draft_row[$i]['draft_title'],
  204. 'DRAFT_TIME' => create_date_ip($config['default_dateformat'], $draft_row[$i]['save_time'], $config['board_timezone']),
  205. 'U_DRAFT_LOAD' => append_sid(IP_ROOT_PATH . 'drafts.' . PHP_EXT . '?mode=' . $draft_load . '&amp;d=' . $draft_row[$i]['draft_id']),
  206. 'U_DRAFT_DELETE' => append_sid(IP_ROOT_PATH . 'drafts.' . PHP_EXT . '?mode=delete&amp;d=' . $draft_row[$i]['draft_id']),
  207. )
  208. );
  209. }
  210. $template->assign_vars(array(
  211. 'PAGINATION' => generate_pagination('drafts.' . PHP_EXT . '?mode=list', $drafts_count, $config['topics_per_page'], $start),
  212. 'PAGE_NUMBER' => sprintf($lang['Page_of'], (floor($start / $config['topics_per_page']) + 1), ceil($drafts_count / $config['topics_per_page'])),
  213. 'L_GOTO_PAGE' => $lang['Goto_page']
  214. )
  215. );
  216. }
  217. else
  218. {
  219. $template->assign_block_vars('switch_no_drafts', array());
  220. }
  221. full_page_generation('drafts_body.tpl', $lang['Drafts'], '', '');
  222. ?>