Relocated functions
This commit is contained in:
		
					parent
					
						
							
								4024d725db
							
						
					
				
			
			
				commit
				
					
						fab85255b6
					
				
			
		
					 5 changed files with 78 additions and 55 deletions
				
			
		|  | @ -783,7 +783,7 @@ class GContact | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if (!$force && !PortableContact::updateNeeded($gcontact['created'], $gcontact['updated'], $gcontact['last_failure'], $gcontact['last_contact'])) { | 		if (!$force && !GServer::updateNeeded($gcontact['created'], $gcontact['updated'], $gcontact['last_failure'], $gcontact['last_contact'])) { | ||||||
| 			Logger::info("Don't update profile", ['url' => $data['url'], 'updated' => $gcontact['updated']]); | 			Logger::info("Don't update profile", ['url' => $data['url'], 'updated' => $gcontact['updated']]); | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -49,6 +49,61 @@ class GServer | ||||||
| 		return self::check($server, $network, $force); | 		return self::check($server, $network, $force); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Decides if a server needs to be updated, based upon several date fields | ||||||
|  | 	 *  | ||||||
|  | 	 * @param date $created      Creation date of that server entry | ||||||
|  | 	 * @param date $updated      When had the server entry be updated | ||||||
|  | 	 * @param date $last_failure Last failure when contacting that server | ||||||
|  | 	 * @param date $last_contact Last time the server had been contacted | ||||||
|  | 	 *  | ||||||
|  | 	 * @return boolean Does the server record needs an update? | ||||||
|  | 	 */ | ||||||
|  | 	public static function updateNeeded($created, $updated, $last_failure, $last_contact) | ||||||
|  | 	{ | ||||||
|  | 		$now = strtotime(DateTimeFormat::utcNow()); | ||||||
|  | 
 | ||||||
|  | 		if ($updated > $last_contact) { | ||||||
|  | 			$contact_time = strtotime($updated); | ||||||
|  | 		} else { | ||||||
|  | 			$contact_time = strtotime($last_contact); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		$failure_time = strtotime($last_failure); | ||||||
|  | 		$created_time = strtotime($created); | ||||||
|  | 
 | ||||||
|  | 		// If there is no "created" time then use the current time
 | ||||||
|  | 		if ($created_time <= 0) { | ||||||
|  | 			$created_time = $now; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		// If the last contact was less than 24 hours then don't update
 | ||||||
|  | 		if (($now - $contact_time) < (60 * 60 * 24)) { | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		// If the last failure was less than 24 hours then don't update
 | ||||||
|  | 		if (($now - $failure_time) < (60 * 60 * 24)) { | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		// If the last contact was less than a week ago and the last failure is older than a week then don't update
 | ||||||
|  | 		//if ((($now - $contact_time) < (60 * 60 * 24 * 7)) && ($contact_time > $failure_time))
 | ||||||
|  | 		//	return false;
 | ||||||
|  | 
 | ||||||
|  | 		// If the last contact time was more than a week ago and the contact was created more than a week ago, then only try once a week
 | ||||||
|  | 		if ((($now - $contact_time) > (60 * 60 * 24 * 7)) && (($now - $created_time) > (60 * 60 * 24 * 7)) && (($now - $failure_time) < (60 * 60 * 24 * 7))) { | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		// If the last contact time was more than a month ago and the contact was created more than a month ago, then only try once a month
 | ||||||
|  | 		if ((($now - $contact_time) > (60 * 60 * 24 * 30)) && (($now - $created_time) > (60 * 60 * 24 * 30)) && (($now - $failure_time) < (60 * 60 * 24 * 30))) { | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		return true; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	/** | 	/** | ||||||
| 	 * Checks the state of the given server. | 	 * Checks the state of the given server. | ||||||
| 	 * | 	 * | ||||||
|  | @ -89,7 +144,7 @@ class GServer | ||||||
| 				$last_failure = DBA::NULL_DATETIME; | 				$last_failure = DBA::NULL_DATETIME; | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			if (!$force && !PortableContact::updateNeeded($gserver['created'], '', $last_failure, $last_contact)) { | 			if (!$force && !self::updateNeeded($gserver['created'], '', $last_failure, $last_contact)) { | ||||||
| 				Logger::info('No update needed', ['server' => $server_url]); | 				Logger::info('No update needed', ['server' => $server_url]); | ||||||
| 				return ($last_contact >= $last_failure); | 				return ($last_contact >= $last_failure); | ||||||
| 			} | 			} | ||||||
|  | @ -1184,4 +1239,18 @@ class GServer | ||||||
| 		} | 		} | ||||||
| 		return $serverdata; | 		return $serverdata; | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Update the user directory of a given gserver record | ||||||
|  | 	 *  | ||||||
|  | 	 * @param array $gserver gserver record  | ||||||
|  | 	 */ | ||||||
|  | 	public static function updateDirectory(array $gserver) | ||||||
|  | 	{ | ||||||
|  | 		/// @todo Add Mastodon API directory
 | ||||||
|  | 		 | ||||||
|  | 		if (!empty($gserver['poco'])) { | ||||||
|  | 			PortableContact::discoverSingleServer($gserver['id']); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -219,51 +219,6 @@ class PortableContact | ||||||
| 		return(preg_match("=https?://.+/user/\d+=ism", $url, $matches)); | 		return(preg_match("=https?://.+/user/\d+=ism", $url, $matches)); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	public static function updateNeeded($created, $updated, $last_failure, $last_contact) |  | ||||||
| 	{ |  | ||||||
| 		$now = strtotime(DateTimeFormat::utcNow()); |  | ||||||
| 
 |  | ||||||
| 		if ($updated > $last_contact) { |  | ||||||
| 			$contact_time = strtotime($updated); |  | ||||||
| 		} else { |  | ||||||
| 			$contact_time = strtotime($last_contact); |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		$failure_time = strtotime($last_failure); |  | ||||||
| 		$created_time = strtotime($created); |  | ||||||
| 
 |  | ||||||
| 		// If there is no "created" time then use the current time
 |  | ||||||
| 		if ($created_time <= 0) { |  | ||||||
| 			$created_time = $now; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		// If the last contact was less than 24 hours then don't update
 |  | ||||||
| 		if (($now - $contact_time) < (60 * 60 * 24)) { |  | ||||||
| 			return false; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		// If the last failure was less than 24 hours then don't update
 |  | ||||||
| 		if (($now - $failure_time) < (60 * 60 * 24)) { |  | ||||||
| 			return false; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		// If the last contact was less than a week ago and the last failure is older than a week then don't update
 |  | ||||||
| 		//if ((($now - $contact_time) < (60 * 60 * 24 * 7)) && ($contact_time > $failure_time))
 |  | ||||||
| 		//	return false;
 |  | ||||||
| 
 |  | ||||||
| 		// If the last contact time was more than a week ago and the contact was created more than a week ago, then only try once a week
 |  | ||||||
| 		if ((($now - $contact_time) > (60 * 60 * 24 * 7)) && (($now - $created_time) > (60 * 60 * 24 * 7)) && (($now - $failure_time) < (60 * 60 * 24 * 7))) { |  | ||||||
| 			return false; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		// If the last contact time was more than a month ago and the contact was created more than a month ago, then only try once a month
 |  | ||||||
| 		if ((($now - $contact_time) > (60 * 60 * 24 * 30)) && (($now - $created_time) > (60 * 60 * 24 * 30)) && (($now - $failure_time) < (60 * 60 * 24 * 30))) { |  | ||||||
| 			return false; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		return true; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/** | 	/** | ||||||
| 	 * @brief Returns a list of all known servers | 	 * @brief Returns a list of all known servers | ||||||
| 	 * @return array List of server urls | 	 * @return array List of server urls | ||||||
|  | @ -470,7 +425,7 @@ class PortableContact | ||||||
| 
 | 
 | ||||||
| 		$last_update = date('c', time() - (60 * 60 * 24 * $requery_days)); | 		$last_update = date('c', time() - (60 * 60 * 24 * $requery_days)); | ||||||
| 
 | 
 | ||||||
| 		$gservers = q("SELECT `id`, `url`, `nurl`, `network`
 | 		$gservers = q("SELECT `id`, `url`, `nurl`, `network`, `poco`
 | ||||||
| 			FROM `gserver` | 			FROM `gserver` | ||||||
| 			WHERE `last_contact` >= `last_failure` | 			WHERE `last_contact` >= `last_failure` | ||||||
| 			AND `poco` != '' | 			AND `poco` != '' | ||||||
|  | @ -488,7 +443,7 @@ class PortableContact | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				Logger::log('Update directory from server ' . $gserver['url'] . ' with ID ' . $gserver['id'], Logger::DEBUG); | 				Logger::log('Update directory from server ' . $gserver['url'] . ' with ID ' . $gserver['id'], Logger::DEBUG); | ||||||
| 				Worker::add(PRIORITY_LOW, 'UpdateServerDirectory', (int)$gserver['id']); | 				Worker::add(PRIORITY_LOW, 'UpdateServerDirectory', $gserver); | ||||||
| 
 | 
 | ||||||
| 				if (!$complete && ( --$no_of_queries == 0)) { | 				if (!$complete && ( --$no_of_queries == 0)) { | ||||||
| 					break; | 					break; | ||||||
|  |  | ||||||
|  | @ -5,14 +5,13 @@ | ||||||
| namespace Friendica\Worker; | namespace Friendica\Worker; | ||||||
| 
 | 
 | ||||||
| use Friendica\Core\Logger; | use Friendica\Core\Logger; | ||||||
| use Friendica\Protocol\PortableContact; | use Friendica\Model\GServer; | ||||||
| 
 | 
 | ||||||
| class UpdateServerDirectory | class UpdateServerDirectory | ||||||
| { | { | ||||||
| 	// Discover the given server id for their contacts
 | 	public static function execute($gserver) | ||||||
| 	public static function execute($gserverid) |  | ||||||
| 	{ | 	{ | ||||||
| 		PortableContact::discoverSingleServer($gserverid); | 		GServer::updateDirectory($gserver); | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ namespace Friendica\Worker; | ||||||
| use Friendica\Core\Logger; | use Friendica\Core\Logger; | ||||||
| use Friendica\Core\Worker; | use Friendica\Core\Worker; | ||||||
| use Friendica\Database\DBA; | use Friendica\Database\DBA; | ||||||
| use Friendica\Protocol\PortableContact; | use Friendica\Model\GServer; | ||||||
| 
 | 
 | ||||||
| class UpdateServers | class UpdateServers | ||||||
| { | { | ||||||
|  | @ -25,7 +25,7 @@ class UpdateServers | ||||||
| 		$updated = 0; | 		$updated = 0; | ||||||
| 
 | 
 | ||||||
| 		while ($gserver = DBA::fetch($gservers)) { | 		while ($gserver = DBA::fetch($gservers)) { | ||||||
| 			if (!PortableContact::updateNeeded($gserver['created'], '', $gserver['last_failure'], $gserver['last_contact'])) { | 			if (!GServer::updateNeeded($gserver['created'], '', $gserver['last_failure'], $gserver['last_contact'])) { | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 			Logger::info('Update server status', ['server' => $gserver['url']]); | 			Logger::info('Update server status', ['server' => $gserver['url']]); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue