/** * Add individual plugin to our collection of plugins. * * If the required keys are not set or the plugin has already * been registered, the plugin is not added. * * @since 2.0.0 * * @param array|null $plugin Array of plugin arguments or null if invalid argument. * @return null Return early if incorrect argument. */ public function register($plugin) { if (empty($plugin['slug']) || empty($plugin['name'])) { return; } if (empty($plugin['slug']) || !is_string($plugin['slug']) || isset($this->plugins[$plugin['slug']])) { return; } $defaults = array('name' => '', 'slug' => '', 'source' => 'repo', 'required' => false, 'version' => '', 'force_activation' => false, 'force_deactivation' => false, 'external_url' => '', 'is_callable' => ''); // Prepare the received data. $plugin = wp_parse_args($plugin, $defaults); // Standardize the received slug. $plugin['slug'] = $this->sanitize_key($plugin['slug']); // Forgive users for using string versions of booleans or floats for version number. $plugin['version'] = (string) $plugin['version']; $plugin['source'] = empty($plugin['source']) ? 'repo' : $plugin['source']; $plugin['required'] = TGMPA_Utils::validate_bool($plugin['required']); $plugin['force_activation'] = TGMPA_Utils::validate_bool($plugin['force_activation']); $plugin['force_deactivation'] = TGMPA_Utils::validate_bool($plugin['force_deactivation']); // Enrich the received data. $plugin['file_path'] = $this->_get_plugin_basename_from_slug($plugin['slug']); $plugin['source_type'] = $this->get_plugin_source_type($plugin['source']); // Set the class properties. $this->plugins[$plugin['slug']] = $plugin; $this->sort_order[$plugin['slug']] = $plugin['name']; // Should we add the force activation hook ? if (true === $plugin['force_activation']) { $this->has_forced_activation = true; } // Should we add the force deactivation hook ? if (true === $plugin['force_deactivation']) { $this->has_forced_deactivation = true; } }
/** * Add individual plugin to our collection of plugins. * * If the required keys are not set or the plugin has already * been registered, the plugin is not added. * * @since 2.0.0 * * @param array|null $plugin Array of plugin arguments or null if invalid argument. * @return null Return early if incorrect argument. */ public function register($plugin) { if (empty($plugin['slug']) || empty($plugin['name'])) { return; } if (empty($plugin['slug']) || !is_string($plugin['slug']) || isset($this->plugins[$plugin['slug']])) { return; } $defaults = array('name' => '', 'slug' => '', 'source' => 'repo', 'required' => false, 'version' => '', 'force_activation' => false, 'force_deactivation' => false, 'external_url' => '', 'is_callable' => ''); // Prepare the received data. $plugin = wp_parse_args($plugin, $defaults); if (!empty($plugin['alt'])) { $args = array_merge($plugin, array('name' => $plugin['alt_name'], 'slug' => $this->sanitize_key($plugin['alt']), 'available_separately' => true, 'alt' => '', 'free' => $this->sanitize_key($plugin['slug']), 'source_type' => 'external', 'external_url' => $plugin['info_link'], 'description' => $plugin['alt_description'])); $this->register($args); } // Standardize the received slug. $plugin['slug'] = $this->sanitize_key($plugin['slug']); // Forgive users for using string versions of booleans or floats for version number. $plugin['version'] = (string) $plugin['version']; $plugin['source'] = empty($plugin['source']) ? 'repo' : $plugin['source']; $plugin['required'] = TGMPA_Utils::validate_bool($plugin['required']); $plugin['force_activation'] = TGMPA_Utils::validate_bool($plugin['force_activation']); $plugin['force_deactivation'] = TGMPA_Utils::validate_bool($plugin['force_deactivation']); // Enrich the received data. $plugin['file_path'] = $this->_get_plugin_basename_from_slug($plugin['slug']); $plugin['source_type'] = $this->get_plugin_source_type($plugin['source']); if (!empty($plugin['source']) && preg_match('|^/|', $plugin['source']) && !file_exists($plugin['source'])) { $plugin['available_separately'] = true; } if (!empty($plugin['available_separately'])) { $item['source'] = __('Available Separately', 'sociallyviral'); } // Set the class properties. $this->plugins[$plugin['slug']] = $plugin; $this->sort_order[$plugin['slug']] = $plugin['name']; // Should we add the force activation hook ? if (true === $plugin['force_activation']) { $this->has_forced_activation = true; } // Should we add the force deactivation hook ? if (true === $plugin['force_deactivation']) { $this->has_forced_deactivation = true; } }