Commit 0bce2c06 by Scott

Merge branch 'pr/194' into dev

parents cd75b772 84129054
<?php
/*
Snow Theme for Question2Answer Package
Copyright (C) 2014 Q2A Market <http://www.q2amarket.com>
File: inc/qam-snow-theme.php
Version: Snow 1.4
Description: Snow theme core class
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/
/**
* Snow theme loader class
*
* This class loads all required data for the Snow theme. This is written more
* for future use and to keep untouched <code>qa_html_theme_base</code>
*
* @package Snow
* @subpackage Loader
* @category Theme
* @since Snow 1.4
* @version 1.0
* @author Q2A Market <http://www.q2amarket.com>
* @copyright (c) 2014, Q2A Market
* @license http://www.gnu.org/copyleft/gpl.html
*/
class qam_snow_theme
{
/**
* @var array Holds the data
*/
private $data;
/**
* Snow instance
*
* @access public
* @since Snow 1.4
* @version 1.0
*
* @static $instance
*
* @uses qam_snow_theme::setup_globals() Setup require globals
* @uses qam_snow_theme::includes() Include require files
* @uses qam_snow_theme::heads() Setup <code><head></code> elements
* @uses qam_snow_theme::set_options() Setup dynamic options for Snow
* @uses qam_snow_theme::headers() Setup header elements
* @uses qam_snow_theme::footers() Setup footer elements
*
* @see qam_snow_theme()
* @return mixed all qam_snow_theme
*
* @author Q2A Market <http://www.q2amarket.com>
* @copyright (c) 2014, Q2A Market
* @license http://www.gnu.org/copyleft/gpl.html
*/
public static function instance()
{
// Store the instance locally to avoid private static replication
static $instance = null;
// Only run these methods if they haven't been run previously
if (null === $instance) {
$instance = new qam_snow_theme;
$instance->setup_globals();
$instance->includes();
// $instance->heads();
$instance->get_options();
$instance->headers();
// $instance->footers();
}
// Always return the instance
return $instance;
}
/**
* Class construct
*/
private function __construct()
{ /* Do nothing here */
}
/**
*
* @param type $key
* @return type
*/
public function __isset($key)
{
return isset($this->data[$key]);
}
/**
*
* @param type $key
* @return type
*/
public function __get($key)
{
return isset($this->data[$key]) ? $this->data[$key] : null;
}
/**
*
* @param type $key
* @param type $value
*/
public function __set($key, $value)
{
$this->data[$key] = $value;
}
/**
*
* @param type $key
*/
public function __unset($key)
{
if (isset($this->data[$key])) {
unset($this->data[$key]);
}
}
/**
*
* @param type $name
* @param type $args
* @return null
*/
public function __call($name = '', $args = array())
{
unset($name, $args);
return null;
}
/**
* Snow theme globals
*
* @access private
* @since Snow 1.4
* @version 1.0
*
* @author Q2A Market <www.q2amarket.com>
* @copyright (c) 2014, Q2A Market
* @license http://www.gnu.org/copyleft/gpl.html
*/
private function setup_globals()
{
$this->theme = qa_opt('site_theme');
$this->author = $this->qam_opt('snow_author', 'Q2A Market');
$this->author_url = $this->qam_opt('snow_author_url', 'http://www.q2amarket.com');
$this->version = $this->qam_opt('snow_version', '1.4-beta');
$this->snow_version = strtolower($this->theme . '-' . $this->version);
$this->opt_prefix = 'qam_snow_';
$this->js_dir = 'js/';
$this->css_dir = 'css/';
$this->img_url = 'images/';
$this->icon_url = $this->img_url . 'icons/';
}
/**
* Incldue require files
*
* @access private
* @since Snow 1.4
* @version 1.0
*
* @author Q2A Market <www.q2amarket.com>
* @copyright (c) 2014, Q2A Market
* @license http://www.gnu.org/copyleft/gpl.html
*/
private function includes()
{ //do nothing now
}
/**
* Get theme options for customization.
*
* @access private
* @since Snow 1.4
* @version 1.0
* @return array|mixed theme options value
*
* @author Q2A Market <http://www.q2amarket.com>
* @copyright (c) 2014, Q2A Market
* @license http://www.gnu.org/copyleft/gpl.html
*/
private function get_options()
{
$this->data['ask_search_box_color'] = $this->qam_opt('ask_search_box_color');
$this->data['welcome_widget_color'] = $this->qam_opt('welcome_widget_color');
$this->data['fixed_topbar'] = (($this->qam_opt('fixed_topbar')) ? 'fixed' : null);
$this->data['header_custom_content'] = $this->qam_opt('header_custom_content');
$this->data['footer_custom_content'] = $this->qam_opt('above_footer_custom_content');
return $this->data;
}
/**
* Get header items
*
* @access private
* @since Snow 1.4
* @version 1.0
* @return array|mixed various header items (e.g. user account, scripts)
*
* @author Q2A Market <http://www.q2amarket.com>
* @copyright (c) 2014, Q2A Market
* @license http://www.gnu.org/copyleft/gpl.html
*/
private function headers()
{
$this->data['headers'] = array(
'user_points' => $this->user_points(),
'ask_button' => $this->ask_button(),
);
return $this->data;
}
/**
* Get logged in user's points
*
* @access private
* @since Snow 1.4
* @version 1.0
* @return string|null LoggedIn user's total points, null for guest
*
* @author Q2A Market <http://www.q2amarket.com>
* @copyright (c) 2014, Q2A Market
* @license http://www.gnu.org/copyleft/gpl.html
*/
private function user_points()
{
if (qa_is_logged_in()) {
$userpoints = qa_get_logged_in_points();
$pointshtml = ($userpoints == 1) ? qa_lang_html_sub('main/1_point', '1', '1') : qa_html(number_format($userpoints));
$points = '<DIV CLASS="qam-logged-in-points">' . $pointshtml . '</DIV>';
return $points;
}
return null;
}
/**
* Custom ask button for medium and small screen
*
* @access private
* @since Snow 1.4
* @version 1.0
* @return string Ask button html markup
*
* @author Q2A Market <http://www.q2amarket.com>
* @copyright (c) 2014, Q2A Market
* @license http://www.gnu.org/copyleft/gpl.html
*/
private function ask_button()
{
$html = '<div class="qam-ask-search-box">';
$html .= '<div class="qam-ask-mobile"><a href="' . qa_path('ask', null, qa_path_to_root()) . '" class="' . $this->qam_opt('ask_search_box_color') . '">' . qa_lang_html('main/nav_ask') . '</a></div>';
$html .= '<div class="qam-search-mobile ' . $this->qam_opt('ask_search_box_color') . '" id="qam-search-mobile"></div>';
$html .= '</div>';
return $html;
}
}
/* ---------------------------------------------------------------------------- */
// create a function to instanciate the class
if (!function_exists('qam_snow_theme')) {
/**
* Return <code>qam_snow_theme</code> class instance
*
* @access public
* @since Snow 1.4
* @version 1.0
* @return array
*
* @author Q2A Market <http://www.q2amarket.com>
* @copyright (c) 2014, Q2A Market
* @license http://www.gnu.org/copyleft/gpl.html
*/
function qam_snow_theme()
{
return qam_snow_theme::instance();
}
}
// Declare global variable
if (class_exists('qam_snow_theme')) {
$GLOBALS['qam_snow'] = qam_snow_theme();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment