示例#1
0
function edit_news_delete()
{
    cn_dsi_check();
    if (!test('Nud')) {
        msg_info("Unable to delete news: no permission");
    }
    $FlatDB = new FlatDB();
    list($id, $source) = GET('id, source', 'GET');
    $ida = db_index_load($source);
    $nloc = db_get_nloc($id);
    $db = db_news_load($nloc);
    // ------
    $FlatDB->cn_remove_categories($db[$id]['c'], $db[$id]['id']);
    $FlatDB->cn_update_date(0, $db[$id]['id']);
    $FlatDB->cn_user_sync($db[$id]['u'], 0, $db[$id]['id']);
    $FlatDB->cn_remove_tags($db[$id]['tg'], $db[$id]['id']);
    // ------
    unset($db[$id]);
    unset($ida[$id]);
    // Remove from meta-index
    $_ts_id = bt_get_id($id, 'nts_id');
    bt_del_id($id, 'nts_id');
    bt_del_id($_ts_id, 'nid_ts');
    // Remove page alias
    $_ts_pg = bt_get_id($id, 'ts_pg');
    bt_del_id($id, 'ts_pg');
    bt_del_id($_ts_pg, 'pg_ts');
    // save block
    db_save_news($db, $nloc);
    db_index_save($ida, $source);
    db_index_update_overall($source);
    cn_relocation(cn_url_modify(array('reset'), 'mod=editnews', "source={$source}"));
    $FlatDB->cache_clean();
}
示例#2
0
function dashboard_templates()
{
    $all_templates = array();
    $template_parts = array();
    $def_ids = array('active' => 'Active News', 'full' => 'Full Story', 'comment' => 'Comment', 'form' => 'Add comment form', 'prev_next' => 'News Pagination', 'comments_prev_next' => 'Comments Pagination');
    list($template, $sub) = GET('template, sub', 'GPG');
    // Default templates
    $list = cn_template_list();
    // User changes
    $tuser = getoption('#templates');
    // Basic template name and fetch data (user/system)
    if (!$template) {
        $template = 'default';
    }
    // Copy default subtemplate, if not exists
    if (!isset($tuser[$template])) {
        foreach ($list[$template] as $_sub => $_var) {
            $tuser[$template][$_sub] = $_var;
        }
    }
    // Get all templates, mark it as user/system
    foreach ($tuser as $id => $vs) {
        $all_templates[$id] = 'User';
    }
    foreach ($list as $id => $vs) {
        $all_templates[$id] = 'Sys';
    }
    $odata = array();
    foreach ($tuser[$template] as $id => $subtpl) {
        if (isset($def_ids[$id])) {
            $_name = $def_ids[$id];
        } else {
            $_name = ucfirst(str_replace('_', ' ', $id));
        }
        $odata[$id] = $subtpl;
        $template_parts[$id] = $_name;
    }
    reset($odata);
    // Get subtmpl by default
    if (!$sub) {
        $sub = key($odata);
    }
    // ------------------------------------------------------------------------------------ ACTIONS --------------------
    // save template?
    if (request_type('POST')) {
        cn_dsi_check();
        // ------------------------
        if (REQ('select', 'POST')) {
            cn_relocation(cn_url_modify(array('reset'), 'mod=' . REQ('mod'), 'opt=' . REQ('opt'), 'template=' . $template));
        } elseif (REQ('create') || REQ('template_name')) {
            $template_name = trim(strtolower(preg_replace('/[^a-z0-9_]/i', '-', REQ('template_name'))));
            if (!$template_name) {
                cn_throw_message('Enter correct template name', 'e');
            } elseif (isset($all_templates[$template_name])) {
                cn_throw_message('Template already exists', 'e');
            } else {
                $tuser[$template][$sub] = REQ('save_template_text', 'POST');
                setoption("#templates/{$template_name}", $tuser[$template]);
                msg_info('Template [' . $template_name . '] created', cn_url_modify(array('reset'), 'mod=' . REQ('mod'), 'opt=' . REQ('opt'), 'template=' . $template_name));
            }
        } elseif (REQ('delete')) {
            if ($all_templates[$template] === 'Sys') {
                cn_throw_message("Template '{$template}' is system template, can't delete", 'e');
            } else {
                unset($tuser[$template]);
                setoption('#templates', $tuser);
                msg_info('Template [' . $template . '] deleted!', cn_url_modify(array('reset'), 'mod=' . REQ('mod'), 'opt=' . REQ('opt')));
            }
        } elseif (REQ('reset')) {
            if ($all_templates[$template] === 'Sys') {
                unset($tuser[$template]);
                setoption("#templates", $tuser);
                cn_throw_message("Template reset to default");
            } else {
                cn_throw_message("Template is user template, can't reset", 'e');
            }
        } else {
            $tuser[$template][$sub] = REQ('save_template_text', 'POST');
            setoption("#templates", $tuser);
            cn_throw_message('Template saved successfully');
        }
    }
    if (isset($_POST['template'])) {
        $_GET['template'] = $_POST['template'];
    }
    if (isset($_POST['sub'])) {
        $_GET['sub'] = $_POST['sub'];
    }
    // user can't delete system template, only modify
    $can_delete = $all_templates[$template] == 'Sys' ? FALSE : TRUE;
    // get template text (may be modified before)
    $template_text = isset($tuser[$template][$sub]) ? $tuser[$template][$sub] : (isset($list[$template][$sub]) ? $list[$template][$sub] : '');
    // ----
    cn_assign('template_parts, all_templates, template_text, template, sub, can_delete', $template_parts, $all_templates, $template_text, $template, $sub, $can_delete);
    echoheader('-@dashboard/style.css', "Templates");
    echo exec_tpl('dashboard/template');
    echofooter();
}
示例#3
0
function add_news_invoke()
{
    $FlatDB = new FlatDB();
    // loadall
    list($article_type, $preview) = GET('postpone_draft, preview', 'GETPOST');
    list($from_date_hour, $from_date_minutes, $from_date_seconds, $from_date_month, $from_date_day, $from_date_year) = GET('from_date_hour, from_date_minutes, from_date_seconds, from_date_month, from_date_day, from_date_year', 'GETPOST');
    list($title, $page, $category, $short_story, $full_story, $if_use_html, $vConcat, $vTags, $faddm) = GET('title, page, category, short_story, full_story, if_use_html, concat, tags, faddm', 'GETPOST');
    $categories = cn_get_categories(false);
    list($morefields) = cn_get_more_fields($faddm);
    $is_active_html = test('Csr');
    // Prepare data to add new item
    if (request_type('POST')) {
        cn_dsi_check();
        if (!preg_match("~^[0-9]{1,}\$~", $from_date_hour) or !preg_match("~^[0-9]{1,}\$~", $from_date_minutes) or !preg_match("~^[0-9]{1,}\$~", $from_date_seconds)) {
            cn_throw_message("You want to add article, but the hour format is invalid.", 'e');
        }
        // create publish time
        $c_time = mktime($from_date_hour, $from_date_minutes, $from_date_seconds, $from_date_month, $from_date_day, $from_date_year);
        // flat category to array
        if ($category == '') {
            $category = array();
        } elseif (!is_array($category)) {
            $category = array($category);
        }
        // article is draft?
        if ($article_type == 'draft') {
            $draft = 1;
        } else {
            $draft = 0;
        }
        $if_use_html = $if_use_html ? TRUE : (getoption('use_wysiwyg') ? TRUE : FALSE);
        // draft, if Behavior Draft is set
        if (test('Bd')) {
            $draft = 1;
        }
        // sanitize page name
        $page = preg_replace('/[^a-z0-9_\\.]/i', '-', $page);
        if (empty($page) && getoption('auto_news_alias')) {
            $page = strtolower(preg_replace('/[^a-z0-9_\\.]/i', '-', cn_transliterate($title)));
        }
        // basic news
        $member = member_get();
        $entry = array();
        $entry['id'] = $c_time;
        $entry['t'] = cn_htmlclear($title);
        $entry['u'] = $member['name'];
        $entry['c'] = news_make_category($category);
        $entry['s'] = cn_htmlclear($short_story);
        $entry['f'] = cn_htmlclear($full_story);
        $entry['ht'] = $if_use_html;
        $entry['st'] = $draft ? 'd' : '';
        $entry['co'] = array();
        // 0 comments
        $entry['cc'] = $vConcat ? TRUE : FALSE;
        $entry['tg'] = strip_tags($vTags);
        $entry['pg'] = $page;
        // Check page alias for exists
        if ($page && bt_get_id($page, 'pg_ts') && !$preview) {
            cn_throw_message('Page alias already exists', 'e');
        } else {
            // Get latest id for news
            $latest_id = intval(bt_get_id('latest_id', 'conf'));
            $latest_id++;
            bt_set_id($latest_id, $c_time, 'nid_ts');
            bt_set_id($c_time, $latest_id, 'nts_id');
            bt_set_id('latest_id', $latest_id, 'conf');
            // apply more field
            list($entry, $disallow_message) = cn_more_fields_apply($entry, $faddm);
            // has message from function
            if ($disallow_message) {
                cn_throw_message($disallow_message, 'e');
            }
        }
        // ----
        if (!$preview) {
            if (!getoption('disable_title') && empty($title)) {
                cn_throw_message('The title cannot be blank', 'e');
            }
            if (getoption('news_title_max_long') && strlen($title) > getoption('news_title_max_long')) {
                cn_throw_message('The title cannon be greater then ' . getoption('news_title_max_long') . ' charecters', 'e');
            }
            if (!getoption('disable_short') && empty($short_story)) {
                cn_throw_message('The story cannot be blank', 'e');
            }
            // no errors in a[rticle] area
            if (cn_get_message('e', 'c') == 0) {
                // Add page alias
                bt_set_id($page, $c_time, 'pg_ts');
                bt_set_id($c_time, $page, 'ts_pg');
                $sc = $draft ? 'draft' : '';
                $es = db_news_load(db_get_nloc($entry['id']));
                // make unique id
                while (isset($es[$c_time])) {
                    $c_time++;
                }
                // override ts
                $entry['id'] = $c_time;
                // add default group permission
                $member = member_get();
                // add to database
                $es[$c_time] = $entry;
                // do save item
                db_save_news($es, db_get_nloc($c_time));
                // add news to index
                db_index_add($c_time, $entry['c'], $member['id'], $sc);
                // ------------------------
                $FlatDB->cn_update_date($c_time, 0);
                $FlatDB->cn_source_update($c_time, $draft ? 'D' : '');
                $FlatDB->cn_add_categories($entry['c'], $c_time);
                $FlatDB->cn_add_tags($entry['tg'], $c_time);
                $FlatDB->cn_user_sync($entry['u'], $c_time);
                // ------------------------
                // increase user count written news
                $cnt = intval($member['cnt']) + 1;
                db_user_update($member['name'], "cnt={$cnt}");
                // do update meta-index
                db_index_update_overall($sc);
                // Notify for unapproved
                if (getoption('notify_unapproved') && test('Bd')) {
                    cn_send_mail(getoption('notify_email'), i18n('CuteNews unapproved article was added'), "CuteNews - Unapproved article was added CuUnArWaAd", cn_replace_text(cn_get_template('notify_unapproved', 'mail'), '%username%, %article_title%', $member['name'], $title));
                }
                $FlatDB->cache_clean();
                // view in editor
                cn_relocation(PHP_SELF . '?mod=editnews&action=editnews&id=' . $c_time . '&m=added');
            }
        } else {
            //correct preview links
            $preview_html = preg_replace('/href="(.*?)"/', 'href="#"', entry_make($entry, 'active'));
            $preview_html_full = preg_replace('/href="(.*?)"/', 'href="#"', entry_make($entry, 'full'));
            cn_assign('preview_html, preview_html_full, gstamp', $preview_html, $preview_html_full, $c_time);
        }
    }
    if (empty($category)) {
        $category = array();
    }
    // -----------------------------------------------------------------------------------------------------------------
    cn_assign('categories, vCategory, vTitle, vShort, vFull, is_active_html, vUseHtml, vConcat, vTags, morefields,vPage', $categories, $category, $title, $short_story, $full_story, $is_active_html, $if_use_html, $vConcat, $vTags, $morefields, $page);
    // ---
    echoheader("addedit@addedit/main.css", i18n("Add News"));
    echo exec_tpl('addedit/main');
    echofooter();
}