Server IP : 103.119.228.120 / Your IP : 18.190.153.77 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/softaculous/snews/ |
Upload File : |
<?php /*------------------------------------------------------------------------------ sNews Version: 1.7.1 Issue Date: October 22.10 (keyrocks) Copyright (C): Solucija.com Licence: sNews is licensed under a Creative Commons License. -------------------------------------------------------------------------------- PATCHES: For a list of all patches and bug fixes applied to this Download package, please view the patch-log_snews1.7.txt (notepad) file located in the Patches Log folder. --------------------------------------------------------------------------------*/ // Start sNews session session_start(); /*------------------------------------------------------------ To enable Error Reporting, un-comment string #1 and comment-out string #2, which turns Error Reporting off. ------------------------------------------------------------*/ //error_reporting(E_ALL ^ E_NOTICE); // #1 Report all Errors error_reporting(0); // #2 No Error Reporting // CONFIGURE DATABASE VARIABLES function db($variable) { $db = array( # Edit database connection information only 'dbhost' => '[[softdbhost]]', // MySQL host 'dbname' => '[[softdb]]', // Database name 'dbuname' => '[[softdbuser]]', // Database Username 'dbpass' => '[[softdbpass]]', // Database password // Table prefix for multiple sNews systems on one database. Leave it blank if not used. 'prefix' => '' ); return $db[$variable]; } //SITE - Automatically detects the scripts location. function site() { $host = 'http://'.$_SERVER['HTTP_HOST']; $directory = dirname($_SERVER['SCRIPT_NAME']); $website = $directory == '/' ? $host.'/' : $host.$directory.'/'; return $website; } // Language Variables function l($var) { global $l; return $l[$var]; } // INFO LINE TAGS (readmore, comments, date) $tags = array( 'infoline' => '<p class="date">,readmore,comments,date,edit,</p>', 'comments' => '<p class="meta">,name, '.l('on').' ,date,edit,</p>,<p class="comment">,comment,</p>' ); function tags($tag) { global $tags; return $tags[$tag]; } // Constants // Website define('_SITE',site()); // Prefix define('_PRE',db('prefix')); // Set login constant define('_ADMIN',(isset($_SESSION[_SITE.'Logged_In']) && $_SESSION[_SITE.'Logged_In'] == token() ? true : false)); // SITE SETTINGS - grab site settings from database function s($var) { global $site_settings; if (!$site_settings){ $query = 'SELECT name,value FROM '._PRE.'settings'; $result = mysql_query($query); while ($r = mysql_fetch_assoc($result)) { $site_settings[$r['name']] = $r['value']; } } $value = $site_settings[$var]; return $value; } // SESSION TOKEN function token() { $a = md5(substr(session_id(), 2, 7)); $b = $_SERVER['HTTP_USER_AGENT']; $token = md5($a.$b._SITE); return $token; } // STARTUP connect_to_db(); // LANGUAGE VARIABLES s('language') != 'EN' && file_exists('lang/'.s('language').'.php') == true ? include('lang/'.s('language').'.php') : include('lang/EN.php'); // SYSTEM VARIABLES (not to be translated) //SEF links of the hardcoded items - RESERVED WORDS - will clash if using for article/category seftitles. $l['cat_listSEF'] = 'archive,contact,sitemap,login'; if (_ADMIN) {$l['cat_listSEF'] .= ',administration,admin_category,admin_article,article_new,extra_new,page_new,snews_categories,snews_articles,extra_contents,snews_pages,snews_settings,snews_files,logout,groupings,admin_groupings';} //divider character $l['divider'] = '·'; // used in article pagination links $l['paginator'] = 'p_'; $l['comment_pages'] = 'c_'; // list of files & folders ignored by upload/file list routine $l['ignored_items'] = '.,..,cgi-bin,.htaccess,Thumbs.db,snews.php,index.php,lib.php,style.css,admin.js,'.s('language').'.php'; if(isset($_POST['Loginform']) && !_ADMIN) { $user = checkUserPass($_POST['uname']); $pass = checkUserPass($_POST['pass']); unset($_POST['uname'],$_POST['pass']); // Patch #18 - 1.7.1 - revised string by KikkoMax if (checkMathCaptcha() && md5($user) === s('username') && md5($pass) === s('password')) { //if (md5($user) === s('username') && md5($pass) === s('password') && checkMathCaptcha()) { $_SESSION[_SITE.'Logged_In'] = token(); notification(2,'','administration'); } else { die( notification(2,l('err_Login'),'login')); } } if($_POST['submit_text'] && !_ADMIN){ die (notification(2,l('error_not_logged_in'),'home')); } if (!empty($_GET['category'])) { // Patch #7 - 1.7.1 $url = explode('/', clean($_GET['category'])); $categorySEF = $url[0]; if (isset($url[1])) $subcatSEF = $url[1]; if (substr($url[1], 0, 1) == l('comment_pages') && is_numeric(substr($url[1], 1, 1))) $commentsPage = $url[1]; if (isset($url[2])) $articleSEF= $url[2]; if (isset($url[3])) $commentsPage = $url[3]; if (check_category($categorySEF)) { $_catID = 0; return; } // Admin content if (_ADMIN) { $pub_a = ''; $pub_c = ''; $pub_x = ''; } else { $pub_a = ' AND a.published = 1'; $pub_c = ' AND c.published =\'YES\''; $pub_x = ' AND x.published =\'YES\''; } // Query for / Category / subcategory / article / if ($articleSEF && substr( $articleSEF, 0, 2) != l('paginator') && substr( $articleSEF, 0, 2) != l('comment_pages')) { $MainQuery = 'SELECT a.id AS id, title, position, description_meta, keywords_meta, c.id AS catID, c.name AS name, c.description, x.name AS xname FROM '._PRE.'articles'.' AS a, '._PRE.'categories'.' AS c LEFT JOIN '._PRE.'categories'.' AS x ON c.subcat=x.id WHERE a.category=c.id '.$pub_a.$pub_c.$pub_x.' AND x.seftitle="'.$categorySEF.'" AND c.seftitle="'.$subcatSEF.'" AND a.seftitle="'.$articleSEF.'" '; } // Two queries for / Category / subcategory / OR / Category / article / elseif ($subcatSEF && substr( $subcatSEF, 0, 2) != l('paginator') && substr( $subcatSEF, 0,2) != l('comment_pages')) { $Try_Article = mysql_query('SELECT a.id AS id, title, position, description_meta, keywords_meta, c.id as catID, name, description, subcat FROM '._PRE.'articles'.' AS a LEFT JOIN '._PRE.'categories'.' AS c ON category = c.id WHERE c.seftitle = "'.$categorySEF.'" AND a.seftitle ="'.$subcatSEF.'" '.$pub_a.$pub_c.' AND subcat = 0 '); $R = mysql_fetch_assoc($Try_Article); // query for / category / article / if(empty($R)) { $MainQuery = 'SELECT c.id AS catID, c.name AS name, c.description, c.subcat, x.name AS xname FROM '._PRE.'categories'.' AS x LEFT JOIN '._PRE.'categories'.' AS c ON c.subcat = x.id WHERE x.seftitle = "'.$categorySEF.'" AND c.seftitle = "'.$subcatSEF.'" '.$pub_c.$pub_x ; } } else { switch(true): case (substr( $categorySEF, 0, 2) == l('paginator')) : break; case (false !== strpos($categorySEF, 'rss-')) : die(rss_contents($categorySEF)); // Patch #17A - 1.7.1 removed: , $articleSEF (redundant) // Two queries for / Category / OR /Page/ default: $Try_Page = mysql_query('SELECT id, title, category, description_meta, keywords_meta, position FROM '._PRE.'articles'.' AS a WHERE seftitle = "'.$categorySEF.'" '.$pub_a.' AND position = 3'); // query for category $R = mysql_fetch_assoc($Try_Page); if (!$R) { $MainQuery ='SELECT id AS catID, name, description FROM '._PRE.'categories'.' AS c WHERE seftitle = "'.$categorySEF.'" AND subcat = 0 '.$pub_c; } endswitch; } if (!empty($MainQuery)){ $Mainresult = mysql_query($MainQuery); if (mysql_num_rows($Mainresult) === 1 ){ $R = mysql_fetch_assoc($Mainresult); } else if(!in_array($_GET['action'],explode(',',l('cat_listSEF')))){ // Patch #7 - 1.7.1 $categorySEF = '404'; header('HTTP/1.1 404 Not Found'); unset($subcatSEF,$articleSEF); } update_articles(); } // globals } else { // ID for 'home' if (s('display_page') !== 0) $_ID = s('display_page'); } if(!empty($R['category'])) $_CAT = $R['category']; if(!empty($R['id'])) $_ID = $R['id']; if(!empty($R['title'])) $_TITLE = $R['title']; if(!empty($R['position'])) $_POS = $R['position']; if(!empty($R['catID'])) $_catID = $R['catID']; if(!empty($R['name'])) $_NAME = $R['name']; if(!empty($R['xname'])) $_XNAME = $R['xname']; if(!empty($R['keywords_meta'])) $_KEYW = $R['keywords_meta']; if(!empty($R['description_meta'])) $_DESCR = $R['description_meta']; else $_DESCR = $R['description']; // set comments page for / category / article / if (isset($url[3]) && !$_XNAME) $commentsPage = $url[2]; //TITLE function title() { global $categorySEF, $_DESCR, $_KEYW, $_TITLE, $_NAME, $_XNAME; echo '<base href="'._SITE.'" />'; $title = $_TITLE ? $_TITLE.' - ' : ''; $title .= $_NAME ? $_NAME.' - ' : ''; $title .= $_XNAME ? $_XNAME.' - ' : ''; if (check_category($categorySEF) == true && $categorySEF != 'administration' && $categorySEF) $title .= l($categorySEF).' - '; $title .= s('website_title'); echo ' <title>'.$title.'</title> <meta http-equiv="Content-Type" content="text/html; charset='.s('charset').'" /> <meta name="description" content="'.(!empty($_DESCR) ? $_DESCR : s('website_description')).'" /> <meta name="keywords" content="'.(!empty($_KEYW) ? $_KEYW : s('website_keywords')).'" />'; if (_ADMIN) { echo '<script type="text/javascript">'; include('js/admin.js'); echo '</script>'; } } //BREADCRUMBS function breadcrumbs() { global $categorySEF, $subcatSEF, $_POS, $_TITLE, $_NAME, $_XNAME; $link = '<a href="'._SITE.''; if (_ADMIN) { echo $link.'administration/" title="'.l('administration').'">'.l('administration').'</a> '.l('divider').' '; } echo (!empty($categorySEF) ? $link.'">'.l('home').'</a>' : l('home')); if (!empty($categorySEF) && check_category($categorySEF) == false) { echo (!empty($subcatSEF) ? ' '.l('divider').' '.$link.$categorySEF.'/"> '.(!empty($_XNAME) ? $_XNAME : $_NAME).'</a>' : (!empty($_NAME) ? ' '.l('divider').' '.$_NAME:'')); if (!empty($subcatSEF) && $_XNAME) { echo ($_POS==1 ? ' '.l('divider').' '.$link.$categorySEF.'/'.$subcatSEF.'/">'.$_NAME.'</a>' : ' '.l('divider').' '.$_NAME); } echo (!empty($_TITLE)? ' '.l('divider').' '.$_TITLE : ''); } if (check_category($categorySEF) == true && $categorySEF != 'administration' && $categorySEF) { echo ' '.l('divider').' '.l($categorySEF);} } // LOGIN LOGOUT LINK function login_link() { $login = '<a href="'._SITE; $login .= _ADMIN ? 'administration/" title="'.l('administration').'">'.l('administration').'</a> '.l('divider').' <a href="'._SITE.'logout/" title="'.l('logout').'">'.l('logout') : 'login/" title="'.l('login').'">'.l('login').''; $login .= '</a>'; echo $login; } // DISPLAY CATEGORIES function categories() { global $categorySEF; $qwr = !_ADMIN ? ' AND a.visible=\'YES\'' : ''; if (s('num_categories') == 'on') { $count = ', COUNT(DISTINCT a.id) as total'; $join = 'LEFT OUTER JOIN '._PRE.'articles'.' AS a ON (a.category = c.id AND a.position = 1 AND a.published = 1'.$qwr.')'; } else { $count =''; $join=''; } $result = mysql_query('SELECT c.seftitle, c.name, description, c.id AS parent'.$count.' FROM '._PRE.'categories'.' AS c '.$join.' WHERE c.subcat = 0 AND c.published = \'YES\' GROUP BY c.id ORDER BY c.catorder,c.id'); if (mysql_num_rows($result) > 0){ while ($r = mysql_fetch_array($result)) { $category_title = $r['seftitle']; $r['name'] = (s('language')!='EN' && $r['name'] == 'Uncategorized' && $r['parent']==1) ? l('uncategorised') : $r['name']; $class = $category_title == $categorySEF ? ' class="current"' : ''; if (isset($r['total'])) { $num='('.$r['total'].')'; } echo '<li><a'.$class.' href="'._SITE.$category_title.'/" title="'.$r['name'].' - '.$r['description'].'">'.$r['name'].$num.'</a>'; $parent = $r['parent']; if ($category_title == $categorySEF) { subcategories($parent); } echo '</li>'; } } else { echo '<li>'.l('no_categories').'</li>'; } } function subcategories($parent) { global $categorySEF, $subcatSEF; $qwr = !_ADMIN ? ' AND a.visible=\'YES\'' : ''; if (s('num_categories') == 'on') { $count = ', COUNT(DISTINCT a.id) AS total'; $join ='LEFT OUTER JOIN '._PRE.'articles'.' AS a ON (a.category = c.id AND a.position = 1 AND a.published = 1'.$qwr.')'; } else { $count =''; $join=''; } $subresult = mysql_query('SELECT c.seftitle AS subsef, description, name'.$count.' FROM '._PRE.'categories'.' AS c '.$join.' WHERE c.subcat = '.$parent.' AND c.published = \'YES\' GROUP BY c.id ORDER BY c.catorder,c.id'); if (mysql_num_rows($subresult) !== 0) { echo '<ul>'; while ($s = mysql_fetch_array($subresult)) { $subSEF = $s['subsef']; $class = $subSEF == $subcatSEF ? ' class="current"' : ''; if (isset($s['total'])) { $num=' ('.$s['total'].')'; } echo '<li class="subcat"> <a'.$class.' href="'._SITE.$categorySEF.'/'.$subSEF.'/" title="'.$s['description'].'"> '.$s['name'].$num.'</a></li>'; } echo '</ul>'; } } // DISPLAY PAGES function pages() { global $categorySEF,$_No3; $qwr = !_ADMIN ? ' AND visible=\'YES\'' : ''; $class = empty($categorySEF) ? ' class="current"' : ''; echo '<li><a'.$class.' href="'._SITE.'">'.l('home').'</a></li>'; $class = ($categorySEF == 'archive') ? ' class="current"' : ''; echo '<li><a'.$class.' href="'._SITE.'archive/">'.l('archive').'</a></li>'; $query = "SELECT id, seftitle, title FROM "._PRE.'articles'." WHERE position = 3 $qwr ORDER BY artorder ASC, id"; $result = mysql_query($query); $num = mysql_num_rows($result); while ($r = mysql_fetch_array($result)) { $title = $r['title']; $class = ($categorySEF == $r['seftitle'])? ' class="current"' : ''; if ($r['id'] != s('display_page')) { echo '<li><a'.$class.' href="'._SITE.$r['seftitle'].'/">'.$title.'</a></li>'; } } $class = ($categorySEF == 'contact') ? ' class="current"': ''; echo '<li><a'.$class.' href="'._SITE.'contact/">'.l('contact').'</a></li>'; $class = ($categorySEF == 'sitemap') ? ' class="current"': ''; echo '<li><a'.$class.' href="'._SITE.'sitemap/">'.l('sitemap').'</a></li>'; if ($num) $_No3 = true; } //EXTRA CONTENT function extra($mode='', $styleit = 0, $classname = '', $idname= '') { global $categorySEF, $subcatSEF, $articleSEF, $_ID, $_catID; if (empty($mode)) { $mode = retrieve('seftitle', 'extras','id',1); } if (!_ADMIN) $qwr = ' AND visible=\'YES\''; else $qwr = ''; $mode = strtolower($mode); $getExtra = retrieve('id', 'extras', 'seftitle', $mode); $subCat = retrieve('subcat', 'categories', 'id', $_catID); if (!empty( $_ID)) { $getArt = $_ID; } if (!empty($subcatSEF)) { $catSEF = $subcatSEF; } $url = $categorySEF.(!empty($subcatSEF)? '/'.$subcatSEF:'').(!empty($articleSEF)?'/'.$articleSEF :''); $sql = 'SELECT id,title,seftitle,text,category,extraid,page_extra, position,displaytitle,show_in_subcats,visible FROM '._PRE.'articles'.' WHERE published = 1 AND position = 2 '; $query = $sql.(!empty($getExtra) ? ' AND extraid = '.$getExtra : ' AND extraid = 1'); $query = $query.$qwr.' ORDER BY artorder ASC,id ASC'; $result = mysql_query($query) or die(mysql_error()); while ($r = mysql_fetch_array($result)) { $category = $r['category']; $page = $r['page_extra']; switch (true) { case ($category == 0 && $page<1): $print = false; break; case ($category == 0 && empty($_catID) && $page!=''): $print = check_category($catSEF) != true? true : false; break; case ($category == $_catID || ($category == $subCat && $r['show_in_subcats'] == 'YES')): $print = true; break; case ($category == -3 && $getArt == $page): $print = true; break; case ($category == -3 && $_catID == 0 && $getArt != $page && $page == 0 && $categorySEF !='' && !in_array($categorySEF,explode(',',l('cat_listSEF'))) && substr( $categorySEF, 0, 2) != l('paginator') ): $print = true; break; // To show up on all pages only case ($category == -1 && $_catID == 0 && $getArt != $page && $page == 0): $print = true; break; // To show up on all categories and pages case ($category == -1): $print = true; break; default: $print = false; } if ($print == true) { if ($styleit == 1) { $container ='<div'; $container .= !empty($classname) ? ' class="'.$classname.'"' : ''; $container .= !empty($idname) ? ' id="'.$idname.'"' : ''; $container .= '>'; echo $container; } if ($r['displaytitle'] == 'YES') { echo '<h3>'. $r['title'] .'</h3>'; } file_include($r['text'], 9999000); $visiblity = $r['visible'] == 'YES' ? '<a href="'._SITE.'?action=process&task=hide&item=snews_articles&id='.$r['id'].'&back='.$url.'">'.l('hide').'</a>' : l('hidden').' ( <a href="'._SITE.'?action=process&task=show&item=snews_articles&id='.$r['id'].'&back='.$url.'">'.l('show').'</a> )'; echo _ADMIN ? '<p><a href="'._SITE.'?action=admin_article&id='.$r['id'].'" title="'.l('edit').' '.$r['seftitle'].'"> '.l('edit').'</a>'.' '.l('divider').' '.$visiblity.'</p>' : ''; if ($styleit == 1) { echo '</div>'; } } } } // PAGINATOR function paginator($pageNum, $maxPage, $pagePrefix) { global $categorySEF,$subcatSEF, $articleSEF,$_ID, $_catID,$_POS, $_XNAME; switch (true){ case !$_ID && !$_catID : $uri =''; break; case $_ID && $_XNAME : $uri = $categorySEF.'/'.$subcatSEF.'/'.$articleSEF.'/'; break; case $_POS == 1 || $_XNAME : $uri = $categorySEF.'/'.$subcatSEF.'/'; break; default : $uri = $categorySEF.'/'; } $link = '<a href="'._SITE.$uri ; $prefix = !empty($pagePrefix) ? $pagePrefix : ''; if ($pageNum > 1) { $goTo = $link; $prev = (($pageNum-1)==1 ? $goTo : $link.$prefix.($pageNum - 1).'/').'" title="'.l('page').' '.($pageNum - 1).'"> < '.l('previous_page').'</a> '; $first = $goTo.'" title="'.l('first_page').' '.l('page').'"> << '.l('first_page').'</a>'; } else { $prev = '< '.l('previous_page'); $first = '<< '.l('first_page'); } if ($pageNum < $maxPage) { $next = $link.$prefix.($pageNum + 1).'/" title="'.l('page').' '.($pageNum + 1).'"> '.l('next_page').' ></a> '; $last = $link.$prefix.$maxPage.'/" title="'.l('last_page').' '.l('page').'"> '.l('last_page').' >></a> '; } else { $next = l('next_page').' > '; $last = l('last_page').' >>'; } echo ' <div class="paginator"> '.$first.' '.$prev.' <strong>['.$pageNum.'</strong> / <strong>'.$maxPage.']</strong> '.$next.' '.$last.' </div>'; } // CENTER function center() { // fatal session produced on failed login, and will display error message. if (isset($_SESSION[_SITE.'fatal'])) { echo $_SESSION[_SITE.'fatal']; unset($_SESSION[_SITE.'fatal']); } else { global $categorySEF, $subcatSEF, $articleSEF; switch(true) { case isset($_GET['category']): $action = $categorySEF; break; case isset($_GET['action']): // Patch #7 - 1.7.1 $action = $categorySEF == '404' ? $categorySEF : clean(cleanXSS($_GET['action'])); break; } switch(true) { case isset($_POST['search_query']): search(); return; break; case isset($_POST['comment']): comment('comment_posted'); return; break; case isset($_POST['contactform']): contact(); return; break; case isset($_POST['Loginform']): administration(); return; break; case isset($_POST['submit_text']): processing(); return; break; } if (_ADMIN) { switch ($action) { case 'administration': administration(); return; break; case 'snews_settings': settings(); return; break; case 'snews_categories': admin_categories(); return; break; case 'admin_category': form_categories(); return; break; case 'admin_subcategory': form_categories('sub'); return; break; case 'groupings': admin_groupings(); return; break; case 'admin_groupings': form_groupings(); return; break; case 'snews_articles': admin_articles('article_view'); return; break; case 'extra_contents': admin_articles('extra_view'); return; break; case 'snews_pages': admin_articles('page_view'); return; break; case 'admin_article': form_articles(''); return; break; case 'article_new': form_articles('article_new'); return; break; case 'extra_new': form_articles('extra_new'); return; break; case 'page_new': form_articles('page_new'); return; break; case 'editcomment': edit_comment(); return; break; case 'snews_files': files(); return; break; case 'process': processing(); return; break; case 'logout': session_destroy(); echo '<meta http-equiv="refresh" content="2; url='._SITE.'">'; echo '<h2>'.l('log_out').'</h2>'; return; break; } } switch ($action) { case 'archive': archive(); break; case 'sitemap': sitemap(); break; case 'contact': contact(); break; case 'login': login(); break; case '404': echo '<p class="warning">'.l('error_404').'</p>'; // Patch #404 - 1.7.1 - message string revised. sitemap(); break; // Patch #404 - 1.7.1 - show sitemap with message. default: articles(); break; } } } // ARTICLES function articles() { global $categorySEF, $subcatSEF, $articleSEF, $_ID, $_POS, $_catID, $_XNAME; $frontpage = s('display_page'); $title_not_found = '<h2>'.l('none_yet').'</h2>'; if (_ADMIN) { $visible=''; $title_not_found .= '<p>'.l('create_new').' <a href="'._SITE.'administration/" title="'.l('administration').'">'.l('administration').'</a></p>'; } else { $visible =' AND a.visible=\'YES\' '; } if ($_ID || (!$_catID && $frontpage != 0)) { if (!$_ID) $_ID = $frontpage; // article or page, id as indentifier $query_articles = 'SELECT a.id AS aid,title,a.seftitle AS asef,text,a.date, a.displaytitle,a.displayinfo,a.commentable,a.visible FROM '._PRE.'articles'.' AS a WHERE id ='.$_ID.$visible; } else { if (s('display_pagination') == 'on') $on = true; else $on = false; if ($on == true) { if ($articleSEF) { $SEF = $articleSEF; } elseif ($subcatSEF) { $SEF = $subcatSEF; } else { $SEF = $categorySEF; } // pagination $currentPage = strpos($SEF, l('paginator')) === 0 ? str_replace(l('paginator'), '', $SEF) : ''; if ($_catID) { $count = 'SELECT COUNT(a.id) AS num FROM '._PRE.'articles'.' AS a WHERE position = 1 AND a.published =1 AND category = '.$_catID.$visible.' GROUP BY category'; } else { $count = 'SELECT COUNT(a.id) AS num FROM '._PRE.'articles'.' AS a LEFT OUTER JOIN '._PRE.'categories'.' as c ON category = c.id LEFT OUTER JOIN '._PRE.'categories'.' as x ON c.subcat = x.id AND (x.published =\'YES\') WHERE show_on_home = \'YES\' '.$visible.' AND position = 1 AND a.published =1 AND c.published =\'YES\' GROUP BY show_on_home'; } $count = mysql_query($count); if ($count) { $r = mysql_fetch_array($count); $num = $r['num']; } } if ($num === 0 ) { echo $title_not_found; } else { $articleCount = s('article_limit'); $article_limit = (empty($articleCount) || $articleCount < 1) ? 100 : $articleCount; $totalPages = ceil($num/$article_limit); if (!isset($currentPage) || !is_numeric($currentPage) || $currentPage < 1) { $currentPage = 1; } // get the rows for category if ($_catID) { $query_articles = 'SELECT a.id AS aid,title,a.seftitle AS asef,text,a.date, a.displaytitle,a.displayinfo,a.commentable,a.visible FROM '._PRE.'articles'.' AS a WHERE position = 1 AND a.published =1 AND category = '.$_catID.$visible.' ORDER BY artorder ASC,date DESC LIMIT '.($currentPage - 1) * $article_limit.','.$article_limit; } else { $query_articles = 'SELECT a.id AS aid,title,a.seftitle AS asef,text,a.date, displaytitle,displayinfo,commentable,a.visible, c.name AS name,c.seftitle AS csef, x.name AS xname,x.seftitle AS xsef FROM '._PRE.'articles'.' AS a LEFT OUTER JOIN '._PRE.'categories'.' as c ON category = c.id LEFT OUTER JOIN '._PRE.'categories'.' as x ON c.subcat = x.id AND x.published =\'YES\' WHERE show_on_home = \'YES\' AND position = 1 AND a.published =1 AND c.published =\'YES\''.$visible.' ORDER BY date DESC LIMIT '.($currentPage - 1) * $article_limit.','.$article_limit; } } } $result = mysql_query($query_articles); $numrows = mysql_num_rows($result); if (!$result || !$numrows) { if (_ADMIN) { echo $title_not_found; } echo '<ul class="vertical">'; menu_articles(0,10,1); echo '</ul>'; } else { $link = '<a href="'._SITE; while ($r = mysql_fetch_array($result)) { $infoline = $r['displayinfo'] == 'YES' ? true : false; $text = stripslashes($r['text']); if (!empty($currentPage)) { $short_display = strpos($text, '[break]'); $shorten = $short_display == 0 ? 9999000 : $short_display; } else { $shorten = 9999000; } $comments_query = 'SELECT id FROM '._PRE.'comments'.' WHERE articleid = '.$r['aid'].' AND approved = \'True\''; $comments_result = mysql_query($comments_query); $comments_num = mysql_num_rows($comments_result); $a_date_format = date(s('date_format'), strtotime($r['date'])); if ($r['csef']) $uri = $r['xsef'] ? $r['xsef'].'/'.$r['csef'] : $r['csef']; elseif ($_XNAME) $uri = $categorySEF.'/'.$subcatSEF; else $uri = $categorySEF; $title = $r['title']; if ($r['displaytitle'] == 'YES') { if (!$_ID) { echo '<h2 class="big">'.$link.$uri.'/'.$r['asef'].'/">'.$title.'</a></h2>'; } else { echo '<h2>'.$title.'</h2>'; } } file_include(str_replace('[break]', '',$text), $shorten); $commentable = $r['commentable']; $visiblity = $r['visible'] == 'YES' ? '<a href="'._SITE.'?action=process&task=hide&item=snews_articles&id='.$r['aid'].'&back='.$uri.'">'.l('hide').'</a>' : l('hidden').' ( <a href="'._SITE.'?action=process&task=show&item=snews_articles&id='.$r['aid'].'&back='.$uri.'">'.l('show').'</a> )' ; $edit_link = $link.'?action=admin_article&id='.$r['aid'].'" title="'.$title.'">'.l('edit').'</a> '; $edit_link.= ' '.l('divider').' '.$visiblity; if (!empty($currentPage)) { if ($infoline == true) { $tag = explode(',', tags('infoline')); foreach ($tag as $tag) { switch (true) { case ($tag == 'date'): echo $a_date_format; break; case ($tag == 'readmore' && strlen($r['text']) > $shorten): echo $link.$uri.'/'.$r['asef'].'/">'.l('read_more').'</a> '; break; case ($tag == 'comments' && ($commentable == 'YES' || $commentable == 'FREEZ')): echo $link.$uri.'/'.$r['asef'].'/#'.l('comment').'1"> '.l('comments').' ('.$comments_num.')</a> '; break; case ($tag == 'edit' && _ADMIN): echo ' '.$edit_link; break; case ($tag != 'readmore' && $tag != 'comments' && $tag != 'edit'): echo $tag; break; } } } else if (_ADMIN) { echo '<p>'.$edit_link.'</p>'; } } else if (empty($currentPage)) { if ($infoline == true) { $tag = explode(',', tags('infoline')); foreach ($tag as $tag ) { switch ($tag) { case 'date': echo $a_date_format; break; case 'readmore': case 'comments': ; break; case 'edit': if (_ADMIN) { echo ' '.$edit_link; } break; default: echo $tag; } } } else if (_ADMIN) { echo '<p>'.$edit_link.'</p>'; } } } if (!empty($currentPage) && ($num> $article_limit) && $on) { paginator( $currentPage, $totalPages, l('paginator')); } if (!empty($_POS) && empty($currentPage) && $infoline == true) { if ($commentable == 'YES') { comment('unfreezed'); } else if ($commentable == 'FREEZ') { comment('freezed'); } } } } // COMMENTS function comment($freeze_status) { echo '<h3>Comments</h3>'; global $categorySEF, $subcatSEF, $articleSEF, $_ID, $commentsPage; if (isset($commentsPage)) { $commentsPage = str_replace(l('comment_pages'),'',$commentsPage); } if (strpos($articleSEF, l('paginator')) === 0) { $articleSEF = str_replace(l('paginator'), '', $articleSEF); } if (!isset($commentsPage) || !is_numeric($commentsPage) || $commentsPage < 1) { $commentsPage = 1; } $comments_order = s('comments_order'); if (isset($_POST['comment'])) { $comment = cleanWords(trim($_POST['text'])); $comment = strlen($comment) > 4 ? clean(cleanXSS($comment)) : null; $name = trim($_POST['name']); $name = preg_replace('/[^a-zA-Z0-9_\s-]/', '', $name); // Patch #15 - 1.7.1 if (empty($name)) { $name = 'Anonymous'; } // Patch #15 - 1.7.1 $name = strlen($name) > 1 ? clean(cleanXSS($name)) : null; $url = trim($_POST['url']); $url = preg_replace('/[^a-zA-Z0-9_:\/\.-]/', '', $url); // Patch #15 - 1.7.1 $url = (strlen($url) > 8 && strpos($url, '?') === false) ? clean(cleanXSS($url)) : null; $post_article_id = (is_numeric($_POST['id']) && $_POST['id'] > 0) ? $_POST['id'] : null; $ip = (strlen($_POST['ip']) < 16) ? clean(cleanXSS($_POST['ip'])) : null; if (_ADMIN) { $doublecheck = 1; $ident=1; } else { $contentCheck = retrieve('id', 'comments', 'comment', $comment); $ident = !$contentCheck || (time() - $_SESSION[_SITE.'poster']['time']) > s('comment_repost_timer') || $_SESSION[_SITE.'poster']['ip'] !== $ip ? 1 : 0; $doublecheck = $_SESSION[_SITE.'poster']['article'] === "$comment:|:$post_article_id" && (time()-$_SESSION[_SITE.'poster']['time']) < s('comment_repost_timer') ? 0 : 1; } if ($ip == $_SERVER['REMOTE_ADDR'] && $comment && $name && $post_article_id && checkMathCaptcha() && $doublecheck == 1 && $ident == 1) { $url = preg_match('/((http)+(s)?:(\/\/)|(www\.))([a-z0-9_\-]+)/', $url) ? $url : ''; $url = substr($url, 0, 3) == 'www' ? 'http://'.$url : $url; $time = date('Y-m-d H:i:s'); unset($_SESSION[_SITE.'poster']); $approved = s('approve_comments') != 'on'|| _ADMIN ? 'True' : ''; $query = 'INSERT INTO '._PRE.'comments'.'(articleid, name, url, comment, time, approved) VALUES'. "('$post_article_id', '$name', '$url', '$comment', '$time', '$approved')"; mysql_query($query); $_SESSION[_SITE.'poster']['article']="$comment:|:$post_article_id"; $_SESSION[_SITE.'poster']['time'] = time(); // this is to set session for checking multiple postings. $_SESSION[_SITE.'poster']['ip'] = $ip; $commentStatus = s('approve_comments') == 'on'&& !_ADMIN ? l('comment_sent_approve') : l('comment_sent'); // eMAIL COMMENTS if (s('mail_on_comments') == 'on' && !_ADMIN) { if (s('approve_comments') == 'on') { $status = l('approved_text'); $subject =l('subject_a'); } else { $status = l('not_waiting_approved'); $subject =l('subject_b'); } $to = s('website_email'); $send_array = array( 'to'=>$to, 'name'=>$name, 'comment'=>$comment, 'ip'=>$ip, 'url'=>$url, 'subject'=>$subject, 'status'=>$status); send_email($send_array); } // End of Mail } else { $commentStatus = l('comment_error'); $commentReason = l('ce_reasons'); $fail = true; $_SESSION[_SITE.'comment']['name'] = $name; $_SESSION[_SITE.'comment']['comment'] = br2nl($comment); $_SESSION[_SITE.'comment']['url'] = $url; $_SESSION[_SITE.'comment']['fail'] = $fail; } echo '<h2>'.$commentStatus.'</h2>'; if (!empty($commentReason)) { echo '<p>'.$commentReason.'</p>'; } $postArt = clean(cleanXSS($_POST['article'])); $postArtID = retrieve('category','articles','id',$post_article_id); if ($postArtID == 0) { $postCat = '' ; } else { $postCat = cat_rel($postArtID, 'seftitle').'/'; } if ($fail){ $back_link = _SITE.$postCat.$postArt; echo '<a href="'.$back_link.'/">'.l('back').'</a>'; } else { echo '<meta http-equiv="refresh" content="1; url='._SITE.$postCat.$postArt.'/">'; } } else { $commentCount = s('comment_limit'); $comment_limit = (empty($commentCount) || $commentCount < 1) ? 100 : $commentCount; if (isset($commentsPage)) { $pageNum = $commentsPage; } $offset = ($pageNum - 1) * $comment_limit; $totalrows = 'SELECT count(id) AS num FROM '._PRE.'comments'.' WHERE articleid = '.$_ID.' AND approved = \'True\';'; $rowsresult = mysql_query($totalrows); $numrows = mysql_fetch_array($rowsresult); $numrows = $numrows['num']; // Patch #8 - 1.7.1 - redundant section removed if ($numrows > 0) { $query = 'SELECT id,articleid,name,url,comment,time,approved FROM '._PRE.'comments'.' WHERE articleid = '.$_ID.' AND approved = \'True\' ORDER BY id '.$comments_order.' LIMIT '."$offset, $comment_limit"; $result = mysql_query($query) or die(l('dberror')); $ordinal = 1; $date_format = s('date_format'); $edit_link = ' <a href="'._SITE.'?action='; while ($r = mysql_fetch_array($result)) { $date = date($date_format, strtotime($r['time'])); $commentNum = $offset + $ordinal; $tag = explode(',', tags('comments')); foreach ($tag as $tag) { switch (true) { case ($tag == 'date'): echo '<a id="'.l('comment').$commentNum.'" name="'.l('comment').$commentNum.'"></a>'.$date; break; case ($tag == 'name'): $name = $r['name']; echo !empty($r['url']) ? '<a href="'.$r['url'].'" title="'.$r['url'].'" rel="nofollow"> '.$name.'</a> ' : $name; break; case ($tag == 'comment'): echo $r['comment']; break; case ($tag == 'edit' && _ADMIN): echo $edit_link.'editcomment&commentid='.$r['id'].'" title="'.l('edit').' '.l('comment').'">'.l('edit').'</a> '; echo $edit_link.'process&task=deletecomment&commentid='.$r['id'].'" title="'.l('delete').' '.l('comment').'" onclick="return pop()">'.l('delete').'</a>'; break; case ($tag == 'edit'): ; break; default: echo $tag; } } $ordinal++; } $maxPage = ceil($numrows / $comment_limit); $back_to_page = ceil(($numrows + 1) / $comment_limit); if ($maxPage > 1) { paginator($pageNum, $maxPage,l('comment_pages')); } } if ($freeze_status != 'freezed' && s('freeze_comments') != 'YES') { if ($numrows == 0) {echo '<p>'.l('no_comment').'</p>';} // Patch #8 - 1.7.1 - new line added // recall and set vars for reuse when botched post if($_SESSION[_SITE.'comment']['fail'] == true) { $name = $_SESSION[_SITE.'comment']['name']; $comment = $_SESSION[_SITE.'comment']['comment']; $url = $_SESSION[_SITE.'comment']['url']; unset($_SESSION[_SITE.'comment']); } else { $url = $name = $comment = ''; } // end var retrieval $art_value = empty($articleSEF) ? $subcatSEF : $articleSEF; echo '<div class="commentsbox"><h2>'.l('addcomment').'</h2>'."\r\n"; echo '<p>'.l('required').'</p>'."\r\n"; echo html_input('form', '', 'post', '', '', '', '', '', '', '', '', '', 'post', _SITE, '')."\r\n"; echo html_input('text', 'name', 'name', $name, '* '.l('name'), 'text', '', '', '', '', '', '', '', '', '')."\r\n"; echo html_input('text', 'url', 'url', $url, l('url'), 'text', '', '', '', '', '', '', '', '', '')."\r\n"; echo html_input('textarea', 'text', 'text', $comment, '* '.l('comment'), '', '', '', '', '', '5', '5', '', '', '')."\r\n"; echo mathCaptcha()."\r\n"; echo '<p>'; echo html_input('hidden', 'category', 'category', $categorySEF, '', '', '', '', '', '', '', '', '', '', '')."\r\n"; echo html_input('hidden', 'id', 'id', $_ID, '', '', '', '', '', '', '', '', '', '', '')."\r\n"; echo html_input('hidden', 'article', 'article', $art_value, '', '', '', '', '', '', '', '', '', '', '')."\r\n"; echo html_input('hidden', 'commentspage', 'commentspage', $back_to_page, '', '', '', '', '', '', '', '', '', '', '')."\r\n"; echo html_input('hidden', 'ip', 'ip', $_SERVER['REMOTE_ADDR'], '', '', '', '', '', '', '', '', '', '', '')."\r\n"; echo html_input('hidden', 'time', 'time', time(), '', '', '', '', '', '', '', '', '', '', ''); echo html_input('submit', 'comment', 'comment', l('submit'), '', 'button', '', '', '', '', '', '', '', '', '')."\r\n"; echo '</p></form></div>'; } else { echo '<p>'.l('frozen_comments').'</p>'; } } } // ARCHIVE function archive($start = 0, $size = 200) { echo '<h2>'.l('archive').'</h2>'; $query = 'SELECT id FROM '._PRE.'articles'.' WHERE position = 1 AND published = 1 AND visible = \'YES\' ORDER BY date DESC LIMIT '."$start, $size"; $result = mysql_query($query); $count = mysql_num_rows($result); if ($count === 0) { echo '<p>'.l('no_articles').'</p>'; } else { while ($r = mysql_fetch_array($result)) { $Or_id[] = 'a.id ='.$r['id']; } $Or_id = implode(' OR ',$Or_id); $query = 'SELECT title,a.seftitle AS asef,a.date AS date, c.name AS name,c.seftitle AS csef, x.name AS xname,x.seftitle AS xsef FROM '._PRE.'articles'.' AS a LEFT OUTER JOIN '._PRE.'categories'.' as c ON category = c.id LEFT OUTER JOIN '._PRE.'categories'.' as x ON c.subcat = x.id WHERE ('.$Or_id.') AND a.published = 1 AND c.published =\'YES\' AND (x.published =\'YES\' || x.published IS NULL) ORDER BY date DESC LIMIT '."$start, $size"; $result = mysql_query($query); $month_names = explode(', ', l('month_names')); $dot = l('divider'); echo '<p>'; while ($r = mysql_fetch_array($result)) { $year = substr($r['date'], 0, 4); $month = substr($r['date'], 5, 2) -1; $month_name = (substr($month, 0, 1) == 0) ? $month_names[substr($month, 1, 1)] : $month_names[$month]; if ($last <> $year.$month) { echo '<strong>'.$month_name.', '.$year.'</strong><br />'; } $last = $year.$month; $link = isset($r['xsef']) ? $r['xsef'].'/'.$r['csef'] : $r['csef']; echo $dot.' <a href="'._SITE.$link.'/'.$r['asef'].'/"> '.$r['title'].' ('.$r['name'].')</a><br />'; } echo'</p>'; } } // SITEMAP function sitemap() { echo '<h2>'.l('sitemap').'</h2> <h3><strong>'.l('pages').'</strong></h3> <ul>'; $link = '<li><a href="'._SITE; echo $link.'">'.l('home').'</a></li>'; echo $link.'archive/">'.l('archive').'</a></li>'; // Patch #16 - 1.7.1 // added id to SELECT it, and filter out page if selected as Home with: AND id <> '".s('display_page')."' // selects only IDs that are less or more than ID of the designated home page. $query = "SELECT id,title,seftitle FROM "._PRE.'articles'." WHERE position = 3 AND published = 1 AND visible = 'YES' AND id <> '".s('display_page')."' ORDER BY artorder ASC, date, id"; $result = mysql_query($query); while ($r = mysql_fetch_array($result)) { echo $link.$r['seftitle'].'/">'.$r['title'].'</a></li>'; } echo $link.'contact/">'.l('contact').'</a></li>'; echo $link.'sitemap/">'.l('sitemap').'</a></li>'; echo '</ul> <h3><strong>'.l('articles').'</strong></h3> <ul>'; $art_query = 'SELECT title, seftitle, date FROM '._PRE.'articles'.' WHERE position = 1 AND published = 1 AND visible = \'YES\''; $cat_query = 'SELECT id, name, seftitle, description, subcat FROM '._PRE.'categories'.' WHERE published = \'YES\' AND subcat = 0 ORDER BY catorder,id'; $cat_result = mysql_query($cat_query); if (mysql_num_rows($cat_result) == 0) { echo '<li>'.l('no_articles').'</li></ul>'; } else { while ($c = mysql_fetch_array($cat_result)) { $category_title = $c['seftitle']; echo '<li><strong><a href="'._SITE.$category_title.'/" title="'.$c['description'].'"> '.$c['name'].'</a></strong>'; $catid = $c['id']; $query = $art_query.' AND category = '.$catid.' ORDER BY id DESC'; $result = mysql_query($query); if (mysql_num_rows($result) > 0) { echo '<ul>'; } while ($r = mysql_fetch_array($result)) { echo '<li>'.l('divider').' <a href="'._SITE.$category_title.'/'.$r['seftitle'].'/"> '.$r['title'].'</a></li>'; } if (mysql_num_rows($result) > 0) { echo '</ul>'; } $subcat_result = mysql_query('SELECT id, name, seftitle, description, subcat FROM '._PRE.'categories'.' WHERE published = \'YES\' AND subcat = '.$c['id'].' ORDER BY catorder ASC'); if (mysql_num_rows($subcat_result) > 0) { echo '<ul>'; } while ($s = mysql_fetch_array($subcat_result)) { $subcat_title = $s['seftitle']; $subcat_name = $s['name']; echo '<li class="subcat"><strong><a href="'. _SITE.$category_title.'/'.$subcat_title.'/" title="'.$s['description'].'">'.$subcat_name.'</a></strong>'; $subcatid = $s['id']; $query = $art_query.' AND category = '.$subcatid.' ORDER BY id DESC'; $artresult = mysql_query($query); if (mysql_num_rows($artresult) > 0) { echo '<ul>'; } while ($r = mysql_fetch_array($artresult)) { echo '<li class="subcat">'.l('divider').' <a href="'._SITE.$category_title.'/'.$subcat_title.'/'.$r['seftitle'].'/"> '.$r['title'].'</a></li>'; } if (mysql_num_rows($artresult) > 0) { echo '</ul>'; } echo '</li>'; } if (mysql_num_rows($subcat_result) > 0) { echo '</ul>'; } echo '</li>'; } echo '</ul>'; } } // CONTACT FORM - // Patch #12 - 1.7.1 - security patch added function contact() { if (!isset($_POST['contactform'])) { $_SESSION[_SITE.'time'] = $time = time(); echo '<div class="commentsbox"><h2>'.l('contact').'</h2> <p>'.l('required').'</p> <form method="post" action="'._SITE.'" id="post" accept-charset="UTF-8"> <p><label for="name">* ',l('name'),'</label>:<br /> <input type="text" name="name" id="name" maxlength="100" class="text" value="" /></p> <p><label for="email">* ',l('email'),'</label>:<br /> <input type="text" name="email" id="email" maxlength="320" class="text" value="" /></p> <p><label for="weblink">',l('url'),'</label>:<br /> <input type="text" name="weblink" id="weblink" maxlength="160" class="text" value="" /></p> <p><label for="message">* ',l('message'),'</label>:<br /> <textarea name="message" rows="5" cols="5" id="message"></textarea></p> ',mathCaptcha(),' <p><input type="hidden" name="ip" id="ip" value="',$_SERVER['REMOTE_ADDR'],'" /> <input type="hidden" name="time" id="time" value="',time(),'" /> <input type="submit" name="contactform" id="contactform" class="button" value="',l('submit'),'" /></p> </form> </div>'; } elseif( isset( $_SESSION[_SITE.'time'] ) ) { $count = $magic = 0; if( get_magic_quotes_gpc() ){ $magic = 1; } foreach($_POST as $k => $v){ if($count === 8 ) die; if( $magic ) $$k = stripslashes($v); else $$k = $v; ++$count; } $to = s('website_email'); $subject = s('contact_subject'); $name = (isset($name[0]) && ! isset($name[300]) ) ? trim($name) : null; $name = ! preg_match('/[\\n\\r]/', $name) ? $name : die; $mail = (isset($email[6]) && ! isset($email[320]) ) ? trim($email) : null; $mail = ! preg_match('/[\\n\\r]/', $mail) ? $mail : die; $url = (isset($weblink[4]) && ! isset($weblink[160]) ) ? trim($weblink) : null; $url = ( strpos($url, '?') === false && ! preg_match('/[\\n\\r]/', $url)) ? $url : null; $message = (isset($message[10]) && ! isset($message[6000]) ) ? strip_tags($message) : null; $time = ( isset($_SESSION[_SITE.'time']) && $_SESSION[_SITE.'time'] === (int)$time && (time() - $time) > 10) ? $time : null ; if ( isset($ip) && $ip === $_SERVER['REMOTE_ADDR'] && $time && $name && $mail && $message && checkMathCaptcha()) { unset($_SESSION[_SITE.'time']); echo notification(0,l('contact_sent'),'home'); $send_array = array( 'to'=>$to, 'name'=>$name, 'email'=>$mail, 'message'=>$message, 'ip'=>$ip, 'url'=>$url, 'subject'=>$subject); send_email($send_array); } else { echo notification(1,l('contact_not_sent'),'contact'); } } } // MENU ARTICLES function menu_articles($start = 0, $size = 5, $cat_specific = 0) { global $categorySEF, $_catID,$subcatSEF; switch ($cat_specific){ case 1 : $subcat = !empty($_catID) && empty($subcatSEF) ? 'AND c.subcat = '.$_catID : ''; break; case 2 : $subcat = !empty($_catID) ? 'AND c.subcat = '.$_catID : ''; break; default: $subcat = ''; } $query = 'SELECT title,a.seftitle AS asef,date, c.name AS name,c.seftitle AS csef, x.name AS xname,x.seftitle AS xsef FROM '._PRE.'articles'.' AS a LEFT OUTER JOIN '._PRE.'categories'.' as c ON category = c.id LEFT OUTER JOIN '._PRE.'categories'.' as x ON c.subcat = x.id AND x.published =\'YES\' WHERE position = 1 AND a.published = 1 AND c.published =\'YES\' AND a.visible = \'YES\' '.$subcat.' ORDER BY date DESC LIMIT '."$start, $size"; $result = mysql_query($query); $count = mysql_num_rows($result); if ( $count === 0) { echo '<li>'.l('no_articles').'</li>'; } else { while ($r = mysql_fetch_array($result)) { $name = s('show_cat_names') == 'on' ? ' ('.$r['name'].')' : ''; $date = date(s('date_format'), strtotime($r['date'])); $link = isset($r['xsef']) ? $r['xsef'].'/'.$r['csef'] : $r['csef']; echo '<li><a href="'._SITE.$link.'/'.$r['asef'].'/" title="'.$r['name'].' / '.$r['title'].' ('.$date.')">'.$r['title'].$name.'</a> </li>'; } } } // NEW COMMENTS // Patch #1 - 1.7.1 - WHERE string updated in the query below function new_comments($number = 5, $stringlen = 30) { $query = 'SELECT a.id AS aid,title,a.seftitle AS asef, category,co.id,articleid,co.name AS coname,comment, c.name,c.seftitle AS csef,c.subcat, x.name,x.seftitle AS xsef FROM '._PRE.'comments'.' AS co LEFT OUTER JOIN '._PRE.'articles'.' AS a ON articleid = a.id LEFT OUTER JOIN '._PRE.'categories'.' AS c ON category = c.id AND c.published =\'YES\' LEFT OUTER JOIN '._PRE.'categories'.' AS x ON c.subcat = x.id AND x.published =\'YES\' WHERE a.published = 1 AND (a.commentable = \'YES\' || a.commentable = \'FREEZ\' ) AND approved = \'True\' ORDER BY co.id DESC LIMIT '.$number; $result = mysql_query($query); if (mysql_num_rows($result) === 0) { echo '<li>'.l('no_comments').'</li>'; } else { $comlim = s('comment_limit'); $comment_limit = $comlim < 1 ? 1 : $comlim; $comments_order = s('comments_order'); while ($r = mysql_fetch_array($result)) { $loopr = mysql_query("SELECT id FROM "._PRE.'comments'." WHERE articleid = '$r[articleid]' AND approved = 'True' ORDER BY id $comments_order"); $num = 1; while ($r_art = mysql_fetch_array($loopr)) { if ($r_art['id'] == $r['id']) { $ordinal = $num; } $num++; } $name = $r['coname']; $comment = strip_tags($r['comment']); $page = ceil($ordinal / $comment_limit); $ncom = $name.' ('.$comment; $ncom = strlen($ncom) > $stringlen ? substr($ncom, 0, $stringlen - 3).'...' : $ncom; $ncom.= strlen($name) < $stringlen ? ')' : ''; $ncom = str_replace(' ...', '...', $ncom); $paging = $page > 1 ? '/'.l('comment_pages').$page : ''; // Patch #1 - 1.7.1 unset($link); // Patch #10 - 1.7.1 - 4 strings if (isset($r['xsef'])) { $link = $r['xsef'].'/'; } if (isset($r['csef'])) { $link .= $r['csef'].'/'; } $link .= $r['asef']; // end Patch #10 - 1.7.1 echo '<li><a href="'._SITE.$link.$paging.'/#'.l('comment').$ordinal.'" title="'.l('comment_info').' '.$r['title'].'">'.$ncom.'</a> </li>'; } } } // SEARCH FORM function searchform() { ?> <form id="search_engine" method="post" action="<?php echo _SITE; ?>" accept-charset="<?php echo s('charset');?>"> <p><input class="searchfield" name="search_query" type="text" id="keywords" value="<?php echo l('search_keywords'); ?>" onfocus="document.forms['search_engine'].keywords.value='';" onblur="if (document.forms['search_engine'].keywords.value == '') document.forms['search_engine'].keywords.value='<?php echo l('search_keywords'); ?>';" /> <input class="searchbutton" name="submit" type="submit" value="<?php echo l('search_button')?>" /></p> </form> <?php } //SEARCH ENGINE function search($limit = 20) { $search_query = clean(cleanXSS($_POST['search_query'])); echo '<h2>'.l(search_results).'</h2>'; if (strlen($search_query) < 4 || $search_query == l('search_keywords')) { echo '<p>'.l('charerror').'</p>'; } else { $keywords = explode(' ', $search_query); $keyCount = count($keywords); $query = 'SELECT a.id FROM '._PRE.'articles'.' AS a LEFT OUTER JOIN '._PRE.'categories'.' as c ON category = c.id AND c.published =\'YES\' LEFT OUTER JOIN '._PRE.'categories'.' as x ON c.subcat = x.id AND x.published =\'YES\' WHERE position != 2 AND a.published = 1 AND'; if(!_ADMIN){ $query = $query.' a.visible = \'YES\' AND '; } if ($keyCount > 1) { for ($i = 0; $i < $keyCount - 1; $i++) { $query = $query.' (title LIKE "%'.$keywords[$i].'%" || text LIKE "%'.$keywords[$i].'%" || keywords_meta LIKE "%'.$keywords[$i].'%") &&'; } $j = $keyCount - 1; $query = $query.'(title LIKE "%'.$keywords[$j].'%" || text LIKE "%'.$keywords[$j].'%" || keywords_meta LIKE "%'.$keywords[$j].'%")'; } else { $query = $query.'(title LIKE "%'.$keywords[0].'%" || text LIKE "%'.$keywords[0].'%" || keywords_meta LIKE "%'.$keywords[0].'%")'; } $query = $query.' ORDER BY id DESC LIMIT '.$limit; $result = mysql_query($query); $numrows = mysql_num_rows($result); if (!$numrows) { echo '<p>'.l('noresults').' <strong>'.stripslashes($search_query).'</strong>.</p>'; } else { echo '<p><strong>'.$numrows.'</strong> '.l('resultsfound').' <strong>'. stripslashes($search_query).'</strong>.</p>'; while ($r = mysql_fetch_array($result)) { $Or_id[] = 'a.id ='.$r['id']; } $Or_id = implode(' OR ',$Or_id); $query = 'SELECT title,a.seftitle AS asef,a.date AS date, c.name AS name,c.seftitle AS csef, x.name AS xname,x.seftitle AS xsef FROM '._PRE.'articles'.' AS a LEFT OUTER JOIN '._PRE.'categories'.' as c ON category = c.id LEFT OUTER JOIN '._PRE.'categories'.' as x ON c.subcat = x.id WHERE '.$Or_id; $result = mysql_query($query); while ($r = mysql_fetch_array($result)) { $date = date(s('date_format'), strtotime($r['date'])); if ($r['name']) $name = ' ('.$r['name'].')'; if (isset($r['xsef'])) $link = $r['xsef'].'/'.$r['csef'].'/'; else $link = isset($r['csef']) ? $r['csef'].'/' : ''; echo '<p><a href="'._SITE.$link.$r['asef'].'/">'.$r['title'].$name.'</a> - '.$date.'</p>'; } } } echo '<p><br /><a href="'._SITE.'">'.l('backhome').'</a></p>'; } // RSS FEED - ARTICLES/PAGES/COMMENTS function rss_contents($rss_item){ // Patch #17A - 1.7.1 - removed: , $artSEF='' (redundant) header('Content-type: text/xml; charset='.s('charset').''); $limit = s('rss_limit'); switch($rss_item) { case 'rss-articles': $heading = l('articles'); $query = _PRE.'articles'.' WHERE position = 1 AND visible = \'YES\' AND published = 1 ORDER BY date'; break; case 'rss-pages': $heading = l('pages'); $query = _PRE.'articles'.' WHERE position = 3 AND visible = \'YES\' AND published = 1 ORDER BY date'; break; case 'rss-comments': $heading = l('comments'); $query = _PRE.'comments'." WHERE approved = 'True' ORDER BY id"; break; } echo '<?xml version="1.0" encoding="'.s('charset').'"?> <rss version="2.0"><channel> <title><![CDATA['.s('website_title').']]></title> <description><![CDATA['.$heading.']]></description> <link>'._SITE.'</link> <copyright><![CDATA[Copyright '.s('website_title').']]></copyright> <generator>sNews CMS</generator>'; $result = mysql_query("SELECT * FROM $query DESC LIMIT $limit"); $numrows = mysql_num_rows($result); $comments_order = s('comments_order'); $ordinal = $comments_order == 'DESC' ? 1 : $numrows; $comment_limit = s('comment_limit') < 1 ? 1 : s('comment_limit'); $comments_order = s('comments_order'); while ($r = mysql_fetch_assoc($result)) { switch($rss_item) { case 'rss-articles': case 'rss-pages': $date = date('D, d M Y H:i:s +0000', strtotime($r['date'])); if ($r['category'] == 0) { $categorySEF = ''; } else { $categorySEF = cat_rel($r['category'], 'seftitle').'/'; } $articleSEF = $r['seftitle']; $title = $r['title']; $text = $r['text']; break; case 'rss-comments': $subquery = "SELECT id FROM "._PRE.'comments'." WHERE articleid = ".$r['articleid']." ORDER BY id $comments_order"; $subresult = mysql_query($subquery); $num = 1; while ($subr = mysql_fetch_array($subresult)) { if ($subr['id'] == $r['id']) { $ordinal = $num; } $num++; } $page = ceil($ordinal / $comment_limit); $articleSEF = retrieve('seftitle', 'articles', 'id', $r['articleid']); $articleCat = retrieve('category', 'articles', 'id', $r['articleid']); $articleTitle = retrieve('title', 'articles', 'id', $r['articleid']); if ($articleCat == 0) { $categorySEF = ''; } else { $categorySEF = cat_rel($articleCat, 'seftitle').'/'; } if (!empty($articleSEF)) { $paging = $page > 1 ? $page.'/' : ''; $comment_link = 'c_'.$paging.'#'.l('comment').$ordinal; // Patch #14 - 1.7.1 } $date = date('D, d M Y H:i:s +0000', strtotime($r['time'])); $title = $articleTitle.' - '.$r['name']; $text = $r['comment']; break; } $link = _SITE.$categorySEF.$articleSEF.'/'.$comment_link; $item = '<item> <title><![CDATA['.strip($title).']]></title> <description> <![CDATA[ '.strip($text).' ]]> </description> <pubDate>'.$date.'</pubDate> <link>'.$link.'</link> <guid>'.$link.'</guid> </item>'; echo $item; } echo '</channel></rss>'; exit; } // RSS FEED - LINK BUILDER - Patch #17B - 1.7.1 - revised function: no globals, 1 query function rss_links() { $query = 'SELECT COUNT(id) as articles_count, (SELECT COUNT(id) FROM '._PRE.'articles WHERE position = 3 AND published = 1) as pages_count, (SELECT COUNT(id) FROM '._PRE.'comments WHERE approved = "True" ) as comments_count FROM '._PRE.'articles WHERE position = 1 AND published = 1'; $result = mysql_query( $query ); $l_error = array(); // catch any errors while ($r = mysql_fetch_assoc($result )) { foreach ($r as $k => $v) { if ( $v > 0 ) { $l = explode('_', $k); echo '<li><a href="rss-'.$l[0].'/">'.l( 'rss_'.$l[0] ).'</a></li>'; } else { $l_error[] = $k; } } } if (count($l_error) == 3) { echo '<li>'.l('no_rss').'</li>'; } } /*** ADMINISTRATIVE FUNCTIONS ***/ // LOGIN function login() { if (!_ADMIN) { echo '<div class="adminpanel"> <h2>'.l('login').'</h2>'; echo html_input('form', '', 'post', '', '', '', '', '', '', '', '', '', 'post', _SITE.'administration/', ''); echo '<p>'.l('login_limit').'</p>'; echo html_input('text', 'uname', 'uname', '', l('username'), 'text', '', '', '', '', '', '', '', '', ''); echo html_input('password', 'pass', 'pass', '', l('password'), 'text', '', '', '', '', '', '', '', '', ''); echo mathCaptcha(); echo '<p>'; echo html_input('hidden', 'Loginform', 'Loginform', 'True', '', '', '', '', '', '', '', '', '', '', ''); echo html_input('submit', 'submit', 'submit', l('login'), '', 'button', '', '', '', '', '', '', '', '', ''); echo '</p></form></div>'; } else { echo '<h2>'.l('logged_in').'</h2> <p><a href="'._SITE.'logout/" title="'.l('logout').'">'.l('logout').'</a></p>'; } } //CONTENTS COUNTER function stats($field, $position) { if (!empty($position)) { $pos = " WHERE position = $position"; } else { $pos = ''; } $query = 'SELECT id FROM '._PRE.$field.$pos; $result = mysql_query($query); $numrows = mysql_num_rows($result); return $numrows; } // FORM GENERATOR function html_input($type, $name, $id, $value, $label, $css, $script1, $script2, $script3, $checked, $rows, $cols, $method, $action, $legend) { $lbl = !empty($label) ? '<label for="'.$id.'">'.$label.'</label>' : ''; $ID = !empty($id) ? ' id="'.$id.'"' : ''; $style = !empty($css) ? ' class="'.$css.'"' : ''; $js1 = !empty($script1) ? ' '.$script1 : ''; $js2 = !empty($script2) ? ' '.$script2 : ''; $js3 = !empty($script3) ? ' '.$script3 : ''; $attribs = $ID.$style.$js1.$js2.$js3; $val = ' value="'.$value.'"'; $input = '<input type="'.$type.'" name="'.$name.'"'.$attribs; switch($type) { case 'form': $output = (!empty($method) && $method != 'end') ? '<form method="'.$method.'" action="'.$action.'"'.$attribs.' accept-charset="'.s('charset').'">' : '</form>'; break; case 'fieldset': $output = (!empty($legend) && $legend != 'end') ? '<fieldset><legend'.$attribs.'>'.$legend.'</legend>' : '</fieldset>'; break; case 'text': case 'password': $output = '<p>'.$lbl.':<br />'.$input.$val.' /></p>'; break; case 'checkbox': case 'radio': $check = $checked == 'ok' ? ' checked="checked"' : ''; $output = '<p>'.$input.$check.' /> '.$lbl.'</p>'; break; case 'hidden': case 'submit': case 'reset': case 'button': $output = $input.$val.' />'; break; case 'textarea': $output = '<p>'.$lbl.':<br /> <textarea name="'.$name.'" rows="'.$rows.'" cols="'.$cols.'"'.$attribs.'>'.$value. '</textarea></p>'; break; } return $output; } // ADMINISTRATION function administration() { # Patch #19 - 1.7.1 - replaces fieldset strings function-wide. if (!_ADMIN) { echo( notification(1,l('error_not_logged_in'),'login')); } else { $catnum = mysql_fetch_assoc(mysql_query("SELECT COUNT(id) as catnum FROM "._PRE.'categories'."")); foreach ($_POST as $key) {unset($_POST[$key]);} echo '<div class="adminpanel">'; echo '<p class="admintitle"><a href="http://snewscms.com/" title="sNews CMS">sNews</a> '.l('administration').'</p>'; echo '<p>'.l('categories').': <a href="admin_category/">'.l('add_new').'</a>'; $link = ' '.l('divider').' <a href="'; if (stats('categories','') > 0) { echo $link.'snews_categories/">'.l('view').'</a>'; } echo '</p><p>'.l('articles').': '; $art_new = $catnum['catnum'] > 0 ? '<a href="article_new/">'.l('add_new').'</a>' : l('create_cat'); echo $art_new; if (stats('articles','1') > 0) { echo $link.'snews_articles/">'.l('view').'</a>'; } echo '</p><p>'.l('pages').': <a href="page_new/">'.l('add_new').'</a>'; if (stats('articles','3') > 0) { echo $link.'snews_pages/">'.l('view').'</a>'; } echo '</p>'; if (s('enable_extras') == 'YES') { echo '<p class="admintitle">'.l('extra_contents').'</p>'; echo '<p>'.l('groupings').': <a href="admin_groupings/">'.l('add_new').'</a>'; if (stats('extras','') > 0) { echo $link.'groupings/">'.l('view').'</a>'; } echo '</p>'; } echo '<p>'.l('extra_contents').': <a href="extra_new/">'.l('add_new').'</a>'; if (stats('articles','2') > 0) { echo $link.'extra_contents/">'.l('view').'</a>'; } echo '</p>'; echo '</div>'; $query_comm = 'SELECT id,articleid,name FROM '._PRE.'comments'.' WHERE approved != \'True\''; $result_comm = mysql_query($query_comm); $unapproved = mysql_num_rows($result_comm); if ($unapproved > 0) { echo '<div class="adminpanel"><p class="admintitle">'.l('comments').'</p>'; echo '<p><a onclick="toggle(\'sub1\')" style="cursor: pointer;" title="'.l('unapproved').'"> '.$unapproved.' '.l('wait_approval').'</a></p>'; echo '<div id="sub1" class="innerpanel" style="display: none;">'; while ($r = mysql_fetch_array($result_comm)) { $articleTITLE = retrieve('title', 'articles', 'id', $r['articleid']); echo '<p class="spacelink">'.$r['name'].' (<strong>'.$articleTITLE.'</strong>) '.l('divider').' <a href="'._SITE.'?action=editcomment&commentid='.$r['id'].'">'.l('edit').'</a></p>'; } echo '</div></div>'; } echo '<div class="message"><p class="admintitle">'.l('site_settings').'</p>'; echo '<p><a href="snews_settings/">'.l('settings').'</a> | <a href="snews_files/">'.l('files').'</a></p></div>'; echo '<div class="message"><p class="admintitle">'.l('login_status').'</p>'; echo '<p><a href="logout/">'.l('logout').'</a></p></div>'; } } // SETTINGS FORM function settings() { # Patch #19 - 1.7.1 - reduced to 1 adminpanel div. replaces fieldset strings function-wide. echo '<div class="adminpanel"><p class="admintitle">'.l('settings_title').'</p>'; echo html_input('form','','','','','','','','','','','','post', '?action=process&task=save_settings',''); # Expandable Settings echo '<p><a onclick="toggle(\'sub1\')" style="cursor: pointer;" title="'.l('a_openclose').''.l('settings').'">'.l('settings').'</a></p>'; echo '<div id="sub1" style="display: none;">'; echo html_input('text', 'website_title', 'webtitle', s('website_title'), l('a_website_title'),'','','','','','','','','',''); echo html_input('text', 'home_sef', 'webSEF', s('home_sef') == '' ? l('home_sef') : s('home_sef'), l('a_home_sef'), '', 'onkeypress="return SEFrestrict(event);"','','','','','','','',''); echo html_input('text', 'website_description', 'wdesc', s('website_description'), l('a_description'),'','','','','','','','','',''); echo html_input('text', 'website_keywords', 'wkey', s('website_keywords'), l('a_keywords'),'','','','','','','','','',''); echo '</div>'; # Expandable Contact echo '<p><a onclick="toggle(\'sub2\')" style="cursor: pointer;" title="'.l('a_openclose').''.l('a_contact_info').'">'.l('a_contact_info').'</a></p>'; echo '<div id="sub2" style="display: none;">'; echo html_input('text', 'website_email', 'we', s('website_email'), l('a_website_email'),'','','','','','','','','',''); echo html_input('text', 'contact_subject', 'cs', s('contact_subject'), l('a_contact_subject'),'','','','','','','','','',''); echo '</div>'; # Expandable Time & Locale echo '<p><a onclick="toggle(\'sub3\')" style="cursor: pointer;" title="'.l('a_openclose').''.l('a_time_settings').'">'.l('a_time_settings').'</a></p>'; echo '<div id="sub3" style="display: none;">'; echo html_input('text', 'language', 'lang', s('language') == '' ? 'EN' : s('language'), l('a_language'),'','','','','','','','','',''); echo html_input('text', 'charset', 'char', s('charset') == '' ? 'UTF-8' : s('charset'), l('charset'),'','','','','','','','','',''); echo html_input('text', 'date_format', 'dt', s('date_format'), l('a_date_format'),'','','','','','','','','',''); echo '</div>'; # Expandable Contents echo '<p><a onclick="toggle(\'sub4\')" style="cursor: pointer;" title="'.l('a_openclose').''.l('contents').'">'.l('contents').'</a></p>'; echo '<div id="sub4" style="display: none;">'; echo html_input('text', 'article_limit', 'artl', s('article_limit'), l('a_article_limit'),'','','','','','','','','',''); echo html_input('text', 'rss_limit', 'rssl', s('rss_limit'), l('a_rss_limit'),'','','','','','','','','',''); echo '<p><label for="dp">'.l('a_display_page').':</label><br /> <select name="display_page" id="dp">'; echo '<option value="0"'.(s('display_page') == 0 ? ' selected="selected"' : '').'>'.l('none').'</option>'; $query = 'SELECT id,title FROM '._PRE.'articles'.' WHERE position = 3 ORDER BY id ASC'; $result = mysql_query($query); while ($r = mysql_fetch_array($result)) { echo '<option value="'.$r['id'].'"'; if (s('display_page') == $r['id']) { echo ' selected="selected"'; } echo '>'.$r['title'].'</option>'; } echo '</select></p>'; echo html_input('checkbox','display_new_on_home','dnoh','',l('a_display_new_on_home'),'','','','',(s('display_new_on_home') == 'on' ? 'ok' : ''),'','','','',''); echo html_input('checkbox','display_pagination','dpag','',l('a_display_pagination'),'','','','',(s('display_pagination') == 'on' ? 'ok' : ''),'','','','',''); echo html_input('checkbox','num_categories','nc','',l('a_num_categories'),'','','','',(s('num_categories') == 'on' ? 'ok' : ''),'','','','',''); echo html_input('checkbox','show_cat_names','scn','',l('a_show_category_name'),'','','','',(s('show_cat_names') == 'on' ? 'ok' : ''),'','','','',''); echo html_input('checkbox','enable_extras','ee','',l('enable_extras'),'','','','',(s('enable_extras') == 'YES' ? 'ok' : ''),'','','','',''); echo html_input('text','file_ext','fileext',s('file_extensions'),l('file_extensions'),'','','','','','','','','',''); echo html_input('text','allowed_file','all_file',s('allowed_files'),l('allowed_files'),'','','','','','','','','',''); echo html_input('text','allowed_img','all_img',s('allowed_images'),l('allowed_images'),'','','','','','','','','',''); echo '</div>'; # Expandable Comments echo '<p><a onclick="toggle(\'sub5\')" style="cursor: pointer;" title="'.l('a_openclose').''.l('comments').'">'.l('comments').'</a></p>'; echo '<div id="sub5" style="display: none;">'; echo html_input('checkbox','approve_comments','ac','',l('a_approve_comments'),'','','','',(s('approve_comments') == 'on' ? 'ok' : ''),'','','','',''); echo html_input('text','comment_repost_timer','crt',s('comment_repost_timer'),l('comment_repost_timer'),'','','','','','','','','',''); echo html_input('checkbox','mail_on_comments','mc','',l('a_mail_on_comments'),'','','','',(s('mail_on_comments') == 'on' ? 'ok' : ''),'','','','',''); echo html_input('checkbox','enable_comments','ec','',l('enable_comments'),'','','','',(s('enable_comments') == 'YES' ? 'ok' : ''),'','','','',''); echo html_input('checkbox','freeze_comments','dc','',l('freeze_comments'),'','','','',(s('freeze_comments') == 'YES' ? 'ok' : ''),'','','','',''); echo '<p><label for="co">'.l('a_comments_order').':</label><br /><select id="co" name="comments_order">'; echo '<option value="DESC"'.(s('comments_order') == 'DESC' ? ' selected="selected"' : '').'>'.l('newer_top').'</option>'; echo '<option value="ASC"'.(s('comments_order') == 'ASC' ? ' selected="selected"' : '').'>'.l('newer_bottom').'</option></select>'; echo '</p>'; echo html_input('text','comment_limit','cl',s('comment_limit'),l('a_comment_limit'),'','','','','','','','','',''); echo html_input('checkbox','word_filter_enable','wfe','',l('a_word_filter_enable'),'','','','',(s('word_filter_enable') == 'on' ? 'ok' : ''),'','','','',''); echo html_input('text','word_filter_file','wff',s('word_filter_file'),l('a_word_filter_file'),'','','','','','','','','',''); echo html_input('text','word_filter_change','wfc',s('word_filter_change'),l('a_word_filter_change'),'','','','','','','','','',''); echo '</div>'; echo '<p>'; # Save Settings button echo html_input('submit','save','save',l('save'),'','button','','','','','','','','',''); echo '</p>'; echo '</form>'; echo '</div>'; # Change Password panel echo html_input('form','','','','','','','','','','','','post','?action=process&task=changeup',''); echo '<div class="adminpanel">'; echo '<p><a onclick="toggle(\'sub6\')" style="cursor: pointer;" title="'.l('a_openclose').''.l('change_up').'">'.l('change_up').'</a>'; echo '<div id="sub6" style="display: none;">'; echo '<p>'.l('login_limit').'</p>'; echo html_input('text','uname','uname','',l('a_username'),'','','','','','','','','',''); echo html_input('password','pass1','pass1','',l('a_password'),'','','','','','','','','',''); echo html_input('password','pass2','pass2','',l('a_password2'),'','','','','','','','','',''); echo '<p>'; # Save Password Change button echo html_input('hidden','task','task','changeup','','','','','','','','','','',''); echo html_input('submit','submit_pass','submit_pass',l('save'),'','button','','','','','','','','',''); echo '</p></div>'; echo '</div>'; echo '</form>'; } // LISTS CATEGORIES function category_list($id) { if (isset($_GET['id']) && is_numeric($_GET['id']) && !is_null($_GET['id'])) { $var = $id; } echo '<select name="subcat" id="subcat">'; $selected =' selected="selected"'; $result = mysql_query('SELECT id,name FROM '._PRE.'categories'.' WHERE subcat = 0 ORDER BY catorder, id'); if (!empty($var)) { $parent_selection = $selected; } echo '<option value="0"'.$parent_selection.'>'.l('not_sub').'</option>'; while ($r = mysql_fetch_array($result)) { $child = retrieve('subcat','categories','id',$var); if ($r['id'] == $child) { echo '<option value="'.$r['id'].'"'.$selected.'>'.$r['name'].'</option>'; } elseif ($id!=$r['id']){ echo '<option value="'.$r['id'].'">'.$r['name'].'</option>'; } } echo '</select>'; } // CATEGORIES FORM function form_categories($subcat='cat') { if (isset($_GET['id']) && is_numeric($_GET['id']) && !is_null($_GET['id'])) { $categoryid = $_GET['id']; $query = mysql_query('SELECT id,name,seftitle,published,description,subcat,catorder FROM '._PRE.'categories'.' WHERE id='.$categoryid); $r = mysql_fetch_array($query); $jresult = mysql_query("select name from "._PRE.'categories'." where id = ".$r['subcat']); while($j = mysql_fetch_array($jresult)) { $name = $j['name']; } $frm_action = _SITE.'?action=process&task=admin_category&id='.$categoryid; $frm_add_edit = $r['subcat'] == '0' ? l('edit').' '.l('category') : l('edit').' '.l('subcategory').' '.$name ; $frm_name = $r['name']; $subcat = $r['subcat'] == 0 ? 'cat' : 'subcat'; $frm_sef_title = $r['seftitle']; $frm_description = $r['description']; $frm_publish = $r['published'] == 'YES' ? 'ok' : ''; $catorder = $r['catorder']; $frm_task = 'edit_category'; $frm_submit = l('edit_button'); // Patch #11 - 1.7.1 } else { $sub_cat = isset($_GET['sub_id']) ? $_GET['sub_id'] : '0'; if ($sub_cat!='cat') { $jresult = mysql_query('SELECT name FROM '._PRE.'categories'.' WHERE id = '.$sub_cat); while($j = mysql_fetch_array($jresult)) { $name = $j['name']; } } $frm_action = _SITE.'?action=process&task=admin_category'; $frm_add_edit = empty($sub_cat) ? l('add_category') : l('add_subcategory').' ('.$name.')'; $frm_sef_title = $_POST['name'] == '' ? cleanSEF($_POST['name']) : cleanSEF($_POST['seftitle']); $frm_description = ''; $frm_publish = 'ok'; $frm_task = 'add_category'; $frm_submit = l('add_category'); } echo html_input('form', '', 'post', '', '', '', '', '', '', '', '', '', 'post', $frm_action, ''); echo '<div class="adminpanel">'; echo '<p class="admintitle">'.$frm_add_edit.'</p>'; # Patch #19 - 1.7.1 - replaces fieldset string echo html_input('text', 'name', 't', $frm_name, l('name'), '', 'onchange="genSEF(this,document.forms[\'post\'].seftitle)"', 'onkeyup="genSEF(this,document.forms[\'post\'].seftitle)"', '', '', '', '', '', '', ''); echo html_input('text', 'seftitle', 's', $frm_sef_title, l('sef_title_cat'), '', '', '', '', '', '', '', '', '', ''); echo html_input('text', 'description', 'desc', $frm_description, l('description'), '', '', '', '', '', '', '', '', '', ''); if (empty($sub_cat)) { echo '<p>'.l('subcategory').': <br />'; category_list($categoryid); echo '</p>'; } $publish = $subcat == 'cat' ? l('publish_category') : l('publish_subcategory'); echo html_input('checkbox', 'publish', 'pub', 'YES', $publish, '', '', '', '', $frm_publish, '', '', '', '', ''); echo '</div><p>'; // echo '</fieldset></div><p>'; # Patch #19 - 1.7.1 if ($sub_cat) { echo html_input('hidden', 'subcat', 'subcat', $sub_cat, '', '', '', '', '', '', '', '', '', '', ''); } echo html_input('hidden', 'catorder', 'catorder', $catorder, '', '', '', '', '', '', '', '', '', '', ''); echo html_input('hidden', 'task', 'task', 'admin_category', '', '', '', '', '', '', '', '', '', '', ''); echo html_input('submit', $frm_task, $frm_task, $frm_submit, '', 'button', '', '', '', '', '', '', '', '', ''); if (!empty($categoryid)) { echo ' '; echo html_input('hidden', 'id', 'id', $categoryid, '', '', '', '', '', '', '', '', '', '', ''); echo html_input('submit', 'delete_category', 'delete_category', l('delete'), '', 'button', 'onclick="javascript: return pop()"', '', '', '', '', '', '', '', ''); } echo '</p></form>'; } // CATEGORIES - ADMIN LIST function admin_categories() { # Patch #19 - 1.7.1 - replaces fieldset string $add = ' - <a href="admin_category/">'.l('add_new').'</a>'; $link = '?action=admin_category'; $tab = 1; echo '<div class="adminpanel">'; echo '<p class="admintitle">'.l('categories').$add.'</p>'; echo html_input('form', '', 'post', '', '', '', '', '', '', '', '', '', 'post', '?action=process&task=reorder', ''); echo '<p><input type="hidden" name="order" id="order" value="snews_categories" /></p>'; $query = 'SELECT id, name, description, published, catorder FROM '._PRE.'categories'.' WHERE subcat = 0 ORDER BY catorder,id ASC'; $result = mysql_query($query); if (!$result || !mysql_num_rows($result)) { echo '<p>'.l('category_not_exist').'</p>'; } else { while ($r = mysql_fetch_array($result)) { $cat_input = '<input type="text" name="cat_'.$r['id'].'" value="'.$r['catorder'].'" size="1" tabindex="'.$tab.'" /> '; echo '<p>'.$cat_input.'<strong>'.$r['name'].'</strong> '.l('divider').' <a href="'._SITE.$link.'&id='.$r['id'].'" title="'.$r['description'].'">'.l('edit').'</a> '; echo $r['published'] != 'YES' ? ' '.l('divider').' ['.l('status').' '.l('unpublished').']' : ''; echo ' '.l('divider').' <a href="'._SITE.$link.'&sub_id='.$r['id'].'" title="'.$r['description'].'">'.l('add_subcategory').'</a></p>'; $subquery = 'SELECT id,name,description,published,catorder FROM '._PRE.'categories'.' WHERE subcat = '.$r['id'].' ORDER BY catorder,id ASC'; $subresult = mysql_query($subquery); $tab2 = 1; while ($sub = mysql_fetch_array($subresult)) { $subcat_input = '<input type="text" name="cat_'.$sub['id'].'" value="'.$sub['catorder'].'" size="1" tabindex="'.$tab2.'" /> '; echo '<p class="subcat">'.$subcat_input.'<strong>'.$sub['name'].'</strong>'.l('divider').' <a href="'._SITE.$link.'&id='.$sub['id'].'" title="'.$sub['description'].'">'.l('edit').'</a> '; echo ($sub['published'] != 'YES' ? ' '.l('divider').' ['.l('status').' '.l('unpublished').']' : ''); echo '</p>'; $tab2++; } $tab++; } } echo '<p>'.html_input('submit', 'reorder', 'reorder', l('order_content'), '', 'button', '', '', '', '', '', '', '', '', ''); echo '</p></form>'; echo '</div>'; } // DELETE CATEGORY BY ID function delete_cat($id){ $catdata = mysql_fetch_array(mysql_query("SELECT catorder,subcat FROM "._PRE.'categories'." WHERE id = $id")); $cat_order = $catdata['catorder']; $cat_subcat = $catdata['subcat']; mysql_query("DELETE FROM "._PRE.'categories'." WHERE id = $id LIMIT 1"); $query = mysql_query("SELECT id,catorder FROM "._PRE.'categories'." WHERE catorder > $cat_order AND subcat = $cat_subcat"); while ($r = mysql_fetch_array($query)) { mysql_query("UPDATE "._PRE.'categories'." SET catorder = catorder - 1 WHERE id = $r[id]"); } } // ARTICLES - POSTING TIME function posting_time($time='') { echo '<p>'.l('day').': <select name="fposting_day">'; $thisDay = !empty($time) ? substr($time, 8, 2) : intval(date('d')); for($i = 1; $i < 32; $i++) { echo '<option value="'.$i.'"'; if($i == $thisDay) { echo ' selected="selected"'; } echo '>'.$i.'</option>'; } echo '</select> '.l('month').': <select name="fposting_month">'; $thisMonth = !empty($time) ? substr($time, 5, 2) : intval(date('m')); for($i = 1; $i < 13; $i++) { echo '<option value="'.$i.'"'; if($i == $thisMonth) { echo ' selected="selected"'; } echo '>'. $i .'</option>'; } echo '</select> '.l('year').': <select name="fposting_year">'; $PresentYear = intval(date('Y')); $thisYear = !empty($time) ? substr($time, 0, 4) : $PresentYear; for($i = $thisYear-3; $i < $PresentYear + 3; $i++) { echo '<option value="'.$i.'"'; if($i == $thisYear) { echo ' selected="selected"'; } echo '>'.$i.'</option>'; } echo '</select> '.l('hour').': <select name="fposting_hour">'; $thisHour = !empty($time) ? substr($time, 11, 2) : intval(date('H')); for($i = 0; $i < 24; $i++) { echo '<option value="'.$i.'"'; if($i == $thisHour) { echo ' selected="selected"'; } echo '>'.$i.'</option>'; } echo '</select> '.l('minute').': <select name="fposting_minute">'; $thisMinute = !empty($time) ? substr($time, 14, 2) : intval(date('i')); for($i = 0; $i < 60; $i++) { echo '<option value="'.$i.'"'; if($i == $thisMinute) { echo ' selected="selected"'; } echo '>'.$i.'</option>'; } echo '</select></p>'; return; } // ARTICLES FORM function form_articles($contents) { if (is_numeric($_GET['id']) && !is_null($_GET['id'])) { $id = $_GET['id']; $query = mysql_query('SELECT * FROM '._PRE.'articles'.' WHERE id='.$id); $r = mysql_fetch_array($query); $article_category = $r['category']; $edit_option = $r['position']==0 ? 1 : $r['position']; $edit_page = $r['page_extra']; $extraid = $r['extraid']; switch ($edit_option) { case 1: $frm_fieldset = l('edit').' '.l('article'); $toggle_div='show'; $frm_position1 = 'selected="selected"'; break; case 2: $frm_fieldset = l('edit').' '.l('extra_contents'); $toggle_div='show'; $frm_position2 = 'selected="selected"'; break; case 3: $frm_fieldset = l('edit').' '.l('page'); $toggle_div='show'; $frm_position3 = 'selected="selected"'; break; } $frm_action = _SITE.'?action=process&task=admin_article&id='.$id; $frm_title = $_SESSION[_SITE.'temp']['title'] ? $_SESSION[_SITE.'temp']['title'] : $r['title']; $frm_sef_title = $_SESSION[_SITE.'temp']['seftitle'] ? cleanSEF($_SESSION[_SITE.'temp']['seftitle']) : $r['seftitle']; $frm_text = str_replace('&', '&', $_SESSION[_SITE.'temp']['text'] ? $_SESSION[_SITE.'temp']['text'] : $r['text']); $frm_meta_desc = $_SESSION[_SITE.'temp']['description_meta'] ? cleanSEF($_SESSION[_SITE.'temp']['description_meta']) : $r['description_meta']; $frm_meta_key = $_SESSION[_SITE.'temp']['keywords_meta'] ? cleanSEF($_SESSION[_SITE.'temp']['keywords_meta']) : $r['keywords_meta']; $frm_display_title = $r['displaytitle'] == 'YES' ? 'ok' : ''; $frm_display_info = $r['displayinfo'] == 'YES' ? 'ok' : ''; $frm_publish = $r['published'] == 1 ? 'ok' : ''; $show_in_subcats = $r['show_in_subcats'] == 'YES' ? 'ok' : ''; $frm_showonhome = $r['show_on_home'] == 'YES' ? 'ok' : ''; $frm_commentable = ($r['commentable'] == 'YES' || $r['commentable'] == 'FREEZ') ? 'ok' : ''; $frm_task = 'edit_article'; $frm_submit = l('edit_button'); // Patch #11 - 1.7.1 } else { switch ($contents) { case 'article_new': $frm_fieldset = l('article_new'); $toggle_div=''; $pos = 1; $frm_position1 = 'selected="selected"'; break; case 'extra_new': $frm_fieldset = l('extra_new'); $toggle_div=''; $pos = 2; $frm_position2 = 'selected="selected"'; break; case 'page_new': $frm_fieldset = l('page_new'); $toggle_div=''; $pos = 3; $frm_position3 = 'selected="selected"'; break; } if (empty($frm_fieldset)) { $frm_fieldset = l('article_new'); } $frm_action = _SITE.'?action=process&task=admin_article'; $frm_title = $_SESSION[_SITE.'temp']['title']; $frm_sef_title = cleanSEF($_SESSION[_SITE.'temp']['seftitle']); $frm_text = $_SESSION[_SITE.'temp']['text']; $frm_meta_desc = cleanSEF($_SESSION[_SITE.'temp']['description_meta']); $frm_meta_key = cleanSEF($_SESSION[_SITE.'temp']['keywords_meta']); $frm_display_title = 'ok'; $frm_display_info = ($contents == 'extra_new') ? '' : 'ok'; $frm_publish = 'ok'; $show_in_subcats = 'ok'; $frm_showonhome = s('display_new_on_home') == 'on' ? 'ok' : ''; $frm_commentable = ($contents == 'extra_new' || $contents == 'page_new' || s('enable_comments') != 'YES') ? '' : 'ok'; $frm_task = 'add_article'; $frm_submit = l('submit'); } $catnum = mysql_fetch_assoc(mysql_query("SELECT COUNT(id) as catnum FROM "._PRE.'categories'."")); if ($contents == 'article_new' && $catnum['catnum'] < 1) { echo l('create_cat'); } else { echo html_input('form', '', 'post', '', '', '', '', '', '', '', '', '', 'post', $frm_action, ''); echo '<div class="adminpanel">'; if ($toggle_div=='show') { # Patch #19 - 1.7.1 - replaces fieldset string echo '<p class="admintitle"><a onclick="toggle(\'edit_article\')" style="cursor: pointer;" title="'.$frm_fieldset.'">'.$frm_fieldset.'</a></p>'; echo '<div id="edit_article" style="display: none;">'; } else { echo '<p class="admintitle">'.$frm_fieldset.'</p>'; # Patch #19 - 1.7.1 - replaces fieldset string } echo html_input('text', 'title', 'at', $frm_title, l('title'), '', 'onchange="genSEF(this,document.forms[\'post\'].seftitle)"', 'onkeyup="genSEF(this,document.forms[\'post\'].seftitle)"', '', '', '', '', '', '', ''); if ($contents == 'extra_new' || $edit_option == 2) { echo '<div style="display: none;">'; echo html_input('text', 'seftitle', 'as', $frm_sef_title, l('sef_title'), '', '', '', '', '', '', '', '', '', ''); echo '</div>'; } else { echo html_input('text', 'seftitle', 'as', $frm_sef_title, l('sef_title'), '', '', '', '', '', '', '', '', '', ''); } echo html_input('textarea', 'text', 'txt', $frm_text, l('text'), '', '', '', '', '', '2', '100', '', '', ''); buttons(); if ($contents != 'page_new' && $edit_option != 3) { echo '<p><label for="cat">'; echo ($contents == 'extra_new' || $edit_option == 2) ? l('appear_category') : l('category'); if ($contents == 'extra_new' || $edit_option == 2) { echo ':</label><br /><select name="define_category" id="cat" onchange="dependancy(\'extra\');">'; echo '<option value="-1"'.($article_category == -1 ? ' selected="selected"' : '').'>'.l('all').'</option>'; echo '<option value="-3"'.($article_category == -3 ? ' selected="selected"' : '').'>'.l('page_only').'</option>'; } else echo ':</label><br /><select name="define_category" id="cat" onchange="dependancy(\'snews_articles\');">'; $category_query = 'SELECT id,name,subcat FROM '._PRE.'categories'.' WHERE published = \'YES\' AND subcat = 0 ORDER BY catorder,id ASC'; $category_result = mysql_query($category_query); while ($cat = mysql_fetch_array($category_result)) { echo '<option value="'.$cat['id'].'"'; if ($article_category == $cat['id']) { echo ' selected="selected"'; } echo '>'.$cat['name'].'</option>'; $subquery = 'SELECT id,name,subcat FROM '._PRE.'categories'.' WHERE subcat = '.$cat['id'].' ORDER BY catorder,id ASC'; $subresult = mysql_query($subquery); while ($s = mysql_fetch_array($subresult)) { echo '<option value="'.$s['id'].'"'; if ($article_category == $s['id']) { echo ' selected="selected"'; } echo '>--'.$s['name'].'</option>'; } } echo '</select></p>'; if ($contents == 'extra_new' || $edit_option == 2) { $none_display = $article_category == -1 ? 'none' : 'inline'; echo '<div id="def_page" style="display:'.$none_display.';"><p><label for="dp">'.l('appear_page').':</label> <br /><select name="define_page" id="dp">'; echo '<option value="0"'.($edit_option != '2' ? ' selected="selected"' : '').'>'.l('all').'</option>'; $query = 'SELECT id,title FROM '._PRE.'articles'.' WHERE position = 3 ORDER BY id ASC'; $result = mysql_query($query); while ($r = mysql_fetch_array($result)) { echo '<option value="'.$r['id'].'"'; if ($edit_page == $r['id']) { echo ' selected="selected"'; } echo '>'.$r['title'].'</option>'; } echo '</select><br />'. html_input('checkbox', 'show_in_subcats', 'asc', 'YES', l('show_in_subcats'), '', '', '', '', $show_in_subcats, '', '', '', '', '').'</p></div>'; } } if ($contents == 'article_new' || $edit_option == 1) { echo html_input('checkbox', 'show_on_home', 'sho', 'YES', l('show_on_home'), '', '', '', '', $frm_showonhome, '', '', '', '', ''); } echo html_input('checkbox', 'publish_article', 'pu', 'YES', l('publish_article'), '', '', '', '', $frm_publish, '', '', '', '', ''); if ($toggle_div=='show') { echo '</div>'; } echo '</div>'; //echo '</fieldset></div>'; # Patch #19 - 1.7.1 echo '<div class="adminpanel">'; # Patch #19 - 1.7.1 - replaces fieldset string echo '<p class="admintitle"><a onclick="toggle(\'preview\')" style="cursor: pointer;" title="'.l('preview').'">'.l('preview').'</a></p>'; echo '<div id="preview" style="display: none;"></div>'; echo '</div>'; //echo '</fieldset></div>'; # Patch #19 - 1.7.1 echo '<div class="adminpanel">'; # Patch #19 - 1.7.1 - replaces fieldset string echo '<p class="admintitle"><a onclick="toggle(\'customize\')" style="cursor: pointer;" title="'.l('customize').'">'.l('customize').'</a></p>'; echo '<div id="customize" style="display: none;">'; if ($contents == 'extra_new' || $edit_option == 2) { if (s('enable_extras') == 'YES') { echo '<p><label for="ext">'.l('define_extra').'</label><br />'; echo '<select name="define_extra" id="ext">'; $extra_query = 'SELECT id,name FROM '._PRE.'extras'.' ORDER BY id ASC'; $extra_result = mysql_query($extra_query); while ($ex = mysql_fetch_array($extra_result)) { echo '<option value="'.$ex['id'].'"'; if ($extraid == $ex['id']) { echo ' selected="selected"'; } echo '>'.$ex['name'].'</option>'; } echo '</select></p>'; } else { echo html_input('hidden', 'define_extra', 'ext', 1, '', '', '', '', '', '', '', '', '', '', ''); } } if (!empty($id)) { echo '<p><label for="pos">'.l('position').':</label> <br /><select name="position" id="pos">'; echo '<option value="1"'.$frm_position1.'>'.l('center').'</option>'; echo '<option value="2"'.$frm_position2.'>'.l('side').'</option>'; echo '<option value="3"'.$frm_position3.'>'.l('display_page').'</option>'; echo '</select></p>'; } else { echo html_input('hidden', 'position', 'position', $pos, '', '', '', '', '', '', '', '', '', '', ''); } if ($contents != 'extra_new' && $edit_option != '2') { echo html_input('text', 'description_meta', 'dm', $frm_meta_desc, l('description_meta'), '', '', '', '', '', '', '', '', '', ''); echo html_input('text', 'keywords_meta', 'km', $frm_meta_key, l('keywords_meta'), '', '', '', '', '', '', '', '', '', ''); } echo html_input('checkbox', 'display_title', 'dti', 'YES', l('display_title'), '', '', '', '', $frm_display_title, '', '', '', '', ''); // Patch #2 - 1.7.1 if ($contents != 'extra_new' && $edit_option != '2') { echo html_input('checkbox', 'display_info', 'di', 'YES', l('display_info'), '', '', '', '', $frm_display_info, '', '', '', '', ''); echo html_input('checkbox', 'commentable', 'ca', 'YES', l('enable_commenting'), '', '', '', '', $frm_commentable, '', '', '', '', ''); if (!empty($id)) { echo '<p><input name="freeze" type="checkbox" id="fc"'; if ($r['commentable'] == 'FREEZ') { echo ' checked="checked" />'; } else if ($r['commentable'] == 'YES') { echo ' />'; } else { echo ' />'; } echo ' <label for="fc"> '.l('freeze_comments').'</label></p>'; } } echo '</div></div>'; //echo '</div></fieldset></div>'; # Patch #19 - 1.7.1 if ($contents == 'article_new' || $edit_option == 1) { echo '<div class="adminpanel">'; # Patch #19 - 1.7.1 - replaces fieldset string echo '<p class="admintitle"><a onclick="toggle(\'admin_publish_date\')" style="cursor: pointer;" title="'.l('publish_date').'">'.l('publish_date').'</a></p>'; echo '<div id="admin_publish_date" style="display: none;">'; # Patch Nov.22.09 - 1 new string, defines check-box status. $onoff_status = $r['published'] == '2' ? 'ok' : ''; // Variable inserted in check-box string show is as checked if enabled. echo html_input('checkbox', 'fposting', 'fp', 'YES', l('enable'), '', '', '', '', $onoff_status, '', '', '', '', ''); echo '<p>'.l('server_time').': '.date('d.m.Y. H:i:s').'</p>'; echo '<p>'.l('article_date').'</p>'; !empty($id) ? posting_time($r['date']) : posting_time(); echo '</div></div>'; //echo '</div></fieldset></div>'; # Patch #19 - 1.7.1 } echo '<p>'; echo html_input('hidden', 'task', 'task', 'admin_article', '', '', '', '', '', '', '', '', '', '', ''); echo html_input('submit', $frm_task, $frm_task, $frm_submit, '', 'button', '', '', '', '', '', '', '', '', ''); if (!empty($id)) { echo html_input('hidden', 'article_category', 'article_category', $article_category, '', '', '', '', '', '', '', '', '', '', ''); echo html_input('hidden', 'id', 'id', $id, '', '', '', '', '', '', '', '', '', '', ''); echo html_input('submit', 'delete_article', 'delete_article', l('delete'), '', 'button', 'onclick="javascript: return pop()"', '', '', '', '', '', '', '', ''); } echo '</p></form>'; }} // ARTICLES - ADMIN LIST - Patch #19 - 1.7.1 - in 5 locations function admin_articles($contents) { global $categorySEF, $subcatSEF; $link = '<a href="'._SITE.$categorySEF.'/'; switch ($contents) { case 'article_view': $title = l('articles'); $sef = 'article_new'; $goto = 'snews_articles'; $p = 1; $qw = 'position < 2 AND position >-1 '; break; case 'extra_view': $title = l('extra_contents'); $sef = 'extra_new'; $goto = 'extra_contents';$p = '2'; $qw = 'position = 2 '; break; case 'page_view': $title = l('pages'); $sef = 'page_new'; $p = '3'; $goto = 'snews_pages'; $qw = 'position = 3 '; break; } $subquery = 'AND '.$qw; if (stats('articles',$p) > 0) { $add = ' - <a href="'.$sef.'/" title="'.l('add_new').'"> '.l('add_new').'</a> - '.l('see').' ('.$link.'">'.l('all').'</a>) - '.l('filter').' ('.$link.l('year').'">'.l('year').'</a> / '.$link.l('month').'"> '.l('month').'</a>)'; } else { $add = ''; } $tab = 1; if ($subcatSEF == l('year') || $subcatSEF == l('month')) { $query = 'SELECT DISTINCT(YEAR(date)) AS dyear FROM '._PRE.'articles'.' WHERE '.$qw.' ORDER BY date DESC'; $result = mysql_query($query); $month_names = explode(', ', l('month_names')); echo '<div class="adminpanel">'; echo '<p class="admintitle">'.l('articles').'</p>'; // Patch #19 - 1.7.1 - replaces fieldset string echo ' - '.l('filter').' <span style="color: #0000FF">'.$subcatSEF.'</span> - '.l('see').' ('.$link.'">'.l('all').'</a>) - '.l('filter').' ('.$link.l('year').'">'.l('year').'</a> / '.$link.l('month').'">'.l('month').'</a>)</legend>'; if ($result){ while ($r = mysql_fetch_array($result)) { $ryear = $r['dyear']; echo ($subcatSEF == l('month') ? '<span style="color: #0000FF">'.$r['dyear'].'</span>' : $link.l('year').'='.$r['dyear'].'">'.$r['dyear'].'</a> '); if ($subcatSEF == l('month')) { $qx = "SELECT DISTINCT(MONTH(date)) AS dmonth FROM "._PRE.'articles'." WHERE $qw AND YEAR(date)=$ryear ORDER BY date ASC"; $rqx = mysql_query($qx); while ($rx = mysql_fetch_array($rqx)){ $m = $rx['dmonth'] - 1; echo ' '.l('divider').' '.$link.l('year').'='.$r['dyear'].';'.l('month').'='.$rx['dmonth'].'">'.$month_names[$m].'</a> '; } } echo '<br />'; } } echo '</div>'; return; } $txtYear = l('year'); $txtMonth = l('month'); if (substr($subcatSEF, 0, strlen($txtYear)) == $txtYear) { $year = substr($subcatSEF, strlen($txtYear)+1, 4); } $find = strpos($subcatSEF,l('month')); if ($find > 0) { $month = substr($subcatSEF, $find + strlen($txtMonth) + 1, 2); } $filterquery = !empty($year) ? "AND YEAR(date)='".$year."' " : ''; $filterquery .= !empty($month) ? "AND MONTH(date)='".$month."' " : ''; $no_content = !empty($filterquery) ? '<p>'.l('no_content_for_filter').'</p>' : '<p>'.l('article_not_exist').'</p>'; echo html_input('form', '', 'post', '', '', '', '', '', '', '', '', '', 'post', '?action=process&task=reorder', ''); echo '<div class="adminpanel">'; echo '<p class="admintitle">'.$title.$add.'</p>'; // Patch #19 - 1.7.1 - replaces fieldset string echo '<p><input type="hidden" name="order" id="order" value="'.$goto.'" /></p>'; if ($contents == 'extra_view') { $cat_array_irregular = array('-1','-3'); foreach ($cat_array_irregular as $cat_value) { $legend_label = $cat_value == -3 ? l('pages') : l('all'); $page_only_xsql = $cat_value == -3 ? 'page_extra ASC,' : ''; $sql = "SELECT id, title, seftitle, date, published, artorder, visible, default_page, page_extra FROM "._PRE.'articles'." WHERE category = $cat_value AND position = $p $filterquery ORDER BY $page_only_xsql artorder ASC, date DESC "; $query = mysql_query($sql) or die(mysql_error()); $num_rows = mysql_num_rows($query); $tab=1; echo '<div class="innerpanel">'; echo '<p class="admintitle">'.$legend_label.'</p>'; // Patch #19 - 1.7.1 - replaces fieldset string if ($num_rows == 0) { echo $no_content; } else { $lbl_filter = -5; while ($r = mysql_fetch_array($query)) { if ($cat_value == -3) { if ($lbl_filter != $r['page_extra']) { $assigned_page = retrieve('title','articles','id',$r['page_extra']); echo !$assigned_page ? l('all_pages') : $assigned_page; } } $order_input = '<input type="text" name="page_'.$r['id'].'" value="'.$r['artorder'].'" size="1" tabindex="'.$tab.'" /> '; // Patch #13 - 1.7.1 - next string replace 1 below it. echo '<p>'.$order_input.'<strong title="'.date(s('date_format'), strtotime($r['date'])).'"> '.$r['title'].'</strong> '; //echo '<p>'.$order_input.'<strong title="'.date(s('date_format'), strtotime($r['date'])).'"> '.$r['title'].'</strong> '.l('divider').'<a href="'._SITE.$row['seftitle'].'/'.$r['seftitle'].'/">'.l('view').'</a> '; if ($r['default_page'] != 'YES'){ echo l('divider').' <a href="'._SITE.'?action=admin_article&id='.$r['id'].'">'.l('edit').'</a> '; } $visiblity = $r['visible'] == 'YES' ? '<a href="'._SITE.'?action=process&task=hide&item='.$item.'&id='.$r['id'].'">'.l('hide').'</a>' : l('hidden').' ( <a href="'._SITE.'?action=process&task=show&item='.$item.'&id='.$r['id'].'">'.l('show').'</a> )' ; echo ' '.l('divider').' '.$visiblity; if ($r['published'] == 2) { echo l('divider').' ['.l('status').' '.l('future_posting').']'; } if ($r['published'] == 0) { echo l('divider').' ['.l('status').' '.l('unpublished').']'; } echo '</p>'; $tab++; $lbl_filter = $r['page_extra']; } } echo '</div>'; } } if ($contents == 'article_view' || $contents == 'extra_view') { $item = $contents == 'extra_view' ? 'extra_contents': 'snews_articles'; $cat_query = "SELECT id, name, seftitle FROM "._PRE.'categories'." WHERE subcat = 0"; $cat_res = mysql_query($cat_query); $num = mysql_num_rows($cat_res); if (!$cat_res || !$num) { echo '<p>'.l('no_categories').'</p>'; } else { $sql = "SELECT id, title, seftitle, date, published, artorder, visible, default_page FROM "._PRE.'articles'." WHERE category = '0' AND position = $p $subquery ORDER BY artorder ASC, date DESC "; $query = mysql_query($sql) or die(mysql_error()); $num_rows = mysql_num_rows($query); if ($num_rows > 0) { echo '<div class="innerpanel">'; echo '<p class="admintitle">'.l('no_category_set').'</p>'; // Patch #19 - 1.7.1 - replaces fieldset string while ($O = mysql_fetch_array($query)) { $order_input = '<input type="text" name="page_'.$O['id'].'" value="'.$O['artorder'].'" size="1" tabindex="'.$tab22.'" /> '; echo '<p>'.$order_input.'<strong title="'.date(s('date_format'), strtotime($O['date'])).'">'.$O['title'].'</strong> '; if ($r['default_page'] != 'YES'){ echo l('divider').' <a href="'._SITE.'?action=admin_article&id='.$O['id'].'">'.l('edit').'</a> '; } $visiblity = $O['visible'] == 'YES' ? '<a href="'._SITE.'?action=process&task=hide&item='.$item.'&id='.$O['id'].'">'.l('hide').'</a>' : l('hidden').' ( <a href="'._SITE.'?action=process&task=show&item='.$item.'&id='.$O['id'].'">'.l('show').'</a> )' ; echo ' '.l('divider').' '.$visiblity; if ($O['published'] == 2) { echo l('divider').' ['.l('status').' '.l('future_posting').']'; } if ($O['published'] == 0) { echo l('divider').' ['.l('status').' '.l('unpublished').']'; } echo '</p>'; $tab22++; } echo '</div>'; } while ($row = mysql_fetch_array($cat_res)) { echo '<div class="adminpanel">'; echo '<p class="admintitle">'.$row['name'].'</p>'; // Patch #19 - 1.7.1 - replaces fieldset string $sql = "SELECT id, title, seftitle, date, published, artorder, visible, default_page FROM "._PRE.'articles'." WHERE category = '".$row['id']."' AND position = $p $subquery $filterquery ORDER BY artorder ASC, date DESC "; $query = mysql_query($sql) or die(mysql_error()); $num_rows = mysql_num_rows($query); if ($num_rows == 0) { echo $no_content; } while ($r = mysql_fetch_array($query)) { $order_input = '<input type="text" name="page_'.$r['id'].'" value="'.$r['artorder'].'" size="1" tabindex="'.$tab.'" /> '; echo '<p>'.$order_input.'<strong title="'.date(s('date_format'), strtotime($r['date'])).'"> '.$r['title'].'</strong> '.l('divider').' <a href="'._SITE.$row['seftitle'].'/'.$r['seftitle'].'/">'.l('view').'</a> '; if ($r['default_page'] != 'YES'){ echo l('divider').' <a href="'._SITE.'?action=admin_article&id='.$r['id'].'">'.l('edit').'</a> '; } $visiblity = $r['visible'] == 'YES' ? '<a href="'._SITE.'?action=process&task=hide&item='.$item.'&id='.$r['id'].'">'.l('hide').'</a>' : l('hidden').' ( <a href="'._SITE.'?action=process&task=show&item='.$item.'&id='.$r['id'].'">'.l('show').'</a> )' ; echo ' '.l('divider').' '.$visiblity; if ($r['published'] == 2) { echo l('divider').' ['.l('status').' '.l('future_posting').']'; } if ($r['published'] == 0) { echo l('divider').' ['.l('status').' '.l('unpublished').']'; } echo '</p>'; $tab++; } $query2 = mysql_query("SELECT id, name, seftitle FROM "._PRE.'categories'." WHERE subcat = '$row[id]' ORDER BY catorder ASC"); $tab2 = 1; while ($row2 = mysql_fetch_array($query2)){ echo '<a class="subcat" onclick="toggle(\'subcat'.$row2['id'].'\')" style="cursor: pointer;">'.$row2['name'].'</a><br />'; echo '<div id="subcat'.$row2['id'].'" style="display: none;" class="subcat">'; $catart_sql2 = "SELECT id, title, seftitle, date, published, artorder, visible FROM "._PRE.'articles'." WHERE category = '$row2[id]' $subquery $filterquery ORDER BY category ASC, artorder ASC, date DESC "; $catart_query2 = mysql_query($catart_sql2) or die(mysql_error()); $num_rows2 = mysql_num_rows($catart_query2); if ($num_rows2 == 0) { echo $no_content; } while ($ca_r2 = mysql_fetch_array($catart_query2)) { $order_input2 = '<input type="text" name="page_'.$ca_r2['id'].'" value="'.$ca_r2['artorder'].'" size="1" tabindex="'.$tab2.'" /> '; $catSEF = cat_rel($row2['id'],'seftitle'); echo '<p>'.$order_input2.'<strong title="'.date(s('date_format'), strtotime($ca_r2['date'])).'"> '.$ca_r2['title'].'</strong> '.l('divider').' <a href="'._SITE.$catSEF.'/'.$ca_r2['seftitle'].'/">'.l('view').'</a> '; echo l('divider').' <a href="'._SITE.'?action=admin_article&id='.$ca_r2['id'].'">'.l('edit').'</a> '; $visiblity2 = $ca_r2['visible'] == 'YES' ? '<a href="'._SITE.'?action=process&task=hide&item=snews_articles&id='.$ca_r2['id'].'">'.l('hide').'</a>' : l('hidden').' ( <a href="'._SITE.'?action=process&task=show&item=snews_articles&id='.$ca_r2['id'].'"> '.l('show').'</a> )'; echo ' '.l('divider').' '.$visiblity2; if ($ca_r2['published'] == 2) { echo l('divider').' ['.l('status').' '.l('future_posting').']'; } if ($ca_r2['published'] == 0) { echo l('divider').' ['.l('status').' '.l('unpublished').']'; } echo '</p>'; } echo '</div>'; $tab2++; } echo '</div>'; } } } elseif ($contents == 'page_view') { $sql = "SELECT id, title, seftitle, date, published, artorder, visible, default_page FROM "._PRE.'articles'." WHERE position = 3 $subquery ORDER BY artorder ASC, date DESC "; $query = mysql_query($sql) or die(mysql_error()); $num_rows = mysql_num_rows($query); if ($num_rows == 0) { echo '<p>'.l('article_not_exist').'</p>'; } while ($r = mysql_fetch_array($query)) { $order_input = '<input type="text" name="page_'.$r['id'].'" value="'.$r['artorder'].'" size="1" tabindex="'.$tab.'" /> '; echo '<p>'.$order_input.'<strong title="'.date(s('date_format'), strtotime($r['date'])).'"> '.$r['title'].'</strong> '.l('divider').' <a href="'._SITE.$r['seftitle'].'/">'.l('view').'</a> '; if ($r['default_page'] != 'YES') { echo l('divider').' <a href="'._SITE.'?action=admin_article&id='.$r['id'].'">'.l('edit').'</a> '; } $visiblity = $r['visible'] == 'YES' ? '<a href="'._SITE.'?action=process&task=hide&item=snews_pages&id='.$r['id'].'">'.l('hide').'</a>' : l('hidden').' ( <a href="'._SITE.'?action=process&task=show&item=snews_pages&id='.$r['id'].'">'.l('show').'</a> )' ; echo ' '.l('divider').' '.$visiblity; if ($r['published'] == 2) { echo l('divider').' ['.l('status').' '.l('future_posting').']'; } if ($r['published'] == 0) { echo l('divider').' ['.l('status').' '.l('unpublished').']'; } echo '</p>'; $tab++; } } echo '<p>'.html_input('submit', 'reorder', 'reorder', l('order_content'), '', 'button', '', '', '', '', '', '', '', '', ''); echo '</p></div></form>'; } //BUTTONS function buttons(){ echo '<div class="clearer"></div> <p>'.l('formatting').': <br class="clearer" />'; $formatting = array( 'strong' => '', 'em' => 'key', 'underline' => 'key', 'del' => 'key', 'p' => '', 'br' => '' ); foreach ($formatting as $key => $var) { $css = $var == 'key' ? $key :'buttons'; echo '<input type="button" name="'.$key.'" title="'.l($key).'" class="'.$css.'" onclick="tag(\''.$key.'\')" value="'. l($key.'_value').'" />'; } echo '</p><br class="clearer" /><p>'.l('insert').': <br class="clearer" />'; $insert = array('img', 'link', 'include', 'func','intro'); foreach ($insert as $key) { echo '<input type="button" name="'.$key.'" title="'.l($key).'" class="buttons" onclick="tag(\''. $key.'\')" value="'.l($key.'_value').'" />'; } echo '<br class="clearer" /></p>'; } // COMMENTS - EDIT function edit_comment() { $commentid = $_GET['commentid']; $query = mysql_query('SELECT id,articleid,name,url,comment,approved FROM '._PRE.'comments'.' WHERE id='.$commentid); $r = mysql_fetch_array($query); $articleTITLE = retrieve('title', 'articles', 'id', $r['articleid']); echo html_input('form', '', 'post', '', '', '', '', '', '', '', '', '', 'post', '?action=process&task=editcomment&id='.$commentid, ''); echo '<div class="adminpanel">'; # Patch #19 - 1.7.1 - replaces fieldset string echo '<p class="admintitle">'.l('edit_comment').' (<strong> '.$articleTITLE.'</strong> )</p>'; echo html_input('textarea', 'editedcomment', 'ec', stripslashes($r['comment']), l('comment'), '', '', '', '', '', '2', '100', '', '', ''); echo html_input('text', 'name', 'n', $r['name'], l('name'), '', '', '', '', '', '', '', '', '', ''); echo html_input('text', 'url', 'url', $r['url'], l('url'), '', '', '', '', '', '', '', '', '', ''); echo html_input('checkbox', 'approved', 'a', '', l('approved'), '', '', '', '', $r['approved'] == 'True' ? 'ok' : '', '', '', '', '', ''); echo '</div><p>'; // echo '</fieldset></div><p>'; # Patch #19 - 1.7.1 echo html_input('hidden', 'id', 'id', $r['articleid'], '', '', '', '', '', '', '', '', '', '', ''); echo html_input('submit', 'submit_text', 'submit_text', l('edit'), '', 'button', '', '', '', '', '', '', '', '', ''); echo html_input('hidden', 'commentid', 'commentid', $r['id'], '', '', '', '', '', '', '', '', '', '', ''); echo html_input('submit', 'delete_text', 'delete_text', l('delete'), '', 'button', 'onclick="javascript: return pop()"', '', '', '', '', '', '', '', ''); echo '</p></form>'; } // FORM EXTRA GROUPINGS function form_groupings() { if (s('enable_extras') == 'YES') { if (isset($_GET['id']) && is_numeric($_GET['id']) && !is_null($_GET['id'])) { $extraid = $_GET['id']; $query = mysql_query('SELECT id,name,seftitle,description FROM '._PRE.'extras'.' WHERE id='.$extraid); $r = mysql_fetch_array($query); $frm_action = _SITE.'?action=process&task=admin_groupings&id='.$extraid; $frm_add_edit = l('edit'); $frm_name = $r['name']; $frm_sef_title = $r['seftitle']; $frm_description = $r['description']; $frm_task = 'edit_groupings'; $frm_submit = l('edit_button'); // Patch #11 - 1.7.1 } else { $frm_action = _SITE.'?action=process&task=admin_groupings'; $frm_add_edit = l('add_groupings'); $frm_name = $_POST['name']; $frm_sef_title = $_POST['name'] == '' ? cleanSEF($_POST['name']) : cleanSEF($_POST['seftitle']); $frm_description = ''; $frm_task = 'add_groupings'; $frm_submit = l('add_groupings'); } echo html_input('form', '', 'post', '', '', '', '', '', '', '', '', '', 'post', $frm_action, ''); echo '<div class="adminpanel">'; # Patch #19 - 1.7.1 - replaces fieldset string echo '<p class="admintitle">'.$frm_add_edit.'</p>'; echo html_input('text', 'name', 't', $frm_name, l('name'), '', 'onchange="genSEF(this,document.forms[\'post\'].seftitle)"', 'onkeyup="genSEF(this,document.forms[\'post\'].seftitle)"', '', '', '', '', '', '', ''); echo html_input('text', 'seftitle', 's', $frm_sef_title, l('extra_title'), '', '', '', '', '', '', '', '', '', ''); echo html_input('text', 'description', 'desc', $frm_description, l('description'), '', '', '', '', '', '', '', '', '', ''); echo '</div><p>'; // echo '</fieldset></div><p>'; # Patch #19 - 1.7.1 echo html_input('hidden', 'task', 'task', 'admin_groupings', '', '', '', '', '', '', '', '', '', '', ''); echo html_input('submit', $frm_task, $frm_task, $frm_submit, '', 'button', '', '', '', '', '', '', '', '', ''); if (!empty($extraid)) { echo ' '; echo html_input('hidden', 'id', 'id', $extraid, '', '', '', '', '', '', '', '', '', '', ''); if ($extraid != 1) { echo html_input('submit', 'delete_groupings', 'delete_groupings', l('delete'), '', 'button', 'onclick="javascript: return pop()"', '', '', '', '', '', '', '', ''); } } echo '</p></form>'; } } // ADMIN GROUPINGS function admin_groupings() { if (s('enable_extras') == 'YES') { if (stats('extras','') > 0) { $add = ' - <a href="admin_groupings/" title="'.l('add_new').'">'.l('add_new').'</a>'; } else { $add = ''; } echo '<div class="adminpanel">'; echo '<p class="admintitle">'.l('groupings').$add.'</p>'; // Patch #19 - 1.7.1 - replaces fieldset string $result = mysql_query('SELECT id,name,description FROM '._PRE.'extras'.' ORDER BY id ASC'); if (!$result || !mysql_num_rows($result)) { echo '<p>'.l('group_not_exist').'</p>'; } else { while ($r = mysql_fetch_array($result)) { echo '<p><strong>'.$r['name'].'</strong> '.l('divider').'<a href="'._SITE.'?action=admin_groupings&id='.$r['id'].'" title="'.$r['description'].'">'.l('edit').'</a></p>'; } } echo '</div>'; } } /*** PROCESSING (CATEGORIES, CONTENTS, COMMENTS) ***/ function processing() { if (!_ADMIN) { echo (notification(1,l('error_not_logged_in'),'home')); } else { $action = clean(cleanXSS($_GET['action'])); $id = clean(cleanXSS($_GET['id'])); $commentid = $_POST['commentid']; $approved = $_POST['approved'] == 'on' ? 'True' : ''; $name = clean(entity($_POST['name'])); $category = !empty($_POST['define_category']) ? $_POST['define_category'] : 0; $subcat = $_POST['subcat']; $page = $_POST['define_page']; $def_extra = $_POST['define_extra']; $description = clean(entity($_POST['description'])); $title = clean(entity($_POST['title'])); $seftitle = $_POST['seftitle']; $url = cleanXSS($_POST['url']); $comment = $_POST['editedcomment']; $text = clean($_POST['text']); $date = date('Y-m-d H:i:s'); $description_meta = entity($_POST['description_meta']); $keywords_meta = entity($_POST['keywords_meta']); $display_title = $_POST['display_title'] == 'on' ? 'YES' : 'NO'; $display_info = $_POST['display_info'] == 'on' ? 'YES' : 'NO'; $commentable = $_POST['commentable'] == 'on' ? 'YES' : 'NO'; $freez = $_POST['freeze'] == 'on' ? 'YES' : 'NO'; if ($freez == 'YES' && $commentable == 'YES') { $commentable = 'FREEZ'; } $position = $_POST['position']> 0 ? $_POST['position'] : 1; if ($position == 2) { $position = $_POST['cat_dependant'] == 'on' ? 21 : 2; } $publish_article = ($_POST['publish_article'] == 'on') ? 1 : 0; $show_in_subcats = $_POST['show_in_subcats'] == 'on' ? 'YES' : 'NO'; $show_on_home = ($_POST['show_on_home'] == 'on' || $position > 1) ? 'YES' : 'NO'; $publish_category = $_POST['publish'] == 'on' ? 'YES' : 'NO'; $fpost_enabled = false; if ($_POST['fposting'] == 'on') { $fpost_enabled = true; $date = $_POST['fposting_year'].'-'.$_POST['fposting_month'].'-'.$_POST['fposting_day'].' '. $_POST['fposting_hour'].':'.$_POST['fposting_minute'].':00'; if (date('Y-m-d H:i:s') < $date) $publish_article = 2; } $task = clean(cleanXSS($_GET['task'])); switch ($task) { case 'save_settings': if (isset($_POST['save'])) { $website_title = $_POST['website_title']; $home_sef = $_POST['home_sef']; $website_description = $_POST['website_description']; $website_keywords = $_POST['website_keywords']; $website_email = $_POST['website_email']; $contact_subject = $_POST['contact_subject']; $language = $_POST['language']; $charset = $_POST['charset']; $date_format = $_POST['date_format']; $article_limit = $_POST['article_limit']; $rss_limit = $_POST['rss_limit']; $display_page = $_POST['display_page']; $display_new_on_home = $_POST['display_new_on_home']; $display_pagination = $_POST['display_pagination']; $num_categories = $_POST['num_categories']; $show_cat_names = $_POST['show_cat_names']; $approve_comments = $_POST['approve_comments']; $mail_on_comments = $_POST['mail_on_comments']; $comments_order = $_POST['comments_order']; $comment_limit = $_POST['comment_limit']; $word_filter_enable = $_POST['word_filter_enable']; $word_filter_file = $_POST['word_filter_file']; $word_filter_change = $_POST['word_filter_change']; $enable_extras = $_POST['enable_extras'] == 'on' ? 'YES' : 'NO'; $enable_comments = $_POST['enable_comments'] == 'on' ? 'YES' : 'NO'; $comment_repost_timer = is_numeric($_POST['comment_repost_timer']) ? $_POST['comment_repost_timer'] : '15'; $freeze_comments = $_POST['freeze_comments'] == 'on' ? 'YES' : 'NO'; $file_ext = $_POST['file_ext']; $allowed_file = $_POST['allowed_file']; $allowed_img = $_POST['allowed_img']; $ufield = array( 'website_title' => $website_title, 'home_sef' => $home_sef, 'website_description' => $website_description, 'website_keywords' => $website_keywords, 'website_email' => $website_email, 'contact_subject' => $contact_subject, 'language' => $language, 'charset' => $charset, 'date_format' => $date_format, 'article_limit' => $article_limit, 'rss_limit' => $rss_limit, 'display_page' => $display_page, 'comments_order' => $comments_order, 'comment_limit' => $comment_limit, 'word_filter_file' => $word_filter_file, 'word_filter_change' => $word_filter_change, 'display_new_on_home' => $display_new_on_home, 'display_pagination' => $display_pagination, 'num_categories' => $num_categories, 'show_cat_names' => $show_cat_names, 'approve_comments' => $approve_comments, 'mail_on_comments' => $mail_on_comments, 'word_filter_enable' => $word_filter_enable, 'enable_extras' => $enable_extras, 'enable_comments' => $enable_comments, 'freeze_comments' => $freeze_comments, 'comment_repost_timer' => $comment_repost_timer, 'file_extensions' => $file_ext, 'allowed_files' => $allowed_file, 'allowed_images' => $allowed_img ); while (list($key, $value) = each($ufield)) { mysql_query("UPDATE "._PRE.'settings'." SET VALUE = '$value' WHERE name = '$key' LIMIT 1"); } echo notification(0,'','snews_settings'); } break; case 'changeup': if (isset($_POST['submit_pass'])) { $user = checkUserPass($_POST['uname']); $pass1 = checkUserPass($_POST['pass1']); $pass2 = checkUserPass($_POST['pass2']); if ($user && $pass1 && $pass2 && $pass1 === $pass2) { $uname = md5($user); $pass = md5($pass2); $query = "UPDATE "._PRE.'settings'." SET VALUE="; mysql_query($query."'$uname' WHERE name='username' LIMIT 1"); mysql_query($query."'$pass' WHERE name='password' LIMIT 1"); echo notification(0,'','administration'); } else { die(notification(2,l('pass_mismatch'),'snews_settings')); } } break; case 'admin_groupings': switch (true) { case (empty($name)): echo notification(1,l('err_TitleEmpty').l('errNote')); form_groupings(); break; case (empty($seftitle)): echo notification(1,l('err_SEFEmpty').l('errNote')); form_groupings(); break; case(check_if_unique('group_name', $name, $id, '')): echo notification(1,l('err_TitleExists').l('errNote')); form_groupings(); break; case(check_if_unique('group_seftitle', $seftitle, $id, '')): echo notification(1,l('err_SEFExists').l('errNote')); form_groupings(); break; case(cleancheckSEF($seftitle) == 'notok'): echo notification(1,l('err_SEFIllegal').l('errNote')); form_groupings(); break; default: switch (true) { case (isset($_POST['add_groupings'])): mysql_query("INSERT INTO "._PRE.'extras'."(name, seftitle, description) VALUES('$name', '$seftitle', '$description')"); break; case (isset($_POST['edit_groupings'])): mysql_query("UPDATE "._PRE.'extras'." SET name = '$name', seftitle = '$seftitle', description = '$description' WHERE id = $id LIMIT 1"); break; case (isset($_POST['delete_groupings'])): mysql_query("DELETE FROM "._PRE.'extras'." WHERE id = $id LIMIT 1"); break; } echo notification(0,'','groupings'); } break; case 'admin_category': case 'admin_subcategory': switch (true) { case (empty($name)): echo notification(1,l('err_TitleEmpty').l('errNote')); form_categories(); break; case (empty($seftitle)): echo notification(1,l('err_SEFEmpty').l('errNote')); form_categories(); break; case (isset($_POST['add_category']) && check_if_unique('subcat_name', $name, '', $subcat)): echo notification(1,l('err_TitleExists').l('errNote')); form_categories(); break; case (isset($_POST['add_category']) && check_if_unique('subcat_seftitle', $seftitle, '', $subcat)): echo notification(1,l('err_SEFExists').l('errNote')); form_categories(); break; case (isset($_POST['edit_category']) && $subcat == 0 && check_if_unique('cat_name_edit', $name, $id, '')): echo notification(1,l('err_TitleExists').l('errNote')); form_categories(); break; case (isset($_POST['edit_category']) && $subcat == 0 && check_if_unique('cat_seftitle_edit', $seftitle, $id, '')): echo notification(1,l('err_SEFExists').l('errNote')); form_categories(); break; case (isset($_POST['edit_category']) && $subcat != 0 && check_if_unique('subcat_name_edit', $name, $id, $subcat)): echo notification(1,l('err_TitleExists').l('errNote')); form_categories(); break; case (isset($_POST['edit_category']) && $subcat != 0 && check_if_unique('subcat_seftitle_edit', $seftitle, $id, $subcat)): echo notification(1,l('err_SEFExists').l('errNote')); form_categories(); break; case (cleancheckSEF($seftitle) == 'notok'): echo notification(1,l('err_SEFIllegal').l('errNote')); form_categories(); break; case ($subcat==$id): echo notification(1,l('errNote')); form_categories(); break; default: switch(true) { case(isset($_POST['add_category'])): $catorder = mysql_fetch_array(mysql_query( "SELECT MAX(catorder) as max FROM "._PRE.'categories'." WHERE subcat = $subcat")); $catorder = $catorder['max'] + 1; mysql_query("INSERT INTO "._PRE.'categories'." (name, seftitle, description, published, catorder, subcat) VALUES('$name', '$seftitle', '$description', '$publish_category', '$catorder','$subcat')"); break; case(isset($_POST['edit_category'])): $catorder = mysql_fetch_array(mysql_query( "SELECT MAX(catorder) as max FROM "._PRE.'categories'." WHERE subcat = $subcat")); $catorder = isset($_POST['catorder']) ? $_POST['catorder'] : $catorder['max'] + 1; mysql_query("UPDATE "._PRE.'categories'." SET name = '$name', seftitle = '$seftitle', description = '$description', published = '$publish_category', subcat='$subcat', catorder='$catorder' WHERE id = $id LIMIT 1"); break; case (isset($_POST['delete_category'])): $any_subcats = retrieve('COUNT(id)','categories','subcat',$id); $any_articles = retrieve('COUNT(id)','articles','category',$id); if ($any_subcats > 0 || $any_articles > 0) { echo notification(1,l('warn_catnotempty'),''); echo '<p><a href="'._SITE.'administration/" title="'.l('administration').'"> '.l('administration').'</a> OR <a href="'._SITE.'?action=process&task=delete_category_all&id='.$id.'" onclick="javascript: return pop(\'x\')" title="'.l('administration').'"> '.l('empty_cat').'</a></p>'; $no_success = true; } else { delete_cat($id); } break; } $success = isset($no_success) ? '' : notification(0,'','snews_categories'); echo $success; } break; case 'reorder': if (isset($_POST['reorder'])) { switch ($_POST['order']){ case 'snews_articles': case 'extra_contents': case 'snews_pages': $table = 'articles'; $order_type = 'artorder'; $remove = 'page_'; break; case 'snews_categories': $table = 'categories'; $order_type = 'catorder'; $remove = 'cat_'; break; } foreach ($_POST as $key => $value){ $type_id = str_replace($remove,'',$key); $key = clean(cleanXSS(trim($value))); if ($key != 'reorder' && $key != 'order' && $key != $table && $key != l('order_content') && $key != $_POST['order']){ $query = "UPDATE "._PRE.$table." SET $order_type = $value WHERE id = $type_id LIMIT 1;"; mysql_query($query) or die(mysql_error().'<br />'.$query); } } echo notification(0,l('please_wait')); echo '<meta http-equiv="refresh" content="1; url='._SITE.$_POST['order'].'/">'; } break; case 'admin_article': $_SESSION[_SITE.'temp']['title'] = $_POST['title']; // Patch #9 - 1.7.1 - revised $_SESSION[_SITE.'temp']['seftitle'] = $_POST['seftitle']; // Patch #9 - 1.7.1 - revised $_SESSION[_SITE.'temp']['text'] = $_POST['text']; // Patch #9 - 1.7.1 - revised switch (true) { case (empty($title)): echo notification(1,l('err_TitleEmpty').l('errNote')); form_articles(''); unset($_SESSION[_SITE.'temp']); break; case (empty($seftitle)): echo notification(1,l('err_SEFEmpty').l('errNote')); $_SESSION[_SITE.'temp']['seftitle'] = $_SESSION[_SITE.'temp']['title']; form_articles(''); unset($_SESSION[_SITE.'temp']); break; case (cleancheckSEF($seftitle) == 'notok'): echo notification(1,l('err_SEFIllegal').l('errNote')); form_articles(''); unset($_SESSION[_SITE.'temp']); break; case ($position == 1 && $_POST['article_category'] != $category && isset($_POST['edit_article']) && check_if_unique('article_title', $title, $category, '')): echo notification(1,l('err_TitleExists').l('errNote')); form_articles(''); unset($_SESSION[_SITE.'temp']); break; case ($position == 1 && $_POST['article_category'] != $category && isset($_POST['edit_article']) && check_if_unique('article_seftitle', $seftitle, $category, '')): echo notification(1,l('err_SEFExists').l('errNote')); form_articles(''); unset($_SESSION[_SITE.'temp']); break; case (!isset($_POST['delete_article']) && !isset($_POST['edit_article']) && check_if_unique('article_title', $title, $category, '')): echo notification(1,l('err_TitleExists').l('errNote')); form_articles(''); unset($_SESSION[_SITE.'temp']); break; case (!isset($_POST['delete_article']) && !isset($_POST['edit_article']) && check_if_unique('article_seftitle', $seftitle, $category, '')): echo notification(1,l('err_SEFExists').l('errNote')); form_articles(''); unset($_SESSION[_SITE.'temp']); break; default: $pos = $position; $sub = !empty($category) ? ' AND category = '.$category : ''; $curr_artorder = retrieve('artorder','articles','id',$id); if (!$curr_artorder){ $artorder = 1; } else { $artorder = $curr_artorder; } switch ($pos) { case 1: $link = 'snews_articles'; break; case 2: $link = 'extra_contents'; break; case 3: $link = 'snews_pages'; break; } switch (true) { case (isset($_POST['add_article'])): mysql_query("INSERT INTO "._PRE.'articles'."( title, seftitle, text, date, category, position, extraid, page_extra, displaytitle, displayinfo, commentable, published, description_meta, keywords_meta, show_on_home, show_in_subcats, artorder) VALUES('$title', '$seftitle', '$text', '$date', '$category', '$position', '$def_extra', '$page', '$display_title', '$display_info', '$commentable', '$publish_article', '$description_meta', '$keywords_meta', '$show_on_home', '$show_in_subcats', '$artorder')"); break; case (isset($_POST['edit_article'])): $category = $position == 3 ? 0 : $category; $old_pos = retrieve('position','articles','id',$id); // Only do this if page is changed to art/extra if ($position != $old_pos && $old_pos == 3) { $chk_extra_query = "SELECT id FROM "._PRE.'articles'." WHERE position = 2 AND category = -3 AND page_extra = $id"; $chk_extra_sql = mysql_query($chk_extra_query) or die(mysql_error('oops')); if ($chk_extra_sql) { while ($xtra = mysql_fetch_array($chk_extra_sql)) { $xtra_id = $xtra['id']; mysql_query("UPDATE "._PRE.'articles'." SET category = '0', page_extra = '' WHERE id = $xtra_id"); } } } if ($fpost_enabled == true) { $future = "date = '$date',"; // Patch #5 - 1.7.1 //allows backdating of article $publish_article = strtotime($date) < time() ? 1 : $publish_article; } mysql_query("UPDATE "._PRE.'articles'." SET title='$title', seftitle = '$seftitle', text = '$text', ".$future." category = $category, position = $position, extraid = '$def_extra', page_extra = '$page', displaytitle = '$display_title', displayinfo = '$display_info', commentable = '$commentable', published = $publish_article, description_meta = '$description_meta', keywords_meta = '$keywords_meta', show_on_home='$show_on_home', show_in_subcats='$show_in_subcats', artorder = '$artorder' WHERE id = $id LIMIT 1") or die(mysql_error()); break; case(isset($_POST['delete_article'])): if ($position == 3) { $chk_extra_query = "SELECT id FROM "._PRE.'articles'." WHERE position = 2 AND category = -3 AND page_extra = $id"; $chk_extra_sql = mysql_query($chk_extra_query) or die(mysql_error()); if ($chk_extra_sql) { while ($xtra = mysql_fetch_array($chk_extra_sql)) { $xtra_id = $xtra['id']; mysql_query("UPDATE "._PRE.'articles'." SET category = '0',page_extra = '' WHERE id = $xtra_id"); } } } mysql_query("DELETE FROM "._PRE.'articles'." WHERE id = $id"); mysql_query("DELETE FROM "._PRE.'comments'." WHERE articleid = $id"); if ($id == s('display_page')) { mysql_query("UPDATE "._PRE.'settings'." SET VALUE = 0 WHERE name = 'display_page'"); } break; } echo notification(0,'',$link); unset($_SESSION[_SITE.'temp']); } break; case 'editcomment': $articleID = retrieve('articleid', 'comments', 'id', $commentid); $articleSEF = retrieve('seftitle', 'articles', 'id', $articleID); $articleCAT = retrieve('category','articles','seftitle',$articleSEF); $postCat = cat_rel($articleCAT, 'seftitle'); $link = $postCat.'/'.$articleSEF; if (isset($_POST['submit_text'])) { mysql_query("UPDATE "._PRE.'comments'." SET name = '$name', url = '$url', comment = '$comment', approved = '$approved' WHERE id = $commentid"); } else if (isset($_POST['delete_text'])) { mysql_query("DELETE FROM "._PRE.'comments'." WHERE id = $commentid"); } echo notification(0,'',$link); break; case 'deletecomment': $commentid = $_GET['commentid']; $articleid = retrieve('articleid', 'comments', 'id', $commentid); $articleSEF = retrieve('seftitle', 'articles', 'id', $articleid); $articleCAT = retrieve('category','articles','id', $articleid); $postCat = cat_rel($articleCAT, 'seftitle'); $link = $postCat.'/'.$articleSEF; mysql_query("DELETE FROM "._PRE.'comments'." WHERE id = $commentid"); echo notification(0,'', $link); echo '<meta http-equiv="refresh" content="1; url='._SITE.$postCat.'/'.$articleSEF.'/">'; break; case 'delete_category_all': $art_query = mysql_query("SELECT id FROM "._PRE.'articles'." WHERE category = $id"); while ($rart = mysql_fetch_array($art_query)) { mysql_query("DELETE FROM "._PRE.'comments'." WHERE articleid = $rart[id]"); } mysql_query("DELETE FROM "._PRE.'articles'." WHERE category = $id"); $sub_query = mysql_query("SELECT id FROM "._PRE.'categories'." WHERE subcat = $id"); while ($rsub = mysql_fetch_array($sub_query)) { $art_query = mysql_query("SELECT id FROM "._PRE.'articles'." WHERE category = $rsub[id]"); while ($rart = mysql_fetch_array($art_query)) { mysql_query("DELETE FROM "._PRE.'comments'." WHERE articleid = $rart[id]"); } mysql_query("DELETE FROM "._PRE.'articles'." WHERE category = $rsub[id]"); } mysql_query("DELETE FROM "._PRE.'categories'." WHERE subcat = $id"); delete_cat($id); echo notification(0,'', 'snews_categories'); break; case 'hide': case 'show': $id = $_GET['id']; $item = $_GET['item']; $back = $_GET['back']; $no_yes = $task == 'hide' ? 'NO' : 'YES'; switch ($item) { case 'snews_articles': $order = 'artorder'; $link = empty($back) ? 'snews_articles' : $back; break; case 'extra_contents': $order = 'artorder'; $link = empty($back) ? 'extra_contents' : $back; break; case 'snews_pages': $order = 'artorder'; $link = empty($back) ? 'snews_pages' : $back; break; } $item = 'articles'; mysql_query("UPDATE "._PRE."$item SET visible = '$no_yes' WHERE id = '$id'"); echo notification(0,l('please_wait')); echo '<meta http-equiv="refresh" content="1; url='._SITE.$link.'/">'; break; } } } // FILES function files() { $upload_file = isset($_POST['upload']) ? $_POST['upload'] : null; $ip = (isset($_POST['ip']) && $_POST['ip'] == $_SERVER['REMOTE_ADDR']) ? $_POST['ip'] : null; $time = (isset($_POST['time']) && (time() - $_POST['time']) > 4) ? $_POST['time'] : null; if ($ip && $time && $upload_file && _ADMIN) { $ignore = explode(',', l('ignored_items')); $file_types = explode(',', s('allowed_files')); $image_types = explode(',', s('allowed_images')); $extension = array_merge($file_types, $image_types); if ($_FILES['imagefile']['type']) { $filetemp = $_FILES['imagefile']['tmp_name']; $filename = strtolower($_FILES['imagefile']['name']); $filetype = $_FILES['imagefile']['type']; if (!in_array(substr(strrchr($filename, '.'), 1), $extension) || in_array($filename, $ignore)) { die(notification(2,l('file_error'),'snews_files')); } else { $upload_dir = $_POST['upload_dir'].'/'; copy ($filetemp, $upload_dir.$filename) or die (l('file_error')); echo notification(0,'','snews_files'); $kb_size = round(($_FILES['imagefile']['size'] / 1024), 1); echo '<p><a href="'.$upload_dir.$filename.'" title="'.$filename.'">'.$filename.'</a> ['.$kb_size.' KB] ['.$filetype.']</p>'; } } else { die(notification(2,l('file_error'),'snews_files')); } } else { if (isset($_GET['task']) == 'delete') { $file_to_delete = $_GET['folder'].'/'.$_GET['file']; @unlink($file_to_delete); echo notification(0,'','snews_files'); } else { echo '<div class="adminpanel">'; echo '<p class="admintitle">'.l('upload').'</p>'; # Patch #19 - 1.7.1 - title string replaces fieldset echo '<form method="post" action="snews_files/" enctype="multipart/form-data">'; echo '<p>'.l('uploadto'). ' <select name="upload_dir" id="ud1">'; echo '<option value=".">..</option>'; filelist('option',".", 0); echo '</select></p><p>'.l('uploadfrom'). ' <input type="file" name="imagefile" /></p><p>'; echo html_input('hidden', 'ip', 'ip1', $_SERVER['REMOTE_ADDR'], '', '', '', '', '', '', '', '', '', '', ''); echo html_input('hidden', 'time', 'time1', time(), '', '', '', '', '', '', '', '', '', '', ''); echo html_input('submit', 'upload', 'upload', l('upload'), '', 'button', '', '', '', '', '', '', '', '', ''); echo '</p></form></div>'; // echo '</p></form></fieldset></div>'; # Patch #19 - 1.7.1 echo '<div class="adminpanel">'; echo '<p class="admintitle">'.l('view_files').' '.(!isset($_POST['upload_dir']) ? ' root' : ' '.str_replace('.', 'root', $_POST['upload_dir'])); echo '</p>'; # Patch #19 - 1.7.1 - title string replaces fieldset echo '<form method="post" action="snews_files/" enctype="multipart/form-data">'; echo '<p><select name="upload_dir" id="ud2"><option value=".">..</option>'; filelist('option',"."); echo '</select>'; echo html_input('hidden', 'file', 'file', $file, '', '', '', '', '', '', '', '', '', '', ''); echo html_input('hidden', 'ip', 'ip2', $_SERVER['REMOTE_ADDR'], '', '', '', '', '', '', '', '', '', '', ''); echo html_input('hidden', 'time', 'time2', time(), '', '', '', '', '', '', '', '', '', '', ''); echo html_input('submit', 'show', 'show', l('view'), '', 'button', '', '', '', '', '', '', '', '', ''); $handle = (isset($_POST['upload_dir']) && strlen($_POST['upload_dir']) > 2) ? substr($_POST['upload_dir'], 2) : "."; echo '</p><p>'; filelist('list', $handle); echo '</p></form></div>'; // echo '</p></form></fieldset></div>'; # Patch #19 - 1.7.1 } } } // FILELIST FUNCTION function filelist($mode, $path, $depth = 0) { $ignore = explode(',', l('ignored_items')); $file_types = explode(',', s('allowed_files')); $image_types = explode(',', s('allowed_images')); $types = array_merge($file_types, $image_types); $dh = @opendir($path); while (false !== ($file = readdir($dh))) { $target = $path.'/'.$file; if(!in_array($file, $ignore)) { $spaces = str_repeat(l('divider').' ', ($depth)); switch(true) { case ($mode == 'option' && is_dir($target)): $selected = $_POST['view_dir'] == $target ? ' selected="selected"' : ''; echo '<option value="'.$target.'"'.$selected.'>'.$spaces.$file.'</option>'; filelist('option', $target, ($depth + 1)); break; case ($mode == 'list' && is_file($target) && in_array(substr(strrchr($target, '.'), 1), $types)): echo ' <a href="'.$target.'" title="'.l('view').' '.$file.'">'.$file.'</a> '.l('divider').' <a href="?action=snews_files&task=delete&folder='.$path.'&file='.$file.'" title="'.l('delete').' '.$file.'" onclick="return pop()"> '.l('delete').'</a><br />'; // Patch #3 - 1.7.1 break; } } } closedir($dh); } // CONNECT TO DATABASE function connect_to_db() { $db = mysql_connect(db('dbhost'), db('dbuname'), db('dbpass')); mysql_select_db(db('dbname')) or die(l('dberror')); if (mysql_num_rows(mysql_query("SHOW TABLES LIKE '"._PRE.'articles'."'")) != 1) { die(l('db_tables_error')); } } // Get parent/child from an id function cat_rel($var, $column) { $categoryid = $var; $join_result = mysql_query( "SELECT parent.$column FROM "._PRE.'categories'." as child INNER JOIN "._PRE.'categories'." as parent ON parent.id = child.subcat WHERE child.id = $categoryid"); while ($j = mysql_fetch_array($join_result)) { $parent = $j[$column].'/'; } $subresult = mysql_query( "SELECT $column FROM "._PRE.'categories'." WHERE id = $categoryid"); while ($c = mysql_fetch_array($subresult)) { $child = $c[$column]; } return $parent.$child; } // SMART RETRIEVE FUNCTION function populate_retr_cache() { global $retr_cache_cat_id, $retr_cache_cat_sef; $result = mysql_query('SELECT id, seftitle, name FROM '._PRE.'categories'.''); while ($r = mysql_fetch_array($result)) { $retr_cache_cat_id[$r['id']] = $r['seftitle']; $retr_cache_cat_sef[$r['seftitle']] = $r['name']; } } $retr_init = False; function retrieve($column, $table, $field, $value) { if (is_null($value)) return null; if ($table == 'categories') { global $retr_cache_cat_id, $retr_cache_cat_sef, $retr_init; if (!$retr_init) { populate_retr_cache(); $retr_init = true; } if ($column == 'name') { return $retr_cache_cat_sef[$value]; } else if ($column == 'seftitle') { return $retr_cache_cat_id[$value]; } } $result = mysql_query("SELECT $column FROM "._PRE."$table WHERE $field = '$value'"); while ($r = mysql_fetch_array($result)) { $retrieve = $r[$column]; } return $retrieve; } //NOTIFICATION function notification($error = 0, $note = '', $link = '') { // adds a "Warning" option $title = $error == 0 ? l('operation_completed') : ($error !== 0? l('admin_error') : l('warning')); $note = (!$note || empty($note)) ? '' : '<p>'.$note.'</p>'; switch(true){ case (!$link): $goto = ''; break; case ($link == 'home'): $goto = '<p><a href="'._SITE.'">'.l('backhome').'</a></p>'; break; case ($link != 'home'): $goto = '<p><a href="'._SITE.$link.'/" title="'.$link.'">'.l('back').'</a></p>'; break; } if ($error == 2) { $_SESSION[_SITE.'fatal'] = $note == '' ? '' : '<h3>'.$title.'</h3>'.$note.$goto; echo '<meta http-equiv="refresh" content="0; url='._SITE.$link.'/">'; return; } else { $output = '<h3>'.$title.'</h3>'.$note.$goto; return $output; } } // PREPARING ARTICLE FOR XML function strip($text) { $search = array('/\[include\](.*?)\[\/include\]/', '/\[func\](.*?)\[\/func\]/', '/\[break\]/', '/</', '/>/'); $replace = array('', '', '', '<', '>'); $output = preg_replace($search, $replace, $text); $output = stripslashes(strip_tags($output, '<a><img><h1><h2><h3><h4><h5><ul><li><ol><p><hr><br><b><i><strong><em><blockquote>')); return $output; } // HTML ENTITIES function entity($item) { $item = htmlspecialchars($item, ENT_QUOTES, s('charset')); return $item; } //FILE INCLUSION function file_include($text, $shorten) { $fulltext = substr($text, 0, $shorten); if(substr_count ($fulltext, '&')>0){$fulltext = str_replace('&', '&', str_replace('&', '&', $fulltext));} if ($shorten < 9999000 && preg_match('<p>',$fulltext)) { if (substr_count ($fulltext, '<p>') > substr_count ($fulltext, '</p>')) { $fulltext .='</p>'; } } $ins = strpos($fulltext, '[/func]'); if ($ins > 0) { $text = str_replace('[func]', '|&|', $fulltext); $text = str_replace('[/func]', '|&|', $text); $text = explode('|&|', $text); $num = count($text) - 1; $i = 1; while ($i <= $num) { $func = explode(':|:', $text[$i]); ob_start(); $returned = call_user_func_array($func[0], explode(',',$func[1])); $text[$i] = ob_get_clean(); if (empty($text[$i])) { $text[$i] = $returned; } $i = $i + 2; } $fulltext = implode($text); } $inc = strpos($fulltext, '[/include]'); if ($inc > 0) { $text = str_replace('[include]', '|&|', $fulltext); $text = str_replace('[/include]', '|&|', $text); $text = explode('|&|', $text); $num = count($text); $extension = explode(',', s('file_extensions')); for ($i = 0; $i<$num; $i++) { if ($i == $num) { break; } if (!in_array(substr(strrchr($text[$i], '.'), 1), $extension)) { echo substr($text[$i], 0); } else { if (preg_match('/^[a-z0-9_\-.\/]+$/i', $text[$i])) { $filename=$text[$i]; file_exists($filename) ? include($filename) : print l('error_file_exists'); } else { echo l('error_file_name'); } } } } else { echo $fulltext; } } // CLEAN - cleaning query function clean($query) { if (get_magic_quotes_gpc()) { $query = stripslashes($query); } $query = mysql_real_escape_string($query); return $query; } // BREAK TO NEW LINE function br2nl($text){ $text = str_replace('\r\n','',str_replace("<br />","\n",preg_replace('/<br\\\\s*?\\/??>/i', "\\n", $text))); return $text; } // SEND EMAIL function send_email($send_array) { foreach ($send_array as $var => $value) { $$var = $value; } $body = isset($status) ? $status."\n" : ''; if (isset($message)) { $text = l('message').': '."\n".br2nl($message)."\n"; } if (isset($comment)) { $text = l('comment').': '."\n".br2nl($comment)."\n"; } $header = "MIME-Version: 1.0\n"; $header .= "Content-type: text/plain; charset=".s('charset')."\n"; $header .= "From: $name <$email>\r\nReply-To: $name <$email>\r\nReturn-Path: <$email>\r\n"; $body .= isset($name) ? l('name').': '.$name."\n" : ''; $body .= isset($email) ? l('email').': '.$email."\n" : ''; // The below requires new lang var if ip to be sent with email - $l['ip'] = 'IP'; // $body .= isset($ip) ? l('ip').': '.$ip."\n" : ''; $body .= isset($url) && $url!='' ? l('url').': '.$url."\n\n" : ''; $body .= $text."\n"; mail($to,$subject,$body,$header); } // USER/PASS CHECK function checkUserPass($input) { $output = clean(cleanXSS($input)); $output = strip_tags($output); if (ctype_alnum($output) === true && strlen($output) > 3 && strlen($output) < 14) { return $output; } else { return null; } } // MATH CAPTCHA - // Patch #18 - 1.7.1 - revised function by KikkoMax function mathCaptcha() { $x = rand(1, 9); $y = rand(1, 9); if (!isset($_SESSION[_SITE.'mathCaptcha-digit'])) { $_SESSION[_SITE.'mathCaptcha-digit'] = $x + $y; $_SESSION[_SITE.'mathCaptcha-digit-x'] = $x; $_SESSION[_SITE.'mathCaptcha-digit-y'] = $y; } $math = '<p><label for="calc">* '.l('math_captcha').': </label><br />'; $math .= $_SESSION[_SITE.'mathCaptcha-digit-x'].' + '.$_SESSION[_SITE.'mathCaptcha-digit-y'].' = '; $math .= '<input type="text" name="calc" id="calc" /></p>'; return $math; } /* function mathCaptcha() { $x = rand(1, 9); $y = rand(1, 9); $_SESSION[_SITE.'mathCaptcha-digit'] = $x + $y; $math = ' <p><label for="calc"> * '.l('math_captcha').': </label><br />'; $math .= $x.' + '.$y.' = '; $math .= ' <input type="text" name="calc" id="calc" /> </p>'; return $math; } */ // CHECK MATH CAPTCHA RESULT function checkMathCaptcha() { $result = false; $testNumber = isset($_SESSION[_SITE.'mathCaptcha-digit']) ? $_SESSION[_SITE.'mathCaptcha-digit'] : 'none'; unset($_SESSION[_SITE.'mathCaptcha-digit']); if (is_numeric($testNumber) && is_numeric($_POST['calc']) && ($testNumber == $_POST['calc'])) { $result = true; } return $result; } //CATEGORY CHECK function check_category($category) { $main_menu = explode(',', l('cat_listSEF')); if (in_array($category, $main_menu)) { return true; } else { return false; } } // MAKE A CLEAN SEF URL function cleanSEF($string) { $string = str_replace(' ', '-', $string); $string = preg_replace('/[^0-9a-zA-Z-_]/', '', $string); $string = str_replace('-', ' ', $string); $string = preg_replace('/^\s+|\s+$/', '', $string); $string = preg_replace('/\s+/', ' ', $string); $string = str_replace(' ', '-', $string); return strtolower($string); } // CLEAN CHECK SEF function cleancheckSEF($string) { $ret = !preg_match('/^[a-z0-9-_]+$/i', $string) ? 'notok' : 'ok'; return $ret; } // XSS CLEAN $XSS_cache = array(); $ra1 = array('applet', 'body', 'bgsound', 'base', 'basefont', 'embed', 'frame', 'frameset', 'head', 'html', 'id', 'iframe', 'ilayer', 'layer', 'link', 'meta', 'name', 'object', 'script', 'style', 'title', 'xml'); $ra2 = array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base', 'onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload'); $tagBlacklist = array_merge($ra1, $ra2); //CLEANXSS function cleanXSS($val) { if ($val != "") { global $XSS_cache; if (!empty($XSS_cache) && array_key_exists($val, $XSS_cache)) return $XSS_cache[$val]; $source = html_entity_decode($val, ENT_QUOTES, 'ISO-8859-1'); $source = preg_replace('/&#(\d+);/me','chr(\\1)', $source); $source = preg_replace('/&#x([a-f0-9]+);/mei','chr(0x\\1)', $source); while($source != filterTags($source)) { $source = filterTags($source); } $source = nl2br($source); $XSS_cache[$val] = $source; return $source; } return $val; } //FILTER TAGS function filterTags($source) { global $tagBlacklist; $preTag = NULL; $postTag = $source; $tagOpen_start = strpos($source, '<'); while($tagOpen_start !== FALSE) { $preTag .= substr($postTag, 0, $tagOpen_start); $postTag = substr($postTag, $tagOpen_start); $fromTagOpen = substr($postTag, 1); $tagOpen_end = strpos($fromTagOpen, '>'); if ($tagOpen_end === false) break; $tagOpen_nested = strpos($fromTagOpen, '<'); if (($tagOpen_nested !== false) && ($tagOpen_nested < $tagOpen_end)) { $preTag .= substr($postTag, 0, ($tagOpen_nested+1)); $postTag = substr($postTag, ($tagOpen_nested+1)); $tagOpen_start = strpos($postTag, '<'); continue; } $tagOpen_nested = (strpos($fromTagOpen, '<') + $tagOpen_start + 1); $currentTag = substr($fromTagOpen, 0, $tagOpen_end); $tagLength = strlen($currentTag); if (!$tagOpen_end) { $preTag .= $postTag; $tagOpen_start = strpos($postTag, '<'); } $tagLeft = $currentTag; $attrSet = array(); $currentSpace = strpos($tagLeft, ' '); if (substr($currentTag, 0, 1) == '/') { $isCloseTag = TRUE; list($tagName) = explode(' ', $currentTag); $tagName = substr($tagName, 1); } else { $isCloseTag = FALSE; list($tagName) = explode(' ', $currentTag); } if ((!preg_match('/^[a-z][a-z0-9]*$/i',$tagName)) || (!$tagName) || ((in_array(strtolower($tagName), $tagBlacklist)))) { $postTag = substr($postTag, ($tagLength + 2)); $tagOpen_start = strpos($postTag, '<'); continue; } while ($currentSpace !== FALSE) { $fromSpace = substr($tagLeft, ($currentSpace+1)); $nextSpace = strpos($fromSpace, ' '); $openQuotes = strpos($fromSpace, '"'); $closeQuotes = strpos(substr($fromSpace, ($openQuotes+1)), '"') + $openQuotes + 1; if (strpos($fromSpace, '=') !== FALSE) { if (($openQuotes !== FALSE) && (strpos(substr($fromSpace, ($openQuotes+1)), '"') !== FALSE)) $attr = substr($fromSpace, 0, ($closeQuotes+1)); else $attr = substr($fromSpace, 0, $nextSpace); } else $attr = substr($fromSpace, 0, $nextSpace); if (!$attr) $attr = $fromSpace; $attrSet[] = $attr; $tagLeft = substr($fromSpace, strlen($attr)); $currentSpace = strpos($tagLeft, ' '); } $postTag = substr($postTag, ($tagLength + 2)); $tagOpen_start = strpos($postTag, '<'); } $preTag .= $postTag; return $preTag; } // CLEAN - WORD FILTER function cleanWords($text) { if ((strtolower(s('word_filter_enable')) == 'on') && (file_exists(s('word_filter_file')))) { $bad_words_from_what = preg_replace('/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/', '', file(s('word_filter_file'))); $bad_words_from_what = preg_replace('/^(.*)$/', '/\\1/i', $bad_words_from_what); $bad_words_to_what = s('word_filter_change'); $text = preg_replace($bad_words_from_what, $bad_words_to_what, $text); return $text; } else { return $text; } } // CHECK IF UNIQUE function check_if_unique($what, $text, $not_id = 'x', $subcat) { $text = clean($text); switch ($what) { case 'article_seftitle': $sql = _PRE.'articles'.' WHERE seftitle = "'.$text.(!empty($not_id) ? '" AND category = '.$not_id : '"'); break; case 'article_title': $sql = _PRE.'articles'.' WHERE title = "'.$text.(!empty($not_id) ? '" AND category = '.$not_id : '"'); break; case 'subcat_seftitle': $sql = _PRE.'categories'.' WHERE seftitle = "'.$text.'" AND subcat = '.$subcat; break; case 'subcat_name': $sql = _PRE.'categories'.' WHERE name = "'.$text.'" AND subcat = '.$subcat; break; case 'cat_seftitle_edit': $sql = _PRE.'categories'.' WHERE seftitle = "'.$text.'" AND id != '.$not_id; break; case 'cat_name_edit': $sql = _PRE.'categories'.' WHERE name = "'.$text.'" AND id != '.$not_id; break; case 'subcat_seftitle_edit': $sql = _PRE.'categories'.' WHERE seftitle = "'.$text.'" AND subcat = '.$subcat.' AND id != '.$not_id; break; case 'subcat_name_edit': $sql = _PRE.'categories'.' WHERE name = "'.$text.'" AND subcat = '.$subcat.' AND id != '.$not_id; break; case 'group_seftitle': $sql = _PRE.'extras'.' WHERE seftitle = "'.$text.(!empty($not_id) ? '" AND id != '.$not_id : '"'); break; case 'group_name': $sql = _PRE.'extras'.' WHERE name = "'.$text.(!empty($not_id) ? '" AND id != '.$not_id : '"'); break; } $rows = mysql_num_rows(mysql_query('SELECT id FROM '.$sql)); if ($rows == 0) { return false; } else { return true; } } // ARTICLES - FUTURE POSTING function update_articles() { $last_date = s('last_date'); $updatetime = !empty($last_date) ? strtotime($last_date) : time(); $dif_time = time() - $updatetime; if ($dif_time > 1200 || empty($last_date)) { mysql_query('UPDATE '._PRE.'articles'.' SET published=1 WHERE published=2 AND date <= NOW()'); mysql_query('UPDATE '._PRE.'settings'.' SET value=NOW() WHERE name=\'last_date\''); } } ?>