Example #1
0
/**
 * 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';
}
Example #2
0
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);
}
Example #3
0
/**
 * 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';
}