示例#1
0
 public function menu()
 {
     $block_arr = array();
     $regedit = regedit::getInstance();
     $modules = $this->getSortedModulesList();
     $result = array();
     foreach ($modules as $moduleName => $moduleInfo) {
         $moduleConfig = $regedit->getVal("//modules/{$moduleName}/config");
         $currentModule = cmsController::getInstance()->getCurrentModule();
         $currentMethod = cmsController::getInstance()->getCurrentMethod();
         $line_arr = array();
         $line_arr['attribute:name'] = $moduleInfo['name'];
         $line_arr['attribute:label'] = $moduleInfo['label'];
         $line_arr['attribute:type'] = $moduleInfo['type'];
         if ($currentModule == $moduleName && !($currentMethod == 'mainpage')) {
             $line_arr['attribute:active'] = "active";
         }
         if ($moduleConfig && system_is_allowed($currentModule, "config")) {
             $line_arr['attribute:config'] = "config";
         }
         $result[] = $line_arr;
     }
     $block_arr['items'] = array("nodes:item" => $result);
     return $block_arr;
 }
 protected function executeMacros($v264a818e305e0550c3ee63761dd3d911)
 {
     if ($v264a818e305e0550c3ee63761dd3d911['module'] == "core" || $v264a818e305e0550c3ee63761dd3d911['module'] == "system" || $v264a818e305e0550c3ee63761dd3d911['module'] == "custom") {
         $v22884db148f0ffb0d830ba431102b0b5 =& system_buildin_load($v264a818e305e0550c3ee63761dd3d911['module']);
     } else {
         $v22884db148f0ffb0d830ba431102b0b5 = cmsController::getInstance()->getModule($v264a818e305e0550c3ee63761dd3d911['module']);
     }
     $vea9f6aca279138c58f705c8d4cb4b8ce = isset($v264a818e305e0550c3ee63761dd3d911['method']) ? $v264a818e305e0550c3ee63761dd3d911['method'] : false;
     if ($v22884db148f0ffb0d830ba431102b0b5 && $vea9f6aca279138c58f705c8d4cb4b8ce) {
         if ($v264a818e305e0550c3ee63761dd3d911['module'] != "core" && $v264a818e305e0550c3ee63761dd3d911['module'] != "system" && $v264a818e305e0550c3ee63761dd3d911['module'] != "custom") {
             $vbab394571d9305ff0c667ed256c19a70 = (bool) system_is_allowed($v264a818e305e0550c3ee63761dd3d911['module'], $v264a818e305e0550c3ee63761dd3d911['method']);
         } else {
             $vbab394571d9305ff0c667ed256c19a70 = true;
         }
         if ($vbab394571d9305ff0c667ed256c19a70) {
             $v9b207167e5381c47682c6b4f58a623fb = call_user_func_array(array($v22884db148f0ffb0d830ba431102b0b5, $v264a818e305e0550c3ee63761dd3d911['method']), $v264a818e305e0550c3ee63761dd3d911['params']);
             return $v9b207167e5381c47682c6b4f58a623fb;
         } else {
             return false;
         }
     } else {
         return false;
     }
 }
/**
 * @deprecated
 * Больше не используется в системе
 */
function macros_content()
{
    static $res;
    if (!is_null($res)) {
        return $res;
    }
    $cmsController = cmsController::getInstance();
    $current_module = $cmsController->getCurrentModule();
    $current_method = $cmsController->getCurrentMethod();
    $previousValue = $cmsController->isContentMode;
    $cmsController->isContentMode = true;
    if ($module = $cmsController->getModule($current_module)) {
        $pid = $cmsController->getCurrentElementId();
        $permissions = permissionsCollection::getInstance();
        $templater = $cmsController->getCurrentTemplater();
        $isAdmin = $permissions->isAdmin();
        if ($pid) {
            list($r, $w) = $permissions->isAllowedObject($permissions->getUserId(), $pid);
            if ($r) {
                $is_element_allowed = true;
            } else {
                $is_element_allowed = false;
            }
        } else {
            $is_element_allowed = true;
        }
        if (system_is_allowed($current_module, $current_method) && $is_element_allowed) {
            if ($parsedContent = $cmsController->parsedContent) {
                return $parsedContent;
            }
            if ($cmsController->getCurrentMode() == "admin") {
                try {
                    if (!$templater->getIsInited()) {
                        $res = $module->cms_callMethod($current_method, NULL);
                    }
                } catch (publicException $e) {
                    $templater->setDataSet($e);
                    return $res = false;
                }
            } else {
                try {
                    $res = $module->cms_callMethod($current_method, NULL);
                } catch (publicException $e) {
                    $res = $e->getMessage();
                }
                $res = system_parse_short_calls($res);
                $res = str_replace("%content%", "%content ", $res);
                $res = templater::getInstance()->parseInput($res);
                $res = system_parse_short_calls($res);
            }
            if ($res !== false && is_array($res) == false) {
                if ($cmsController->getCurrentMode() != "admin" && stripos($res, "%cut%") !== false) {
                    if (array_key_exists("cut", $_REQUEST)) {
                        if ($_REQUEST['cut'] == "all") {
                            $_REQUEST['cut_pages'] = 0;
                            return str_ireplace("%cut%", "", $res);
                        }
                        $cut = (int) $_REQUEST['cut'];
                    } else {
                        $cut = 0;
                    }
                    $res_arr = spliti("%cut%", $res);
                    if ($cut > sizeof($res_arr) - 1) {
                        $cut = sizeof($res_arr) - 1;
                    }
                    if ($cut < 0) {
                        $cut = 0;
                    }
                    $_REQUEST['cut_pages'] = sizeof($res_arr);
                    $_REQUEST['cut_curr_page'] = $cut;
                    $res = $res_arr[$cut];
                }
                $cmsControllerInstance = $cmsController;
                $cmsControllerInstance->parsedContent = $res;
                $cmsController->isContentMode = $previousValue;
                return $res;
            } else {
                $cmsController->isContentMode = $previousValue;
                return $res = '<notice>%core_templater% %core_error_nullvalue%</notice>';
            }
        } else {
            if ($cmsController->getCurrentMode() == "admin" && $isAdmin) {
                if ($current_module == "content" && $current_method == "sitetree") {
                    $regedit = regedit::getInstance();
                    $modules = $regedit->getList("//modules");
                    foreach ($modules as $item) {
                        list($module) = $item;
                        if (system_is_allowed($module) && $module != 'content') {
                            $module_inst = $cmsController->getModule($module);
                            $url = $module_inst->pre_lang . "/admin/" . $module . "/";
                            $module_inst->redirect($url);
                        }
                    }
                }
            }
            if ($module = $cmsController->getModule("users")) {
                header("Status: 401 Unauthorized");
                $cmsController->setCurrentModule("users");
                $cmsController->setCurrentMethod("login");
                $cmsController->isContentMode = $previousValue;
                if ($isAdmin) {
                    $module = $cmsController->getModule($current_module);
                    if ($module->isMethodExists($current_method) == false) {
                        $url = $module_inst->pre_lang . "/admin/content/sitetree/";
                        $module->redirect($url);
                    }
                    if ($cmsController->getCurrentMode() == "admin") {
                        $e = new requreMoreAdminPermissionsException(getLabel("error-require-more-permissions"));
                        $templater->setDataSet($e);
                    }
                    return $res = "<p><warning>%core_error_nopermission%</warning></p>" . $module->login();
                } else {
                    if ($templater instanceof xslAdminTemplater && $templater->getParsed()) {
                        throw new requireAdminPermissionsException("No permissions");
                    }
                    return $res = $module->login();
                }
            }
            return $res = '<warning>%core_templater% %core_error_nullvalue% %core_error_nopermission%</warning>';
        }
    }
    $cmsController->isContentMode = $previousValue;
    return $res = '%core_templater% %core_error_unknown%';
}
 protected function executeCompleteMacros($v22884db148f0ffb0d830ba431102b0b5, $vea9f6aca279138c58f705c8d4cb4b8ce = null, $args = array(), array $v87cd8b8808600624d8c590cfc2e6e94b)
 {
     $v594c103f2c6e04c3d8ab059f031e0c1a = cmsController::getInstance();
     $v7d059d8ffac0a3914b296af280c6194e = $this->generateMSResultUID();
     $v79e333907d62f2b72da57dda128668fd = "%" . $v22884db148f0ffb0d830ba431102b0b5 . " " . $vea9f6aca279138c58f705c8d4cb4b8ce . "(" . implode(",", $args) . ")%";
     $vb439a0ec6d69c6153eb9fd03e39b7216 = count($args);
     for ($v865c0c0b4ab0e063e5caa3387c1a8741 = 0; $v865c0c0b4ab0e063e5caa3387c1a8741 < $vb439a0ec6d69c6153eb9fd03e39b7216; $v865c0c0b4ab0e063e5caa3387c1a8741++) {
         if (isset(self::$msResultStack[$args[$v865c0c0b4ab0e063e5caa3387c1a8741]])) {
             $args[$v865c0c0b4ab0e063e5caa3387c1a8741] = self::$msResultStack[$args[$v865c0c0b4ab0e063e5caa3387c1a8741]];
         } elseif (strpos($args[$v865c0c0b4ab0e063e5caa3387c1a8741], '[ms_') !== false) {
             $args[$v865c0c0b4ab0e063e5caa3387c1a8741] = str_replace(array_keys(self::$msResultStack), array_values(self::$msResultStack), $args[$v865c0c0b4ab0e063e5caa3387c1a8741]);
         }
     }
     if (is_null($vea9f6aca279138c58f705c8d4cb4b8ce) && is_callable($v22884db148f0ffb0d830ba431102b0b5)) {
         $v79e333907d62f2b72da57dda128668fd = $v22884db148f0ffb0d830ba431102b0b5($args);
     } else {
         $vd8c56561cee88453daa5db9a9ab5354c = null;
         if ($v22884db148f0ffb0d830ba431102b0b5 == "core" || $v22884db148f0ffb0d830ba431102b0b5 == "system" || $v22884db148f0ffb0d830ba431102b0b5 == "custom") {
             $vd8c56561cee88453daa5db9a9ab5354c =& system_buildin_load($v22884db148f0ffb0d830ba431102b0b5);
         } elseif (system_is_allowed($v22884db148f0ffb0d830ba431102b0b5, $vea9f6aca279138c58f705c8d4cb4b8ce)) {
             $vd8c56561cee88453daa5db9a9ab5354c = $v594c103f2c6e04c3d8ab059f031e0c1a->getModule($v22884db148f0ffb0d830ba431102b0b5);
         } elseif (defined('DEBUG') && DEBUG) {
             $v79e333907d62f2b72da57dda128668fd = "You are not allowed to execute {$v22884db148f0ffb0d830ba431102b0b5}/{$vea9f6aca279138c58f705c8d4cb4b8ce}";
         } else {
             $v79e333907d62f2b72da57dda128668fd = "";
         }
         if ($vd8c56561cee88453daa5db9a9ab5354c) {
             try {
                 $v79e333907d62f2b72da57dda128668fd = $vd8c56561cee88453daa5db9a9ab5354c->cms_callMethod($vea9f6aca279138c58f705c8d4cb4b8ce, $args);
             } catch (publicException $ve1671797c52e15f763380b45e841ec32) {
                 $v79e333907d62f2b72da57dda128668fd = $ve1671797c52e15f763380b45e841ec32->getMessage();
             }
         }
     }
     $this->parseLevel++;
     $v79e333907d62f2b72da57dda128668fd = $this->parse($v87cd8b8808600624d8c590cfc2e6e94b, $v79e333907d62f2b72da57dda128668fd);
     $this->parseLevel--;
     $this->setMSResult($v7d059d8ffac0a3914b296af280c6194e, $v79e333907d62f2b72da57dda128668fd);
     return $v7d059d8ffac0a3914b296af280c6194e;
 }
 private function prepareAdminSideGlobalVariables()
 {
     $v41275a535677f79ff347e01bc530c176 = permissionsCollection::getInstance();
     $ve4e46deb7f9cc58c7abfb32e5570b6f3 = domainsCollection::getInstance();
     $vb1444fb0c07653567ad325aa25d4e37a = regedit::getInstance();
     $result = array('@module' => $this->current_module, '@method' => $this->current_method, '@lang' => $this->current_lang->getPrefix(), '@lang-id' => $this->current_lang->getId(), '@pre-lang' => $this->pre_lang, '@domain' => $this->current_domain->getHost(), '@domain-id' => $this->current_domain->getId(), '@session-lifetime' => defined('SESSION_LIFETIME') ? SESSION_LIFETIME : 0, '@system-build' => $vb1444fb0c07653567ad325aa25d4e37a->getVal("//modules/autoupdate/system_build"), '@referer-uri' => $this->getCalculatedRefererUri(), '@user-id' => $v41275a535677f79ff347e01bc530c176->getUserId(), '@interface-lang' => ulangStream::getLangPrefix());
     if (defined('CURRENT_VERSION_LINE') && CURRENT_VERSION_LINE == 'demo') {
         $result['@demo'] = 1;
     }
     if ($vb6ee27ee7fe19b0c0dd907d5f947aa12 = getServer('REQUEST_URI')) {
         $vafbad9dc43d3b9eb8533cd54a4df6a87 = parse_url($vb6ee27ee7fe19b0c0dd907d5f947aa12);
         $vb6ee27ee7fe19b0c0dd907d5f947aa12 = getArrayKey($vafbad9dc43d3b9eb8533cd54a4df6a87, 'path');
         $vf7cc8e4882789cf3335d9ed97f208c6f = getArrayKey($vafbad9dc43d3b9eb8533cd54a4df6a87, 'query');
         if ($vf7cc8e4882789cf3335d9ed97f208c6f) {
             parse_str($vf7cc8e4882789cf3335d9ed97f208c6f, $v5ebb3c9d5620968cde8459888eff1702);
             if (isset($v5ebb3c9d5620968cde8459888eff1702['p'])) {
                 unset($v5ebb3c9d5620968cde8459888eff1702['p']);
             }
             if (isset($v5ebb3c9d5620968cde8459888eff1702['xmlMode'])) {
                 unset($v5ebb3c9d5620968cde8459888eff1702['xmlMode']);
             }
             $vf7cc8e4882789cf3335d9ed97f208c6f = http_build_query($v5ebb3c9d5620968cde8459888eff1702, '', '&');
             if ($vf7cc8e4882789cf3335d9ed97f208c6f) {
                 $vb6ee27ee7fe19b0c0dd907d5f947aa12 .= '?' . $vf7cc8e4882789cf3335d9ed97f208c6f;
             }
         }
         $result['@request-uri'] = $vb6ee27ee7fe19b0c0dd907d5f947aa12;
     }
     $result['@edition'] = CURRENT_VERSION_LINE;
     $result['@disableTooManyChildsNotification'] = (int) mainConfiguration::getInstance()->get('system', 'disable-too-many-childs-notification');
     $va74846e5bcde649f23218b2e062c90a8 = $v41275a535677f79ff347e01bc530c176->isAdmin();
     if (system_is_allowed($this->current_module, $this->current_method)) {
         try {
             if ($v22884db148f0ffb0d830ba431102b0b5 = $this->getModule($this->current_module)) {
                 $v22884db148f0ffb0d830ba431102b0b5->cms_callMethod($this->current_method, NULL);
             }
             $result['data'] = $this->adminDataSet;
         } catch (publicException $ve1671797c52e15f763380b45e841ec32) {
             $result['data'] = $ve1671797c52e15f763380b45e841ec32;
         }
     } elseif ($va74846e5bcde649f23218b2e062c90a8) {
         $result['data'] = new requreMoreAdminPermissionsException(getLabel("error-require-more-permissions"));
     }
     if (!is_null($ve1d832ee855bdce9643cc79275650e83 = getRequest('domain'))) {
         $result['@domain-floated'] = $ve1d832ee855bdce9643cc79275650e83;
         $result['@domain-floated-id'] = $ve4e46deb7f9cc58c7abfb32e5570b6f3->getDomainId($ve1d832ee855bdce9643cc79275650e83);
     } else {
         if ($this->currentEditElementId) {
             $v8e2dcfd7e7e24b1ca76c1193f645902b = umiHierarchy::getInstance()->getElement($this->currentEditElementId);
             if ($v8e2dcfd7e7e24b1ca76c1193f645902b instanceof umiHierarchyElement) {
                 $v72ee76c5c29383b7c9f9225c1fa4d10b = $v8e2dcfd7e7e24b1ca76c1193f645902b->getDomainId();
                 $vad5f82e879a9c5d6b5b442eb37e50551 = $ve4e46deb7f9cc58c7abfb32e5570b6f3->getDomain($v72ee76c5c29383b7c9f9225c1fa4d10b);
                 if ($vad5f82e879a9c5d6b5b442eb37e50551 instanceof iDomain) {
                     $result['@domain-floated'] = $va6b64ba4d9e3e0b93a64bb6af8c320cc = $vad5f82e879a9c5d6b5b442eb37e50551->getHost();
                 }
             }
         } else {
             $result['@domain-floated'] = $result['@domain'];
         }
     }
     return $result;
 }
示例#6
0
		public function choose_perms($ownerId = false) {
			$regedit = regedit::getInstance();
			$domainsCollection = domainsCollection::getInstance();
			$permissions = permissionsCollection::getInstance();
			$cmsController = cmsController::getInstance();

			if($ownerId === false) {
				$ownerId = (int) $regedit->getVal("//modules/users/guest_id");
			}

			$restrictedModules = array('autoupdate', 'backup');

			$modules_arr = Array();
			$modules_list = $regedit->getList("//modules");

			foreach($modules_list as $md) {
				list($module_name) = $md;

				if(in_array($module_name, $restrictedModules)) {
					continue;
				}

				$func_list = array_keys($permissions->getStaticPermissions($module_name));
				if(!system_is_allowed($module_name)) continue;

				$module_label = getLabel("module-" . $module_name);
				$is_allowed_module = $permissions->isAllowedModule($ownerId, $module_name);


				$options_arr = Array();
				if(is_array($func_list)) {
					foreach($func_list as $method_name) {

						if(!system_is_allowed($module_name, $method_name)) continue;
						$is_allowed_method = $permissions->isAllowedMethod($ownerId, $module_name, $method_name);

						$option_arr = Array();
						$option_arr['attribute:name'] = $method_name;
						$option_arr['attribute:label'] = getLabel("perms-" . $module_name . "-" . $method_name, $module_name);
						$option_arr['attribute:access'] = (int) $is_allowed_method;
						$options_arr[] = $option_arr;
					}
				}


				$module_arr = Array();
				$module_arr['attribute:name'] = $module_name;
				$module_arr['attribute:label'] = $module_label;
				$module_arr['attribute:access'] = (int) $is_allowed_module;
				$module_arr['nodes:option'] = $options_arr;
				$modules_arr[] = $module_arr;
			}


			$domains_arr = Array();

			$domains = $domainsCollection->getList();
			foreach($domains as $domain) {
				$domain_arr = Array();
				$domain_arr['attribute:id'] = $domain->getId();
				$domain_arr['attribute:host'] = $domain->getHost();
				$domain_arr['attribute:access'] = $permissions->isAllowedDomain($ownerId, $domain->getId());
				$domains_arr[] = $domain_arr;
			}


			$result_arr = Array();
			$result_arr['domains']['nodes:domain'] = $domains_arr;
			$result_arr['nodes:module'] = $modules_arr;
			return $result_arr;
		}
示例#7
0
 public function getTypeEditLinkXml($v5f694956811487225d15e973ca38fbab)
 {
     if (system_is_allowed("data", "type_edit")) {
         $v0e8133eb006c0f85ed9444ae07a60842 = umiObjectTypesCollection::getInstance();
         if ($v599dcce2998a6b40b1e38e8c6006cb0a = $v0e8133eb006c0f85ed9444ae07a60842->getType($v5f694956811487225d15e973ca38fbab)) {
             return array('type' => array('node:name' => $v599dcce2998a6b40b1e38e8c6006cb0a->getName(), 'attribute:link' => $this->pre_lang . "/admin/data/type_edit/{$v5f694956811487225d15e973ca38fbab}/"));
         }
     }
 }