Esempio n. 1
0
 /**
  * @param $cc_env
  * @param int $nc_ctpl
  * @param $type
  * @return null
  */
 protected function inherit($cc_env, $nc_ctpl = 0, $type)
 {
     // system superior object
     $nc_core = nc_Core::get_object();
     if (empty($cc_env)) {
         global $perm;
         // error message
         if (is_object($perm) && $perm->isSupervisor()) {
             // backtrace info
             $debug_backtrace_info = debug_backtrace();
             // choose error
             if (isset($debug_backtrace_info[2]['function']) && $debug_backtrace_info[2]['function'] == "nc_objects_list") {
                 // error info for the supervisor
                 trigger_error(sprintf(NETCAT_FUNCTION_OBJECTS_LIST_CC_ERROR, $debug_backtrace_info[2]['args'][1]), E_USER_WARNING);
             } else {
                 // error info for the supervisor
                 trigger_error(sprintf(NETCAT_FUNCTION_LISTCLASSVARS_ERROR_SUPERVISOR, $cc), E_USER_WARNING);
             }
         }
         return null;
     }
     $nc_tpl_in_cc = 0;
     if ($cc_env['Class_Template_ID'] && !$nc_ctpl) {
         $nc_tpl_in_cc = $cc_env['Class_Template_ID'];
     }
     $class_env = $nc_core->component->get_for_cc($cc_env['Sub_Class_ID'], $cc_env['Class_ID'], $nc_ctpl, $nc_tpl_in_cc, $type);
     foreach ((array) $class_env as $key => $val) {
         if (!array_key_exists($key, $cc_env) || $cc_env[$key] == "") {
             $cc_env[$key] = $val;
         }
     }
     if ($cc_env["NL2BR"] == -1) {
         $cc_env["NL2BR"] = $class_env["NL2BR"];
     }
     if ($cc_env["AllowTags"] == -1) {
         $cc_env["AllowTags"] = $class_env["AllowTags"];
     }
     if ($cc_env["UseCaptcha"] == -1) {
         $cc_env["UseCaptcha"] = $class_env["UseCaptcha"];
     }
     if ($nc_core->modules->get_by_keyword("cache")) {
         if ($cc_env["CacheForUser"] == -1) {
             $cc_env["CacheForUser"] = $class_env["CacheForUser"];
         }
     }
     if ($class_env['CustomSettingsTemplate']) {
         require_once $nc_core->ADMIN_FOLDER . "array_to_form.inc.php";
         $a2f = new nc_a2f($class_env['CustomSettingsTemplate'], 'CustomSettings');
         $a2f->set_value($cc_env['CustomSettings']);
         $cc_env["Sub_Class_Settings"] = $a2f->get_values_as_array();
     }
     $cc_env['sysTbl'] = intval($class_env['System_Table_ID']);
     $sub_env = $nc_core->subdivision->get_by_id($cc_env["Subdivision_ID"]);
     $inherited_params = array('Read_Access_ID', 'Write_Access_ID', 'Edit_Access_ID', 'Checked_Access_ID', 'Delete_Access_ID', 'Subscribe_Access_ID', 'Moderation_ID');
     if ($nc_core->modules->get_by_keyword("cache")) {
         $inherited_params[] = 'Cache_Access_ID';
         $inherited_params[] = 'Cache_Lifetime';
     }
     foreach ($inherited_params as $v) {
         if (!$cc_env[$v]) {
             $cc_env[$v] = $sub_env[$v];
         }
     }
     $cc_env['Subdivision_Name'] = $sub_env['Subdivision_Name'];
     $cc_env['Hidden_URL'] = $sub_env['Hidden_URL'];
     $Domain = $nc_core->catalogue->get_by_id($cc_env['Catalogue_ID'], 'Domain');
     $cc_env['Hidden_Host'] = $Domain ? $Domain : $nc_core->DOMAIN_NAME;
     return $cc_env;
 }
Esempio n. 2
0
                 setcookie("QUICK_BAR_CLOSED", -1, time() + $nc_core->get_variable("ADMIN_AUTHTIME"), "/", $cookie_domain);
             } else {
                 setcookie("QUICK_BAR_CLOSED", 1, time() + $nc_core->get_variable("ADMIN_AUTHTIME"), "/", $cookie_domain);
             }
         }
     }
     if ($nc_core->template->get_current("CustomSettings") && $nc_core->subdivision->get_current('Template_ID') == $template) {
         require_once $nc_core->ADMIN_FOLDER . "array_to_form.inc.php";
         $nc_a2f = new nc_a2f($nc_core->template->get_current("CustomSettings"));
         $nc_a2f->set_value($nc_core->subdivision->get_current("TemplateSettings"));
         $template_settings = $nc_a2f->get_values_as_array();
     }
     if ($nc_core->template->get_current("CustomSettings") && $nc_core->subdivision->get_current('Template_ID') != $template) {
         require_once $nc_core->ADMIN_FOLDER . "array_to_form.inc.php";
         $nc_a2f = new nc_a2f($nc_core->template->get_current("CustomSettings"), array());
         $template_settings = $nc_a2f->get_values_as_array();
     }
     if ($nc_core->inside_admin) {
         // output interface settings (add 'em to the footer before </body>)
         $UI_CONFIG = new ui_config_objects($cc);
         $js_code = '".$UI_CONFIG->to_json()."';
         if ($template_footer && nc_preg_match("/(<\\/body>)/i", $template_footer, $regs)) {
             $template_footer = str_replace($regs[1], $js_code . $regs[1], $template_footer);
         } else {
             $template_footer .= $js_code;
         }
     }
     #if ($quick_mode && nc_quickbar_permission()) {
     #    $template_footer = nc_cut_jquery($template_footer);
     #}
 } elseif ($admin_modal) {
Esempio n. 3
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;
}