Пример #1
0
<?php

/* $Id: function.inc.php 6206 2012-02-10 10:12:34Z denis $ */
$NETCAT_FOLDER = join(strstr(__FILE__, "/") ? "/" : "\\", array_slice(preg_split("/[\\/\\\\]+/", __FILE__), 0, -4)) . (strstr(__FILE__, "/") ? "/" : "\\");
include_once $NETCAT_FOLDER . "vars.inc.php";
global $MODULE_FOLDER;
// include need classes
include_once $MODULE_FOLDER . "cache/nc_cache.class.php";
include_once $MODULE_FOLDER . "cache/nc_cache_list.class.php";
include_once $MODULE_FOLDER . "cache/nc_cache_full.class.php";
include_once $MODULE_FOLDER . "cache/nc_cache_browse.class.php";
include_once $MODULE_FOLDER . "cache/nc_cache_function.class.php";
include_once $MODULE_FOLDER . "cache/nc_cache_io.class.php";
// modules classes
if (nc_module_check_by_keyword("calendar", 0)) {
    include_once $MODULE_FOLDER . "cache/modules/nc_cache_calendar.class.php";
}
// load objects for inside_admin events
nc_cache_browse::getObject();
nc_cache_full::getObject();
nc_cache_list::getObject();
nc_cache_function::getObject();
if (nc_module_check_by_keyword("calendar", 0)) {
    nc_cache_calendar::getObject();
}
Пример #2
0
function ListClassVars($cc, $user_table_mode, $nc_ctpl = 0)
{
    global $db, $perm;
    global $MODULE_VARS, $DOMAIN_NAME;
    global $cc_in_sub, $nc_core;
    global $current_cc;
    $nc_ctpl = intval($nc_ctpl);
    // cache section
    if (0 && $nc_core->modules->get_by_keyword("cache")) {
        try {
            $nc_cache_function = nc_cache_function::getObject();
            $cc_data = $db->get_row("SELECT `Catalogue_ID`, `Subdivision_ID`, `Sub_Class_ID`\n        FROM `Sub_Class` WHERE `Sub_Class_ID` = '" . intval($cc) . "'", ARRAY_A);
            // make uniqe string concat parameters for this function
            $data_string = $user_table_mode . "-" . serialize($MODULE_VARS['auth']) . "-" . $DOMAIN_NAME . "-" . $nc_ctpl;
            // check cached data
            $cached_data = $nc_cache_function->read($cc_data, $data_string, $MODULE_VARS['cache']['DEFAULT_LIFETIME']);
            if ($cached_data != -1) {
                // debug info
                $cache_debug_info = "Readed, catalogue[" . $cc_data['Catalogue_ID'] . "], sub[" . $cc_data['Subdivision_ID'] . "], cc[" . $cc_data['Sub_Class_ID'] . "], Access_ID[-], Lifetime[-], bytes[" . strlen($cached_data) . "]";
                $nc_cache_function->debugMessage($cache_debug_info, __FILE__, __LINE__);
                // return cache if not eval flag setted
                $Array = unserialize($cached_data);
                return $Array;
            }
        } catch (Exception $e) {
            // for debug
            $nc_cache_function->errorMessage($e);
        }
    }
    if (!$user_table_mode) {
        $Array = array();
        if ($cc_in_sub) {
            foreach ($cc_in_sub as $row) {
                if ($row["Sub_Class_ID"] == $cc) {
                    $Array = $row;
                    break;
                }
            }
        }
        if (empty($Array)) {
            $Array = $db->get_row("SELECT * FROM `Sub_Class` WHERE `Sub_Class_ID` = '" . intval($cc) . "'", ARRAY_A);
        }
        if ($current_cc['Sub_Class_ID'] == $cc && $nc_core->get_page_type() == 'rss') {
            $class_cond = "`Type` = 'rss' AND `ClassTemplate` = '" . $Array["Class_ID"] . "' ";
        } else {
            if ($nc_ctpl) {
                $class_cond = "`Class_ID` = '" . $nc_ctpl . "'";
            } else {
                // use class template or not?
                $class_cond = "`Class_ID` = '" . ($Array["Class_Template_ID"] ? $Array["Class_Template_ID"] : $Array["Class_ID"]) . "'";
            }
        }
        if ($nc_core->inside_admin) {
            $class_env = $db->get_row("SELECT * FROM Class WHERE `Type` = 'inside_admin' AND `ClassTemplate` = '" . $Array["Class_ID"] . "' LIMIT 1 ", ARRAY_A);
        }
        if (!$nc_core->inside_admin && $nc_core->admin_mode) {
            $class_env = $db->get_row("SELECT * FROM Class WHERE `Type` = 'admin_mode' AND `ClassTemplate` = '" . $Array["Class_ID"] . "' LIMIT 1 ", ARRAY_A);
        }
    } else {
        $user_table_id = $db->get_var("SELECT `System_Table_ID` FROM `System_Table` WHERE `System_Table_Name` = 'User'");
        $class_cond = "`System_Table_ID` = '" . $user_table_id . "'";
        $Array["System_Table_ID"] = $user_table_id;
        $Array["Subdivision_ID"] = $MODULE_VARS['auth']['USER_LIST_SUB'];
        $Array["EnglishName"] = $MODULE_VARS['auth']['USER_KEYWORD'];
    }
    //выйдем из функции, если $cc указан неверно
    if (!$Array) {
        // error message
        if (is_object($perm) && $perm->isSupervisor()) {
            // backtrace info
            $debug_backtrace_info = debug_backtrace();
            // choose error
            if (isset($debug_backtrace_info[1]['function']) && $debug_backtrace_info[1]['function'] == "nc_objects_list") {
                // error info for the supervisor
                trigger_error(sprintf(NETCAT_FUNCTION_OBJECTS_LIST_CC_ERROR, $cc), E_USER_WARNING);
            } else {
                // error info for the supervisor
                trigger_error(sprintf(NETCAT_FUNCTION_LISTCLASSVARS_ERROR_SUPERVISOR, $cc), E_USER_WARNING);
            }
        }
        return NULL;
    }
    // inherit from Class
    if (!$class_env) {
        $class_env = $db->get_row("SELECT * FROM `Class` WHERE " . $class_cond, ARRAY_A);
    }
    if ($class_env['CustomSettingsTemplate']) {
        require_once $GLOBALS['ADMIN_FOLDER'] . "array_to_form.inc.php";
        $a2f = new nc_a2f($class_env['CustomSettingsTemplate'], $Array['CustomSettings'], 'CustomSettings');
        $Array["Sub_Class_Settings"] = $a2f->get_values_as_array();
    }
    foreach ($class_env as $key => $val) {
        if ($Array[$key] == "") {
            $Array[$key] = $val;
        }
    }
    if ($Array["NL2BR"] == -1) {
        $Array["NL2BR"] = $class_env["NL2BR"];
    }
    if ($Array["AllowTags"] == -1) {
        $Array["AllowTags"] = $class_env["AllowTags"];
    }
    if ($Array["UseCaptcha"] == -1) {
        $Array["UseCaptcha"] = $class_env["UseCaptcha"];
    }
    if ($nc_core->modules->get_by_keyword("cache")) {
        if ($Array["CacheForUser"] == -1) {
            $Array["CacheForUser"] = $class_env["CacheForUser"];
        }
    }
    if ($Array["Subdivision_ID"]) {
        $parent_sub = $Array["Subdivision_ID"];
        $Domain = $db->get_var("SELECT Catalogue.Domain FROM `Catalogue`\n      LEFT JOIN `Subdivision` ON Subdivision.Catalogue_ID = Catalogue.Catalogue_ID\n      WHERE Subdivision.Subdivision_ID = '" . $parent_sub . "'");
        $HiddenHost = $Domain ? strchr($Domain, ".") ? $Domain : $Domain . "." . $DOMAIN_NAME : $DOMAIN_NAME;
        while ($parent_sub) {
            $ParentArray = GetSubdivisionByID($parent_sub);
            if ($Array["Subdivision_ID"] == $parent_sub) {
                $Array["Subdivision_Name"] = $ParentArray["Subdivision_Name"];
                $Array["Hidden_URL"] = $ParentArray["Hidden_URL"];
                $Array["Hidden_Host"] = $HiddenHost;
            }
            if (!$Array["Read_Access_ID"]) {
                $Array["Read_Access_ID"] = $ParentArray["Read_Access_ID"];
            }
            if (!$Array["Write_Access_ID"]) {
                $Array["Write_Access_ID"] = $ParentArray["Write_Access_ID"];
            }
            if (!$Array["Edit_Access_ID"]) {
                $Array["Edit_Access_ID"] = $ParentArray["Edit_Access_ID"];
            }
            if (!$Array["Delete_Access_ID"]) {
                $Array["Delete_Access_ID"] = $ParentArray["Delete_Access_ID"];
            }
            if (!$Array["Checked_Access_ID"]) {
                $Array["Checked_Access_ID"] = $ParentArray["Checked_Access_ID"];
            }
            if (!$Array["Subscribe_Access_ID"]) {
                $Array["Subscribe_Access_ID"] = $ParentArray["Subscribe_Access_ID"];
            }
            if ($nc_core->modules->get_by_keyword("cache")) {
                if (!$Array["Cache_Access_ID"]) {
                    $Array["Cache_Access_ID"] = $ParentArray["Cache_Access_ID"];
                }
                if (!$Array["Cache_Lifetime"]) {
                    $Array["Cache_Lifetime"] = $ParentArray["Cache_Lifetime"];
                }
            }
            if (!$Array["Moderation_ID"]) {
                $Array["Moderation_ID"] = $ParentArray["Moderation_ID"];
            }
            $parent_sub = $ParentArray["Parent_Sub_ID"];
        }
        if (!$Array["Catalogue_ID"]) {
            $Array["Catalogue_ID"] = $ParentArray["Catalogue_ID"];
        }
    }
    if ($Array["Catalogue_ID"] == $GLOBALS["catalogue"]) {
        $ParentArray = $GLOBALS["current_catalogue"];
    } else {
        $ParentArray = $db->get_row("SELECT * FROM `Catalogue` WHERE `Catalogue_ID` = '" . $Array["Catalogue_ID"] . "'", ARRAY_A);
    }
    if (!$Array["Read_Access_ID"]) {
        $Array["Read_Access_ID"] = $ParentArray["Read_Access_ID"];
    }
    if (!$Array["Write_Access_ID"]) {
        $Array["Write_Access_ID"] = $ParentArray["Write_Access_ID"];
    }
    if (!$Array["Edit_Access_ID"]) {
        $Array["Edit_Access_ID"] = $ParentArray["Edit_Access_ID"];
    }
    if (!$Array["Subscribe_Access_ID"]) {
        $Array["Subscribe_Access_ID"] = $ParentArray["Subscribe_Access_ID"];
    }
    if (!$Array["Delete_Access_ID"]) {
        $Array["Delete_Access_ID"] = $ParentArray["Delete_Access_ID"];
    }
    if (!$Array["Checked_Access_ID"]) {
        $Array["Checked_Access_ID"] = $ParentArray["Checked_Access_ID"];
    }
    if ($nc_core->modules->get_by_keyword("cache")) {
        if (!$Array["Cache_Access_ID"]) {
            $Array["Cache_Access_ID"] = $ParentArray["Cache_Access_ID"];
        }
        if (!$Array["Cache_Lifetime"]) {
            $Array["Cache_Lifetime"] = $ParentArray["Cache_Lifetime"];
        }
    }
    if (!$Array["Moderation_ID"]) {
        $Array["Moderation_ID"] = $ParentArray["Moderation_ID"];
    }
    // cache section
    if ($nc_core->modules->get_by_keyword("cache") && $Array['Cache_Access_ID'] == 1 && is_object($nc_cache_function)) {
        try {
            $bytes = $nc_cache_function->add($Array, $data_string, serialize($Array));
            // debug info
            if ($bytes) {
                $cache_debug_info = "Writed, catalogue[" . $Array['Catalogue_ID'] . "], sub[" . $Array['Subdivision_ID'] . "], cc[" . $Array['Sub_Class_ID'] . "], Access_ID[-], Lifetime[-], bytes[" . $bytes . "]";
                $nc_cache_function->debugMessage($cache_debug_info, __FILE__, __LINE__, "ok");
            }
        } catch (Exception $e) {
            // for debug
            $nc_cache_function->errorMessage($e);
        }
    }
    $Array['sysTbl'] += 0;
    return $Array;
}