/**
  * Run once everyday at the time the Plugin activated.
  * Callback for wp_schedule_event.
  */
 public static function check()
 {
     // Ask the server for updates.
     $response = wp_remote_get(cssJSToolbox::CHECK_UPDATE_URL);
     // If check success, store the response.
     if (is_array($response)) {
         // response = WP_Error on failure.
         // We need only response array.
         $response = @unserialize($response['body']);
         // Make sure that we got array from the server.
         if (is_array($response['response'])) {
             $response = $response['response'];
             $currentVersion = is_array(cssJSToolbox::$premiumUpgradeTransient) ? cssJSToolbox::$premiumUpgradeTransient['version'] : '';
             $newVersion = $response['version'];
             // Upload and update image URL only if current transient version
             // is different from the new version.
             if ($currentVersion != $newVersion) {
                 // Get image from URL.
                 $image = wp_remote_get($response['imageURL']);
                 // $image = WP_Error on failure.
                 if (is_array($image)) {
                     $imagesUploadPath = CJTOOLBOX_PATH . '/public/media/' . cssJSToolbox::IMAGES_UPLOAD_DIR;
                     $imageStream = $image['body'];
                     $imageName = basename($response['imageURL']);
                     $imageFile = "{$imagesUploadPath}/{$imageName}";
                     $localImageLength = @file_put_contents($imageFile, $imageStream);
                     // If file is created change the URL of the image to the local image.
                     if ($localImageLength == strlen($imageStream)) {
                         $response['imageURL'] = CJTOOLBOX_MEDIA_URL . '/' . cssJSToolbox::IMAGES_UPLOAD_DIR . "/{$imageName}";
                         // Store the response/transient with the new ImageURL, make sense!
                     }
                 }
             }
             // Update current transient.
             set_site_transient('cjt_premium_upgrade', $response);
             cssJSToolbox::$premiumUpgradeTransient = $response;
         }
     }
 }
 /**
  * Bind Wordpress hooks.
  * 
  * Callback for plugins_loaded.
  */
 function start_plugin()
 {
     if (is_admin()) {
         // New installation or check for upgrade.
         // Plugin activation hook is not fired when the Plugin updated since Wordpress 3.1.
         // No worries the code inside will not executed twice.
         $this->checkInstallation();
         // Load Plugin translation.
         load_plugin_textdomain(CJTOOLBOX_TEXT_DOMAIN, null, 'css-javascript-toolbox/langs');
         // Load for admin panel
         add_action('admin_menu', array(&self::$instance, 'add_plugin_menu'));
         // register ajax save function
         add_action('wp_ajax_cjtoolbox_save', array(&self::$instance, 'ajax_save_changes'));
         add_action('wp_ajax_cjtoolbox_save_newcode', array(&self::$instance, 'ajax_save_newcode'));
         add_action('wp_ajax_cjtoolbox_form', array(&self::$instance, 'ajax_show_form'));
         add_action('wp_ajax_cjtoolbox_get_code', array(&self::$instance, 'ajax_get_code'));
         add_action('wp_ajax_cjtoolbox_delete_code', array(&self::$instance, 'ajax_delete_code'));
         add_action('wp_ajax_cjtoolbox_add_block', array(&self::$instance, 'ajax_add_block'));
         add_action('wp_ajax_cjtoolbox_request_template', array(&self::$instance, 'ajax_request_template'));
         // Get latest update data.
         self::$premiumUpgradeTransient = get_site_transient('cjt_premium_upgrade');
     } else {
         // Add the script and style files to header/footer
         add_action('wp_head', array(&self::$instance, 'cjtoolbox_insert_header_code'));
         add_action('wp_print_scripts', array(&self::$instance, 'cjtoolbox_embedded_scripts'), 11);
         add_action('wp_footer', array(&self::$instance, 'cjtoolbox_insert_footer_code'));
         // Premium update check cron hook.
         add_action('cjt_premium_update_checker', array(&self::$instance, 'checkPremiumUpdate'));
     }
 }