name = $name; } } return $this; } public function get_name() { return $this->name; } public function set_scripts( $scripts ) { $this->add_files( 'scripts', $scripts ); } public function set_styles( $styles ) { $this->add_files( 'styles', $styles ); } /* Assets */ /** * Get formatted handle for file * @param string $base_handle Base handle to format * @return string Formatted handle */ public function get_handle( $base_handle ) { return $this->add_prefix( array( 'asset', $this->get_id(), $base_handle ), '-' ); } /** * Enqueue files in client * @param string $type (optional) Type of file to load (singular) (Default: All client file types) */ public function enqueue_client_files( $type = null ) { if ( empty( $type ) ) { $type = array( 'script', 'style' ); } if ( ! is_array( $type ) ) { $type = array( $type ); } foreach ( $type as $t ) { $m = (object) array( 'get' => $this->m( 'get_' . $t . 's' ), 'enqueue' => 'wp_enqueue_' . $t, ); $v = $this->util->get_plugin_version(); $files = call_user_func( $m->get ); $param_final = ( 'script' === $t ) ? true : 'all'; foreach ( $files as $f ) { $f = (object) $f; // Format handle $handle = $this->get_handle( $f->handle ); // Format dependencies $deps = array(); foreach ( $f->deps as $dep ) { if ( $this->util->has_wrapper( $dep ) ) { $dep = $this->get_handle( $this->util->remove_wrapper( $dep ) ); } $deps[] = $dep; } call_user_func( $m->enqueue, $handle, $f->uri, $deps, $v, $param_final ); } unset( $files, $f, $param_final, $handle, $deps, $dep ); } } /** * Enqueue scripts */ public function enqueue_scripts() { $this->enqueue_client_files( 'script' ); } /** * Enqueue styles */ public function enqueue_styles() { $this->enqueue_client_files( 'style' ); } /* Helpers */ /** * Validate instance * @see `Base_Object::is_valid()` * @return bool Valid (TRUE) / Invalid (FALSE) */ public function is_valid() { $ret = parent::is_valid(); if ( $ret ) { // Check required component properties $props = array_merge( $this->props_required_base, $this->props_required ); foreach ( $props as $prop ) { if ( ! isset( $this->{$prop} ) || empty( $this->{$prop} ) ) { $ret = false; break; } } } return $ret; } }