관리-도구
편집 파일: class-googlesitemapgeneratorstatus.php
<?php /** * Googlesitemapgeneratorstatus class file. * * @author Arne Brachhold * @package sitemap * @since 3.0b5 */ /** * Represents the status (successes and failures) of a ping process * * @author Arne Brachhold * @package sitemap * @since 3.0b5 */ class GoogleSitemapGeneratorStatus { /** * Var start time of building process . * * @var float $_start_time The start time of the building process . */ private $start_time = 0; /** * The end time of the building process. * * @var float $_end_time The end time of the building process */ private $end_time = 0; /** * Holding an array with the results and information of the last ping . * * @var array Holding an array with the results and information of the last ping */ private $ping_results = array(); /** * If the status should be saved to the database automatically . * * @var bool If the status should be saved to the database automatically */ private $auto_save = true; /** * Constructs a new status ued for saving the ping results * * @param string $auto_save . */ public function __construct( $auto_save = true ) { $this->start_time = microtime( true ); $this->auto_save = $auto_save; if ( $auto_save ) { $exists = get_option( 'sm_status' ); if ( false === $exists ) { add_option( 'sm_status', '', '', 'no' ); } $this->save(); } } /** * Saves the status back to the database */ public function save() { update_option( 'sm_status', $this ); } /** * Returns the last saved status object or null * * @return GoogleSitemapGeneratorStatus */ public static function load() { $status = get_option( 'sm_status' ); if ( is_a( $status, 'GoogleSitemapGeneratorStatus' ) ) { return $status; } else { return null; } } /** * Ends the ping process */ public function end() { $this->end_time = microtime( true ); if ( $this->auto_save ) { $this->save(); } } /** * Returns the duration of the ping process * * @return int */ public function get_duration() { return round( $this->end_time - $this->start_time, 2 ); } /** * Returns the time when the pings were started * * @return int */ public function get_start_time() { return round( $this->start_time, 2 ); } /** * Start ping . * * @param string $service string The internal name of the ping service . * @param string $url string The URL to ping . * @param string $name string The display name of the service . * @return void */ public function start_ping( $service, $url, $name = null ) { $this->ping_results[ $service ] = array( 'start_time' => microtime( true ), 'end_time' => 0, 'success' => false, 'url' => $url, 'name' => $name ? $name : $service, ); if ( $this->auto_save ) { $this->save(); } } /** * End ping . * * @param string $service string The internal name of the ping service . * @param string $success boolean If the ping was successful . * @return void */ public function end_ping( $service, $success ) { $this->ping_results[ $service ]['end_time'] = microtime( true ); $this->ping_results[ $service ]['success'] = $success; if ( $this->auto_save ) { $this->save(); } } /** * Returns the duration of the last ping of a specific ping service * * @param string $service string The internal name of the ping service . * @return float */ public function get_ping_duration( $service ) { $res = $this->ping_results[ $service ]; return round( $res['end_time'] - $res['start_time'], 2 ); } /** * Returns the last result for a specific ping service * * @param string $service string The internal name of the ping service . * @return array */ public function get_ping_result( $service ) { return $this->ping_results[ $service ]['success']; } /** * Returns the URL for a specific ping service * * @param string $service string The internal name of the ping service . * @return array */ public function get_ping_url( $service ) { return $this->ping_results[ $service ]['url']; } /** * Returns the name for a specific ping service * * @param string $service string The internal name of the ping service . * @return array */ public function get_service_name( $service ) { return $this->ping_results[ $service ]['name']; } /** * Returns if a service was used in the last ping * * @param string $service string The internal name of the ping service . * @return bool */ public function used_ping_service( $service ) { return array_key_exists( $service, $this->ping_results ); } /** * Returns the services which were used in the last ping * * @return array */ public function get_used_ping_services() { return array_keys( $this->ping_results ); } }