Ejemplo n.º 1
0
function fs_custom_status_init($statuses)
{
    if (class_exists('Debug_Bar_Panel')) {
        if (FS_API__LOGGER_ON) {
            require_once dirname(__FILE__) . '/class-fs-debug-bar-panel.php';
            $statuses[] = array('fs_api_requests', __fs('Freemius API'), Freemius_Debug_Bar_Panel::requests_count() . ' ' . __fs('Requests') . ' (' . Freemius_Debug_Bar_Panel::total_time() . ')');
        }
    }
    return $statuses;
}
 static function total_time()
 {
     if (class_exists('Freemius_Api')) {
         $logger = Freemius_Api::GetLogger();
     } else {
         $logger = array();
     }
     $total_time = 0.0;
     foreach ($logger as $l) {
         $total_time += $l['total'];
     }
     return number_format(100 * $total_time, 2) . ' ' . __fs('ms');
 }
 function fs_message($message, $user_first_name, $plugin_title, $user_login, $site_link, $freemius_link)
 {
     return sprintf(__fs('hey-x') . '<br>' . __('Never miss an important update - Opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking with freemius.com', 'pootle-page-builder'), $user_first_name, '<b>' . $plugin_title . '</b>', '<b>' . $user_login . '</b>', $site_link, $freemius_link);
 }
	function showPanel(panelType) {
		$modal.find('.fs-modal-panel').removeClass('active ');
		$modal.find('[data-panel-id="' + panelType + '"]').addClass('active');

		updateButtonLabels();
	}

	function updateButtonLabels() {
		var $deactivateButton = $modal.find('.button-deactivate');

		// Reset the deactivate button's text.
		if ('confirm' === getCurrentPanel()) {
			$deactivateButton.text('<?php 
printf(__fs('deactivation-modal-button-confirm', $slug));
?>
');
		} else {
			$deactivateButton.text('<?php 
printf(__fs('skip-deactivate', $slug));
?>
');
		}
	}

	function getCurrentPanel() {
		return $modal.find('.fs-modal-panel.active').attr('data-panel-id');
	}
})(jQuery);
</script>
 /**
  * Updates information on the "View version x.x details" page with custom data.
  *
  * @author Vova Feldman (@svovaf)
  * @since  1.0.4
  *
  * @uses   FS_Api
  *
  * @param object $data
  * @param string $action
  * @param mixed  $args
  *
  * @return object
  */
 function plugins_api_filter($data, $action = '', $args = null)
 {
     $this->_logger->entrance();
     if ('plugin_information' !== $action || !isset($args->slug)) {
         return $data;
     }
     $addon = false;
     $is_addon = false;
     if ($this->_fs->get_slug() !== $args->slug) {
         $addon = $this->_fs->get_addon_by_slug($args->slug);
         if (!is_object($addon)) {
             return $data;
         }
         $is_addon = true;
     }
     $plugin_in_repo = false;
     if (!$is_addon) {
         // Try to fetch info from .org repository.
         $data = self::_fetch_plugin_info_from_repository($action, $args);
         $plugin_in_repo = false !== $data;
     }
     if (!$plugin_in_repo) {
         $data = $args;
         // Fetch as much as possible info from local files.
         $plugin_local_data = $this->_fs->get_plugin_data();
         $data->name = $plugin_local_data['Name'];
         $data->author = $plugin_local_data['Author'];
         $data->sections = array('description' => 'Upgrade ' . $plugin_local_data['Name'] . ' to latest.');
         // @todo Store extra plugin info on Freemius or parse readme.txt markup.
         /*$info = $this->_fs->get_api_site_scope()->call('/information.json');
         
         if ( !isset($info->error) ) {
         	$data = $info;
         }*/
     }
     // Get plugin's newest update.
     $new_version = $this->_fs->_fetch_latest_version($is_addon ? $addon->id : false);
     if ($is_addon) {
         $data->name = $addon->title . ' ' . __fs('addon', $this->_fs->get_slug());
         $data->slug = $addon->slug;
         $data->url = WP_FS__ADDRESS;
         $data->package = $new_version->url;
     }
     if (!$plugin_in_repo) {
         $data->last_updated = !is_null($new_version->updated) ? $new_version->updated : $new_version->created;
         $data->requires = $new_version->requires_platform_version;
         $data->tested = $new_version->tested_up_to_version;
     }
     $data->version = $new_version->version;
     $data->download_link = $new_version->url;
     return $data;
 }
Ejemplo n.º 6
0
    ?>
				<button class="button button-primary" tabindex="1"
				        type="submit"><?php 
    _efs($is_pending_activation ? 'resend-activation-email' : 'opt-in-connect', $slug);
    ?>
</button>
			</form>
		<?php 
}
?>
	</div><?php 
// Set core permission list items.
$permissions = array('profile' => array('icon-class' => 'dashicons dashicons-admin-users', 'label' => __fs('permissions-profile'), 'desc' => __fs('permissions-profile_desc'), 'priority' => 5), 'site' => array('icon-class' => 'dashicons dashicons-wordpress', 'label' => __fs('permissions-site'), 'desc' => __fs('permissions-site_desc'), 'priority' => 10), 'events' => array('icon-class' => 'dashicons dashicons-admin-plugins', 'label' => __fs('permissions-events'), 'desc' => __fs('permissions-events_desc'), 'priority' => 20));
// Add newsletter permissions if enabled.
if ($fs->is_permission_requested('newsletter')) {
    $permissions['newsletter'] = array('icon-class' => 'dashicons dashicons-email-alt', 'label' => __fs('permissions-newsletter'), 'desc' => __fs('permissions-newsletter_desc'), 'priority' => 15);
}
// Allow filtering of the permissions list.
$permissions = $fs->apply_filters('permission_list', $permissions);
// Sort by priority.
uasort($permissions, 'fs_sort_by_priority');
if (!empty($permissions)) {
    ?>
			<div class="fs-permissions">
				<a class="fs-trigger" href="#"><?php 
    _efs('what-permissions', $slug);
    ?>
</a>
				<ul><?php 
    foreach ($permissions as $id => $permission) {
        ?>
 /**
  * Adds Upgrade and Add-Ons links to the main Plugins page link actions collection.
  *
  * @author Vova Feldman (@svovaf)
  * @since  1.0.0
  */
 function _add_upgrade_action_link()
 {
     $this->_logger->entrance();
     if ($this->is_registered()) {
         if (!$this->is_paying() && $this->has_paid_plan()) {
             $this->add_plugin_action_link(__fs('upgrade', $this->_slug), $this->get_upgrade_url(), false, 20, 'upgrade');
         }
         if ($this->_has_addons()) {
             $this->add_plugin_action_link(__fs('add-ons', $this->_slug), $this->_get_admin_page_url('addons'), false, WP_FS__DEFAULT_PRIORITY, 'addons');
         }
     }
 }
Ejemplo n.º 8
0
        echo $site->secret_key;
        ?>
</td>
			</tr>
		<?php 
    }
    ?>
		</tbody>
	</table>
<?php 
}
$addons = $VARS['addons'];
foreach ($addons as $plugin_id => $plugin_addons) {
    ?>
	<h2><?php 
    printf(__fs('addons-of-x'), $plugin_id);
    ?>
</h2>
	<table id="fs_addons" class="widefat">
		<thead>
		<tr>
			<th><?php 
    _efs('id');
    ?>
</th>
			<th><?php 
    _efs('title');
    ?>
</th>
			<th><?php 
    _efs('slug');
/**
 * Display plugin information in dialog box form.
 *
 * @since 2.7.0
 */
function fs_install_plugin_information()
{
    global $tab;
    if (empty($_REQUEST['plugin'])) {
        return;
    }
    $args = array('slug' => wp_unslash($_REQUEST['plugin']), 'is_ssl' => is_ssl(), 'fields' => array('banners' => true, 'reviews' => true));
    if (is_array($args)) {
        $args = (object) $args;
    }
    if (!isset($args->per_page)) {
        $args->per_page = 24;
    }
    if (!isset($args->locale)) {
        $args->locale = get_locale();
    }
    $api = apply_filters('fs_plugins_api', false, 'plugin_information', $args);
    if (is_wp_error($api)) {
        wp_die($api);
    }
    $plugins_allowedtags = array('a' => array('href' => array(), 'title' => array(), 'target' => array(), 'class' => array()), 'style' => array(), 'abbr' => array('title' => array()), 'acronym' => array('title' => array()), 'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(), 'div' => array('class' => array()), 'span' => array('class' => array()), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array('class' => array()), 'i' => array('class' => array()), 'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(), 'img' => array('src' => array(), 'class' => array(), 'alt' => array()));
    $plugins_section_titles = array('description' => _x('Description', 'Plugin installer section title'), 'installation' => _x('Installation', 'Plugin installer section title'), 'faq' => _x('FAQ', 'Plugin installer section title'), 'screenshots' => _x('Screenshots', 'Plugin installer section title'), 'changelog' => _x('Changelog', 'Plugin installer section title'), 'reviews' => _x('Reviews', 'Plugin installer section title'), 'other_notes' => _x('Other Notes', 'Plugin installer section title'));
    // Sanitize HTML
    //		foreach ( (array) $api->sections as $section_name => $content ) {
    //			$api->sections[$section_name] = wp_kses( $content, $plugins_allowedtags );
    //		}
    foreach (array('version', 'author', 'requires', 'tested', 'homepage', 'downloaded', 'slug') as $key) {
        if (isset($api->{$key})) {
            $api->{$key} = wp_kses($api->{$key}, $plugins_allowedtags);
        }
    }
    // Add after $api->slug is ready.
    $plugins_section_titles['features'] = __fs('features-and-pricing', $api->slug);
    $_tab = esc_attr($tab);
    $section = isset($_REQUEST['section']) ? wp_unslash($_REQUEST['section']) : 'description';
    // Default to the Description tab, Do not translate, API returns English.
    if (empty($section) || !isset($api->sections[$section])) {
        $section_titles = array_keys((array) $api->sections);
        $section = array_shift($section_titles);
    }
    iframe_header(__('Plugin Install'));
    $_with_banner = '';
    //	var_dump($api->banners);
    if (!empty($api->banners) && (!empty($api->banners['low']) || !empty($api->banners['high']))) {
        $_with_banner = 'with-banner';
        $low = empty($api->banners['low']) ? $api->banners['high'] : $api->banners['low'];
        $high = empty($api->banners['high']) ? $api->banners['low'] : $api->banners['high'];
        ?>
			<style type="text/css">
				#plugin-information-title.with-banner
				{
					background-image: url( <?php 
        echo esc_url($low);
        ?>
 );
				}

				@media only screen and ( -webkit-min-device-pixel-ratio: 1.5 )
				{
					#plugin-information-title.with-banner
					{
						background-image: url( <?php 
        echo esc_url($high);
        ?>
 );
					}
				}
			</style>
		<?php 
    }
    echo '<div id="plugin-information-scrollable">';
    echo "<div id='{$_tab}-title' class='{$_with_banner}'><div class='vignette'></div><h2>{$api->name}</h2></div>";
    echo "<div id='{$_tab}-tabs' class='{$_with_banner}'>\n";
    foreach ((array) $api->sections as $section_name => $content) {
        if ('reviews' === $section_name && (empty($api->ratings) || 0 === array_sum((array) $api->ratings))) {
            continue;
        }
        if (isset($plugins_section_titles[$section_name])) {
            $title = $plugins_section_titles[$section_name];
        } else {
            $title = ucwords(str_replace('_', ' ', $section_name));
        }
        $class = $section_name === $section ? ' class="current"' : '';
        $href = add_query_arg(array('tab' => $tab, 'section' => $section_name));
        $href = esc_url($href);
        $san_section = esc_attr($section_name);
        echo "\t<a name='{$san_section}' href='{$href}' {$class}>{$title}</a>\n";
    }
    echo "</div>\n";
    ?>
	<div id="<?php 
    echo $_tab;
    ?>
-content" class='<?php 
    echo $_with_banner;
    ?>
'>
		<div class="fyi">
			<?php 
    if (isset($api->plans)) {
        ?>
				<div class="plugin-information-pricing">
					<?php 
        foreach ($api->plans as $plan) {
            ?>
					<h3 data-plan="<?php 
            echo $plan->id;
            ?>
"><?php 
            printf(__fs('x-plan', $api->slug), $plan->title);
            ?>
</h3>
					<ul>
						<?php 
            $billing_cycle = 'annual';
            ?>
						<?php 
            if (1 === count($plan->pricing) && 1 == $plan->pricing[0]->licenses) {
                ?>
							<?php 
                $pricing = $plan->pricing[0];
                ?>
							<li><label><?php 
                _efs('price', $api->slug);
                ?>
: $<?php 
                if (isset($pricing->annual_price)) {
                    echo $pricing->annual_price . ($plan->is_block_features ? ' / year' : '');
                    $billing_cycle = 'annual';
                } else {
                    if (isset($pricing->monthly_price)) {
                        echo $pricing->monthly_price . ' / mo';
                        $billing_cycle = 'monthly';
                    } else {
                        if (isset($pricing->lifetime_price)) {
                            echo $pricing->lifetime_price;
                            $billing_cycle = 'lifetime';
                        }
                    }
                }
                ?>
</label></li>
						<?php 
            } else {
                ?>
							<?php 
                $first = true;
                foreach ($plan->pricing as $pricing) {
                    ?>
								<li><label><input name="pricing-<?php 
                    echo $plan->id;
                    ?>
" type="radio"
								                  value="<?php 
                    echo $pricing->id;
                    ?>
"<?php 
                    checked($first, true);
                    ?>
><?php 
                    switch ($pricing->licenses) {
                        case '1':
                            _efs('license-single-site', $api->slug);
                            break;
                        case null:
                            _efs('license-unlimited', $api->slug);
                            break;
                        default:
                            printf(__fs('license-x-sites', $api->slug), $pricing->licenses);
                            break;
                    }
                    ?>
 - $<?php 
                    if (isset($pricing->annual_price)) {
                        echo $pricing->annual_price . ($plan->is_block_features ? ' / year' : '');
                        $billing_cycle = 'annual';
                    } else {
                        if (isset($pricing->monthly_price)) {
                            echo $pricing->monthly_price . ' / mo';
                            $billing_cycle = 'monthly';
                        } else {
                            if (isset($pricing->lifetime_price)) {
                                echo $pricing->lifetime_price;
                                $billing_cycle = 'lifetime';
                            }
                        }
                    }
                    ?>
</label></li>
								<?php 
                    $first = false;
                }
                ?>
						<?php 
            }
            ?>
					</ul>
					<?php 
            echo ' <a class="button button-primary right" href="' . esc_url(add_query_arg(array('plugin_id' => $plan->plugin_id, 'plan_id' => $plan->id, 'pricing_id' => $plan->pricing[0]->id, 'billing_cycle' => $billing_cycle), $api->checkout_link)) . '" target="_parent">' . __fs('purchase', $api->slug) . '</a>';
            ?>
				</div>
			<?php 
        }
        ?>
			<?php 
        wp_enqueue_script('jquery');
        ?>
				<script type="text/javascript">
					(function ($) {
						$('.plugin-information-pricing input[type=radio]').click(function () {
							var checkout_url = '<?php 
        echo esc_url_raw(add_query_arg(array('plugin_id' => $plan->plugin_id, 'billing_cycle' => $billing_cycle), $api->checkout_link));
        ?>
&plan_id=' +
								$(this).parents('.plugin-information-pricing').find('h3').attr('data-plan') +
								'&pricing_id=' + $(this).val();

							$('.plugin-information-pricing .button, #plugin-information-footer .button').attr('href', checkout_url);
						});
					})(jQuery);
				</script>
			<?php 
    }
    ?>
			<div>
				<h3><?php 
    _efs('details', $api->slug);
    ?>
</h3>
				<ul>
					<?php 
    if (!empty($api->version)) {
        ?>
						<li><strong><?php 
        _e('Version:');
        ?>
</strong> <?php 
        echo $api->version;
        ?>
</li>
					<?php 
    }
    if (!empty($api->author)) {
        ?>
							<li>
								<strong><?php 
        _e('Author:');
        ?>
</strong> <?php 
        echo links_add_target($api->author, '_blank');
        ?>
							</li>
						<?php 
    }
    if (!empty($api->last_updated)) {
        ?>
							<li><strong><?php 
        _e('Last Updated:');
        ?>
</strong> <span
									title="<?php 
        echo $api->last_updated;
        ?>
">
				<?php 
        printf(__('%s ago'), human_time_diff(strtotime($api->last_updated)));
        ?>
			</span></li>
						<?php 
    }
    if (!empty($api->requires)) {
        ?>
							<li>
								<strong><?php 
        _e('Requires WordPress Version:');
        ?>
</strong> <?php 
        printf(__('%s or higher'), $api->requires);
        ?>
							</li>
						<?php 
    }
    if (!empty($api->tested)) {
        ?>
							<li><strong><?php 
        _e('Compatible up to:');
        ?>
</strong> <?php 
        echo $api->tested;
        ?>
</li>
						<?php 
    }
    if (!empty($api->downloaded)) {
        ?>
							<li>
								<strong><?php 
        _e('Downloaded:');
        ?>
</strong> <?php 
        printf(_n('%s time', '%s times', $api->downloaded), number_format_i18n($api->downloaded));
        ?>
							</li>
						<?php 
    }
    if (!empty($api->slug) && empty($api->external)) {
        ?>
							<li><a target="_blank"
							       href="https://wordpress.org/plugins/<?php 
        echo $api->slug;
        ?>
/"><?php 
        _e('WordPress.org Plugin Page &#187;');
        ?>
</a>
							</li>
						<?php 
    }
    if (!empty($api->homepage)) {
        ?>
							<li><a target="_blank"
							       href="<?php 
        echo esc_url($api->homepage);
        ?>
"><?php 
        _e('Plugin Homepage &#187;');
        ?>
</a>
							</li>
						<?php 
    }
    if (!empty($api->donate_link) && empty($api->contributors)) {
        ?>
							<li><a target="_blank"
							       href="<?php 
        echo esc_url($api->donate_link);
        ?>
"><?php 
        _e('Donate to this plugin &#187;');
        ?>
</a>
							</li>
						<?php 
    }
    ?>
				</ul>
			</div>
			<?php 
    if (!empty($api->rating)) {
        ?>
				<h3><?php 
        _e('Average Rating');
        ?>
</h3>
				<?php 
        wp_star_rating(array('rating' => $api->rating, 'type' => 'percent', 'number' => $api->num_ratings));
        ?>
				<small><?php 
        printf(_n('(based on %s rating)', '(based on %s ratings)', $api->num_ratings), number_format_i18n($api->num_ratings));
        ?>
</small>
			<?php 
    }
    if (!empty($api->ratings) && array_sum((array) $api->ratings) > 0) {
        foreach ($api->ratings as $key => $ratecount) {
            // Avoid div-by-zero.
            $_rating = $api->num_ratings ? $ratecount / $api->num_ratings : 0;
            ?>
						<div class="counter-container">
					<span class="counter-label"><a
							href="https://wordpress.org/support/view/plugin-reviews/<?php 
            echo $api->slug;
            ?>
?filter=<?php 
            echo $key;
            ?>
"
							target="_blank"
							title="<?php 
            echo esc_attr(sprintf(_n('Click to see reviews that provided a rating of %d star', 'Click to see reviews that provided a rating of %d stars', $key), $key));
            ?>
"><?php 
            printf(_n('%d star', '%d stars', $key), $key);
            ?>
</a></span>
					<span class="counter-back">
						<span class="counter-bar" style="width: <?php 
            echo 92 * $_rating;
            ?>
px;"></span>
					</span>
							<span class="counter-count"><?php 
            echo number_format_i18n($ratecount);
            ?>
</span>
						</div>
					<?php 
        }
    }
    if (!empty($api->contributors)) {
        ?>
					<h3><?php 
        _e('Contributors');
        ?>
</h3>
					<ul class="contributors">
						<?php 
        foreach ((array) $api->contributors as $contrib_username => $contrib_profile) {
            if (empty($contrib_username) && empty($contrib_profile)) {
                continue;
            }
            if (empty($contrib_username)) {
                $contrib_username = preg_replace('/^.+\\/(.+)\\/?$/', '\\1', $contrib_profile);
            }
            $contrib_username = sanitize_user($contrib_username);
            if (empty($contrib_profile)) {
                echo "<li><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&amp;s=36' width='18' height='18' />{$contrib_username}</li>";
            } else {
                echo "<li><a href='{$contrib_profile}' target='_blank'><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&amp;s=36' width='18' height='18' />{$contrib_username}</a></li>";
            }
        }
        ?>
					</ul>
					<?php 
        if (!empty($api->donate_link)) {
            ?>
						<a target="_blank"
						   href="<?php 
            echo esc_url($api->donate_link);
            ?>
"><?php 
            _e('Donate to this plugin &#187;');
            ?>
</a>
					<?php 
        }
        ?>
				<?php 
    }
    ?>
		</div>
		<div id="section-holder" class="wrap">
	<?php 
    if (!empty($api->tested) && version_compare(substr($GLOBALS['wp_version'], 0, strlen($api->tested)), $api->tested, '>')) {
        echo '<div class="notice notice-warning"><p>' . '<strong>' . __('Warning:') . '</strong> ' . __('This plugin has not been tested with your current version of WordPress.') . '</p></div>';
    } else {
        if (!empty($api->requires) && version_compare(substr($GLOBALS['wp_version'], 0, strlen($api->requires)), $api->requires, '<')) {
            echo '<div class="notice notice-warning"><p>' . '<strong>' . __('Warning:') . '</strong> ' . __('This plugin has not been marked as compatible with your version of WordPress.') . '</p></div>';
        }
    }
    foreach ((array) $api->sections as $section_name => $content) {
        $content = links_add_base_url($content, 'https://wordpress.org/plugins/' . $api->slug . '/');
        $content = links_add_target($content, '_blank');
        $san_section = esc_attr($section_name);
        $display = $section_name === $section ? 'block' : 'none';
        echo "\t<div id='section-{$san_section}' class='section' style='display: {$display};'>\n";
        echo $content;
        echo "\t</div>\n";
    }
    echo "</div>\n";
    echo "</div>\n";
    echo "</div>\n";
    // #plugin-information-scrollable
    echo "<div id='{$tab}-footer'>\n";
    if (current_user_can('install_plugins') || current_user_can('update_plugins')) {
        if (!empty($api->checkout_link) && isset($api->plans) && 0 < is_array($api->plans)) {
            echo ' <a class="button button-primary right" href="' . esc_url(add_query_arg(array('plugin_id' => $plan->plugin_id, 'plan_id' => $plan->id, 'pricing_id' => $plan->pricing[0]->id, 'billing_cycle' => $billing_cycle), $api->checkout_link)) . '" target="_parent">' . __fs('purchase', $api->slug) . '</a>';
            // @todo Add Cart concept.
            //			echo ' <a class="button right" href="' . $status['url'] . '" target="_parent">' . __( 'Add to Cart' ) . '</a>';
        } else {
            if (!empty($api->download_link)) {
                $status = install_plugin_install_status($api);
                switch ($status['status']) {
                    case 'install':
                        if ($status['url']) {
                            echo '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __('Install Now') . '</a>';
                        }
                        break;
                    case 'update_available':
                        if ($status['url']) {
                            echo '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __('Install Update Now') . '</a>';
                        }
                        break;
                    case 'newer_installed':
                        echo '<a class="button button-primary right disabled">' . sprintf(__('Newer Version (%s) Installed'), $status['version']) . '</a>';
                        break;
                    case 'latest_installed':
                        echo '<a class="button button-primary right disabled">' . __('Latest Version Installed') . '</a>';
                        break;
                }
            }
        }
    }
    echo "</div>\n";
    iframe_footer();
    exit;
}
Ejemplo n.º 10
0
echo $slug;
?>
/assets/icon-256x256.jpg"
						        type="image/png">
							<img src="//wimg.freemius.com/plugin-icon.png"/>
						</object>
					</object>
				</object>
			</object>
		</div>
		<i class="dashicons dashicons-plus fs-second"></i>
		<img class="fs-connect-logo" width="80" height="80" src="//img.freemius.com/connect-logo.png"/>
	</div>
	<div class="fs-content">
		<p><?php 
echo $fs->apply_filters('pending_activation_message', sprintf(__fs('thanks-x', $slug) . '<br>' . __fs('pending-activation-message', $slug), $first_name, '<b>' . $fs->get_plugin_name() . '</b>', '<b>' . $current_user->user_email . '</b>'));
?>
</p>
	</div>
	<div class="fs-actions">
		<?php 
$fs_user = Freemius::_get_user_by_email($current_user->user_email);
?>
		<form method="post" action="<?php 
echo WP_FS__ADDRESS;
?>
/action/service/user/install/">
			<?php 
$params = array('user_firstname' => $current_user->user_firstname, 'user_lastname' => $current_user->user_lastname, 'user_nickname' => $current_user->user_nicename, 'user_email' => $current_user->user_email, 'plugin_slug' => $slug, 'plugin_id' => $fs->get_id(), 'plugin_public_key' => $fs->get_public_key(), 'plugin_version' => $fs->get_plugin_version(), 'return_url' => wp_nonce_url($fs->_get_admin_page_url('', array('fs_action' => $slug . '_activate_new')), $slug . '_activate_new'), 'account_url' => wp_nonce_url($fs->_get_admin_page_url('account', array('fs_action' => 'sync_user')), 'sync_user'), 'site_url' => get_site_url(), 'site_name' => get_bloginfo('name'), 'platform_version' => get_bloginfo('version'), 'language' => get_bloginfo('language'), 'charset' => get_bloginfo('charset'));
?>
			<?php 
Ejemplo n.º 11
0
	<div class="fs-content">
		<p><?php 
$filter = 'connect_message';
$default_optin_message = 'connect-message';
if ($fs->is_plugin_update()) {
    // If Freemius was added on a plugin update, set different
    // opt-in message.
    $default_optin_message = 'connect-message_on-update';
    // If user customized the opt-in message on update, use
    // that message. Otherwise, fallback to regular opt-in
    // custom message if exist.
    if ($fs->has_filter('connect_message_on_update')) {
        $filter = 'connect_message_on_update';
    }
}
echo $fs->apply_filters($filter, sprintf(__fs('hey-x', $slug) . '<br>' . __fs($default_optin_message, $slug), $first_name, '<b>' . $fs->get_plugin_name() . '</b>', '<b>' . $current_user->user_login . '</b>', '<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>', '<a href="' . $freemius_site_url . '" target="_blank">freemius.com</a>'), $first_name, $fs->get_plugin_name(), $current_user->user_login, '<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>', '<a href="' . $freemius_site_url . '" target="_blank">freemius.com</a>');
?>
</p>
	</div>
	<div class="fs-actions">
		<?php 
if ($fs->enable_anonymous()) {
    ?>
			<a href="<?php 
    echo wp_nonce_url($fs->_get_admin_page_url('', array('fs_action' => $slug . '_skip_activation')), $slug . '_skip_activation');
    ?>
"
			   class="button button-secondary" tabindex="2"><?php 
    _efs('skip', $slug);
    ?>
</a>
Ejemplo n.º 12
0
    if (!empty($plan->support_email) || !empty($plan->support_skype) || !empty($plan->support_phone) || true === $plan->is_success_manager) {
        if (!isset($features_plan_map['support'])) {
            $support_feature = new stdClass();
            $support_feature->id = 'support';
            $support_feature->title = __fs('Support', $plugin->slug);
            $features_plan_map[$support_feature->id] = array('feature' => $support_feature, 'plans' => array());
        } else {
            $support_feature = $features_plan_map['support'];
        }
        $features_plan_map[$support_feature->id]['plans'][$plan->id] = $support_feature;
    }
}
// Add updates as a feature for all plans.
$updates_feature = new stdClass();
$updates_feature->id = 'updates';
$updates_feature->title = __fs('unlimited-updates', $plugin->slug);
$features_plan_map[$updates_feature->id] = array('feature' => $updates_feature, 'plans' => array());
foreach ($plans as $plan) {
    $features_plan_map[$updates_feature->id]['plans'][$plan->id] = $updates_feature;
}
?>
<div class="fs-features">
	<table>
		<thead>
		<tr>
			<th></th>
			<?php 
foreach ($plans as $plan) {
    ?>
				<th>
					<?php 
		function showPanel(panelType) {
			$modal.find('.fs-modal-panel').removeClass('active ');
			$modal.find('[data-panel-id="' + panelType + '"]').addClass('active');

			updateButtonLabels();
		}

		function updateButtonLabels() {
			var $deactivateButton = $modal.find('.button-deactivate');

			// Reset the deactivate button's text.
			if ('confirm' === getCurrentPanel()) {
				$deactivateButton.text('<?php 
printf(__fs('deactivation-modal-button-confirm', $slug));
?>
');
			} else {
				$deactivateButton.text('<?php 
printf(__fs('deactivate', $slug));
?>
');
			}
		}

		function getCurrentPanel() {
			return $modal.find('.fs-modal-panel.active').attr('data-panel-id');
		}
	})(jQuery);
</script>
Ejemplo n.º 14
0
// Add newsletter permissions if enabled.
if ($fs->is_permission_requested('newsletter')) {
    $permissions['newsletter'] = array('icon-class' => 'dashicons dashicons-email-alt', 'label' => __fs('permissions-newsletter'), 'desc' => __fs('permissions-newsletter_desc'), 'priority' => 15);
}
// Allow filtering of the permissions list.
$permissions = $fs->apply_filters('permission_list', $permissions);
// Sort by priority.
uasort($permissions, 'fs_sort_by_priority');
if (!empty($permissions)) {
    ?>
			<div class="fs-permissions">
				<?php 
    if ($require_license_key) {
        ?>
					<p class="fs-license-sync-disclaimer"><?php 
        printf(__fs('license-sync-disclaimer', $slug), $freemius_link);
        ?>
</p>
				<?php 
    }
    ?>
				<a class="fs-trigger" href="#" tabindex="1"><?php 
    _efs('what-permissions', $slug);
    ?>
</a>
				<ul><?php 
    foreach ($permissions as $id => $permission) {
        ?>
							<li id="fs-permission-<?php 
        esc_attr_e($id);
        ?>
Ejemplo n.º 15
0
$screenshots = $VARS['screenshots'];
?>
<ol>
	<?php 
$i = 0;
foreach ($screenshots as $s => $url) {
    ?>
			<?php 
    // Relative URLs are replaced with WordPress.org base URL
    // therefore we need to set absolute URLs.
    $url = 'http' . (WP_FS__IS_HTTPS ? 's' : '') . ':' . $url;
    ?>
			<li>
				<a href="<?php 
    echo $url;
    ?>
" title="<?php 
    printf(__fs('view-full-size-x'), $i);
    ?>
"><img
						src="<?php 
    echo $url;
    ?>
"></a>
			</li>
			<?php 
    $i++;
}
?>
</ol>
Ejemplo n.º 16
0
function nf_fs_custom_message($message, $user_first_name, $plugin_title, $user_login, $site_link, $freemius_link)
{
    return sprintf(__fs('hey-x') . '<br>' . __('Please help us improve %2$s! If you opt-in, some data about your installation of %2$s will be sent to %5$s (this does NOT include your submissions). If you skip this, that\'s okay! %2$s will still work just fine.', 'ninja-forms'), $user_first_name, '<b>' . $plugin_title . '</b>', '<b>' . $user_login . '</b>', $site_link, $freemius_link);
}
/**
 * Leverage backtrace to find caller plugin main file path.
 *
 * @author Vova Feldman (@svovaf)
 * @since  1.0.6
 *
 * @return string
 */
function fs_find_caller_plugin_file()
{
    /**
     * All the code below will be executed once on activation.
     * If the user changes the main plugin's file name, the file_exists()
     * will catch it.
     */
    if (!function_exists('get_plugins')) {
        require_once ABSPATH . 'wp-admin/includes/plugin.php';
    }
    $all_plugins = get_plugins();
    $all_plugins_paths = array();
    // Get active plugin's main files real full names (might be symlinks).
    foreach ($all_plugins as $relative_path => &$data) {
        $all_plugins_paths[] = fs_normalize_path(realpath(WP_PLUGIN_DIR . '/' . $relative_path));
    }
    $plugin_file = null;
    for ($i = 1, $bt = debug_backtrace(), $len = count($bt); $i < $len; $i++) {
        if (in_array(fs_normalize_path($bt[$i]['file']), $all_plugins_paths)) {
            $plugin_file = $bt[$i]['file'];
            break;
        }
    }
    if (is_null($plugin_file)) {
        // Throw an error to the developer in case of some edge case dev environment.
        wp_die(__fs('failed-finding-main-path'), __fs('error'), array('back_link' => true));
    }
    return $plugin_file;
}
Ejemplo n.º 18
0
    echo $log['function'];
    ?>
</code></b></td>
				<td>
					<?php 
    printf('<a href="#" style="color: darkorange !important;" onclick="jQuery(this).parent().find(\'div\').toggle(); return false;"><nobr>%s</nobr></a>', substr($log['msg'], 0, 32) . (32 < strlen($log['msg']) ? '...' : ''));
    ?>
					<div style="display: none;">
						<b style="color: darkorange;"><?php 
    echo $log['msg'];
    ?>
</b>
					</div>
				</td>
				<td><?php 
    if (isset($log['file'])) {
        echo substr($log['file'], $log['logger']->get_file()) . ':' . $log['line'] . ')';
    }
    ?>
</td>
				<td><?php 
    echo number_format(100 * ($log['timestamp'] - WP_FS__SCRIPT_START_TIME), 2) . ' ' . __fs('ms');
    ?>
</td>
			</tr>
			<?php 
    $i++;
}
?>
	</tbody>
</table>
Ejemplo n.º 19
0
							<div class="fs-inner">
								<ul>
									<li class="fs-card-banner"
									    style="background-image: url('<?php 
        echo $addon->info->card_banner_url;
        ?>
');"></li>
<!--									<li class="fs-tag"></li>-->
									<li class="fs-title"><?php 
        echo $addon->title;
        ?>
</li>
									<li class="fs-offer">
									<span
										class="fs-price"><?php 
        echo 0 == $price ? __fs('free', $slug) : '$' . number_format($price, 2) . ($plan->has_trial() ? ' - ' . __fs('trial', $slug) : '');
        ?>
</span>
									</li>
									<li class="fs-description"><?php 
        echo !empty($addon->info->short_description) ? $addon->info->short_description : 'SHORT DESCRIPTION';
        ?>
</li>
									<li class="fs-cta"><a class="button"><?php 
        _efs('view-details', $slug);
        ?>
</a></li>
								</ul>
							</div>
						</li>
					<?php 
Ejemplo n.º 20
0
}
?>
">
	<div class="fs-visual">
		<b class="fs-site-icon"><i class="dashicons dashicons-wordpress"></i></b>
		<i class="dashicons dashicons-plus fs-first"></i>
		<?php 
$vars = array('slug' => $slug);
fs_require_once_template('plugin-icon.php', $vars);
?>
		<i class="dashicons dashicons-plus fs-second"></i>
		<img class="fs-connect-logo" width="80" height="80" src="//img.freemius.com/connect-logo.png"/>
	</div>
	<div class="fs-content">
		<p><?php 
echo $fs->apply_filters('connect_message', sprintf(__fs('hey-x') . '<br>' . __fs('connect-message'), $first_name, '<b>' . $fs->get_plugin_name() . '</b>', '<b>' . $current_user->user_login . '</b>', '<a href="' . get_site_url() . '" target="_blank">' . $site_url . '</a>', '<a href="https://freemius.com/wordpress/" target="_blank">freemius.com</a>'));
?>
</p>
	</div>
	<div class="fs-actions">
		<?php 
if ($fs->enable_anonymous()) {
    ?>
			<a href="<?php 
    echo wp_nonce_url($fs->_get_admin_page_url('', array('fs_action' => $slug . '_skip_activation')), $slug . '_skip_activation');
    ?>
"
			   class="button button-secondary" tabindex="2"><?php 
    _efs('skip');
    ?>
</a>
Ejemplo n.º 21
0
        ?>
							<div class="fs-inner">
								<ul>
									<li class="fs-card-banner"
									    style="background-image: url('<?php 
        echo $addon->info->card_banner_url;
        ?>
');"></li>
									<li class="fs-title"><?php 
        echo $addon->title;
        ?>
</li>
									<li class="fs-offer">
									<span
										class="fs-price"><?php 
        echo 0 == $price ? __fs('free', $slug) : '$' . number_format($price, 2);
        ?>
</span>
									</li>
									<li class="fs-description"><?php 
        echo !empty($addon->info->short_description) ? $addon->info->short_description : 'SHORT DESCRIPTION';
        ?>
</li>
								</ul>
							</div>
						</li>
					<?php 
    }
    ?>
				</ul>
			<?php 
							#section-description .fs-screenshots <?php 
        echo ".fs-screenshot-{$i}";
        ?>
							{
								background-image: url('<?php 
        echo $url;
        ?>
');
							}
						</style>
						<a href="<?php 
        echo $url;
        ?>
"
						   title="<?php 
        printf(__fs('view-full-size-x', $plugin->slug), $i);
        ?>
"
						   class="fs-screenshot-<?php 
        echo $i;
        ?>
"></a>
					</li>
					<?php 
        $i++;
    }
    ?>
		</ul>
	</div>
<?php 
}
Ejemplo n.º 23
0
            if (WP_FS__SCRIPT_START_TIME < $cron['last']) {
                printf(__fs('in-x'), $human_diff);
            } else {
                printf(__fs('x-ago'), $human_diff);
            }
            //							echo ' ' . $cron['last'];
        }
        ?>
</td>
				<td><?php 
        if (is_numeric($cron['next'])) {
            $diff = abs(WP_FS__SCRIPT_START_TIME - $cron['next']);
            $human_diff = $diff < MINUTE_IN_SECONDS ? $diff . ' ' . __fs('sec') : human_time_diff(WP_FS__SCRIPT_START_TIME, $cron['next']);
            if (WP_FS__SCRIPT_START_TIME < $cron['next']) {
                printf(__fs('in-x'), $human_diff);
            } else {
                printf(__fs('x-ago'), $human_diff);
            }
        }
        ?>
</td>
			</tr>
		<?php 
    }
    ?>
	<?php 
}
?>
	</tbody>
</table>
     */
    $after_license_activation_url = $fs->get_account_url();
}
$cant_find_license_key_text = __fs('cant-find-license-key', $slug);
$message_above_input_field = __fs('activate-license-message', $slug);
$message_below_input_field = '';
$header_title = __fs($fs->is_free_plan() ? 'activate-license' : 'update-license', $slug);
if ($fs->is_registered()) {
    $activate_button_text = $header_title;
} else {
    $freemius_site_url = $fs->has_paid_plan() ? 'https://freemius.com/wordpress/' : 'https://freemius.com/wordpress/usage-tracking/';
    $freemius_link = '<a href="' . $freemius_site_url . '" target="_blank" tabindex="0">freemius.com</a>';
    $message_below_input_field = sprintf(__fs('license-sync-disclaimer', $slug), $freemius_link);
    $activate_button_text = __fs('agree-activate-license', $slug);
}
$license_key_text = __fs('license-key', $slug);
$modal_content_html = <<<HTML
\t<div class="notice notice-error inline license-activation-message"><p></p></div>
\t<p>{$message_above_input_field}</p>
\t<input class="license_key" type="text" placeholder="{$license_key_text}" tabindex="1" />
\t<a class="show-license-resend-modal show-license-resend-modal-{$slug}" href="!#" tabindex="2">{$cant_find_license_key_text}</a>
\t<p>{$message_below_input_field}</p>
HTML;
fs_enqueue_local_style('dialog-boxes', '/admin/dialog-boxes.css');
?>
<script type="text/javascript">
(function( $ ) {
	$( document ).ready(function() {
		var modalContentHtml = <?php 
echo json_encode($modal_content_html);
?>
Ejemplo n.º 25
0

<div id="fs_connect" class="wrap<?php 
if (!$fs->enable_anonymous()) {
    echo ' fs-anonymous-disabled';
}
?>
"

	style="width: 75%;"

>

	<div class="fs-content">
		<p><?php 
echo $fs->apply_filters('connect_message', sprintf(__fs('cfc_welcome') . '</br></br>' . __fs('cfc_connect_allow') . '</br></br>' . __fs('cfc_connect_customize') . '</br></br>', $first_name, '<b>' . $fs->get_plugin_name() . '</b>', '<a href="' . get_site_url() . '" target="_blank">' . $site_url . '</a>'));
?>
</p>
	</div>
	<div class="fs-actions">
		<?php 
if ($fs->enable_anonymous()) {
    ?>
			<a href="<?php 
    echo wp_nonce_url($fs->_get_admin_page_url('', array('fs_action' => $slug . '_skip_activation')), $slug . '_skip_activation');
    ?>
"
			   class="button button-secondary" tabindex="2"><?php 
    _efs('skip');
    ?>
</a>
            
            function showPanel( panelType ) {
                $modal.find( '.fs-modal-panel' ).removeClass( 'active ');
                $modal.find( '[data-panel-id="' + panelType + '"]' ).addClass( 'active' );
				
				updateButtonLabels();
            }
			
			function updateButtonLabels() {
				var $deactivateButton = $modal.find( '.button-deactivate' );
				
				// Reset the deactivate button's text.
				if ( 'confirm' === getCurrentPanel() ) {
					$deactivateButton.text( '<?php 
printf(__fs('deactivation-modal-button-confirm'));
?>
' );
				} else {
					$deactivateButton.text( '<?php 
printf(__fs('deactivation-modal-button-deactivate'));
?>
' );
				}
			}
			
			function getCurrentPanel() {
                return $modal.find( '.fs-modal-panel.active' ).attr( 'data-panel-id' );
			}
		})( jQuery );
	</script>
Ejemplo n.º 27
0
                ?>
						<?php 
            }
            ?>
					</td>
				<?php 
        }
        ?>
				<?php 
        if (defined('WP_FS__DEV_MODE') && WP_FS__DEV_MODE) {
            ?>
					<td>
						<!-- Optional Delete Action -->
						<?php 
            if ($is_addon_activated) {
                fs_ui_action_button($slug, 'account', 'delete_account', __fs('delete', $slug), array('plugin_id' => $addon_id), false);
            }
            ?>
					</td>
				<?php 
        }
        ?>
				</tr>
				<?php 
        $odd = !$odd;
    }
    ?>
		</tbody>
		</table>
		</div>
		</div>
    /**
     * Display plugin information in dialog box form.
     *
     * Based on core install_plugin_information() function.
     *
     * @author Vova Feldman (@svovaf)
     * @since  1.0.6
     */
    function install_plugin_information()
    {
        global $tab;
        if (empty($_REQUEST['plugin'])) {
            return;
        }
        $args = array('slug' => wp_unslash($_REQUEST['plugin']), 'is_ssl' => is_ssl(), 'fields' => array('banners' => true, 'reviews' => true, 'downloaded' => false, 'active_installs' => true));
        if (is_array($args)) {
            $args = (object) $args;
        }
        if (!isset($args->per_page)) {
            $args->per_page = 24;
        }
        if (!isset($args->locale)) {
            $args->locale = get_locale();
        }
        $api = apply_filters('fs_plugins_api', false, 'plugin_information', $args);
        if (is_wp_error($api)) {
            wp_die($api);
        }
        $plugins_allowedtags = array('a' => array('href' => array(), 'title' => array(), 'target' => array(), 'class' => array()), 'style' => array(), 'abbr' => array('title' => array()), 'acronym' => array('title' => array()), 'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(), 'div' => array('class' => array()), 'span' => array('class' => array()), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array('class' => array()), 'i' => array('class' => array()), 'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(), 'img' => array('src' => array(), 'class' => array(), 'alt' => array()));
        $plugins_section_titles = array('description' => _x('Description', 'Plugin installer section title'), 'installation' => _x('Installation', 'Plugin installer section title'), 'faq' => _x('FAQ', 'Plugin installer section title'), 'screenshots' => _x('Screenshots', 'Plugin installer section title'), 'changelog' => _x('Changelog', 'Plugin installer section title'), 'reviews' => _x('Reviews', 'Plugin installer section title'), 'other_notes' => _x('Other Notes', 'Plugin installer section title'));
        // Sanitize HTML
        //		foreach ( (array) $api->sections as $section_name => $content ) {
        //			$api->sections[$section_name] = wp_kses( $content, $plugins_allowedtags );
        //		}
        foreach (array('version', 'author', 'requires', 'tested', 'homepage', 'downloaded', 'slug') as $key) {
            if (isset($api->{$key})) {
                $api->{$key} = wp_kses($api->{$key}, $plugins_allowedtags);
            }
        }
        // Add after $api->slug is ready.
        $plugins_section_titles['features'] = __fs('features-and-pricing', $api->slug);
        $_tab = esc_attr($tab);
        $section = isset($_REQUEST['section']) ? wp_unslash($_REQUEST['section']) : 'description';
        // Default to the Description tab, Do not translate, API returns English.
        if (empty($section) || !isset($api->sections[$section])) {
            $section_titles = array_keys((array) $api->sections);
            $section = array_shift($section_titles);
        }
        iframe_header(__('Plugin Install'));
        $_with_banner = '';
        //	var_dump($api->banners);
        if (!empty($api->banners) && (!empty($api->banners['low']) || !empty($api->banners['high']))) {
            $_with_banner = 'with-banner';
            $low = empty($api->banners['low']) ? $api->banners['high'] : $api->banners['low'];
            $high = empty($api->banners['high']) ? $api->banners['low'] : $api->banners['high'];
            ?>
				<style type="text/css">
					#plugin-information-title.with-banner
					{
						background-image: url( <?php 
            echo esc_url($low);
            ?>
 );
					}

					@media only screen and ( -webkit-min-device-pixel-ratio: 1.5 )
					{
						#plugin-information-title.with-banner
						{
							background-image: url( <?php 
            echo esc_url($high);
            ?>
 );
						}
					}
				</style>
			<?php 
        }
        echo '<div id="plugin-information-scrollable">';
        echo "<div id='{$_tab}-title' class='{$_with_banner}'><div class='vignette'></div><h2>{$api->name}</h2></div>";
        echo "<div id='{$_tab}-tabs' class='{$_with_banner}'>\n";
        foreach ((array) $api->sections as $section_name => $content) {
            if ('reviews' === $section_name && (empty($api->ratings) || 0 === array_sum((array) $api->ratings))) {
                continue;
            }
            if (isset($plugins_section_titles[$section_name])) {
                $title = $plugins_section_titles[$section_name];
            } else {
                $title = ucwords(str_replace('_', ' ', $section_name));
            }
            $class = $section_name === $section ? ' class="current"' : '';
            $href = add_query_arg(array('tab' => $tab, 'section' => $section_name));
            $href = esc_url($href);
            $san_section = esc_attr($section_name);
            echo "\t<a name='{$san_section}' href='{$href}' {$class}>{$title}</a>\n";
        }
        echo "</div>\n";
        ?>
		<div id="<?php 
        echo $_tab;
        ?>
-content" class='<?php 
        echo $_with_banner;
        ?>
'>
			<div class="fyi">
			<?php 
        if ($api->is_paid) {
            ?>
				<?php 
            if (isset($api->plans)) {
                ?>
					<div class="plugin-information-pricing">
					<?php 
                foreach ($api->plans as $plan) {
                    ?>
						<?php 
                    /**
                     * @var FS_Plugin_Plan $plan
                     */
                    ?>
						<?php 
                    $first_pricing = $plan->pricing[0];
                    ?>
						<?php 
                    $is_multi_cycle = $first_pricing->is_multi_cycle();
                    ?>
						<div class="fs-plan<?php 
                    if (!$is_multi_cycle) {
                        echo ' fs-single-cycle';
                    }
                    ?>
" data-plan-id="<?php 
                    echo $plan->id;
                    ?>
">
							<h3 data-plan="<?php 
                    echo $plan->id;
                    ?>
"><?php 
                    printf(__fs('x-plan', $api->slug), $plan->title);
                    ?>
</h3>
							<?php 
                    $has_annual = $first_pricing->has_annual();
                    ?>
							<?php 
                    $has_monthly = $first_pricing->has_monthly();
                    ?>
							<div class="nav-tab-wrapper">
								<?php 
                    $billing_cycles = array('monthly', 'annual', 'lifetime');
                    ?>
								<?php 
                    $i = 0;
                    foreach ($billing_cycles as $cycle) {
                        ?>
										<?php 
                        $prop = "{$cycle}_price";
                        if (isset($first_pricing->{$prop})) {
                            ?>
											<?php 
                            $is_featured = 'annual' === $cycle && $is_multi_cycle;
                            ?>
											<?php 
                            $prices = array();
                            foreach ($plan->pricing as $pricing) {
                                if (isset($pricing->{$prop})) {
                                    $prices[] = array('id' => $pricing->id, 'licenses' => $pricing->licenses, 'price' => $pricing->{$prop});
                                }
                            }
                            ?>
											<a class="nav-tab" data-billing-cycle="<?php 
                            echo $cycle;
                            ?>
"
											   data-pricing="<?php 
                            esc_attr_e(json_encode($prices));
                            ?>
">
												<?php 
                            if ($is_featured) {
                                ?>
													<label>&#9733; <?php 
                                _efs('best', $api->slug);
                                ?>
 &#9733;</label>
												<?php 
                            }
                            ?>
												<?php 
                            _efs($cycle, $api->slug);
                            ?>
											</a>
										<?php 
                        }
                        ?>
										<?php 
                        $i++;
                    }
                    ?>
								<?php 
                    wp_enqueue_script('jquery');
                    ?>
								<script type="text/javascript">
									(function ($, undef) {
										var
											_formatBillingFrequency = function (cycle) {
												switch (cycle) {
													case 'monthly':
														return '<?php 
                    printf(__fs('billed-x', $api->slug), __fs('monthly', $api->slug));
                    ?>
';
													case 'annual':
														return '<?php 
                    printf(__fs('billed-x', $api->slug), __fs('annually', $api->slug));
                    ?>
';
													case 'lifetime':
														return '<?php 
                    printf(__fs('billed-x', $api->slug), __fs('once', $api->slug));
                    ?>
';
												}
											},
											_formatLicensesTitle = function (pricing) {
												switch (pricing.licenses) {
													case 1:
														return '<?php 
                    _efs('license-single-site', $api->slug);
                    ?>
';
													case null:
														return '<?php 
                    _efs('license-unlimited', $api->slug);
                    ?>
';
													default:
														return '<?php 
                    _efs('license-x-sites', $api->slug);
                    ?>
'.replace('%s', pricing.licenses);
												}
											},
											_formatPrice = function (pricing, cycle, multipleLicenses) {
												if (undef === multipleLicenses)
													multipleLicenses = true;

												var priceCycle;
												switch (cycle) {
													case 'monthly':
														priceCycle = ' / <?php 
                    _efs('mo', $api->slug);
                    ?>
';
														break;
													case 'lifetime':
														priceCycle = '';
														break;
													case 'annual':
													default:
														priceCycle = ' / <?php 
                    _efs('year', $api->slug);
                    ?>
';
														break;
												}

												if (!multipleLicenses && 1 == pricing.licenses) {
													return '$' + pricing.price + priceCycle;
												}

												return _formatLicensesTitle(pricing) + ' - <var class="fs-price">$' + pricing.price + priceCycle + '</var>';
											},
											_checkoutUrl = function (plan, pricing, cycle) {
												return '<?php 
                    echo esc_url_raw(remove_query_arg('billing_cycle', add_query_arg(array('plugin_id' => $plan->plugin_id), $api->checkout_link)));
                    ?>
' +
												'&plan_id=' + plan +
												'&pricing_id=' + pricing +
												'&billing_cycle=' + cycle<?php 
                    if ($plan->has_trial()) {
                        echo " + '&trial=true'";
                    }
                    ?>
;
											},
											_updateCtaUrl = function (plan, pricing, cycle) {
												$('.plugin-information-pricing .button, #plugin-information-footer .button').attr('href', _checkoutUrl(plan, pricing, cycle));
											};

										$(document).ready(function () {
											var $plan = $('.plugin-information-pricing .fs-plan[data-plan-id=<?php 
                    echo $plan->id;
                    ?>
]');
											$plan.find('input[type=radio]').live('click', function () {
												_updateCtaUrl(
													$plan.attr('data-plan-id'),
													$(this).val(),
													$plan.find('.nav-tab-active').attr('data-billing-cycle')
												);

												$plan.find('.fs-trial-terms .fs-price').html(
													$(this).parents('label').find('.fs-price').html()
												);
											});

											$plan.find('.nav-tab').click(function () {
												if ($(this).hasClass('nav-tab-active'))
													return;

												var $this = $(this),
												    billingCycle = $this.attr('data-billing-cycle'),
												    pricing = JSON.parse($this.attr('data-pricing')),
												    $pricesList = $this.parents('.fs-plan').find('.fs-pricing-body .fs-licenses'),
												    html = '';

												// Un-select previously selected tab.
												$plan.find('.nav-tab').removeClass('nav-tab-active');

												// Select current tab.
												$this.addClass('nav-tab-active');

												// Render licenses prices.
												if (1 == pricing.length) {
													html = '<li><label><?php 
                    _efs('price', $api->slug);
                    ?>
: ' + _formatPrice(pricing[0], billingCycle, false) + '</label></li>';
												} else {
													for (var i = 0; i < pricing.length; i++) {
														html += '<li><label><input name="pricing-<?php 
                    echo $plan->id;
                    ?>
" type="radio" value="' + pricing[i].id + '">' + _formatPrice(pricing[i], billingCycle) + '</label></li>';
													}
												}
												$pricesList.html(html);

												if (1 < pricing.length) {
													// Select first license option.
													$pricesList.find('li:first input').click();
												}
												else {
													_updateCtaUrl(
														$plan.attr('data-plan-id'),
														pricing[0].id,
														billingCycle
													);
												}

												// Update billing frequency.
												$plan.find('.fs-billing-frequency').html(_formatBillingFrequency(billingCycle));

												if ('annual' === billingCycle) {
													$plan.find('.fs-annual-discount').show();
												} else {
													$plan.find('.fs-annual-discount').hide();
												}
											});

											<?php 
                    if ($has_annual) {
                        ?>
											// Select annual by default.
											$plan.find('.nav-tab[data-billing-cycle=annual]').click();
											<?php 
                    } else {
                        ?>
											// Select first tab.
											$plan.find('.nav-tab:first').click();
											<?php 
                    }
                    ?>
										});
									}(jQuery));
								</script>
							</div>
							<div class="fs-pricing-body">
								<span class="fs-billing-frequency"></span>
								<?php 
                    $annual_discount = $has_annual && $has_monthly ? $plan->pricing[0]->annual_discount_percentage() : 0;
                    ?>
								<?php 
                    if ($annual_discount > 0) {
                        ?>
									<span
										class="fs-annual-discount"><?php 
                        printf(__fs('save-x', $api->slug), $annual_discount . '%');
                        ?>
</span>
								<?php 
                    }
                    ?>
								<ul class="fs-licenses">
								</ul>
								<?php 
                    echo $this->get_plugin_cta($api, $plan);
                    ?>
								<div style="clear:both"></div>
								<?php 
                    if ($plan->has_trial()) {
                        ?>
									<?php 
                        $trial_period = $this->get_trial_period($plan);
                        ?>
									<ul class="fs-trial-terms">
										<li>
											<i class="dashicons dashicons-yes"></i><?php 
                        printf(__fs('no-commitment-x', $api->slug), $trial_period);
                        ?>
										</li>
										<li>
											<i class="dashicons dashicons-yes"></i><?php 
                        printf(__fs('after-x-pay-as-little-y', $api->slug), $trial_period, '<var class="fs-price">' . $this->get_price_tag($plan, $plan->pricing[0]) . '</var>');
                        ?>
										</li>
									</ul>
								<?php 
                    }
                    ?>
							</div>
						</div>
						</div>
					<?php 
                }
                ?>
				<?php 
            }
            ?>
			<?php 
        }
        ?>
			<div>
				<h3><?php 
        _efs('details', $api->slug);
        ?>
</h3>
				<ul>
					<?php 
        if (!empty($api->version)) {
            ?>
						<li><strong><?php 
            _e('Version:');
            ?>
</strong> <?php 
            echo $api->version;
            ?>
</li>
					<?php 
        }
        if (!empty($api->author)) {
            ?>
							<li>
								<strong><?php 
            _e('Author:');
            ?>
</strong> <?php 
            echo links_add_target($api->author, '_blank');
            ?>
							</li>
						<?php 
        }
        if (!empty($api->last_updated)) {
            ?>
							<li><strong><?php 
            _e('Last Updated:');
            ?>
</strong> <span
									title="<?php 
            echo $api->last_updated;
            ?>
">
				<?php 
            printf(__('%s ago'), human_time_diff(strtotime($api->last_updated)));
            ?>
			</span></li>
						<?php 
        }
        if (!empty($api->requires)) {
            ?>
							<li>
								<strong><?php 
            _e('Requires WordPress Version:');
            ?>
</strong> <?php 
            printf(__('%s or higher'), $api->requires);
            ?>
							</li>
						<?php 
        }
        if (!empty($api->tested)) {
            ?>
							<li><strong><?php 
            _e('Compatible up to:');
            ?>
</strong> <?php 
            echo $api->tested;
            ?>
							</li>
						<?php 
        }
        if (!empty($api->downloaded)) {
            ?>
							<li>
								<strong><?php 
            _e('Downloaded:');
            ?>
</strong> <?php 
            printf(_n('%s time', '%s times', $api->downloaded), number_format_i18n($api->downloaded));
            ?>
							</li>
						<?php 
        }
        if (!empty($api->slug) && empty($api->external)) {
            ?>
							<li><a target="_blank"
							       href="https://wordpress.org/plugins/<?php 
            echo $api->slug;
            ?>
/"><?php 
            _e('WordPress.org Plugin Page &#187;');
            ?>
</a>
							</li>
						<?php 
        }
        if (!empty($api->homepage)) {
            ?>
							<li><a target="_blank"
							       href="<?php 
            echo esc_url($api->homepage);
            ?>
"><?php 
            _e('Plugin Homepage &#187;');
            ?>
</a>
							</li>
						<?php 
        }
        if (!empty($api->donate_link) && empty($api->contributors)) {
            ?>
							<li><a target="_blank"
							       href="<?php 
            echo esc_url($api->donate_link);
            ?>
"><?php 
            _e('Donate to this plugin &#187;');
            ?>
</a>
							</li>
						<?php 
        }
        ?>
				</ul>
			</div>
			<?php 
        if (!empty($api->rating)) {
            ?>
				<h3><?php 
            _e('Average Rating');
            ?>
</h3>
				<?php 
            wp_star_rating(array('rating' => $api->rating, 'type' => 'percent', 'number' => $api->num_ratings));
            ?>
				<small><?php 
            printf(_n('(based on %s rating)', '(based on %s ratings)', $api->num_ratings), number_format_i18n($api->num_ratings));
            ?>
</small>
			<?php 
        }
        if (!empty($api->ratings) && array_sum((array) $api->ratings) > 0) {
            foreach ($api->ratings as $key => $ratecount) {
                // Avoid div-by-zero.
                $_rating = $api->num_ratings ? $ratecount / $api->num_ratings : 0;
                ?>
						<div class="counter-container">
					<span class="counter-label"><a
							href="https://wordpress.org/support/view/plugin-reviews/<?php 
                echo $api->slug;
                ?>
?filter=<?php 
                echo $key;
                ?>
"
							target="_blank"
							title="<?php 
                echo esc_attr(sprintf(_n('Click to see reviews that provided a rating of %d star', 'Click to see reviews that provided a rating of %d stars', $key), $key));
                ?>
"><?php 
                printf(_n('%d star', '%d stars', $key), $key);
                ?>
</a></span>
					<span class="counter-back">
						<span class="counter-bar" style="width: <?php 
                echo 92 * $_rating;
                ?>
px;"></span>
					</span>
							<span class="counter-count"><?php 
                echo number_format_i18n($ratecount);
                ?>
</span>
						</div>
					<?php 
            }
        }
        if (!empty($api->contributors)) {
            ?>
					<h3><?php 
            _e('Contributors');
            ?>
</h3>
					<ul class="contributors">
						<?php 
            foreach ((array) $api->contributors as $contrib_username => $contrib_profile) {
                if (empty($contrib_username) && empty($contrib_profile)) {
                    continue;
                }
                if (empty($contrib_username)) {
                    $contrib_username = preg_replace('/^.+\\/(.+)\\/?$/', '\\1', $contrib_profile);
                }
                $contrib_username = sanitize_user($contrib_username);
                if (empty($contrib_profile)) {
                    echo "<li><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&amp;s=36' width='18' height='18' />{$contrib_username}</li>";
                } else {
                    echo "<li><a href='{$contrib_profile}' target='_blank'><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&amp;s=36' width='18' height='18' />{$contrib_username}</a></li>";
                }
            }
            ?>
					</ul>
					<?php 
            if (!empty($api->donate_link)) {
                ?>
						<a target="_blank"
						   href="<?php 
                echo esc_url($api->donate_link);
                ?>
"><?php 
                _e('Donate to this plugin &#187;');
                ?>
</a>
					<?php 
            }
            ?>
				<?php 
        }
        ?>
			</div>
			<div id="section-holder" class="wrap">
	<?php 
        if (!empty($api->tested) && version_compare(substr($GLOBALS['wp_version'], 0, strlen($api->tested)), $api->tested, '>')) {
            echo '<div class="notice notice-warning"><p>' . '<strong>' . __('Warning:') . '</strong> ' . __('This plugin has not been tested with your current version of WordPress.') . '</p></div>';
        } else {
            if (!empty($api->requires) && version_compare(substr($GLOBALS['wp_version'], 0, strlen($api->requires)), $api->requires, '<')) {
                echo '<div class="notice notice-warning"><p>' . '<strong>' . __('Warning:') . '</strong> ' . __('This plugin has not been marked as compatible with your version of WordPress.') . '</p></div>';
            }
        }
        foreach ((array) $api->sections as $section_name => $content) {
            $content = links_add_base_url($content, 'https://wordpress.org/plugins/' . $api->slug . '/');
            $content = links_add_target($content, '_blank');
            $san_section = esc_attr($section_name);
            $display = $section_name === $section ? 'block' : 'none';
            if ('description' === $section_name && (!$api->external && $api->wp_org_missing || $api->external && $api->fs_missing)) {
                $missing_notice = array('type' => 'error', 'id' => md5(microtime()), 'message' => __fs($api->is_paid ? 'paid-addon-not-deployed' : 'free-addon-not-deployed', $api->slug));
                fs_require_template('admin-notice.php', $missing_notice);
            }
            echo "\t<div id='section-{$san_section}' class='section' style='display: {$display};'>\n";
            echo $content;
            echo "\t</div>\n";
        }
        echo "</div>\n";
        echo "</div>\n";
        echo "</div>\n";
        // #plugin-information-scrollable
        echo "<div id='{$tab}-footer'>\n";
        echo $this->get_plugin_cta($api);
        echo "</div>\n";
        iframe_footer();
        exit;
    }
Ejemplo n.º 29
0
 /**
  * Helper function that returns the final steps for the upgrade completion.
  *
  * If the module is already running the premium code, returns an empty string.
  *
  * @author Vova Feldman (@svovaf)
  * @since  1.2.1
  *
  * @param string $plan_title
  *
  * @return string
  */
 private function get_complete_upgrade_instructions($plan_title = '')
 {
     if ($this->is_premium()) {
         return '';
     }
     if (empty($plan_title)) {
         $plan_title = $this->_site->plan->title;
     }
     return sprintf(' %s: <ol><li>%s.</li><li>%s.</li><li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>', __fs('follow-steps-to-complete-upgrade', $this->_slug), $this->_get_latest_download_link(sprintf(__fs('download-latest-x-version', $this->_slug), $plan_title)), __fs('deactivate-free-version', $this->_slug), __fs('upload-and-activate', $this->_slug), '//bit.ly/upload-wp-plugin', __fs('howto-upload-activate', $this->_slug));
 }
Ejemplo n.º 30
0
/**
 * Customize the opt-in message.
 *
 * @author Vova Feldman (@svovaf)
 * @since 2.1.32
 *
 * @param string $message
 * @param string $user_first_name
 * @param string $plugin_title
 * @param string $user_login
 * @param string $site_link
 * @param string $freemius_link
 *
 * @return string
 */
function ngg_fs_custom_connect_message($message, $user_first_name, $plugin_title, $user_login, $site_link, $freemius_link)
{
    return sprintf(__fs('hey-x') . '<br>' . __('Allow %6$s to collect some usage data with %5$s to make the plugin even more awesome. If you skip this, that\'s okay! %2$s will still work just fine.', 'nggallery'), $user_first_name, '<b>' . __('NextGEN Gallery', 'nggallery') . '</b>', '<b>' . $user_login . '</b>', $site_link, $freemius_link, '<b>' . __('Imagely', 'nggallery') . '</b>');
}