<?php 
/** 
 * Initial functions 
 * 
 * @copyright       (c) 2000-2016 XOOPS Project (www.xoops.org) 
 * @license             GNU GPL 2 (http://www.gnu.org/licenses/gpl-2.0.html) 
 * @author              Taiwen Jiang <[email protected]> 
 * @since               1.00 
 * @package             Frameworks 
 * @subpackage          art 
 */ 
 
if (substr(XOOPS_VERSION, 0, 9) < 'XOOPS 2.3') { 
    trigger_error('The package only works for XOOPS 2.3+', E_USER_ERROR); 
} 
 
if (!defined('FRAMEWORKS_ART_FUNCTIONS_INI')): 
    define('FRAMEWORKS_ART_FUNCTIONS_INI', true); 
 
    define('FRAMEWORKS_ROOT_PATH', XOOPS_ROOT_PATH . '/Frameworks'); 
 
    /** 
     * Load declaration of an object handler 
     * 
     * 
     * @param string $handler handler name, optional 
     * @param string $dirname 
     * 
     * @return bool 
     */ 
    function load_objectHandler($handler = '', $dirname = 'art') 
    { 
        if (empty($handler)) { 
            $handlerClass = 'ArtObject'; 
            $fileName     = 'object.php'; 
        } else { 
            $handlerClass = 'ArtObject' . ucfirst($handler) . 'Handler'; 
            $fileName     = "object.{$handler}.php"; 
        } 
 
        class_exists($handlerClass) || require_once FRAMEWORKS_ROOT_PATH . "/{$dirname}/{$fileName}"; 
 
        return class_exists($handlerClass); 
    } 
 
    /** 
     * @return bool 
     */ 
    function load_object() 
    { 
        return load_objectHandler(); 
    } 
 
    /** 
     * Load a collective functions of Frameworks 
     * 
     * @param  string $group   name of  the collective functions, empty for functions.php 
     * @param  string $dirname 
     * @return bool 
     */ 
    function load_functions($group = '', $dirname = 'art') 
    { 
        $dirname  = ('' == $dirname) ? 'art' : $dirname; 
        $constant = strtoupper("frameworks_{$dirname}_functions" . ($group ? "_{$group}" : '')); 
        if (defined($constant)) { 
            return true; 
        } 
 
        return include_once FRAMEWORKS_ROOT_PATH . "/{$dirname}/functions.{$group}" . (empty($group) ? '' : '.') . 'php'; 
    } 
 
    /** 
     * Load a collective functions of a module 
     * 
     * The function file should be located in /modules/MODULE/functions.{$group}.php 
     * To avoid slowdown caused by include_once, a constant is suggested in the corresponding file: capitalized {$dirname}_{functions}[_{$group}] 
     * 
     * The function is going to be formulated to use xos_kernel_Xoops2::loadService() in XOOPS 2.3+ 
     * 
     * @param  string $group   name of  the collective functions, empty for functions.php 
     * @param  string $dirname module dirname, optional 
     * @return bool 
     */ 
    function mod_loadFunctions($group = '', $dirname = '') 
    { 
        $dirname  = !empty($dirname) ? $dirname : $GLOBALS['xoopsModule']->getVar('dirname', 'n'); 
        $constant = strtoupper("{$dirname}_functions" . ($group ? "_{$group}" : '') . '_loaded'); 
        if (defined($constant)) { 
            return true; 
        } 
        $filename = XOOPS_ROOT_PATH . "/modules/{$dirname}/include/functions.{$group}" . (empty($group) ? '' : '.') . 'php'; 
 
        return include_once $filename; 
    } 
 
    /** 
     * Load renderer for a class 
     * 
     * The class file should be located in /modules/MODULE/{$class}.renderer.php 
     * The classf name should be defined as Capitalized(module_dirname)Capitalized(class_name)Renderer 
     * 
     * @param  string $class   name of  the classname 
     * @param  string $dirname module dirname, optional 
     * @return bool 
     */ 
    function mod_loadRenderer($class, $dirname = '') 
    { 
        $dirname  = !empty($dirname) ? $dirname : $GLOBALS['xoopsModule']->getVar('dirname', 'n'); 
        $renderer = ucfirst($dirname) . ucfirst($class) . 'Renderer'; 
        if (!class_exists($renderer)) { 
            require_once XOOPS_ROOT_PATH . "/modules/{$dirname}/class/{$class}.renderer.php"; 
        } 
        $instance = eval("{$renderer}::instance()"); 
 
        return $instance; 
    } 
 
    /** 
     * Get localized string if it is defined 
     * 
     * @param string $name string to be localized 
     */ 
    if (!function_exists('mod_constant')) { 
        /** 
         * @param $name 
         * 
         * @return mixed 
         */ 
        function mod_constant($name) 
        { 
            if (!empty($GLOBALS['VAR_PREFIXU']) && @defined($GLOBALS['VAR_PREFIXU'] . '_' . strtoupper($name))) { 
                return constant($GLOBALS['VAR_PREFIXU'] . '_' . strtoupper($name)); 
            } elseif (!empty($GLOBALS['xoopsModule']) && @defined(strtoupper($GLOBALS['xoopsModule']->getVar('dirname', 'n') . '_' . $name))) { 
                return constant(strtoupper($GLOBALS['xoopsModule']->getVar('dirname', 'n') . '_' . $name)); 
            } elseif (defined(strtoupper($name))) { 
                return constant(strtoupper($name)); 
            } else { 
                return str_replace('_', ' ', strtolower($name)); 
            } 
        } 
    } 
 
    /** 
     * Get completed DB prefix if it is defined 
     * 
     * @param string  $name  string to be completed 
     * @param boolean $isRel relative - do not add XOOPS->DB prefix 
     */ 
    if (!function_exists('mod_DB_prefix')) { 
        /** 
         * @param      $name 
         * @param bool $isRel 
         * 
         * @return string 
         */ 
        function mod_DB_prefix($name, $isRel = false) 
        { 
            $relative_name = $GLOBALS['MOD_DB_PREFIX'] . '_' . $name; 
            if ($isRel) { 
                return $relative_name; 
            } 
 
            return $GLOBALS['xoopsDB']->prefix($relative_name); 
        } 
    } 
 
    /** 
     * Display contents of a variable, an array or an object or an array of objects 
     * 
     * @param mixed $message variable/array/object 
     */ 
    if (!function_exists('xoops_message')): 
        /** 
         * @param     $message 
         * @param int $userlevel 
         */ 
        function xoops_message($message, $userlevel = 0) 
        { 
            global $xoopsUser; 
 
            $level = 1; 
            if (!$xoopsUser) { 
                $level = 0; 
            } elseif ($xoopsUser->isAdmin()) { 
                $level = 99; 
            } 
            if ($userlevel > $level) { 
                return null; 
            } 
 
            echo "<div style=\"clear:both;\"> </div>"; 
            if (is_array($message) || is_object($message)) { 
                echo '<div><pre>'; 
                print_r($message); 
                echo '</pre></div>'; 
            } else { 
                echo "<div>{$message}</div>"; 
            } 
            echo "<div style=\"clear:both;\"> </div>"; 
        } 
    endif; 
    /** 
     * @param $message 
     * 
     * @return bool 
     */ 
    function mod_message($message) 
    { 
        global $xoopsModuleConfig; 
        if (!empty($xoopsModuleConfig['do_debug'])) { 
            if (is_array($message) || is_object($message)) { 
                echo '<div><pre>'; 
                print_r($message); 
                echo '</pre></div>'; 
            } else { 
                echo "<div>$message</div>"; 
            } 
        } 
 
        return true; 
    } 
 
    /** 
     * Get dirname of a module according to current path 
     * 
     * @param  string $current_path path to where the function is called 
     * @return string $dirname 
     */ 
    function mod_getDirname($current_path = null) 
    { 
        if (DIRECTORY_SEPARATOR !== '/') { 
            $current_path = str_replace(strpos($current_path, '\\\\', 2) ? '\\\\' : DIRECTORY_SEPARATOR, '/', $current_path); 
        } 
        $url_arr = explode('/', strstr($current_path, '/modules/')); 
 
        return $url_arr[2]; 
    } 
 
    /** 
     * Is a module being installed, updated or uninstalled 
     * Used for setting module configuration default values or options 
     * 
     * The function should be in functions.admin.php, however it requires extra inclusion in xoops_version.php if so 
     * 
     * @param  string $dirname dirname of current module 
     * @return bool 
     */ 
    function mod_isModuleAction($dirname = 'system') 
    { 
        $ret = @(// action module "system" 
            !empty($GLOBALS['xoopsModule']) && 'system' === $GLOBALS['xoopsModule']->getVar('dirname', 'n') && // current dirname 
            ($dirname == $_POST['dirname'] || $dirname == $_POST['module']) && // current op 
            ('update_ok' === $_POST['op'] || 'install_ok' === $_POST['op'] || 'uninstall_ok' === $_POST['op']) && // current action 
            'modulesadmin' === $_POST['fct']); 
 
        return $ret; 
    } 
 
endif; 
 
 |