public function set_last_request_failed($timestamp = null) { if (is_null($timestamp)) { $timestamp = time(); } update_option($this->service_settings_store->get_service_failure_timestamp_key($this->id, $this->instance_id), $timestamp); }
protected function get_services_items() { $service_items = array(); $enabled_services = $this->service_settings_store->get_enabled_services(); if (empty($enabled_services)) { $service_items[] = (object) array('key' => 'wcc_services_empty', 'type' => 'text', 'class' => 'form_text_body_copy', 'value' => __('No services have been enabled', 'connectforwoocommerce')); return $service_items; } foreach ((array) $enabled_services as $enabled_service) { $indicator_key = "{$enabled_service->method_id}_{$enabled_service->instance_id}"; $failure_timestamp_key = $this->service_settings_store->get_service_failure_timestamp_key($enabled_service->method_id, $enabled_service->instance_id); $last_failed_request_timestamp = intval(get_option($failure_timestamp_key, -1)); $service_settings_url = esc_url(add_query_arg(array('page' => 'wc-settings', 'tab' => 'shipping', 'instance_id' => $enabled_service->instance_id), admin_url('admin.php'))); $review_link = sprintf(wp_kses(__('<a href="%s">Review service settings</a>', 'connectforwoocommerce'), array('a' => array('href' => array()))), esc_url($service_settings_url)); $edit_link = sprintf(wp_kses(__('<a href="%s">Edit service settings</a>', 'connectforwoocommerce'), array('a' => array('href' => array()))), esc_url($service_settings_url)); $ago_edit_link = sprintf(wp_kses(_x('Request was made %1$s ago - <a href="%2$s">edit service settings</a>', 'e.g. two hours', 'connectforwoocommerce'), array('a' => array('href' => array()))), esc_html(human_time_diff($last_failed_request_timestamp)), esc_url($service_settings_url)); // Figure out if the service has any settings saved at all $service_settings = $this->service_settings_store->get_service_settings($enabled_service->method_id, $enabled_service->instance_id); if (empty($service_settings)) { $indicator = $this->build_indicator($indicator_key, 'notice', 'indicator-error', __('Setup for this service has not yet been completed', 'connectforwoocommerce'), $edit_link); } else { if (-1 === $last_failed_request_timestamp) { $indicator = $this->build_indicator($indicator_key, 'notice', 'indicator-warning', __('No rate requests have yet been made for this service', 'connectforwoocommerce'), $review_link); } else { if (0 === $last_failed_request_timestamp) { $indicator = $this->build_indicator($indicator_key, 'checkmark-circle', 'indicator-success', __('The most recent rate request was successful', 'connectforwoocommerce'), $edit_link); } else { $indicator = $this->build_indicator($indicator_key, 'notice', 'indicator-error', __('The most recent rate request failed', 'connectforwoocommerce'), $ago_edit_link); } } } $items_key = "{$enabled_service->method_id}_{$enabled_service->instance_id}_items"; $subtitle = sprintf(__('%s Shipping Zone', 'connectforwoocommerce'), $enabled_service->zone_name); $service_items[] = (object) array('key' => $items_key, 'title' => $enabled_service->title, 'subtitle' => $subtitle, 'type' => 'indicators', 'items' => array($indicator_key => $indicator)); } return $service_items; }