$cvalue){ $category[$ckey] = htmlspecialchars($category[$ckey]);} } else{ $category = htmlspecialchars($category); } $number = htmlspecialchars($number); $template = htmlspecialchars($template); $show = htmlspecialchars($show); $config_version_name = "CuteNews v1.4.5"; $config_version_id = 180; //---------------------------------- // Some Special Chars //---------------------------------- $HTML_SPECIAL_CHARS = Array ( // Master array replaced ALWAYS !!! '”' => '”', '“' => '“', 'œ' => 'œ', '™' => '™', '’' => '’', '‘' => '‘', '‰' => '‰', '…' => '…', '€' => '€', '¡' => '¡', '¢' => '¢', '£' => '£', '¤' => '¤', '¥' => '¥', '¦' => '¦', '§' => '§', '¨' => '¨', '©' => '©', 'ª' => 'ª', '«' => '«', '¬' => '¬', '­' => '­', '®' => '®', '¯' => '¯', '°' => '°', '±' => '±', '²' => '²', '³' => '³', '´' => '´', '·' => '·', '¸' => '¸', '¹' => '¹', 'º' => 'º', '»' => '»', '¼' => '¼', '½' => '½', '¾' => '¾', '¿' => '¿', ); /////////////////////////////////////////////////////// // Function: ResynchronizeAutoArchive // Description: Auto-Archives News function ResynchronizeAutoArchive(){ global $cutepath, $config_auto_archive, $config_notify_email,$config_notify_archive,$config_notify_status; $count_news = count(file("$cutepath/data/news.txt")); if($count_news > 1){ if($config_auto_archive == "yes"){ $now[year] = date("Y"); $now[month] = date("n"); $db_content = file("$cutepath/data/auto_archive.db.php"); list($last_archived[year], $last_archived[month]) = split("\|", $db_content[0] ); $tmp_now_sum = $now[year] . sprintf("%02d", $now[month]) ; $tmp_last_sum = (int)$last_archived[year] . sprintf("%02d", (int)$last_archived[month]) ; if($tmp_now_sum > $tmp_last_sum){ $error = FALSE; $arch_name = time(); if(!@copy("$cutepath/data/news.txt","$cutepath/data/archives/$arch_name.news.arch")) { $error = "Can not copy news.txt from data/ to data/archives"; } if(!@copy("$cutepath/data/comments.txt","$cutepath/data/archives/$arch_name.comments.arch")) { $error = "Can not copy comments.txt from data/ to data/archives"; } $handle = fopen("$cutepath/data/news.txt","w") or $error = "Can not open news.txt"; fclose($handle); $handle = fopen("$cutepath/data/comments.txt","w") or $error = "Can not open comments.txt"; fclose($handle); $fp = @fopen("$cutepath/data/auto_archive.db.php", "w"); @flock ($fp,2); if(!$errors){ fwrite($fp, $now[year]."|".$now[month]."\n"); } else{ fwrite($fp, "0|0|$error\n"); } foreach($db_content as $line){ @fwrite($fp, $line); } @flock ($fp,3); @fclose($fp); if($config_notify_archive == "yes" and $config_notify_status == "active"){ send_mail("$config_notify_email", "CuteNews - AutoArchive was Performed", "CuteNews has performed the AutoArchive function.\n$count_news News Articles were archived.\n$error"); } } } } } /////////////////////////////////////////////////////// // Function: ResynchronizePostponed // Description: Refreshes the Postponed News file. function ResynchronizePostponed(){ global $cutepath,$config_notify_postponed,$config_notify_status,$config_notify_email; $all_postponed_db = file("$cutepath/data/postponed_news.txt"); if(!empty($all_postponed_db)){ $new_postponed_db = fopen("$cutepath/data/postponed_news.txt", w); @flock ($new_postponed_db,2); $now_date = time(); foreach ($all_postponed_db as $p_line){ $p_item_db = explode("|",$p_line); if($p_item_db[0] <= $now_date){ // Item is old and must be Activated, add it to news.txt $all_active_db = file("$cutepath/data/news.txt"); $active_news_file = fopen("$cutepath/data/news.txt", "w"); @flock ($active_news_file,2); fwrite($active_news_file,"$p_line"); foreach ($all_active_db as $active_line){ fwrite($active_news_file, "$active_line");} @flock ($active_news_file,3); fclose($active_news_file); if($config_notify_postponed == "yes" and $config_notify_status == "active"){ send_mail("$config_notify_email", "CuteNews - Postponed article was Activated", "CuteNews has activated the article '$p_item_db[2]'"); } }else{ // Item is still postponed fwrite($new_postponed_db,"$p_line"); } } @flock ($new_postponed_db,3); fclose($new_postponed_db); } } /////////////////////////////////////////////////////// // Function: send_mail // Description: sends mail ... huh :) function send_mail($to, $subject, $message){ if(!isset($to) or !$to or $to == ''){ }else{ $tos = FALSE; $to = str_replace(' ', '', $to); if(eregi(',', '')){ $tos = explode(',', $to); } $from = 'CuteNews@' . $_SERVER['SERVER_NAME']; $headers = ''; $headers .= "From: $from\n"; $headers .= "Reply-to: $from\n"; $headers .= "Return-Path: $from\n"; $headers .= "Message-ID: <" . md5(uniqid(time())) . "@" . $_SERVER['SERVER_NAME'] . ">\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-type: text/plain;\n"; $headers .= "Date: " . date('r', time()) . "\n"; if($tos){ foreach($tos as $my_to){ @mail($my_to,$subject,$message,$headers); } }else{ @mail($to,$subject,$message,$headers); } } } /////////////////////////////////////////////////////// // Function: formatsize // Description: Format the size of given file function formatsize($file_size){ if($file_size >= 1073741824) {$file_size = round($file_size / 1073741824 * 100) / 100 . "Gb";} elseif($file_size >= 1048576) {$file_size = round($file_size / 1048576 * 100) / 100 . "Mb";} elseif($file_size >= 1024) {$file_size = round($file_size / 1024 * 100) / 100 . "Kb";} else{$file_size = $file_size . "b";} return $file_size; } /////////////////////////////////////////////////////// // Class: microTimer // Description: calculates the micro time class microTimer { function start() { global $starttime; $mtime = microtime (); $mtime = explode (' ', $mtime); $mtime = $mtime[1] + $mtime[0]; $starttime = $mtime; } function stop() { global $starttime; $mtime = microtime (); $mtime = explode (' ', $mtime); $mtime = $mtime[1] + $mtime[0]; $endtime = $mtime; $totaltime = round (($endtime - $starttime), 5); return $totaltime; } } /////////////////////////////////////////////////////// // Function: check_login // Description: Check login information function check_login($username, $md5_password){ $result = FALSE; $full_member_db = file("./data/users.db.php"); global $member_db; foreach($full_member_db as $member_db_line) { if(!eregi("<\?",$member_db_line)){ $member_db = explode("|",$member_db_line); if(strtolower($member_db[2]) == strtolower($username) && $member_db[3] == $md5_password) { $result = TRUE; break; } } } return $result; } /////////////////////////////////////////////////////// // Function: cute_query_string // Description: Format the Query_String for CuteNews purpuses index.php? function cute_query_string($q_string, $strips, $type="get"){ foreach($strips as $key){ $strips[$key] = TRUE; } $var_value = explode("&", $q_string); foreach($var_value as $var_peace){ $parts = explode("=", $var_peace); if($strips[$parts[0]] != TRUE and $parts[0] != ""){ if($type == "post"){ $my_q .= "\n"; }else{ $my_q .= "$var_peace&"; } } } if( substr($my_q, -5) == "&" ){ $my_q = substr($my_q, 0, -5); } return $my_q; } /////////////////////////////////////////////////////// // Function: Flooder // Description: Flood Protection Function function flooder($ip, $comid){ global $cutepath, $config_flood_time; $old_db = file("$cutepath/data/flood.db.php"); $new_db = fopen("$cutepath/data/flood.db.php", w); $result = FALSE; foreach($old_db as $old_db_line){ $old_db_arr = explode("|", $old_db_line); if(($old_db_arr[0] + $config_flood_time) > time() ){ fwrite($new_db, $old_db_line); if($old_db_arr[1] == $ip and $old_db_arr[2] == $comid) { $result = TRUE; } } } fclose($new_db); return $result; } //////////////////////////////////////////////////////// // Function: msg // Description: Displays message to user function msg($type, $title, $text, $back=FALSE){ echoheader($type, $title); global $lang; echo"
$text"; if($back){ echo"

go back"; } echo"
"; echofooter(); exit(); } //////////////////////////////////////////////////////// // Function: echoheader // Description: Displays header skin function echoheader($image, $header_text){ global $PHP_SELF, $is_loged_in, $config_skin, $skin_header, $lang_content_type, $skin_menu, $skin_prefix, $config_version_name; if($is_loged_in == TRUE){ $skin_header = preg_replace("/{menu}/", "$skin_menu", "$skin_header"); } else { $skin_header = preg_replace("/{menu}/", "   $config_version_name", "$skin_header"); } $skin_header = get_skin($skin_header); $skin_header = preg_replace("/{image-name}/", "${skin_prefix}${image}", $skin_header); $skin_header = preg_replace("/{header-text}/", $header_text, $skin_header); $skin_header = preg_replace("/{content-type}/", $lang_content_type, $skin_header); echo $skin_header; } //////////////////////////////////////////////////////// // Function: echofooter // Description: Displays footer skin function echofooter(){ global $PHP_SELF, $is_loged_in, $config_skin, $skin_footer, $lang_content_type, $skin_menu, $skin_prefix, $config_version_name; if($is_loged_in == TRUE){ $skin_footer = preg_replace("/{menu}/", "$skin_menu", "$skin_footer"); } else { $skin_footer = preg_replace("/{menu}/", "   $config_version_name", "$skin_footer"); } $skin_footer = get_skin($skin_footer); $skin_footer = preg_replace("/{image-name}/", "${skin_prefix}${image}", $skin_footer); $skin_footer = preg_replace("/{header-text}/", $header_text, $skin_footer); $skin_footer = preg_replace("/{content-type}/", $lang_content_type, $skin_footer); // Do not remove the Copyrights! $skin_footer = preg_replace("/{copyrights}/", "
Powered by $config_version_name © 2005 CutePHP.
", $skin_footer); echo $skin_footer; } //////////////////////////////////////////////////////// // Function: b64dck // Description: And the duck fly away. function b64dck(){ $cr = bd_config('e2NvcHlyaWdodHN9');$shder = bd_config('c2tpbl9oZWFkZXI=');$sfter = bd_config('c2tpbl9mb290ZXI='); global $$shder,$$sfter; $HDpnlty = bd_config('PGNlbnRlcj48aDE+Q3V0ZU5ld3M8L2gxPjxhIGhyZWY9Imh0dHA6Ly9jdXRlcGhwLmNvbSI+Q3V0ZVBIUC5jb208L2E+PC9jZW50ZXI+PGJyPg=='); $FTpnlty = bd_config('PGNlbnRlcj48ZGl2IGRpc3BsYXk9aW5saW5lIHN0eWxlPVwnZm9udC1zaXplOiAxMXB4XCc+UG93ZXJlZCBieSA8YSBzdHlsZT1cJ2ZvbnQtc2l6ZTogMTFweFwnIGhyZWY9XCJodHRwOi8vY3V0ZXBocC5jb20vY3V0ZW5ld3MvXCIgdGFyZ2V0PV9ibGFuaz5DdXRlTmV3czwvYT4gqSAyMDA1ICA8YSBzdHlsZT1cJ2ZvbnQtc2l6ZTogMTFweFwnIGhyZWY9XCJodHRwOi8vY3V0ZXBocC5jb20vXCIgdGFyZ2V0PV9ibGFuaz5DdXRlUEhQPC9hPi48L2Rpdj48L2NlbnRlcj4='); if(!stristr($$shder,$cr) and !stristr($$sfter,$cr)){ $$shder = $HDpnlty.$$shder; $$sfter = $$sfter.$FTpnlty; } } //////////////////////////////////////////////////////// // Function: CountComments // Description: Count How Many Comments Have a Specific Article function CountComments($id, $archive = FALSE){ global $cutepath; if($cutepath == ""){ $cutepath = "."; } $result = "0"; if($archive and ($archive != "postponed" and $archive != "unapproved")){ $all_comments = file("$cutepath/data/archives/${archive}.comments.arch"); } else{ $all_comments = file("$cutepath/data/comments.txt"); } foreach($all_comments as $comment_line) { $comment_arr_1 = explode("|>|", $comment_line); if($comment_arr_1[0] == $id) { $comment_arr_2 = explode("||", $comment_arr_1[1]); $result = count($comment_arr_2)-1; } } return $result; } //////////////////////////////////////////////////////// // Function: insertSmilies // Description: insert smilies for adding into news/comments function insertSmilies($insert_location, $break_location = FALSE, $admincp = FALSE, $wysiwyg = FALSE) { global $config_http_script_dir, $config_smilies; $smilies = explode(",", $config_smilies); foreach($smilies as $smile) { $i++; $smile = trim($smile); if($admincp){ if($wysiwyg){ // $advanced_smile = "<img alt=\':$smile:\' src=\'data/emoticons/$smile.gif\' />"; // $output .= "\"$smile\""; $output .= "\"$smile\""; } else{ $output .= "\"$smile\""; } }else{ $output .= "\"$smile\""; } if( isset($break_location) && $i%$break_location == 0 ) { $output .= "
"; }else{ $output .= " "; } } return $output; } //////////////////////////////////////////////////////// // Function: replace_comments // Description: Replaces comments charactars function replace_comment($way, $sourse){ global $HTML_SPECIAL_CHARS, $config_allow_html_in_news, $config_allow_html_in_comments, $config_http_script_dir, $config_smilies; $sourse = stripslashes(trim($sourse)); if($way == "add"){ $find = array( "'\"'", "'\''", "'<'", "'>'", "'\|'", "'\n'", "'\r'", ); $replace = array( """, "'", "<", ">", "|", "
", "", ); } elseif($way == "show"){ $find = array( "'\[b\](.*?)\[/b\]'i", "'\[i\](.*?)\[/i\]'i", "'\[u\](.*?)\[/u\]'i", "'\[link\](.*?)\[/link\]'i", "'\[link=(.*?)\](.*?)\[/link\]'i", "'\[quote=(.*?)\](.*?)\[/quote\]'", "'\[quote\](.*?)\[/quote\]'", ); $replace = array( "\\1", "\\1", "\\1", "\\1", "\\2", "
quote (\\1):

\\2

", "
quote:

\\1

", ); $smilies_arr = explode(",", $config_smilies); foreach($smilies_arr as $smile){ $smile = trim($smile); $find[] = "':$smile:'"; $replace[] = "\"$smile\""; } } $sourse = preg_replace($find,$replace,$sourse); foreach ( $HTML_SPECIAL_CHARS as $key=>$value ){ $sourse = str_replace($key,$value,$sourse); } return $sourse; } //////////////////////////////////////////////////////// // Function: rteSafe // Description: safe data for the RTE function rteSafe($strText) { //returns safe code for preloading in the RTE $tmpString = $strText; //convert all types of single quotes $tmpString = str_replace(chr(145), chr(39), $tmpString); $tmpString = str_replace(chr(146), chr(39), $tmpString); $tmpString = str_replace("'", "'", $tmpString); //convert all types of double quotes $tmpString = str_replace(chr(147), chr(34), $tmpString); $tmpString = str_replace(chr(148), chr(34), $tmpString); // $tmpString = str_replace("\"", """, $tmpString); // we are pasting the content within '' quotes so " are valid //replace carriage returns & line feeds $tmpString = str_replace(chr(10), " ", $tmpString); $tmpString = str_replace(chr(13), " ", $tmpString); return $tmpString; } //////////////////////////////////////////////////////// // Function: get_skin // Description: Hello skin! function get_skin($skin){ if(!file_exists('./data/reg.php')){ $stts = base64_decode('KHVucmVnaXN0ZXJlZCk='); } else{ include('./data/reg.php'); if(preg_match('/\\A(\\w{6})-\\w{6}-\\w{6}\\z/', $reg_site_key, $mmbrid)){ if(!isset($reg_display_name) or !$reg_display_name or $reg_display_name == ''){ $stts = ""; }else{ $stts = "'; } } else{ $stts = '!'.base64_decode('KHVucmVnaXN0ZXJlZCk=').'!'; } } $msn = bd_config('c2tpbg=='); $cr = bd_config('e2NvcHlyaWdodHN9'); $lct = bd_config('PGRpdiBzdHlsZT0nZm9udC1zaXplOiA5cHgnPlBvd2VyZWQgYnkgPGEgc3R5bGU9J2ZvbnQtc2l6ZTogOXB4JyBocmVmPSJodHRwOi8vY3V0ZXBocC5jb20vY3V0ZW5ld3MvIiB0YXJnZXQ9Il9ibGFuayI+Q3V0ZU5ld3MgMS40LjU8L2E+ICCpIDIwMDYgIDxhIHN0eWxlPSdmb250LXNpemU6IDlweCcgaHJlZj0iaHR0cDovL2N1dGVwaHAuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPkN1dGVQSFA8L2E+Ljxicj57bC1zdGF0dXN9PC9kaXY+'); $lct = preg_replace("/{l-status}/", $stts, $lct); $$msn = preg_replace("/$cr/", $lct, $$msn); return $$msn; } //////////////////////////////////////////////////////// // Function: replace_news // Description: Replaces news charactars function replace_news($way, $sourse, $replce_n_to_br=TRUE, $use_html=TRUE){ global $HTML_SPECIAL_CHARS, $config_allow_html_in_news, $config_allow_html_in_comments, $config_http_script_dir, $config_smilies; $sourse = stripslashes($sourse); if($way == "show") { $find= array( /* 1 */ "'\[upimage=([^\]]*?) ([^\]]*?)\]'i", /* 2 */ "'\[upimage=(.*?)\]'i", /* 3 */ "'\[b\](.*?)\[/b\]'i", /* 4 */ "'\[i\](.*?)\[/i\]'i", /* 5 */ "'\[u\](.*?)\[/u\]'i", /* 6 */ "'\[link\](.*?)\[/link\]'i", /* 7 */ "'\[color=(.*?)\](.*?)\[/color\]'i", /* 8 */ "'\[size=(.*?)\](.*?)\[/size\]'i", /* 9 */ "'\[font=(.*?)\](.*?)\[/font\]'i", /* 10 */ "'\[align=(.*?)\](.*?)\[/align\]'i", /* 12 */ "'\[image=(.*?)\]'i", /* 13 */ "'\[link=(.*?)\](.*?)\[/link\]'i", /* 14 */ "'\[quote=(.*?)\](.*?)\[/quote\]'i", /* 15 */ "'\[quote\](.*?)\[/quote\]'i", /* 16 */ "'\[list\]'i", /* 17 */ "'\[/list\]'i", /* 18 */ "'\[\*\]'i", "'{nl}'", ); $replace=array( /* 1 */ "\"\"", /* 2 */ "\"\"", /* 3 */ "\\1", /* 4 */ "\\1", /* 5 */ "\\1", /* 6 */ "\\1", /* 7 */ "\\2", /* 8 */ "\\2", /* 9 */ "\\2", /* 10 */ "
\\2
", /* 12 */ "\"\"", /* 13 */ "\\2", /* 14 */ "
quote (\\1):

\\2

", /* 15 */ "
quote:

\\1

", /* 16 */ "", /* 18 */ "
  • ", "\n", ); $smilies_arr = explode(",", $config_smilies); foreach($smilies_arr as $smile){ $smile = trim($smile); $find[] = "':$smile:'"; $replace[] = "\"$smile\""; } } elseif($way == "add"){ $find = array( "'\|'", "'\r'", ); $replace = array( "|", "", ); if($use_html != TRUE){ $find[] = "'<'"; $find[] = "'>'"; $replace[] = "<"; $replace[] = ">"; } if($replce_n_to_br == TRUE){ $find[] = "'\n'"; $replace[] = "
    "; }else{ $find[] = "'\n'"; $replace[] = "{nl}"; } } elseif($way == "admin"){ $find = array( "''", "'{nl}'", ); $replace = array( "", "\n", ); //this is for 'edit news' section when we use WYSIWYG if(!$replce_n_to_br){$find[] = "'
    '"; } if(!$replce_n_to_br){$replace[] = "\n"; } } $sourse = preg_replace($find,$replace,$sourse); foreach ( $HTML_SPECIAL_CHARS as $key=>$value ){ $sourse = str_replace($key,$value,$sourse); } return $sourse; } function bd_config($str){ return base64_decode($str); } ?>