if (!$comment['c']) { $comment['c'] = $bkp; } } $com[] = entry_make($comment, 'comment', $template, 'comm'); $_comment_iterator++; } // remove temporary unset($_comment_iterator); if (getoption('reverse_comments')) { ksort($com); } // Comment per page is set if ($com_by_page = getoption('comments_per_page')) { $com = array_slice($com, $start_from, $com_by_page, TRUE); $cpn = cn_get_template('comments_prev_next', $template); // Make prev link if ($start_from) { $st = $start_from - $com_by_page; if ($st < 0) { $st = 0; } if (getoption('rw_engine')) { $hrefA = '<a href="' . cn_rewrite('comments', $id, $st) . '">\\1</a>'; } else { $hrefA = '<a href="' . cn_url_modify('start_from=' . $st) . '">\\1</a>'; } } else { $hrefA = '\\1'; } // Make next link
cn_set_GET('source,number,start_from,reverse,static,sortby,dir,per_page,archive,category,nocategory,ucat,template=Default,page_alias,only_active,user_by'); // Show news list echo join('', $echo); // Get config $_enable_pagination = getoption('disable_pagination') ? FALSE : TRUE; // Enable ignore rewrite for pagination $_ignore_rewrite = isset($ignore_rewrite) && $ignore_rewrite ? true : false; $ignore_rewrite = false; // No pagination, if showed rows less than number if ($_cn <= $number || !$number) { $_enable_pagination = FALSE; } // in case of pagination if ($_enable_pagination) { $PSTF = array('category' => ''); $out = cn_get_template('prev_next', $template); // <!--- PREV $_prev_num = $start_from - $number; // Back to previous page if ($_prev_num >= 0) { if (getoption('rw_engine') && !$_ignore_rewrite) { if ($tag) { $url = cn_rewrite('tag', $tag, $_prev_num, $PSTF); } else { $url = cn_rewrite('list', $_prev_num, $archive, $PSTF); } } else { $url = cn_url_modify("start_from={$_prev_num}"); } $PREV = '<a class="cn-previous-news" href="' . $url . '">\\1</a>'; } elseif ($start_from && $_prev_num > 0) {
$date_from = ctime() - 3600 * 24 * 365 * 3; } if ($_tm && $_td && $_ty) { $date_to = mktime(0, 0, 0, intval($_tm), intval($_td), intval($_ty)); } else { $date_to = ctime() + 3600 * 24 * 365 * 3; } $search_st = intval($search_st); $number = intval($number); if (!$template) { $template = "Default"; } if (!$number) { $number = 25; } $form = cn_get_template('search', $template); $form = str_replace('{php_self}', PHP_SELF, $form); // Basic Input Box $form = str_replace('{search_basic}', '<input type="hidden" name="template" value="' . cn_htmlspecialchars(REQ('template')) . '" /><input type="hidden" name="dosearch" value="yes" /><input class="cn_search_basic" type="text" name="search" value="' . cn_htmlspecialchars($search) . '" />', $form); $form = str_replace('{author}', '<input class="cn_author" type="text" name="user" value="' . cn_htmlspecialchars($user) . '" />', $form); $form = str_replace('{in_archives}', '<input class="cn_in_archives" type="checkbox" name="archives" value="Y" ' . ($archives ? 'checked' : '') . ' />', $form); // Make submit button $form = preg_replace('/\\[submit\\](.*?)\\[\\/submit\\]/', '<input class="cn_submit" type="submit" value="\\1" />', $form); // Hidden fields placeholder [hid=name] --> input:hidden if (preg_match_all('/\\[hid=(.*?)\\]/i', $form, $c, PREG_SET_ORDER)) { foreach ($c as $v) { $form = str_replace($v[0], '<input type="hidden" name="' . $v[1] . '" value="' . REQ($v[1]) . '" />', $form); } } // Date selection list($_df, $_mf, $_yf) = make_postponed_date($date_from);
function cn_modify_tagline($e) { global $template, $PHP_SELF; $tag_extrn = strtolower(trim(REQ('tag'))); $echo = array(); $x = isset($e['tg']) ? spsep($e['tg']) : array(); $ix = 1; $tc = count($x); foreach ($x as $tag) { $tag = trim($tag); $esrc = cn_get_template('tagline', $template); // tag selected? if ($tag_extrn === strtolower($tag)) { $esrc = preg_replace('/\\{tag\\:selected\\|(.*?)\\}/i', '\\1', $esrc); } else { $esrc = preg_replace('/\\{tag\\:selected\\|(.*?)\\}/i', '', $esrc); } // get url tag if (preg_match_all('/\\{url(.*?)\\}/i', $esrc, $c, PREG_SET_ORDER)) { foreach ($c as $v) { $disable_rw = FALSE; $_phpself = $PHP_SELF; // save php-self $_get = $_GET; // Additional parameters $group = $v[1] ? cn_params(substr($v[1], 1)) : ''; // manual php-self setting if (isset($group['php_self'])) { $PHP_SELF = $group['php_self']; unset($group['php_self']); } // Manual rewrite disable if (!empty($group[':disable_rw'])) { $disable_rw = TRUE; unset($group[':disable_rw']); } // Tagline - remove ID unset($_GET['id']); $url = cn_url_modify("tag={$tag}", array('group' => $group)); if (getoption('rw_engine') && !$disable_rw) { $url = cn_rewrite('tag', $tag, 0, $group); } $esrc = str_replace($v[0], $url, $esrc); $PHP_SELF = $_phpself; // store php-self $_GET = $_get; // store GET } } if ($ix === $tc) { $esrc = preg_replace('/\\{comma\\|.*?\\}/is', '', $esrc); } else { $esrc = preg_replace('/\\{comma\\|(.*?)\\}/is', '\\1', $esrc); } $echo[] = str_replace('{tag}', cn_htmlspecialchars($tag), $esrc); $ix++; } return join('', $echo); }
function dashboard_personal() { $member = member_get(); // Additional fields for user $personal_more = array('site' => array('name' => 'Personal site', 'type' => 'text'), 'about' => array('name' => 'About me', 'type' => 'textarea')); if (request_type('POST')) { cn_dsi_check(); $clause = ''; $any_changes = FALSE; list($editpassword, $confirmpassword, $editnickname, $edithidemail, $more) = GET('editpassword, confirmpassword, editnickname, edithidemail, more', 'POST'); $avatar_file = isset($_FILES['avatar_file']) ? $_FILES['avatar_file'] : null; if (!isset($member['nick']) && !empty($editnickname) || isset($member['nick']) && $member['nick'] !== $editnickname) { $any_changes = TRUE; } if (!isset($member['e-hide']) && !empty($edithidemail) || isset($member['e-hide']) && $member['e-hide'] !== $edithidemail) { $any_changes = TRUE; } if ($editpassword) { if ($editpassword === $confirmpassword) { $any_changes = TRUE; db_user_update($member['name'], "pass="******"Check your email."; cn_send_mail($member['email'], i18n("Password was changed"), $notification); } else { cn_throw_message('Password and confirm do not match', 'e'); } } // Update additional fields for personal data $o_more = base64_encode(serialize($member['more'])); $n_more = base64_encode(serialize($more)); if ($o_more !== $n_more) { $any_changes = TRUE; db_user_update($member['name'], "more=" . $n_more); } // Set an avatar if (!empty($avatar_file) && $avatar_file['error'] == 0) { $uploads_dir = getoption('uploads_dir'); if ($uploads_dir) { $file_name = 'avatar_' . $member['name'] . '_' . $avatar_file['name']; if (isset($member['avatar']) && $member['avatar'] != $file_name) { // remove old avatar unlink($uploads_dir . $member['avatar']); } move_uploaded_file($avatar_file['tmp_name'], $uploads_dir . $file_name); db_user_update($member['name'], "avatar=" . $file_name); $any_changes = TRUE; } } // Has changes? if ($any_changes) { db_user_update($member['name'], "nick={$editnickname}", "e-hide={$edithidemail}"); // Update & Get member from DB mcache_set('#member', NULL); $member = member_get(); cn_throw_message("User info updated! {$clause}"); } else { cn_throw_message("No changes", 'w'); } } $grp = getoption('#grp'); $acl_desc = $grp[$member['acl']]['N']; // Get info from personal data foreach ($personal_more as $name => $pdata) { if (isset($member['more'][$name])) { $personal_more[$name]['value'] = $member['more'][$name]; } } cn_assign('member, acl_write_news, acl_desc, personal_more', $member, test('Can'), $acl_desc, $personal_more); echoheader('-@dashboard/style.css', "Personal options"); echo exec_tpl('dashboard/personal'); echofooter(); }
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(); }