/** * Helper function: Validate a value as boolean * * @since 2.5.0 * * @static * * @param mixed $value Arbitrary value. * @return bool */ public static function validate_bool($value) { if (!isset(self::$has_filters)) { self::$has_filters = extension_loaded('filter'); } if (self::$has_filters) { return filter_var($value, FILTER_VALIDATE_BOOLEAN); } else { return self::emulate_filter_bool($value); } }
/** * 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; } }