poniższy kod skopiuj do notatnika i zapisz jako functions.inc
<?PHP
// bad practice, i know
if ($HTTP_SESSION_VARS) {extract($HTTP_SESSION_VARS, EXTR_SKIP);}
if ($_SESSION) {extract($_SESSION, EXTR_SKIP);}
if ($HTTP_COOKIE_VARS) {extract($HTTP_COOKIE_VARS, EXTR_SKIP);}
if ($_COOKIE) {extract($_COOKIE, EXTR_SKIP);}
if ($HTTP_POST_VARS) {extract($HTTP_POST_VARS, EXTR_SKIP);}
if ($_POST) {extract($_POST, EXTR_SKIP);}
if ($HTTP_GET_VARS) {extract($HTTP_GET_VARS, EXTR_SKIP);}
if ($_GET) {extract($_GET, EXTR_SKIP);}
if ($HTTP_ENV_VARS) {extract($HTTP_ENV_VARS, EXTR_SKIP);}
if ($_ENV) {extract($_ENV, EXTR_SKIP);}
//----------------------------------
// Sanitize Variables
//----------------------------------
if( isset($template) and $template != "" and !eregi("^[_a-zA-Z0-9-]{1,}$", $template)){ die("invalid template characters"); }
if( isset($archive) and $archive != "" and !eregi("^[_a-zA-Z0-9-]{1,}$", $archive)){ die("invalid archive characters"); }
if($PHP_SELF == ""){ $PHP_SELF = $HTTP_SERVER_VARS["PHP_SELF"]; }
$phpversion = @phpversion();
$a7f89abdcf9324b3 = "";
$comm_start_from = htmlspecialchars($comm_start_from);
$start_from = htmlspecialchars($start_from);
$archive = htmlspecialchars($archive);
$subaction = htmlspecialchars($subaction);
$id = htmlspecialchars($id);
$ucat = htmlspecialchars($ucat);
if(is_array($category)){ foreach($category as $ckey=>$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 .= " "; $output .= " "; } else{ $output .= " "; } }else{ $output .= “"; } if($i%$break_location == 0 and $break_location) { $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 name=(.*?)](.*?)[/quote]’”, “’[quote](.*?)[/quote]’”, ); $replace = array( " \1”, “\1”, “\1”, "\1”, “\2”, "> quote (\1):