get_module() 공개 정적인 메소드

Load module data from module file. Headers differ from WordPress plugin headers to avoid them being identified as standalone plugins on the WordPress plugins page.
public static get_module ( $module )
 protected static function format_module($module_slug)
 {
     $module_data = Jetpack::get_module($module_slug);
     $module = array();
     $module['id'] = $module_slug;
     $module['active'] = Jetpack::is_module_active($module_slug);
     $module['name'] = $module_data['name'];
     $module['short_description'] = $module_data['description'];
     $module['sort'] = $module_data['sort'];
     $module['introduced'] = $module_data['introduced'];
     $module['changed'] = $module_data['changed'];
     $module['free'] = $module_data['free'];
     $module['module_tags'] = $module_data['module_tags'];
     // Fetch the HTML formatted long description
     ob_start();
     if (Jetpack::is_active() && has_action('jetpack_module_more_info_connected_' . $module_slug)) {
         /** This action is documented in class.jetpack-modules-list-table.php */
         do_action('jetpack_module_more_info_connected_' . $module_slug);
     } else {
         /** This action is documented in class.jetpack-modules-list-table.php */
         do_action('jetpack_module_more_info_' . $module_slug);
     }
     $module['description'] = ob_get_clean();
     return $module;
 }
 function get_modules()
 {
     include_once JETPACK__PLUGIN_DIR . 'modules/module-info.php';
     $available_modules = $this->jetpack->get_available_modules();
     $active_modules = $this->jetpack->get_active_modules();
     $modules = array();
     $jetpack_active = Jetpack::is_active() || Jetpack::is_development_mode();
     foreach ($available_modules as $module) {
         if ($module_array = $this->jetpack->get_module($module)) {
             $short_desc = apply_filters('jetpack_short_module_description', $module_array['description'], $module);
             // Fix: correct multibyte strings truncate with checking for mbstring extension
             $short_desc_trunc = function_exists('mb_strlen') ? mb_strlen($short_desc) > 143 ? mb_substr($short_desc, 0, 140) . '...' : $short_desc : (strlen($short_desc) > 143 ? substr($short_desc, 0, 140) . '...' : $short_desc);
             $module_array['module'] = $module;
             $module_array['activated'] = $jetpack_active ? in_array($module, $active_modules) : false;
             $module_array['deactivate_nonce'] = wp_create_nonce('jetpack_deactivate-' . $module);
             $module_array['activate_nonce'] = wp_create_nonce('jetpack_activate-' . $module);
             $module_array['available'] = self::is_module_available($module_array);
             $module_array['short_description'] = $short_desc_trunc;
             $module_array['configure_url'] = Jetpack::module_configuration_url($module);
             ob_start();
             do_action('jetpack_learn_more_button_' . $module);
             $module_array['learn_more_button'] = ob_get_clean();
             ob_start();
             if (Jetpack::is_active() && has_action('jetpack_module_more_info_connected_' . $module)) {
                 do_action('jetpack_module_more_info_connected_' . $module);
             } else {
                 do_action('jetpack_module_more_info_' . $module);
             }
             $module_array['long_description'] = ob_get_clean();
             $module_array['configurable'] = false;
             if (current_user_can('manage_options') && apply_filters('jetpack_module_configurable_' . $module, false)) {
                 $module_array['configurable'] = sprintf('<a href="%1$s">%2$s</a>', esc_url(Jetpack::module_configuration_url($module)), __('Configure', 'jetpack'));
             }
             $modules[$module] = $module_array;
         }
     }
     uasort($modules, array($this->jetpack, 'sort_modules'));
     if (!Jetpack::is_active()) {
         uasort($modules, array(__CLASS__, 'sort_requires_connection_last'));
     }
     return $modules;
 }
예제 #3
0
    function admin_screen_list_modules()
    {
        require_once JETPACK__PLUGIN_DIR . 'modules/module-info.php';
        $jetpack_connected = true;
        if (!Jetpack::is_active()) {
            $jetpack_connected = false;
        }
        ?>
		<div class="module-container">
		<?php 
        $avail_raw = Jetpack::get_available_modules();
        $available = array();
        $active = Jetpack::get_active_modules();
        $counter = 0;
        foreach ((array) $avail_raw as $module) {
            if ($plugin = Jetpack::get_module($module)) {
                $plugin['module'] = $module;
                $available[] = $plugin;
            }
        }
        unset($avail_raw);
        usort($available, array('Jetpack', 'sort_modules'));
        $jetpack_version = Jetpack_Options::get_option('version');
        if ($jetpack_version) {
            list($jetpack_version, $jetpack_version_time) = explode(':', $jetpack_version);
        } else {
            $jetpack_version = 0;
            $jetpack_version_time = 0;
        }
        $jetpack_old_version = Jetpack_Options::get_option('old_version');
        if ($jetpack_old_version) {
            list($jetpack_old_version) = explode(':', $jetpack_old_version);
        } else {
            $jetpack_old_version = 0;
        }
        $now = time();
        foreach ((array) $available as $module_data) {
            $module = $module_data['module'];
            $activated = in_array($module, $active);
            if ($activated) {
                $css = 'active';
                $toggle = __('Deactivate', 'jetpack');
                $toggle_url = wp_nonce_url(Jetpack::admin_url(array('page' => 'jetpack', 'action' => 'deactivate', 'module' => $module)), "jetpack_deactivate-{$module}");
            } else {
                $css = 'inactive';
                $toggle = __('Activate', 'jetpack');
                $toggle_url = wp_nonce_url(Jetpack::admin_url(array('page' => 'jetpack', 'action' => 'activate', 'module' => $module)), "jetpack_activate-{$module}");
            }
            if ($counter % 4 == 0) {
                $classes = $css . ' jetpack-newline';
                $counter = 0;
            } else {
                $classes = $css;
            }
            $free_text = esc_html($module_data['free'] ? __('Free', 'jetpack') : __('Purchase', 'jetpack'));
            $free_text = apply_filters('jetpack_module_free_text_' . $module, $free_text);
            $badge_text = $free_text;
            if (!$jetpack_connected && !Jetpack::is_development_mode()) {
                $classes = 'x disabled';
            } elseif ($jetpack_version_time + 604800 > $now) {
                // 1 week
                if (version_compare($module_data['introduced'], $jetpack_old_version, '>')) {
                    $badge_text = esc_html__('New', 'jetpack');
                    $classes .= ' jetpack-new-module';
                } elseif (isset($module_data['changed']) && version_compare($module_data['changed'], $jetpack_old_version, '>')) {
                    $badge_text = esc_html__('Updated', 'jetpack');
                    $classes .= ' jetpack-updated-module';
                } else {
                    $badge_text = $free_text;
                }
            }
            ?>
			<div class="jetpack-module jetpack-<?php 
            echo $classes;
            ?>
" id="<?php 
            echo $module;
            ?>
">
				<h3><?php 
            echo esc_html($module_data['name']);
            ?>
</h3>
				<div class="jetpack-module-description">
						<div class="module-image">
							<p><span class="module-image-badge"><?php 
            echo $badge_text;
            ?>
</span><span class="module-image-free" style="display: none"><?php 
            echo $free_text;
            ?>
</span></p>
						</div>

						<p><?php 
            echo apply_filters('jetpack_short_module_description', $module_data['description'], $module);
            ?>
</p>
				</div>

				<div class="jetpack-module-actions">
				<?php 
            if ($jetpack_connected || Jetpack::is_development_mode() && !$module_data['requires_connection']) {
                ?>
					<?php 
                if (!$activated && current_user_can('manage_options') && apply_filters('jetpack_can_activate_' . $module, true)) {
                    ?>
						<a href="<?php 
                    echo esc_url($toggle_url);
                    ?>
" class="<?php 
                    echo 'inactive' == $css ? ' button-primary' : ' button-secondary';
                    ?>
"><?php 
                    echo $toggle;
                    ?>
</a>&nbsp;
					<?php 
                }
                ?>

					<?php 
                do_action('jetpack_learn_more_button_' . $module);
                ?>

					<?php 
                if (current_user_can('manage_options') && apply_filters('jetpack_module_configurable_' . $module, false)) {
                    echo '<a href="' . esc_url(Jetpack::module_configuration_url($module)) . '" class="jetpack-configure-button button-secondary">' . __('Configure', 'jetpack') . '</a>';
                }
                if ($activated && $module_data['deactivate'] && current_user_can('manage_options')) {
                    ?>
<a style="display: none;" href="<?php 
                    echo esc_url($toggle_url);
                    ?>
" class="jetpack-deactivate-button button-secondary"><?php 
                    echo $toggle;
                    ?>
</a>&nbsp;<?php 
                }
                ?>

				<?php 
            } else {
                ?>
					<?php 
                do_action('jetpack_learn_more_button_' . $module);
                ?>
				<?php 
            }
            ?>
				</div>
			</div>
			<?php 
            if ('inactive' == $css && $jetpack_connected && current_user_can('manage_options') && apply_filters('jetpack_can_activate_' . $module, true)) {
                ?>
			<script type="text/javascript">
			jQuery( '#<?php 
                echo esc_js($module);
                ?>
' ).bind( 'click', function(e){
				if ( ! jQuery(e.target).hasClass('more-info-link') )
					document.location.href = '<?php 
                echo str_replace('&amp;', '&', esc_js(esc_url($toggle_url)));
                ?>
';
			} );
			</script>
			<?php 
            } else {
                ?>
			<style>
				#<?php 
                echo $module;
                ?>
 { cursor: default; }
			</style>
			<?php 
            }
            ?>

			<div id="jp-more-info-<?php 
            echo esc_attr($module);
            ?>
" style="display:none;">
				<?php 
            if ($jetpack_connected && has_action('jetpack_module_more_info_connected_' . $module)) {
                do_action('jetpack_module_more_info_connected_' . $module);
            } else {
                do_action('jetpack_module_more_info_' . $module);
            }
            ?>
			</div>

			<?php 
            $counter++;
        }
        // Add in some "Coming soon..." placeholders to fill up the current row and one more
        for ($i = 0; $i < 4; $i++) {
            ?>
			<div class="jetpack-module placeholder"<?php 
            if ($i > 8 - $counter) {
                echo ' style="display: none;"';
            }
            ?>
>
				<h3><?php 
            _e('Coming soon&#8230;', 'jetpack');
            ?>
</h3>
			</div>
		<?php 
        }
        echo '</div><!-- .module-container -->';
    }
예제 #4
0
 /**
  * Manage Jetpack Modules
  *
  * ## OPTIONS
  *
  * list          : View all available modules, and their status.
  * activate all  : Activate all modules
  * deactivate all: Deactivate all modules
  *
  * activate   <module_slug> : Activate a module.
  * deactivate <module_slug> : Deactivate a module.
  * toggle     <module_slug> : Toggle a module on or off.
  *
  * ## EXAMPLES
  *
  * wp jetpack module list
  * wp jetpack module activate stats
  * wp jetpack module deactivate stats
  * wp jetpack module toggle stats
  *
  * wp jetpack module activate all
  * wp jetpack module deactivate all
  *
  * @synopsis <list|activate|deactivate|toggle> [<module_name>]
  */
 public function module($args, $assoc_args)
 {
     $action = isset($args[0]) ? $args[0] : 'list';
     if (!in_array($action, array('list', 'activate', 'deactivate', 'toggle'))) {
         WP_CLI::error(sprintf(__('%s is not a valid command.', 'jetpack'), $action));
     }
     if (in_array($action, array('activate', 'deactivate', 'toggle'))) {
         if (isset($args[1])) {
             $module_slug = $args[1];
             if ('all' !== $module_slug && !Jetpack::is_module($module_slug)) {
                 WP_CLI::error(sprintf(__('%s is not a valid module.', 'jetpack'), $module_slug));
             }
             if ('toggle' == $action) {
                 $action = Jetpack::is_module_active($module_slug) ? 'deactivate' : 'activate';
             }
             // Bulk actions
             if ('all' == $args[1]) {
                 $action = 'deactivate' == $action ? 'deactivate_all' : 'activate_all';
             }
             // VaultPress needs to be handled elsewhere.
             if (in_array($action, array('activate', 'deactivate', 'toggle')) && 'vaultpress' == $args[1]) {
                 WP_CLI::error(sprintf(_x('Please visit %s to configure your VaultPress subscription.', '%s is a website', 'jetpack'), esc_url('https://vaultpress.com/jetpack/')));
             }
         } else {
             WP_CLI::line(__('Please specify a valid module.', 'jetpack'));
             $action = 'list';
         }
     }
     switch ($action) {
         case 'list':
             WP_CLI::line(__('Available Modules:', 'jetpack'));
             $modules = Jetpack::get_available_modules();
             sort($modules);
             foreach ($modules as $module_slug) {
                 if ('vaultpress' == $module_slug) {
                     continue;
                 }
                 $active = Jetpack::is_module_active($module_slug) ? __('Active', 'jetpack') : __('Inactive', 'jetpack');
                 WP_CLI::line("\t" . str_pad($module_slug, 24) . $active);
             }
             break;
         case 'activate':
             $module = Jetpack::get_module($module_slug);
             Jetpack::log('activate', $module_slug);
             Jetpack::activate_module($module_slug, false, false);
             WP_CLI::success(sprintf(__('%s has been activated.', 'jetpack'), $module['name']));
             break;
         case 'activate_all':
             $modules = Jetpack::get_available_modules();
             Jetpack::update_active_modules($modules);
             WP_CLI::success(__('All modules activated!', 'jetpack'));
             break;
         case 'deactivate':
             $module = Jetpack::get_module($module_slug);
             Jetpack::log('deactivate', $module_slug);
             Jetpack::deactivate_module($module_slug);
             WP_CLI::success(sprintf(__('%s has been deactivated.', 'jetpack'), $module['name']));
             break;
         case 'deactivate_all':
             Jetpack::delete_active_modules();
             WP_CLI::success(__('All modules deactivated!', 'jetpack'));
             break;
         case 'toggle':
             // Will never happen, should have been handled above and changed to activate or deactivate.
             break;
     }
 }
 /**
  * Manage Jetpack Modules
  *
  * ## OPTIONS
  *
  * list: View all available modules, and their status.
  *
  * activate <module_slug>: Activate a module.
  *
  * deactivate <module_slug>: Deactivate a module.
  *
  * toggle <module_slug>: Toggle a module on or off.
  *
  * ## EXAMPLES
  *
  * wp jetpack module list
  * wp jetpack module activate stats
  * wp jetpack module deactivate stats
  * wp jetpack module toggle stats
  *
  * @synopsis [list|activate|deactivate|toggle [<module_name>]]
  */
 public function module($args, $assoc_args)
 {
     $action = isset($args[0]) ? $args[0] : 'list';
     if (!in_array($action, array('list', 'activate', 'deactivate', 'toggle'))) {
         WP_CLI::error(sprintf(__('%s is not a valid command.', 'jetpack'), $action));
     }
     if (in_array($action, array('activate', 'deactivate', 'toggle'))) {
         if (isset($args[1])) {
             $module_slug = $args[1];
             if (!Jetpack::is_module($module_slug)) {
                 WP_CLI::error(sprintf(__('%s is not a valid module.', 'jetpack'), $module_slug));
             }
             if ('toggle' == $action) {
                 $action = Jetpack::is_module_active($module_slug) ? 'deactivate' : 'activate';
             }
         } else {
             WP_CLI::line(__('Please specify a valid module.', 'jetpack'));
             $action = 'list';
         }
     }
     switch ($action) {
         case 'list':
             WP_CLI::line(__('Available Modules:', 'jetpack'));
             $modules = Jetpack::get_available_modules();
             sort($modules);
             foreach ($modules as $module_slug) {
                 $active = Jetpack::is_module_active($module_slug) ? __('Active', 'jetpack') : __('Inactive', 'jetpack');
                 WP_CLI::line("\t" . str_pad($module_slug, 24) . $active);
             }
             break;
         case 'activate':
             $module = Jetpack::get_module($module_slug);
             Jetpack::log('activate', $module_slug);
             Jetpack::activate_module($module_slug, false);
             WP_CLI::success(sprintf(__('%s has been activated.', 'jetpack'), $module['name']));
             break;
         case 'deactivate':
             $module = Jetpack::get_module($module_slug);
             Jetpack::log('deactivate', $module_slug);
             Jetpack::deactivate_module($module_slug);
             WP_CLI::success(sprintf(__('%s has been deactivated.', 'jetpack'), $module['name']));
             break;
         case 'toggle':
             // Will never happen, should have been handled above and changed to activate or deactivate.
             break;
     }
 }
    /**
     * Display link to activate the module to see the settings screen.
     * @param  string $module_id
     * @return null
     */
    public static function display_activate_module_link($module_id)
    {
        $info = Jetpack::get_module($module_id);
        $extra = '';
        $activate_url = wp_nonce_url(Jetpack::admin_url(array('page' => 'jetpack', 'action' => 'activate', 'module' => $module_id)), "jetpack_activate-{$module_id}");
        ?>

		<div class="wrap configure-module">
			<div id="jp-settings-screen">
				<?php 
        if ($module_id == 'json-api') {
            $info['name'] = esc_html__('Activate Site Management and JSON API', 'jetpack');
            $activate_url = Jetpack::init()->opt_in_jetpack_manage_url();
            $info['description'] = sprintf(__('Manage your multiple Jetpack sites from our centralized dashboard at wordpress.com/sites. <a href="%s" target="_blank">Learn more</a>.', 'jetpack'), 'http://jetpack.com/support/site-management');
            // $extra = __( 'To use Site Management, you need to first activate JSON API to allow remote management of your site. ', 'jetpack' );
        }
        ?>

				<h3><?php 
        echo esc_html($info['name']);
        ?>
</h3>
				<div class="narrow">
					<p><?php 
        echo $info['description'];
        ?>
</p>
					<?php 
        if ($extra) {
            ?>
					<p><?php 
            echo esc_html($extra);
            ?>
</p>
					<?php 
        }
        ?>
					<p>
						<?php 
        if (wp_get_referer()) {
            printf(__('<a class="button-primary" href="%s">Activate Now</a> or <a href="%s" >return to previous page</a>.', 'jetpack'), $activate_url, wp_get_referer());
        } else {
            printf(__('<a class="button-primary" href="%s">Activate Now</a>', 'jetpack'), $activate_url);
        }
        ?>
					</p>
				</div>

			</div>
		</div>

		<?php 
    }
예제 #7
0
 public function render_network_admin_settings_page()
 {
     $this->network_admin_page_header();
     $options = wp_parse_args(get_site_option($this->settings_name), $this->setting_defaults);
     $modules = array();
     $module_slugs = Jetpack::get_available_modules();
     foreach ($module_slugs as $slug) {
         $module = Jetpack::get_module($slug);
         $module['module'] = $slug;
         $modules[] = $module;
     }
     usort($modules, array('Jetpack', 'sort_modules'));
     if (!isset($options['modules'])) {
         $options['modules'] = $modules;
     }
     $data = array('modules' => $modules, 'options' => $options, 'jetpack_protect_whitelist' => jetpack_protect_format_whitelist());
     Jetpack::init()->load_view('admin/network-settings.php', $data);
     $this->network_admin_page_footer();
 }
예제 #8
0
 /**
  * Track Jetpack log entries
  * Includes:
  * - Activation/Deactivation of modules
  * - Registration/Disconnection of blogs
  * - Authorization/unlinking of users
  *
  * @param array $entry
  */
 public function callback_jetpack_log_entry(array $entry)
 {
     if (isset($entry['code'])) {
         $method = $entry['code'];
     } else {
         return;
     }
     if (isset($entry['data'])) {
         $data = $entry['data'];
     } else {
         $data = null;
     }
     $context = null;
     $action = null;
     $meta = array();
     if (in_array($method, array('activate', 'deactivate')) && !is_null($data)) {
         $module_slug = $data;
         $module = \Jetpack::get_module($module_slug);
         $module_name = $module['name'];
         $context = 'modules';
         $action = $method . 'd';
         $meta = compact('module_slug');
         $message = sprintf(__('%1$s module %2$s', 'stream'), $module_name, 'activated' === $action ? esc_html__('activated', 'stream') : esc_html__('deactivated', 'stream'));
     } elseif (in_array($method, array('authorize', 'unlink')) && !is_null($data)) {
         $user_id = intval($data);
         if (empty($user_id)) {
             $user_id = get_current_user_id();
         }
         $user = new \WP_User($user_id);
         $user_email = $user->user_email;
         $user_login = $user->user_login;
         $context = 'users';
         $action = $method;
         $meta = compact('user_id', 'user_email', 'user_login');
         $message = sprintf(__('%1$s\'s account %2$s %3$s Jetpack', 'stream'), $user->display_name, 'unlink' === $action ? esc_html__('unlinked', 'stream') : esc_html__('linked', 'stream'), 'unlink' === $action ? esc_html__('from', 'stream') : esc_html__('to', 'stream'));
     } elseif (in_array($method, array('register', 'disconnect', 'subsiteregister', 'subsitedisconnect'))) {
         $context = 'blogs';
         $action = str_replace('subsite', '', $method);
         $is_multisite = 0 === strpos($method, 'subsite');
         $blog_id = $is_multisite ? isset($_GET['site_id']) ? intval(wp_unslash($_GET['site_id'])) : null : get_current_blog_id();
         // phpcs: input var okay
         if (empty($blog_id)) {
             return;
         }
         if (!$is_multisite) {
             $message = sprintf(__('Site %s Jetpack', 'stream'), 'register' === $action ? esc_html__('connected to', 'stream') : esc_html__('disconnected from', 'stream'));
         } else {
             $blog_details = get_blog_details(array('blog_id' => $blog_id));
             $blog_name = $blog_details->blogname;
             $meta += compact('blog_id', 'blog_name');
             $message = sprintf(__('"%1$s" blog %2$s Jetpack', 'stream'), $blog_name, 'register' === $action ? esc_html__('connected to', 'stream') : esc_html__('disconnected from', 'stream'));
         }
     }
     if (empty($message)) {
         return;
     }
     $this->log($message, $meta, null, $context, $action);
 }
    /**
     * Shows a notice message to users after they save Module config settings
     * @param  string $module_id
     * @return null
     */
    function show_notices_update_settings($module_id)
    {
        $state = Jetpack::state('message');
        switch ($state) {
            case 'module_activated':
                if ($module = Jetpack::get_module(Jetpack::state('module'))) {
                    $message = sprintf(__('<strong>%s Activated!</strong> You can change the setting of it here.', 'jetpack'), $module['name']);
                }
                break;
            case 'module_configured':
                $message = __('<strong>Module settings were saved.</strong> ', 'jetpack');
                break;
            case 'no_message':
                break;
        }
        if (isset($message)) {
            ?>
			<div id="message" class="jetpack-message">
				<div class="squeezer">
					<h2><?php 
            echo wp_kses($message, array('strong' => array(), 'a' => array('href' => true), 'br' => true));
            ?>
</h2>
					<?php 
            /**
             * Fires within the displayed message when a feature configuation is updated.
             *
             * This is a dynamic hook with `$module_id` being the slug of the module being updated.
             *
             * @since 3.4.0
             */
            do_action('jetpack_notices_update_settings_' . $module_id);
            ?>
				</div>
			</div>
			<?php 
        }
        add_action('jetpack_notices', array(Jetpack::init(), 'admin_notices'));
    }
 /**
  * Activates a series of valid Jetpack modules and initializes some options.
  *
  * @since 4.3.0
  *
  * @param WP_REST_Request $data {
  *     Array of parameters received by request.
  * }
  *
  * @return bool|WP_Error True if Jumpstart succeeded. Otherwise, a WP_Error instance with the corresponding error.
  */
 public static function jumpstart_activate($data)
 {
     $modules = Jetpack::get_available_modules();
     $activate_modules = array();
     foreach ($modules as $module) {
         $module_info = Jetpack::get_module($module);
         if (isset($module_info['feature']) && is_array($module_info['feature']) && in_array('Jumpstart', $module_info['feature'])) {
             $activate_modules[] = $module;
         }
     }
     // Collect success/error messages like modules that are properly activated.
     $result = array('activated_modules' => array(), 'failed_modules' => array());
     // Update the jumpstart option
     if ('new_connection' === Jetpack_Options::get_option('jumpstart')) {
         $result['jumpstart_activated'] = Jetpack_Options::update_option('jumpstart', 'jumpstart_activated');
     }
     // Check for possible conflicting plugins
     $module_slugs_filtered = Jetpack::init()->filter_default_modules($activate_modules);
     foreach ($module_slugs_filtered as $module_slug) {
         Jetpack::log('activate', $module_slug);
         if (Jetpack::activate_module($module_slug, false, false)) {
             $result['activated_modules'][] = $module_slug;
         } else {
             $result['failed_modules'][] = $module_slug;
         }
     }
     // Set the default sharing buttons and set to display on posts if none have been set.
     $sharing_services = get_option('sharing-services');
     $sharing_options = get_option('sharing-options');
     if (empty($sharing_services['visible'])) {
         // Default buttons to set
         $visible = array('twitter', 'facebook', 'google-plus-1');
         $hidden = array();
         // Set some sharing settings
         $sharing = new Sharing_Service();
         $sharing_options['global'] = array('button_style' => 'icon', 'sharing_label' => $sharing->default_sharing_label, 'open_links' => 'same', 'show' => array('post'), 'custom' => isset($sharing_options['global']['custom']) ? $sharing_options['global']['custom'] : array());
         $result['sharing_options'] = update_option('sharing-options', $sharing_options);
         $result['sharing_services'] = update_option('sharing-services', array('visible' => $visible, 'hidden' => $hidden));
     }
     // If all Jumpstart modules were activated
     if (empty($result['failed_modules'])) {
         return rest_ensure_response(array('code' => 'success', 'message' => esc_html__('Jumpstart done.', 'jetpack'), 'data' => $result));
     }
     return new WP_Error('jumpstart_failed', esc_html(sprintf(_n('Jumpstart failed activating this module: %s.', 'Jumpstart failed activating these modules: %s.', count($result['failed_modules']), 'jetpack'), join(', ', $result['failed_modules']))), array('status' => 400));
 }
 function get_modules()
 {
     include_once JETPACK__PLUGIN_DIR . 'modules/module-info.php';
     $available_modules = $this->jetpack->get_available_modules();
     $active_modules = $this->jetpack->get_active_modules();
     $modules = array();
     $jetpack_active = Jetpack::is_active() || Jetpack::is_development_mode();
     foreach ($available_modules as $module) {
         if ($module_array = $this->jetpack->get_module($module)) {
             $short_desc = apply_filters('jetpack_short_module_description', $module_array['description'], $module);
             // Fix: correct multibyte strings truncate with checking for mbstring extension
             $short_desc_trunc = function_exists('mb_strlen') ? mb_strlen($short_desc) > 143 ? mb_substr($short_desc, 0, 140) . '...' : $short_desc : (strlen($short_desc) > 143 ? substr($short_desc, 0, 140) . '...' : $short_desc);
             $module_array['module'] = $module;
             $module_array['activated'] = $jetpack_active ? in_array($module, $active_modules) : false;
             $module_array['deactivate_nonce'] = wp_create_nonce('jetpack_deactivate-' . $module);
             $module_array['activate_nonce'] = wp_create_nonce('jetpack_activate-' . $module);
             $module_array['available'] = self::is_module_available($module_array);
             $module_array['short_description'] = $short_desc_trunc;
             $module_array['configure_url'] = Jetpack::module_configuration_url($module);
             ob_start();
             do_action('jetpack_learn_more_button_' . $module);
             $module_array['learn_more_button'] = ob_get_clean();
             ob_start();
             if (Jetpack::is_active() && has_action('jetpack_module_more_info_connected_' . $module)) {
                 do_action('jetpack_module_more_info_connected_' . $module);
             } else {
                 do_action('jetpack_module_more_info_' . $module);
             }
             /**
              * Filter the long description of a module.
              *
              * @since 3.5.0
              *
              * @param string ob_get_clean() The module long description.
              * @param string $module The module name.
              */
             $module_array['long_description'] = apply_filters('jetpack_long_module_description', ob_get_clean(), $module);
             ob_start();
             /**
              * Filter the search terms for a module
              *
              * Search terms are be typically added to a module in module-info.php.
              *
              * Use syntax:
              * function jetpack_$module_search_terms( $terms ) {
              *  $terms = _x( 'term 1, term 2', 'search terms', 'jetpack' );
              *  return $terms;
              * }
              * add_filter( 'jetpack_search_terms_$module', 'jetpack_$module_search_terms' );
              *
              * @since 3.5.0
              * @param string The search terms (comma separated)
              */
             echo apply_filters('jetpack_search_terms_' . $module, '');
             $module_array['search_terms'] = ob_get_clean();
             $module_array['configurable'] = false;
             if (current_user_can('manage_options') && apply_filters('jetpack_module_configurable_' . $module, false)) {
                 $module_array['configurable'] = sprintf('<a href="%1$s">%2$s</a>', esc_url(Jetpack::module_configuration_url($module)), __('Configure', 'jetpack'));
             }
             $modules[$module] = $module_array;
         }
     }
     uasort($modules, array($this->jetpack, 'sort_modules'));
     if (!Jetpack::is_active()) {
         uasort($modules, array(__CLASS__, 'sort_requires_connection_last'));
     }
     return $modules;
 }
 public function render_network_admin_settings_page()
 {
     $this->network_admin_page_header();
     $options = wp_parse_args(get_site_option($this->settings_name), $this->setting_defaults);
     $modules = array();
     $module_slugs = Jetpack::get_available_modules();
     foreach ($module_slugs as $slug) {
         $module = Jetpack::get_module($slug);
         $module['module'] = $slug;
         $modules[] = $module;
     }
     usort($modules, array('Jetpack', 'sort_modules'));
     if (!isset($options['modules'])) {
         $options['modules'] = $modules;
     }
     require 'views/admin/network-settings.php';
     $this->network_admin_page_footer();
 }
 /**
  * Get information about a specific and valid Jetpack module.
  *
  * @since 4.3.0
  *
  * @param WP_REST_Request $data {
  *     Array of parameters received by request.
  *
  *     @type string $slug Module slug.
  * }
  *
  * @return mixed|void|WP_Error
  */
 public function get_module($data)
 {
     if (Jetpack::is_module($data['slug'])) {
         $module = Jetpack::get_module($data['slug']);
         $module['options'] = Jetpack_Core_Json_Api_Endpoints::prepare_options_for_response($data['slug']);
         if (isset($module['requires_connection']) && $module['requires_connection'] && Jetpack::is_development_mode()) {
             $module['activated'] = false;
         }
         $i18n = jetpack_get_module_i18n($data['slug']);
         if (isset($module['name'])) {
             $module['name'] = $i18n['name'];
         }
         if (isset($module['description'])) {
             $module['description'] = $i18n['description'];
             $module['short_description'] = $i18n['description'];
         }
         return Jetpack_Core_Json_Api_Endpoints::prepare_modules_for_response($module);
     }
     return new WP_Error('not_found', esc_html__('The requested Jetpack module was not found.', 'jetpack'), array('status' => 404));
 }
 /**
  * Return Jetpack available modules
  * @since 0.1
  * @return array
  */
 private function get_available_modules()
 {
     if (null === self::$modules) {
         if (class_exists('Jetpack')) {
             //remove_filter( 'jetpack_get_available_modules', array($this, 'blacklist') ); // remove filter useless here because of bug in Jetpack
             $modules = array();
             foreach (Jetpack::get_available_modules() as $slug) {
                 $module = Jetpack::get_module($slug);
                 if ($module) {
                     $modules[$slug] = $module;
                 }
             }
             self::$modules = $modules;
             //add_filter( 'jetpack_get_available_modules', array($this, 'blacklist') );
         } else {
             self::$modules = self::$known_modules;
         }
     }
     return self::$modules;
 }
예제 #15
0
    function admin_screen_list_modules()
    {
        require_once dirname(__FILE__) . '/modules/module-info.php';
        $jetpack_connected = true;
        if (!Jetpack::is_active()) {
            $jetpack_connected = false;
        }
        ?>
		<div class="module-container">
		<?php 
        $avail_raw = Jetpack::get_available_modules();
        $available = array();
        $active = Jetpack::get_active_modules();
        $counter = 0;
        foreach ((array) $avail_raw as $module) {
            if ($plugin = Jetpack::get_module($module)) {
                $plugin['module'] = $module;
                $available[] = $plugin;
            }
        }
        unset($avail_raw);
        usort($available, array('Jetpack', 'sort_modules'));
        foreach ((array) $available as $module_data) {
            $module = $module_data['module'];
            if (in_array($module, $active)) {
                $css = 'active';
                $toggle = __('Deactivate', 'jetpack');
                $toggle_url = wp_nonce_url(Jetpack::admin_url(array('action' => 'deactivate', 'module' => $module)), "jetpack_deactivate-{$module}");
            } else {
                $css = 'inactive';
                $toggle = __('Activate', 'jetpack');
                $toggle_url = wp_nonce_url(Jetpack::admin_url(array('action' => 'activate', 'module' => $module)), "jetpack_activate-{$module}");
            }
            $file = Jetpack::get_module_path($module);
            $png = str_replace('.php', '.png', $file);
            if (is_readable(dirname(__FILE__) . '/_inc/images/icons/' . basename($png))) {
                $module_img = plugins_url(basename(dirname(__FILE__)) . '/_inc/images/icons/' . basename($png));
            } else {
                $module_img = plugins_url(basename(dirname(__FILE__)) . '/_inc/images/module-blank.png');
            }
            if ($counter % 4 == 0) {
                $classes = $css . ' jetpack-newline';
                $counter = 0;
            } else {
                $classes = $css;
            }
            if (!$jetpack_connected) {
                $classes = 'x disabled';
            }
            ?>
			<div class="jetpack-module jetpack-<?php 
            echo $classes;
            ?>
" id="<?php 
            echo $module;
            ?>
">
				<h3><?php 
            echo $module_data['name'];
            ?>
</h3>
				<div class="jetpack-module-description">
						<div class="module-image">
							<img src="<?php 
            echo esc_url($module_img);
            ?>
" align="right" width="71" height="45" />
							<p><?php 
            _e('Free', 'jetpack');
            ?>
</p>
						</div>
						
						<p><?php 
            echo apply_filters('jetpack_short_module_description_' . $module, $module_data['description']);
            ?>
</p>
				</div>

				<div class="jetpack-module-actions">
				<?php 
            if ($jetpack_connected) {
                $activated = in_array($module, $active);
                ?>
					<?php 
                if (!$activated) {
                    ?>
						<a href="<?php 
                    echo esc_url($toggle_url);
                    ?>
" class="jetpack-toggle-button<?php 
                    echo 'inactive' == $css ? ' button-primary' : ' button';
                    ?>
"><?php 
                    echo $toggle;
                    ?>
</a>&nbsp;
					<?php 
                }
                ?>

					<?php 
                do_action('jetpack_learn_more_button_' . $module);
                ?>

					<?php 
                if (apply_filters('jetpack_module_configurable_' . $module, false)) {
                    echo '<a href="' . esc_attr(Jetpack::module_configuration_url($module)) . '" class="jetpack-configure-button button">' . __('Configure', 'jetpack') . '</a>';
                }
                if ($activated) {
                    ?>
<a style="display: none;" href="<?php 
                    echo esc_url($toggle_url);
                    ?>
" class="jetpack-deactivate-button button"><?php 
                    echo $toggle;
                    ?>
</a>&nbsp;<?php 
                }
                ?>

				<?php 
            } else {
                ?>
					<?php 
                do_action('jetpack_learn_more_button_' . $module);
                ?>
				<?php 
            }
            ?>
				</div>
			</div>
			<?php 
            if ('inactive' == $css && $jetpack_connected) {
                ?>
			<script type="text/javascript">
			jQuery( '#<?php 
                echo esc_js($module);
                ?>
' ).bind( 'click', function(e){
				if ( !jQuery(e.target).hasClass('more-info-link') )
					document.location.href = '<?php 
                echo str_replace('&amp;', '&', esc_js(esc_url($toggle_url)));
                ?>
';
			} );
			</script>
			<?php 
            }
            ?>

			<div id="jp-more-info-<?php 
            echo esc_attr($module);
            ?>
" style="display:none;">
				<?php 
            if ($jetpack_connected && has_action('jetpack_module_more_info_connected_' . $module)) {
                do_action('jetpack_module_more_info_connected_' . $module);
            } else {
                do_action('jetpack_module_more_info_' . $module);
            }
            ?>
			</div>

			<?php 
            $counter++;
        }
        // Add in some "Coming soon..." placeholders to fill up the current row and one more
        for ($i = 0; $i < 15; $i++) {
            ?>
			<div class="jetpack-module placeholder"<?php 
            if ($i > 8 - $counter) {
                echo ' style="display: none;"';
            }
            ?>
>
				<h3><?php 
            _e('Coming soon&#8230;', 'jetpack');
            ?>
</h3>
			</div>
		<?php 
        }
        echo '</div><!-- .module-container -->';
    }
예제 #16
0
 /**
  * List available Jetpack modules. Simply lists .php files in /modules/.
  * Make sure to tuck away module "library" files in a sub-directory.
  */
 public static function get_available_modules($min_version = false, $max_version = false)
 {
     static $modules = null;
     if (!isset($modules)) {
         $available_modules_option = Jetpack_Options::get_option('available_modules', array());
         // Use the cache if we're on the front-end and it's available...
         if (!is_admin() && !empty($available_modules_option[JETPACK__VERSION])) {
             $modules = $available_modules_option[JETPACK__VERSION];
         } else {
             $files = Jetpack::glob_php(JETPACK__PLUGIN_DIR . 'modules');
             $modules = array();
             foreach ($files as $file) {
                 if (!($headers = Jetpack::get_module($file))) {
                     continue;
                 }
                 $modules[Jetpack::get_module_slug($file)] = $headers['introduced'];
             }
             Jetpack_Options::update_option('available_modules', array(JETPACK__VERSION => $modules));
         }
     }
     $mods = apply_filters('jetpack_get_available_modules', $modules, $min_version, $max_version);
     if (!$min_version && !$max_version) {
         return array_keys($mods);
     }
     $r = array();
     foreach ($mods as $slug => $introduced) {
         if ($min_version && version_compare($min_version, $introduced, '>=')) {
             continue;
         }
         if ($max_version && version_compare($max_version, $introduced, '<')) {
             continue;
         }
         $r[] = $slug;
     }
     return $r;
 }