File: /home/mmickelson/martyknows.com/wp-content/plugins/simple-lightbox/includes/class.component.php
<?php
/**
* Component
* @package Simple Lightbox
* @subpackage Base
* @author Archetyped
*/
class SLB_Component extends SLB_Base_Object {
/* Properties */
/**
* Pretty name
* @var string
*/
protected $name = '';
protected $props_required = array();
private $props_required_base = array( 'id' );
/* Get/Set */
/**
* Set name
* @param string $name Name
* @return Current instance
*/
public function set_name( $name ) {
if ( is_string( $name ) ) {
$name = trim( $name );
if ( ! empty( $name ) ) {
$this->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;
}
}