83 lines
1.7 KiB
PHP
83 lines
1.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Content Handler
|
|
* @package Simple Lightbox
|
|
* @subpackage Content Handlers
|
|
* @author Archetyped
|
|
*/
|
|
class SLB_Content_Handler extends SLB_Component {
|
|
/* Properties */
|
|
|
|
/**
|
|
* Match handler
|
|
* @var callback
|
|
*/
|
|
protected $match;
|
|
|
|
/**
|
|
* Custom attributes
|
|
* @var callback
|
|
*/
|
|
protected $attributes;
|
|
|
|
/* Matching */
|
|
|
|
/**
|
|
* Set matching handler
|
|
* @param callback $callback Handler callback
|
|
* @return object Current instance
|
|
*/
|
|
public function set_match( $callback ) {
|
|
$this->match = ( is_callable( $callback ) ) ? $callback : null;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Retrieve match handler
|
|
* @return callback|null Match handler
|
|
*/
|
|
protected function get_match() {
|
|
return $this->match;
|
|
}
|
|
|
|
/**
|
|
* Check if valid match set
|
|
*/
|
|
protected function has_match() {
|
|
return ( is_null( $this->match ) ) ? false : true;
|
|
}
|
|
|
|
/**
|
|
* Match handler against URI
|
|
* @param string $uri URI to check for match
|
|
* @return bool TRUE if handler matches URI
|
|
*/
|
|
public function match( $uri, $uri_raw = null ) {
|
|
$ret = false;
|
|
if ( ! ! $uri && is_string( $uri ) && $this->has_match() ) {
|
|
$ret = call_user_func( $this->get_match(), $uri, $uri_raw );
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
/* Attributes */
|
|
|
|
public function set_attributes( $callback ) {
|
|
$this->attributes = ( is_callable( $callback ) ) ? $callback : null;
|
|
return $this;
|
|
}
|
|
|
|
public function get_attributes() {
|
|
$ret = array();
|
|
// Callback
|
|
if ( ! is_null( $this->attributes ) ) {
|
|
$ret = call_user_func( $this->attributes );
|
|
}
|
|
// Filter
|
|
$hook = sprintf( 'content_handler_%s_attributes', $this->get_id() );
|
|
$ret = $this->util->apply_filters( $hook, $ret );
|
|
return ( is_array( $ret ) ) ? $ret : array();
|
|
}
|
|
}
|