tz-tools.php 2.9 KB
<?php
/*
Plugin Name: Tenzing Tools
Version: 0.1
Description: Various classes to help out with stuff
Author: Tenzing
*/

    if (version_compare(PHP_VERSION, '5.2.2') !== 1) {
        die('PHP version 5.2.2 or greater is required');
    }

    TzTools::load();

class TzTools {
    public static function load() {
        spl_autoload_register(Array(__CLASS__, 'autoloader'));

        require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'wp_functions.php');

        _register_script('addEvent', plugins_url('addEvent.js', __FILE__));
        _register_script('xmlhttpHandler', plugins_url('xmlhttpHandler.js', __FILE__));
        _register_script('fireEvent', plugins_url('fireEvent.js', __FILE__));

        add_action('widgets_init', Array('MenuWidget', 'init'));
        self::import('ShortCodes');
    }

    public static function import($com) {
        $dir  = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'com' . DIRECTORY_SEPARATOR . $com . DIRECTORY_SEPARATOR;
        $file = $dir . $com . '.php';
        if (is_dir($dir) && is_file($file)) {
            require_once($file);
        }
    }

    public static function autoloader($class) {
        $file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . $class . '.php';
        if (is_file($file)) {
            include($file);
        }
    }
}

function add_actions($class) {
    if (!class_exists($class)) {
        throw new Exception("$class does not exist");
    }

    $ref     = new ReflectionClass($class);
    $actions = $ref->getMethods(ReflectionMethod::IS_STATIC);
    foreach ($actions as $action) {
        add_action($action->name, Array($class, $action->name));
    }
}

function add_filters($class) {
    if (!class_exists($class)) {
        throw new Exception("$class does not exist");
    }

    $ref     = new ReflectionClass($class);
    $methods = $ref->getMethods(ReflectionMethod::IS_STATIC);
    foreach ($methods as $method) {
        add_filter($method->name, Array($class, $method->name));
    }
}

function get_custom_data($name, $post_id = false) {
    if (false === $type = get_post_type($post_id)) {
        throw new InvalidArgumentException("Post {$post_id} does not exist");
    }

    $raw_data = call_user_func_array("_custom_{$type}", Array($post_id, $name));

    if (null === $raw_data) {
        return '';
    }

    return $raw_data;
}

function _custom_attachment($post_id, $custom_name) {
    if (false === ($tax_object = get_the_terms($post_id, $custom_name))) {
        return '';
    }
    $tax_data = array_shift($tax_object);

    return $tax_data->name;
}

function _custom_page($post_id, $custom_name) {
    $custom = get_post_meta($post_id, $custom_name);
    return array_shift($custom);
}

function _custom_post() {
    $args = func_get_args();
    return call_user_func_array('_custom_page', $args);
}

function _custom_revision() {
    $args = func_get_args();
    return call_user_func_array('_custom_page', $args);
}
?>