コード例 #1
0
 /**
  * Generate add-on plugin information.
  *
  * @author Vova Feldman (@svovaf)
  * @since  1.0.6
  *
  * @param array       $data
  * @param string      $action
  * @param object|null $args
  *
  * @return array|null
  */
 function _get_addon_info_filter($data, $action = '', $args = null)
 {
     $this->_logger->entrance();
     $parent_plugin_id = fs_request_get('parent_plugin_id', false);
     if ($this->get_id() != $parent_plugin_id || 'plugin_information' !== $action || !isset($args->slug)) {
         return $data;
     }
     // Find add-on by slug.
     $addons = $this->get_addons();
     $selected_addon = false;
     foreach ($addons as $addon) {
         if ($addon->slug == $args->slug) {
             $selected_addon = $addon;
             break;
         }
     }
     if (false === $selected_addon) {
         return $data;
     }
     if (!isset($selected_addon->info)) {
         // Setup some default info.
         $selected_addon->info = new stdClass();
         $selected_addon->info->selling_point_0 = 'Selling Point 1';
         $selected_addon->info->selling_point_1 = 'Selling Point 2';
         $selected_addon->info->selling_point_2 = 'Selling Point 3';
         $selected_addon->info->description = '<p>Tell your users all about your add-on</p>';
     }
     fs_enqueue_local_style('fs_addons', '/admin/add-ons.css');
     $data = $args;
     // Fetch as much as possible info from local files.
     $plugin_local_data = $this->get_plugin_data();
     $data->name = $selected_addon->title;
     $data->author = $plugin_local_data['Author'];
     $view_vars = array('plugin' => $selected_addon);
     $data->sections = array('description' => fs_get_template('/plugin-info/description.php', $view_vars));
     if (!empty($selected_addon->info->banner_url)) {
         $data->banners = array('low' => $selected_addon->info->banner_url);
     }
     if (!empty($selected_addon->info->screenshots)) {
         $view_vars = array('screenshots' => $selected_addon->info->screenshots, 'plugin' => $selected_addon);
         $data->sections['screenshots'] = fs_get_template('/plugin-info/screenshots.php', $view_vars);
     }
     // Load add-on pricing.
     $has_pricing = false;
     $has_features = false;
     $plans = false;
     $plans_result = $this->get_api_site_or_plugin_scope()->get("/addons/{$selected_addon->id}/plans.json");
     if (!isset($plans_result->error)) {
         $plans = $plans_result->plans;
         if (is_array($plans)) {
             foreach ($plans as &$plan) {
                 $pricing_result = $this->get_api_site_or_plugin_scope()->get("/addons/{$selected_addon->id}/plans/{$plan->id}/pricing.json");
                 if (!isset($pricing_result->error)) {
                     // Update plan's pricing.
                     $plan->pricing = $pricing_result->pricing;
                     $has_pricing = true;
                 }
                 $features_result = $this->get_api_site_or_plugin_scope()->get("/addons/{$selected_addon->id}/plans/{$plan->id}/features.json");
                 if (!isset($features_result->error) && is_array($features_result->features) && 0 < count($features_result->features)) {
                     // Update plan's pricing.
                     $plan->features = $features_result->features;
                     $has_features = true;
                 }
             }
         }
     }
     // Get latest add-on version.
     $latest = $this->_fetch_latest_version($selected_addon->id);
     if (is_object($latest)) {
         $data->version = $latest->version;
         $data->last_updated = !is_null($latest->updated) ? $latest->updated : $latest->created;
         $data->requires = $latest->requires_platform_version;
         $data->tested = $latest->tested_up_to_version;
     } else {
         // Add dummy version.
         $data->version = '1.0.0';
         // Add message to developer to deploy the plugin through Freemius.
     }
     $data->checkout_link = $this->checkout_url();
     $data->download_link = 'https://dummy.com';
     if ($has_pricing) {
         // Add plans to data.
         $data->plans = $plans;
         if ($has_features) {
             $view_vars = array('plans' => $plans, 'plugin' => $selected_addon);
             $data->sections['features'] = fs_get_template('/plugin-info/features.php', $view_vars);
         }
     }
     return $data;
 }
コード例 #2
0
    /**
     * Add connect / opt-in pointer.
     *
     * @author Vova Feldman (@svovaf)
     * @since  1.1.4
     */
    function _add_connect_pointer_script()
    {
        $vars = array('slug' => $this->_slug);
        $pointer_content = fs_get_template('connect.php', $vars);
        ?>
			<script type="text/javascript">// <![CDATA[
				jQuery(document).ready(function ($) {
					if ('undefined' !== typeof(jQuery().pointer)) {

						var element = <?php 
        echo $this->apply_filters('optin_pointer_element', '$("#non_existing_element");');
        ?>
;

						if (element.length > 0) {
							var optin = $(element).pointer($.extend(true, {}, {
								content     : <?php 
        echo json_encode($pointer_content);
        ?>
,
								position    : {
									edge : 'left',
									align: 'center'
								},
								buttons     : function () {
									// Don't show pointer buttons.
									return '';
								},
								pointerWidth: 482
							}, <?php 
        echo $this->apply_filters('optin_pointer_options_json', '{}');
        ?>
));

							<?php 
        echo $this->apply_filters('optin_pointer_execute', "\n\n\t\t\t\t\t\t\toptin.pointer('open');\n\n\t\t\t\t\t\t\t// Tag the opt-in pointer with custom class.\n\t\t\t\t\t\t\t\$('.wp-pointer #fs_connect')\n\t\t\t\t\t\t\t\t.parents('.wp-pointer.wp-pointer-top')\n\t\t\t\t\t\t\t\t.addClass('fs-opt-in-pointer');\n\n\t\t\t\t\t\t\t", 'element', 'optin');
        ?>
						}
					}
				});
				// ]]></script>
		<?php 
    }
コード例 #3
0
 /**
  * Generate add-on plugin information.
  *
  * @author Vova Feldman (@svovaf)
  * @since  1.0.6
  *
  * @param array       $data
  * @param string      $action
  * @param object|null $args
  *
  * @return array|null
  */
 function _get_addon_info_filter($data, $action = '', $args = null)
 {
     $this->_logger->entrance();
     $parent_plugin_id = fs_request_get('parent_plugin_id', false);
     if ($this->_fs->get_id() != $parent_plugin_id || 'plugin_information' !== $action || !isset($args->slug)) {
         return $data;
     }
     // Find add-on by slug.
     $selected_addon = $this->_fs->get_addon_by_slug($args->slug);
     if (false === $selected_addon) {
         return $data;
     }
     if (!isset($selected_addon->info)) {
         // Setup some default info.
         $selected_addon->info = new stdClass();
         $selected_addon->info->selling_point_0 = 'Selling Point 1';
         $selected_addon->info->selling_point_1 = 'Selling Point 2';
         $selected_addon->info->selling_point_2 = 'Selling Point 3';
         $selected_addon->info->description = '<p>Tell your users all about your add-on</p>';
     }
     fs_enqueue_local_style('fs_addons', '/admin/add-ons.css');
     $data = $args;
     $is_free = true;
     // Load add-on pricing.
     $has_pricing = false;
     $has_features = false;
     $plans = false;
     $plans_result = $this->_fs->get_api_site_or_plugin_scope()->get("/addons/{$selected_addon->id}/plans.json");
     if (!isset($plans_result->error)) {
         $plans = $plans_result->plans;
         if (is_array($plans)) {
             for ($i = 0, $len = count($plans); $i < $len; $i++) {
                 $plans[$i] = new FS_Plugin_Plan($plans[$i]);
                 $plan = $plans[$i];
                 $pricing_result = $this->_fs->get_api_site_or_plugin_scope()->get("/addons/{$selected_addon->id}/plans/{$plan->id}/pricing.json");
                 if (!isset($pricing_result->error)) {
                     // Update plan's pricing.
                     $plan->pricing = $pricing_result->pricing;
                     if (is_array($plan->pricing) && !empty($plan->pricing)) {
                         $is_free = false;
                         foreach ($plan->pricing as &$pricing) {
                             $pricing = new FS_Pricing($pricing);
                         }
                     }
                     $has_pricing = true;
                 }
                 $features_result = $this->_fs->get_api_site_or_plugin_scope()->get("/addons/{$selected_addon->id}/plans/{$plan->id}/features.json");
                 if (!isset($features_result->error) && is_array($features_result->features) && 0 < count($features_result->features)) {
                     // Update plan's pricing.
                     $plan->features = $features_result->features;
                     $has_features = true;
                 }
             }
         }
     }
     // Fetch latest version from Freemius.
     $latest = $this->_fs->_fetch_latest_version($selected_addon->id);
     if (!$is_free) {
         // If paid add-on, then it's not on wordpress.org
         $is_wordpress_org = false;
     } else {
         // If no versions found, then assume it's a .org plugin.
         $is_wordpress_org = false === $latest;
     }
     if ($is_wordpress_org) {
         $repo_data = FS_Plugin_Updater::_fetch_plugin_info_from_repository('plugin_information', (object) array('slug' => $selected_addon->slug, 'is_ssl' => is_ssl(), 'fields' => array('banners' => true, 'reviews' => true, 'downloaded' => false, 'active_installs' => true)));
         if (!empty($repo_data)) {
             $data = $repo_data;
             $data->wp_org_missing = false;
         } else {
             // Couldn't find plugin on .org.
             $is_wordpress_org = false;
             // Plugin is missing, not on Freemius nor WP.org.
             $data->wp_org_missing = true;
         }
     }
     if (!$is_wordpress_org) {
         $data->checkout_link = $this->_fs->checkout_url();
         $data->fs_missing = false === $latest;
         if ($is_free) {
             $data->download_link = $this->_fs->_get_latest_download_local_url($selected_addon->id);
         }
     }
     if (!$is_wordpress_org) {
         // Fetch as much as possible info from local files.
         $plugin_local_data = $this->_fs->get_plugin_data();
         $data->name = $selected_addon->title;
         $data->author = $plugin_local_data['Author'];
         $view_vars = array('plugin' => $selected_addon);
         $data->sections = array('description' => fs_get_template('/plugin-info/description.php', $view_vars));
         if (!empty($selected_addon->info->banner_url)) {
             $data->banners = array('low' => $selected_addon->info->banner_url);
         }
         if (!empty($selected_addon->info->screenshots)) {
             $view_vars = array('screenshots' => $selected_addon->info->screenshots, 'plugin' => $selected_addon);
             $data->sections['screenshots'] = fs_get_template('/plugin-info/screenshots.php', $view_vars);
         }
         if (is_object($latest)) {
             $data->version = $latest->version;
             $data->last_updated = !is_null($latest->updated) ? $latest->updated : $latest->created;
             $data->requires = $latest->requires_platform_version;
             $data->tested = $latest->tested_up_to_version;
         } else {
             // Add dummy version.
             $data->version = '1.0.0';
             // Add message to developer to deploy the plugin through Freemius.
         }
     }
     if ($has_pricing) {
         // Add plans to data.
         $data->plans = $plans;
         if ($has_features) {
             $view_vars = array('plans' => $plans, 'plugin' => $selected_addon);
             $data->sections['features'] = fs_get_template('/plugin-info/features.php', $view_vars);
         }
     }
     $data->is_paid = !$is_free;
     $data->external = !$is_wordpress_org;
     return $data;
 }