110 lines
2.2 KiB
PHP
110 lines
2.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Theme
|
|
* @package Simple Lightbox
|
|
* @subpackage Themes
|
|
* @author Archetyped
|
|
*/
|
|
class SLB_Theme extends SLB_Component {
|
|
/* Properties */
|
|
|
|
protected $props_required = array( 'name' );
|
|
|
|
/**
|
|
* Public flag
|
|
* @var bool
|
|
*/
|
|
protected $public = true;
|
|
|
|
/* Get/Set */
|
|
|
|
/**
|
|
* Retrieve theme's ancestors
|
|
* @param bool $sort_topdown (optional) Ancestor sorting (Default: Nearest to Farthest)
|
|
* @return array Theme's ancestors (sorted by nearest to most distant ancestor)
|
|
*/
|
|
public function get_ancestors( $sort_topdown = false ) {
|
|
$ret = array();
|
|
/**
|
|
* @var SLB_Theme
|
|
*/
|
|
$thm = $this;
|
|
while ( $thm->has_parent() ) {
|
|
$par = $thm->get_parent();
|
|
// Add ancestor
|
|
if ( $par->is_valid() && ! in_array( $par, $ret, true ) ) {
|
|
$ret[] = $par;
|
|
}
|
|
// Get next ancestor
|
|
$thm = $par;
|
|
}
|
|
// Sorting
|
|
if ( $sort_topdown ) {
|
|
$ret = array_reverse( $ret );
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
/**
|
|
* Set public flag
|
|
* @param bool $public
|
|
*/
|
|
public function set_public( $public ) {
|
|
$this->public = ! ! $public;
|
|
}
|
|
|
|
/**
|
|
* Get privacy state
|
|
* @return bool
|
|
*/
|
|
public function get_public() {
|
|
return ! ! $this->public;
|
|
}
|
|
|
|
/* Templates */
|
|
|
|
/**
|
|
* Add template file
|
|
* @see `add_file()`
|
|
* @param string $handle Template handle
|
|
* @param string $src Template URI
|
|
* @return obj Current instance
|
|
*/
|
|
protected function add_template( $handle, $src ) {
|
|
return $this->add_file( 'template', $handle, $src );
|
|
}
|
|
|
|
/**
|
|
* Retrieve template file
|
|
* @see `get_file()`
|
|
* @param string $handle Template handle
|
|
* @param string $format (optional) Return value format
|
|
* @return mixed Template file (Default: array of file properties @see `Base_Object::add_file()`)
|
|
*/
|
|
protected function get_template( $handle, $format = null ) {
|
|
return $this->get_file( 'template', $handle, $format );
|
|
}
|
|
|
|
/* Layout */
|
|
|
|
/**
|
|
* Set theme layout
|
|
* @uses `add_template()`
|
|
* @param string $src Layout file URI
|
|
* @return Current instance
|
|
*/
|
|
public function set_layout( $src ) {
|
|
return $this->add_template( 'layout', $src );
|
|
}
|
|
|
|
/**
|
|
* Get layout
|
|
* @param string $format (optional) Layout data format
|
|
* @return mixed Theme layout
|
|
*/
|
|
public function get_layout( $format = null ) {
|
|
return $this->get_template( 'layout', $format );
|
|
}
|
|
}
|