function fbrfg_clean_site_instance()
{
    // Remove options
    foreach (Favicon_By_RealFaviconGenerator_Common::get_options_list() as $opt) {
        delete_option($opt);
    }
    // Remove files
    $dir = Favicon_By_RealFaviconGenerator_Common::get_files_dir();
    if (file_exists($dir)) {
        Favicon_By_RealFaviconGenerator_Common::remove_directory($dir);
    }
}
 /**
  * Returns http//somesite.com/blog/wp-content/upload/fbrfg/
  */
 public function get_picture_url()
 {
     return Favicon_By_RealFaviconGenerator_Common::get_files_url();
 }
 public function check_for_updates()
 {
     $this->log_info('Checking for updates...');
     if (!$this->is_favicon_configured()) {
         // No favicon so nothing to update
         $this->log_info('No favicon configured so nothing to update');
         return;
     }
     $version = $this->get_favicon_current_version();
     $this->log_info('Current version is ' . $version);
     if ($version == NULL) {
         // No version for some reason. Let's leave.
         $this->log_info('Current favicon version not available');
         return;
     }
     $checkUrl = 'https://realfavicongenerator.net/api/versions?since=' . $version;
     $resp = wp_remote_get($checkUrl);
     if ($resp == NULL || $resp == false || is_wp_error($resp) || $resp['response'] == NULL || $resp['response']['code'] == NULL || $resp['response']['code'] != 200) {
         // Error of some kind? Return
         $this->log_info('Cannot get latest version from RealFaviconGenerator ' . (is_wp_error($resp) ? ': ' . $resp->get_error_message() : '') . ' (URL was ' . $checkUrl . ')');
         return;
     }
     $json = json_decode($resp['body'], true);
     if (empty($json)) {
         $this->log_info('No change since version ' . $version . ' or cannot parse JSON (JSON parsing error code is ' . json_last_error() . ')');
         return;
     }
     $this->log_info('Update versions database');
     $this->set_updates_data($json);
     // Check update relevancy
     $manual = false;
     $automatic = false;
     foreach ($json as $version) {
         if ($version['relevance']['manual_update']) {
             $manual = true;
         }
         if ($version['relevance']['automated_update']) {
             $automatic = true;
         }
     }
     $this->log_info("Automated updates to run: " . ($automatic ? 'true' : 'false'));
     $this->log_info("Manual updates to run: " . ($manual ? 'true' : 'false'));
     if ($manual || $automatic && !$this->get_non_interactive_api_request()) {
         $this->log_info('Manual update, or automatic update but we have no non-interactive request to do it automatically');
         // We only note the latest available version.
         // For example, if we receive version 0.8, 0.9 and 0.10 (in this order), we only note 0.10
         $last = $json[count($json) - 1];
         $latest_version = $last['version'];
         // Save the fact that we should update
         $this->log_info('There is a manual update to go to ' . $latest_version);
         $this->set_latest_manual_available_update($latest_version);
     } else {
         if ($automatic && $this->get_non_interactive_api_request()) {
             // Automatic update
             $this->log_info('Automatic update to be performed');
             // Do not run it when the update is also manual, because we are going to ask the user to
             // update anyway.
             try {
                 $result = $this->run_non_interactive_api_request($this->get_non_interactive_api_request());
                 $response = new Favicon_By_RealFaviconGenerator_Api_Response($result);
                 $zip_path = Favicon_By_RealFaviconGenerator_Common::get_tmp_dir();
                 if (!file_exists($zip_path)) {
                     if (mkdir($zip_path, 0755, true) !== true) {
                         throw new InvalidArgumentException(sprintf(__('Cannot create directory %s to store the favicon package', FBRFG_PLUGIN_SLUG), $zip_path));
                     }
                 }
                 $response->downloadAndUnpack($zip_path);
                 $this->store_pictures($response);
                 $this->store_preview($response->getPreviewPath());
                 Favicon_By_RealFaviconGenerator_Common::remove_directory($zip_path);
                 update_option(Favicon_By_RealFaviconGenerator_Common::OPTION_HTML_CODE, $response->getHtmlCode());
                 $version_before_update = $this->get_favicon_current_version();
                 $this->set_favicon_configured(true, $response->isFilesInRoot(), $response->getVersion());
                 // Remember about this update
                 $this->log_info('Save the fact that we updated from ' . $version_before_update . ' to ' . $response->getVersion());
                 $this->set_most_recent_automatic_update($version_before_update, $response->getVersion());
             } catch (Exception $e) {
                 $this->log_info('Cannot update favicon automatically: ' . $e->getMessage());
             }
         }
     }
 }