/** * implements features and options -> Post ratings settings page */ function ModifyRatingSettings() { global $txt, $scripturl, $context, $settings, $sc, $modSettings, $sourcedir; @(require_once $sourcedir . '/lib/Subs-Ratings.php'); loadAdminTemplate('ManageRatings'); $context['sub_template'] = 'manage_ratings'; $context['rating_show_repair'] = empty($modSettings['rating_show_repair']) ? false : true; $context['rating_allow_comments'] = empty($modSettings['rating_allow_comments']) ? false : true; for ($i = 1; $i <= 10; $i++) { if (isset($modSettings['ratings'][$i])) { $rating =& $modSettings['ratings'][$i]; $context['rating_classes'][$i] = array('id' => $i, 'desc' => isset($rating['desc']) ? $rating['desc'] : '', 'format' => isset($rating['format']) ? $rating['format'] : '<span>%s</span>', 'label' => $rating['label'], 'localized' => isset($rating['localized']) ? $rating['localized'] : '', 'points' => isset($rating['points']) ? $rating['points'] : 0, 'groups' => isset($rating['groups']) && !empty($rating['groups']) ? implode(',', $rating['groups']) : '', 'boards' => isset($rating['boards']) && !empty($rating['boards']) ? implode(',', $rating['boards']) : '', 'boards_denied' => isset($rating['boards_denied']) && !empty($rating['boards_denied']) ? implode(',', $rating['boards_denied']) : '', 'groups_denied' => isset($rating['groups_denied']) && !empty($rating['groups_denied']) ? implode(',', $rating['groups_denied']) : '', 'unique' => isset($rating['unique']) && !empty($rating['unique']) ? true : false); } else { $context['rating_classes'][$i] = array('id' => $i, 'desc' => '', 'format' => '', 'label' => '', 'points' => '', 'groups' => '', 'boards' => '', 'boards_denied' => '', 'groups_denied' => '', 'localized' => '', 'unique' => true); } } // Saving? if (isset($_GET['save'])) { checkSession(); $new_ratings = array(); for ($i = 1; $i <= 10; $i++) { if (isset($_REQUEST['rating_id_' . $i]) && (int) $_REQUEST['rating_id_' . $i] >= 1 && (int) $_REQUEST['rating_id_' . $i] <= 10 && isset($_REQUEST['rating_label_' . $i]) && !empty($_REQUEST['rating_label_' . $i])) { $new_ratings[$i] = array('desc' => isset($_REQUEST['rating_desc_' . $i]) ? strip_tags($_REQUEST['rating_desc_' . $i]) : '', 'format' => htmlentities(isset($_REQUEST['rating_format_' . $i]) ? $_REQUEST['rating_format_' . $i] : '<span>%s</span>'), 'label' => htmlspecialchars(isset($_REQUEST['rating_label_' . $i]) ? $_REQUEST['rating_label_' . $i] : 'No label'), 'localized' => htmlentities(isset($_REQUEST['rating_localized_' . $i]) ? $_REQUEST['rating_localized_' . $i] : ''), 'groups' => isset($_REQUEST['rating_groups_' . $i]) && !empty($_REQUEST['rating_groups_' . $i]) ? explode(',', normalizeCommaDelimitedList($_REQUEST['rating_groups_' . $i])) : array(), 'groups_denied' => isset($_REQUEST['rating_groups_denied_' . $i]) && !empty($_REQUEST['rating_groups_denied_' . $i]) ? explode(',', normalizeCommaDelimitedList($_REQUEST['rating_groups_denied_' . $i])) : array(), 'boards' => isset($_REQUEST['rating_boards_' . $i]) && !empty($_REQUEST['rating_boards_' . $i]) ? explode(',', normalizeCommaDelimitedList($_REQUEST['rating_boards_' . $i])) : array(), 'boards_denied' => isset($_REQUEST['rating_boards_denied_' . $i]) && !empty($_REQUEST['rating_boards_denied_' . $i]) ? explode(',', normalizeCommaDelimitedList($_REQUEST['rating_boards_denied_' . $i])) : array(), 'points' => isset($_REQUEST['rating_points_' . $i]) && !empty($_REQUEST['rating_points_' . $i]) ? $_REQUEST['rating_points_' . $i] : 0, 'unique' => isset($_REQUEST['rating_unique_' . $i]) && $_REQUEST['rating_unique_' . $i] ? true : false); } } $settings_to_update = array('rating_show_repair' => isset($_REQUEST['rating_show_repair']) ? $_REQUEST['rating_show_repair'] : 0, 'rating_allow_comments' => isset($_REQUEST['rating_allow_comments']) ? $_REQUEST['rating_allow_comments'] : 0); if (!empty($new_ratings)) { $settings_to_update['raw_ratings'] = @serialize($new_ratings); } updateSettings($settings_to_update); redirectexit('action=admin;area=postsettings;sa=ratings'); } $context['post_url'] = $scripturl . '?action=admin;area=postsettings;save;sa=ratings'; }
function aStreamGet($b = 0, $xml = false, $global = false) { global $board, $context, $user_info, $modSettings, $options, $scripturl; if (!isset($board) || !$board) { $board = $b; } $start = isset($_REQUEST['start']) ? (int) $_REQUEST['start'] : 0; $context['xml'] = $xml; $context['act_global'] = false; $total = 0; $context['sef_full_rewrite'] = true; $perpage = $xml ? 15 : (empty($modSettings['disableCustomPerPage']) && !empty($options['topics_per_page']) ? $options['topics_per_page'] : $modSettings['defaultMaxTopics']); if ($user_info['is_admin']) { $pquery = ' AND (a.is_private <= ' . ACT_PLEVEL_ADMIN . ' OR a.id_member = {int:id_user} OR a.id_owner = {int:id_user}) '; } else { $pquery = ' AND (a.is_private = 0 OR a.id_member = {int:id_user} OR a.id_owner = {int:id_user}) '; } $filterby = ''; if (isset($_REQUEST['filter'])) { $filterby = normalizeCommaDelimitedList($_REQUEST['filter']); if (strlen($filterby)) { $pquery .= ' AND a.id_type IN({string:filter})'; } } $uquery = ''; if (isset($_REQUEST['u']) && (int) $_REQUEST['u'] > 0) { $uquery .= 'a.id_member = {int:id_user} AND '; } else { $uquery = !empty($user_info['ignoreusers']) ? 'a.id_member NOT IN({array_int:ignoredusers}) AND ' : ''; } if ($global) { if (!$xml) { $result = smf_db_query('SELECT COUNT(a.id_act) FROM {db_prefix}log_activities AS a LEFT JOIN {db_prefix}boards AS b ON(b.id_board = a.id_board) WHERE ' . $uquery . ' ({query_wanna_see_board} OR a.id_board = 0)' . $pquery, array('start' => 0, 'id_user' => $user_info['id'], 'filter' => $filterby, 'perpage' => $perpage, 'ignoredusers' => $user_info['ignoreusers'])); list($total) = mysql_fetch_row($result); mysql_free_result($result); } $result = smf_db_query('SELECT a.*, t.*, b.name AS board_name FROM {db_prefix}log_activities AS a LEFT JOIN {db_prefix}activity_types AS t ON (t.id_type = a.id_type) LEFT JOIN {db_prefix}boards AS b ON(b.id_board = a.id_board) WHERE ' . $uquery . ' ({query_wanna_see_board} OR a.id_board = 0)' . $pquery . ' ORDER BY a.id_act DESC LIMIT {int:start}, {int:perpage}', array('start' => $start, 'id_user' => $user_info['id'], 'filter' => $filterby, 'perpage' => $perpage, 'ignoredusers' => $user_info['ignoreusers'])); $context['act_global'] = true; $context['viewall_url'] = URL::parse($scripturl . '?action=astream;sa=get;all'); } else { if (!$xml) { $result = smf_db_query('SELECT COUNT(a.id_act) FROM {db_prefix}log_activities AS a LEFT JOIN {db_prefix}boards AS b ON(b.id_board = a.id_board) WHERE ' . $uquery . ' a.id_board = {int:id_board} AND {query_wanna_see_board} ' . $pquery, array('id_board' => $board, 'start' => 0, 'id_user' => $user_info['id'], 'filter' => $filterby, 'perpage' => $perpage, 'ignoredusers' => $user_info['ignoreusers'])); list($total) = mysql_fetch_row($result); mysql_free_result($result); } $result = smf_db_query('SELECT a.*, t.*, b.name AS board_name FROM {db_prefix}log_activities AS a LEFT JOIN {db_prefix}activity_types AS t ON (t.id_type = a.id_type) LEFT JOIN {db_prefix}boards AS b ON(b.id_board = a.id_board) WHERE ' . $uquery . ' a.id_board = {int:id_board} AND {query_wanna_see_board}' . $pquery . ' ORDER BY a.id_act DESC LIMIT {int:start}, {int:perpage}', array('id_board' => $board, 'start' => $start, 'id_user' => $user_info['id'], 'filter' => $filterby, 'perpage' => $perpage, 'ignoredusers' => $user_info['ignoreusers'])); $context['viewall_url'] = URL::parse($scripturl . '?action=astream;sa=get;b=' . $board); } $pages_base = URL::parse($scripturl . '?action=astream;sa=get;all;'); $pages_base = URL::addParam($pages_base, 'start=%1$d', true); $context['pages'] = $total ? constructPageIndex($pages_base, $start, $total, $perpage, true) : ''; if ($xml) { header('Content-Type: text/xml; charset=UTF-8'); } aStreamOutput($result); }
/** * edit news items. * todo: this needs LOTS of UX improvements, AJAX inline editing and stuff like that * for now, a basic UI is ok to test the feature */ function EditNewsItem() { global $txt, $context, $sourcedir, $scripturl; require_once $sourcedir . '/lib/Subs-Post.php'; $id_item = isset($_REQUEST['itemid']) ? (int) $_REQUEST['itemid'] : '0'; if (isset($_GET['save'])) { checkSession(); $_POST['body'] = commonAPI::htmlspecialchars($_POST['body'], ENT_QUOTES); if (stripos($_POST['body'], '[more]') !== false) { list($teaser, $body) = explode('[more]', $_POST['body']); } else { $teaser = ''; $body =& $_POST['body']; } preparsecode($teaser); preparsecode($body); $_POST['showboards'] = isset($_POST['showboards']) ? normalizeCommaDelimitedList($_POST['showboards']) : ''; $_POST['showtopics'] = isset($_POST['showtopics']) ? normalizeCommaDelimitedList($_POST['showtopics']) : ''; $_POST['showgroups'] = isset($_POST['showgroups']) ? normalizeCommaDelimitedList($_POST['showgroups']) : ''; $_POST['showindex'] = isset($_POST['showindex']) ? 1 : 0; if (isset($_POST['id']) && !empty($_POST['id'])) { // modify existing smf_db_query(' UPDATE {db_prefix}news SET body = {string:body}, teaser = {string:teaser}, groups = {string:groups}, boards = {string:boards}, topics = {string:topics}, on_index = {int:onindex}, can_dismiss = {int:can_dismiss} WHERE id_news = {int:idnews}', array('body' => $body, 'teaser' => $teaser, 'topics' => $_POST['showtopics'], 'boards' => $_POST['showboards'], 'groups' => $_POST['showgroups'], 'idnews' => $_POST['id'], 'onindex' => $_POST['showindex'], 'can_dismiss' => $_POST['mandatory'] ? 0 : 1)); $redirect_id = $_POST['id']; } else { // add new smf_db_insert('insert', '{db_prefix}news', array('body' => 'string', 'boards' => 'string', 'topics' => 'string', 'groups' => 'string', 'on_index' => 'int', 'can_dismiss' => 'int'), array($_POST['body'], $_POST['showboards'], $_POST['showtopics'], $_POST['showgroups'], $_POST['showindex'], $_POST['mandatory'] ? 0 : 1), array('id_news')); $redirect_id = smf_db_insert_id('{db_prefix}news', 'id_news'); } CacheAPI::putCache('newsitems', null, 360); redirectexit($scripturl . '?action=admin;area=news;sa=editnewsitem;itemid=' . $redirect_id); } if ($id_item) { $result = smf_db_query('SELECT * FROM {db_prefix}news WHERE id_news = {int:id_item}', array('id_item' => $id_item)); $row = mysql_fetch_assoc($result); if ($row) { $context['news_item'] = array('id' => $row['id_news'], 'teaser' => $row['teaser'], 'body' => $row['body'], 'boards' => $row['boards'], 'topics' => $row['topics'], 'on_index' => $row['on_index'], 'groups' => $row['groups'], 'can_dismiss' => $row['can_dismiss']); if (!empty($context['news_item']['teaser'])) { $context['news_item']['body'] = $context['news_item']['teaser'] . '[more]' . $context['news_item']['body']; } $context['news_item']['body'] = un_preparsecode($context['news_item']['body']); } mysql_free_result($result); } else { $context['news_item']['id'] = $context['news_item']['on_index'] = 0; $context['news_item']['body'] = $context['news_item']['boards'] = $context['news_item']['topics'] = $context['news_item']['groups'] = ''; $context['news_item']['can_dismiss'] = 1; } $context['sub_template'] = 'edit_news_item'; $context['page_title'] = $txt['admin_edit_news']; $context['submit_url'] = $scripturl . '?action=admin;area=news;sa=editnewsitem;save'; }