[外掛]有裝 Birthday 1.5.6 MOD 的論壇加速修改

MODs Released by Other phpbb Sites
非官方認證通過之 MOD ,或許有安全性之疑慮,所有問題由原發表者回覆!

版主: 版主管理群

主題已鎖定
flower
星球公民
星球公民
文章: 272
註冊時間: 2004-08-31 21:03
來自: 火星
聯繫:

[外掛]有裝 Birthday 1.5.6 MOD 的論壇加速修改

文章 flower »

利用產生 cache file 避免使用者每次瀏覽 index.php 時判斷生日\r
讓瀏覽 index.php 的速度加快

作者: Niels
來源: http://mods.db9.dk/viewtopic.php?t=5306


此修改只適合已經有裝 Birthday MOD 的使用者

修改前請先備份所有檔案


步驟如下:
1. 建立 /cache/index 目錄 (相對於 phpbb 的根目錄)
2. 如果非 Windows 使用者 必須自行開放 index 目錄寫入的權利 (chmod 777 index)
如果是使用免費/付費空間的使用者 必需確定該系統有開放 index 目錄寫入的權利\r
3. 依照以下方法修改\r

代碼: 選擇全部

#
#-----[ OPEN]------------------------------------------------
#
index.php

#
#-----[ 尋找 ]-----------------------------------------------
#
// Birthday Mod, Show users with birthday 
$sql = ($board_config['birthday_check_day']) ? "SELECT user_id, username, user_birthday,user_level FROM " . USERS_TABLE. " WHERE user_birthday!=999999 ORDER BY username" :"";
if($result = $db->sql_query($sql)) 
{ 
	if (!empty($result)) 
	{ 
		$time_now = time();
		$this_year = create_date('Y', $time_now, $board_config['board_timezone']);
		$date_today = create_date('Ymd', $time_now, $board_config['board_timezone']);
		$date_forward = create_date('Ymd', $time_now+($board_config['birthday_check_day']*86400), $board_config['board_timezone']);
	      while ($birthdayrow = $db->sql_fetchrow($result))
		{ 
		      $user_birthday2 = $this_year.($user_birthday = realdate("md",$birthdayrow['user_birthday'] )); 
      		if ( $user_birthday2 < $date_today ) $user_birthday2 += 10000;
			if ( $user_birthday2 > $date_today  && $user_birthday2 <= $date_forward ) 
			{ 
				// user are having birthday within the next days
				$user_age = ( $this_year.$user_birthday < $date_today ) ? $this_year - realdate ('Y',$birthdayrow['user_birthday'])+1 : $this_year- realdate ('Y',$birthdayrow['user_birthday']); 
				switch ($birthdayrow['user_level'])
				{
					case ADMIN :
		      			$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>'; 
      					$style_color = 'style="color:#' . $theme['fontcolor3'] . '"';
						break;
					case MOD :
		      			$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>'; 
      					$style_color = 'style="color:#' . $theme['fontcolor2'] . '"';
						break;
					default: $style_color = '';
				}
				$birthday_week_list .= ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $birthdayrow['user_id']) . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,'; 
			} else if ( $user_birthday2 == $date_today ) 
      		{ 
				//user have birthday today 
				$user_age = $this_year - realdate ( 'Y',$birthdayrow['user_birthday'] ); 
				switch ($birthdayrow['user_level'])
				{
					case ADMIN :
		      			$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>'; 
      					$style_color = 'style="color:#' . $theme['fontcolor3'] . '"';
						break;
					case MOD :
			      		$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>'; 
      					$style_color = 'style="color:#' . $theme['fontcolor2'] . '"';
						break;
					default: $style_color = '';
				}

				$birthday_today_list .= ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $birthdayrow['user_id']) . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,'; 
		      }
			 
		}
		if ($birthday_today_list) $birthday_today_list[ strlen( $birthday_today_list)-1] = ' ';
		if ($birthday_week_list) $birthday_week_list[ strlen( $birthday_week_list)-1] = ' ';
	} 
	$db->sql_freeresult($result);
}

#
#-----[ 用以下部份取代 ]--------------------------------
#
// Birthday Mod, Show users with birthday 
$cache_data_file = $phpbb_root_path."cache/index/birthday_". $board_config['board_timezone'] . ".dat"; 
if (@is_file($cache_data_file)  && empty($SID)) 
{ 
    $valid = (date('YzH',time()) - date('YzH',@filemtime($cache_data_file))<1) ? true : false; 
} else 
{ 
   $valid = false; 
} 

if ($valid ) 
{ 
   include ($cache_data_file); 
   $birthday_today_list = stripslashes($birthday_today_list); 
   $birthday_week_list = stripslashes($birthday_week_list); 
} else 
{ 
   $sql = ($board_config['birthday_check_day']) ? "SELECT user_id, username, user_birthday,user_level FROM " . USERS_TABLE. " WHERE user_birthday!=999999 ORDER BY username" :""; 
   if($result = $db->sql_query($sql)) 
   { 
      if (!empty($result)) 
      { 
         $time_now = time(); 
         $this_year = create_date('Y', $time_now, $board_config['board_timezone']); 
         $date_today = create_date('Ymd', $time_now, $board_config['board_timezone']); 
         $date_forward = create_date('Ymd', $time_now+($board_config['birthday_check_day']*86400), $board_config['board_timezone']); 
            while ($birthdayrow = $db->sql_fetchrow($result)) 
         { 
               $user_birthday2 = $this_year.($user_birthday = realdate("md",$birthdayrow['user_birthday'] )); 
               if ( $user_birthday2 < $date_today ) $user_birthday2 += 10000; 
            if ( $user_birthday2 > $date_today  && $user_birthday2 <= $date_forward ) 
            { 
               // user are having birthday within the next days 
               $user_age = ( $this_year.$user_birthday < $date_today ) ? $this_year - realdate ('Y',$birthdayrow['user_birthday'])+1 : $this_year- realdate ('Y',$birthdayrow['user_birthday']); 
               switch ($birthdayrow['user_level']) 
               { 
                  case ADMIN : 
                        $birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>'; 
                        $style_color = 'style="color:#' . $theme['fontcolor3'] . '"';break; 
                  case MOD : 
                        $birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>'; 
                        $style_color = 'style="color:#' . $theme['fontcolor2'] . '"';break; 
                  default: $style_color = ''; 
               } 
               $birthday_week_list .= ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $birthdayrow['user_id']) . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,'; 
            } else if ( $user_birthday2 == $date_today ) 
               { 
               //user have birthday today 
               $user_age = $this_year - realdate ( 'Y',$birthdayrow['user_birthday'] ); 
               switch ($birthdayrow['user_level']) 
               { 
                  case ADMIN : 
                        $birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>'; 
                        $style_color = 'style="color:#' . $theme['fontcolor3'] . '"';break; 
                  case MOD : 
                        $birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>'; 
                        $style_color = 'style="color:#' . $theme['fontcolor2'] . '"';break; 
                  default: $style_color = ''; 
               } 
               $birthday_today_list .= ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $birthdayrow['user_id']) . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,'; 
               } 
         } 
         if ($birthday_today_list) $birthday_today_list[ strlen( $birthday_today_list)-1] = ' '; 
         if ($birthday_week_list) $birthday_week_list[ strlen( $birthday_week_list)-1] = ' '; 
      } 
      $db->sql_freeresult($result); 
      if (empty($SID)) 
      { 
         // stores the data set in a cache file 
         $data = "<?php
"; 
         $data .='$birthday_today_list = \'' . addslashes($birthday_today_list) . ".';
"; 
         $data .='$birthday_week_list = \''.addslashes($birthday_week_list) . ".';
?>"; 
         $fp = fopen( $cache_data_file, "w" ); 
         fwrite($fp, $data); 
         fclose($fp); 
      } 
   } 
} 

#
#-----[ SAVE/CLOSE FILE ]--------------------------------
#
# EoM



附註:
Birthday MOD 1.5.7 版 按此下載
Birthday MOD 1.5.6 版升級至 1.5.7 版修改\r
來源: http://mods.db9.dk/viewtopic.php?t=6&po ... c&start=56

代碼: 選擇全部

#
#-----[ OPEN ]------------------------------------------------
#
includes/page_header.php

#
#-----[ 尋找 ]-----------------------------------------------
#
// see if user has or have had birthday, also see if greeting are enabled
   if ( $userdata['user_birthday']!=999999 && $board_config['birthday_greeting'] && create_date('Ymd', time(), $board_config['default_timezone'])  >= $userdata['user_next_birthday_greeting'].realdate ('md',$userdata['user_birthday'] ) )

#
#-----[ 用以下部份取代 ]-----------------------------------------------
#
// see if user has or have had birthday, also see if greeting are enabled 
   if ( $userdata['user_birthday']!=999999 && $board_config['birthday_greeting'] && create_date('Ymd', time(), $board_config['board_timezone'])  >= $userdata['user_next_birthday_greeting'].realdate ('md',$userdata['user_birthday'] ) )

#
#-----[ SAVE/CLOSE FILE ]--------------------------------
#
# EoM
主題已鎖定

回到「非官方認證外掛」