/**
  * @author Vova Feldman (@svovaf)
  * @since  1.1.3
  *
  * @param string $id
  */
 private function __construct($id)
 {
     $this->_logger = FS_Logger::get_logger(WP_FS__SLUG . '_cach_mngr_' . $id, WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK);
     $this->_logger->entrance();
     $this->_logger->log('id = ' . $id);
     $this->_options = FS_Option_Manager::get_manager($id, true);
 }
 /**
  * @author Vova Feldman (@svovaf)
  * @since  1.0.3
  *
  * @param string $id
  * @param bool   $load
  */
 private function __construct($id, $load = false)
 {
     $this->_logger = FS_Logger::get_logger(WP_FS__SLUG . '_opt_mngr_' . $id, WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK);
     $this->_logger->entrance();
     $this->_logger->log('id = ' . $id);
     $this->_id = $id;
     if ($load) {
         $this->load();
     }
 }
 /**
  * Check for Updates at the defined API endpoint and modify the update array.
  *
  * This function dives into the update api just when WordPress creates its update array,
  * then adds a custom API call and injects the custom plugin data retrieved from the API.
  * It is reassembled from parts of the native WordPress plugin update code.
  * See wp-includes/update.php line 121 for the original wp_update_plugins() function.
  *
  * @author Vova Feldman (@svovaf)
  * @since  1.0.4
  *
  * @uses   FS_Api
  *
  * @param stdClass $transient_data Update array build by WordPress.
  *
  * @return array Modified update array with custom plugin data.
  */
 function pre_set_site_transient_update_plugins_filter($transient_data)
 {
     $this->_logger->entrance();
     if (empty($transient_data) || defined('WP_FS__UNINSTALL_MODE')) {
         return $transient_data;
     }
     if (!isset($this->_update_details)) {
         // Get plugin's newest update.
         $new_version = $this->_fs->get_update(false, false);
         $this->_update_details = false;
         if (is_object($new_version)) {
             $this->_logger->log('Found newer plugin version ' . $new_version->version);
             $plugin_details = new stdClass();
             $plugin_details->slug = $this->_fs->get_slug();
             $plugin_details->new_version = $new_version->version;
             $plugin_details->url = WP_FS__ADDRESS;
             $plugin_details->package = $new_version->url;
             $plugin_details->plugin = $this->_fs->get_plugin_basename();
             /**
              * Cache plugin details locally since set_site_transient( 'update_plugins' )
              * called multiple times and the non wp.org plugins are filtered after the
              * call to .org.
              *
              * @since 1.1.8.1
              */
             $this->_update_details = $plugin_details;
         }
     }
     if (is_object($this->_update_details)) {
         // Add plugin to transient data.
         $transient_data->response[$this->_fs->get_plugin_basename()] = $this->_update_details;
     }
     return $transient_data;
 }
 /**
  * Hook to plugin action links filter.
  *
  * @author Vova Feldman (@svovaf)
  * @since  1.0.0
  */
 private function hook_plugin_action_links()
 {
     $this->_logger->entrance();
     $this->_action_links_hooked = true;
     $this->_logger->log('Adding action links hooks.');
     // Add action link to settings page.
     add_filter('plugin_action_links_' . $this->_plugin_basename, array(&$this, '_modify_plugin_action_links_hook'), 10, 2);
     add_filter('network_admin_plugin_action_links_' . $this->_plugin_basename, array(&$this, '_modify_plugin_action_links_hook'), 10, 2);
 }
 /**
  * Check for Updates at the defined API endpoint and modify the update array.
  *
  * This function dives into the update api just when WordPress creates its update array,
  * then adds a custom API call and injects the custom plugin data retrieved from the API.
  * It is reassembled from parts of the native WordPress plugin update code.
  * See wp-includes/update.php line 121 for the original wp_update_plugins() function.
  *
  * @author Vova Feldman (@svovaf)
  * @since  1.0.4
  *
  * @uses   FS_Api
  *
  * @param stdClass $transient_data Update array build by WordPress.
  *
  * @return array Modified update array with custom plugin data.
  */
 function pre_set_site_transient_update_plugins_filter($transient_data)
 {
     $this->_logger->entrance();
     if (empty($transient_data) || defined('WP_FS__UNINSTALL_MODE')) {
         return $transient_data;
     }
     // Get plugin's newest update.
     $new_version = $this->_fs->get_update();
     if (is_object($new_version)) {
         $this->_logger->log('Found newer plugin version ' . $new_version->version);
         $plugin_details = new stdClass();
         $plugin_details->slug = $this->_fs->get_slug();
         $plugin_details->new_version = $new_version->version;
         $plugin_details->url = WP_FS__ADDRESS;
         $plugin_details->package = $new_version->url;
         $plugin_details->plugin = $this->_fs->get_plugin_basename();
         // Add plugin to transient data.
         $transient_data->response[$this->_fs->get_plugin_basename()] = $plugin_details;
     }
     return $transient_data;
 }