1 頁 (共 1 頁)

[問題]Last visit 1.2.8和升到phpbb 2.0.20有衝到

發表於 : 2006-04-14 21:36
stric
問題外掛:Last visit 1.2.8
網站位置:http://www.shucian.com
狀況描述:
我在升級2.0.19 到 phpbb 2.0.20時
遇到一個問題
就是Last visit 1.2.8有改到search.php的一段

代碼: 選擇全部

#
#-----[ OPEN ]------------------------------------------------
#
search.php

#
#-----[ FIND ]------------------------------------------------
#
		$sql = "SELECT session_id 
			FROM " . SESSIONS_TABLE;

#
#-----[ REPLACE WITH ]----------------------------------------
#

// Start replacement - Last visit MOD
	$expiry_time = $current_time - $board_config['session_length'];
		$sql = "SELECT session_id
			FROM " . SESSIONS_TABLE ." WHERE session_time>$expiry_time";
// Start replacement - Last visit MOD
因此我search.php現在是

代碼: 選擇全部

		//
		// Finish building query (for all combinations)
		// and run it ...
		//
// Start replacement - Last visit MOD
	$expiry_time = $current_time - $board_config['session_length'];
		$sql = "SELECT session_id
			FROM " . SESSIONS_TABLE ." WHERE session_time>$expiry_time";
// Start replacement - Last visit MOD
		if ( $result = $db->sql_query($sql) )
		{
			$delete_search_ids = array();
			while( $row = $db->sql_fetchrow($result) )
			{
				$delete_search_ids[] = "'" . $row['session_id'] . "'";
			}

			if ( count($delete_search_ids) )
			{
				$sql = "DELETE FROM " . SEARCH_TABLE . " 
					WHERE session_id NOT IN (" . implode(", ", $delete_search_ids) . ")";
				if ( !$result = $db->sql_query($sql) )
				{
					message_die(GENERAL_ERROR, 'Could not delete old search id sessions', '', __LINE__, __FILE__, $sql);
				}
			}
		}
但是升級到phpbb 2.0.20時
遇到

代碼: 選擇全部

#
#-----[ FIND ]------------------------------------------------
#
        // Finish building query (for all combinations)
        // and run it ...
        //
        $sql = "SELECT session_id 
            FROM " . SESSIONS_TABLE;
        if ( $result = $db->sql_query($sql) )
        {
            $delete_search_ids = array();
            while( $row = $db->sql_fetchrow($result) )
            {
                $delete_search_ids[] = "'" . $row['session_id'] . "'";
            }

            if ( count($delete_search_ids) )
            {
                $sql = "DELETE FROM " . SEARCH_TABLE . " 
                    WHERE session_id NOT IN (" . implode(", ", $delete_search_ids) . ")";
                if ( !$result = $db->sql_query($sql) )
                {
                    message_die(GENERAL_ERROR, 'Could not delete old search id sessions', '', __LINE__, __FILE__, $sql);
                }
            }
#
#-----[ REPLACE WITH ]----------------------------------------
#
// Delete old data from the search result table
        //
        $sql = 'DELETE FROM ' . SEARCH_TABLE . '
            WHERE search_time < ' . ($current_time - (int) $board_config['session_length']);
        if ( !$result = $db->sql_query($sql) )
        {
            message_die(GENERAL_ERROR, 'Could not delete old search id sessions', '', __LINE__, __FILE__, $sql);
請問那這樣的話 我要怎麼做修改呢
現在就卡在這邊不知道怎麼改
請各位高手教教我
謝謝

發表於 : 2006-04-19 18:01
澀男人
您可參考: http://www.phpbb.com/phpBB/viewtopic.php?t=380742

打開search.php
尋找以下這一段:

代碼: 選擇全部

      // 
      // Finish building query (for all combinations) 
      // and run it ... 
      // 
// Start replacement - Last visit MOD 
   $expiry_time = $current_time - $board_config['session_length']; 
      $sql = "SELECT session_id 
         FROM " . SESSIONS_TABLE ." WHERE session_time>$expiry_time"; 
// Start replacement - Last visit MOD 
      if ( $result = $db->sql_query($sql) ) 
      { 
         $delete_search_ids = array(); 
         while( $row = $db->sql_fetchrow($result) ) 
         { 
            $delete_search_ids[] = "'" . $row['session_id'] . "'"; 
         } 

         if ( count($delete_search_ids) ) 
         { 
            $sql = "DELETE FROM " . SEARCH_TABLE . " 
               WHERE session_id NOT IN (" . implode(", ", $delete_search_ids) . ")"; 
            if ( !$result = $db->sql_query($sql) ) 
            { 
               message_die(GENERAL_ERROR, 'Could not delete old search id sessions', '', __LINE__, __FILE__, $sql); 
            } 
         } 
用以下這一段取代之:

代碼: 選擇全部

      // Delete old data from the search result table 
      // 

// Start replacement - Last visit MOD 
       $expiry_time = $current_time - $board_config['session_length']; 
      $sql = "SELECT session_id 
         FROM " . SESSIONS_TABLE ." WHERE session_time>$expiry_time"; 
// Start replacement - Last visit MOD 

      $sql = 'DELETE FROM ' . SEARCH_TABLE . ' 
         WHERE search_time < ' . ($current_time - (int) $board_config['session_length']); 
      if ( !$result = $db->sql_query($sql) ) 
      { 
         message_die(GENERAL_ERROR, 'Could not delete old search id sessions', '', __LINE__, __FILE__, $sql);

發表於 : 2006-04-24 12:06
心靈捕手
我個人以為:
若是使用 phpbb 2.0.20 安裝 Last Visit 的話,
則是可以省略 search.php 的修改.

也就是說
如果您在 phpbb 2.0.19 之前, 已經有安裝 Last Visit 的話,
則再升級 phpbb 2.0.20 時, 關於 search.php 的修改如下:
#
#-----[ FIND ]-----
#

代碼: 選擇全部

      // Finish building query (for all combinations) 
      // and run it ... 
      // 
// Start replacement - Last visit MOD 
   $expiry_time = $current_time - $board_config['session_length']; 
      $sql = "SELECT session_id 
         FROM " . SESSIONS_TABLE ." WHERE session_time>$expiry_time"; 
// Start replacement - Last visit MOD 
      if ( $result = $db->sql_query($sql) ) 
      { 
         $delete_search_ids = array(); 
         while( $row = $db->sql_fetchrow($result) ) 
         { 
            $delete_search_ids[] = "'" . $row['session_id'] . "'"; 
         } 

         if ( count($delete_search_ids) ) 
         { 
            $sql = "DELETE FROM " . SEARCH_TABLE . " 
               WHERE session_id NOT IN (" . implode(", ", $delete_search_ids) . ")"; 
            if ( !$result = $db->sql_query($sql) ) 
            { 
               message_die(GENERAL_ERROR, 'Could not delete old search id sessions', '', __LINE__, __FILE__, $sql); 
            } 
         } 
#
#-----[ REPLACE WITH ]-----
#

代碼: 選擇全部

      // Delete old data from the search result table 
      // 

      $sql = 'DELETE FROM ' . SEARCH_TABLE . ' 
         WHERE search_time < ' . ($current_time - (int) $board_config['session_length']); 
      if ( !$result = $db->sql_query($sql) ) 
      { 
         message_die(GENERAL_ERROR, 'Could not delete old search id sessions', '', __LINE__, __FILE__, $sql); 
ps.
如果能夠由原作者來解答, 應該是最恰當;
不過, 最近 Niels 的網站恐怕遭遇了一些問題,
所以得再稍候一陣子.
http://mods.db9.dk/index.php