Разработка сайтов на UMI.CMS
Знать UMI.CMS в совершенстве невозможно.
Даже сами разработчики знают о ней не все...

UMi

Ursa Minor

Класс cmsController

Версия 2.7 - 2.9.5

Описание:

Класс cmsController обеспечивает взаимодействие между модулями, начальную инициализацию системы, а так же предоставляет доступ к некотороым переменным окружения.
Данный класс является классом-одиночкой (singleton). Методы данного класса вызываются следующим образом: cmsController::getInstance()

 

(string) $methodName cmsController :: getCurrentMethod ()

Описание:

Возвращяет название метода, который определился в качестве текущего метода.
Текущий модуль и метод - модуль и метод, которые система определилa в качестве текущих

Каждая страница в дереве сайта имеет тип в иерархии. Тип в иерархии представляет собой базовый модуль и базовый метод, которые отвечают за то, как данная страница будет обработана. Например, для страницы, которая представляет собой объект каталога, определен тип иерархии "Объект каталога", который представляет собой базовый модуль catalog и базовый метод object.

При открытии какой-либо страницы на сайте, система определит текущую страницу и ее тип иерархии, т.е. текущий модуль и метод для ее обработки.

В режиме администрирования текущий модуль и метод система определяет по текущему url-адресу. Например, если мы добавляем новость (http://example.com/admin/news/add_item/), система определит текущий модуль news и текущий метод add_item.

Если текущий метод не указан, либо системе не удалось его определить, система пытается получить метод "по умолчанию" для текущего модуля

методы "по умолчанию" - методы, которые указаны для модуля в качестве методов "по умолчанию". Методы "по умолчанию" прописываются в инсталляторе модуля (install.php) и при установке регистрируются в реестре системы.

Для разных режимов работы системы могут быть определены разные методы "по умолчанию": $INFO['default_method'] (ключ реестра //module_name/default_method) - метод "по умолчанию" в режиме клиентского просмотра $INFO['default_method_admin'] (ключ реестра //module_name/default_method_admin) - метод "по умолчанию" в режиме администрирования


// Мы находимся в карте сайта: (http://localhost/content/sitemap/) 
echo cmsController::getInstance()->getCurrentMethod(); // выведет "sitemap"

 

(lang) $currentLang cmsController :: getCurrentLang ()

Описание:

Возвращяет экземпляр класса lang, который соответствует текущему языку.

Текущий язык определяется по префиксу в URL. Например, для страницы http://example.com/en/news в качестве текущего будет определен ангийский язык (при условии, что ангийский язык зарегистрирован в конфигурации системы с префиксом en)

Если язык не удалось определить по префиксу, например он отсутствует либо не зарегистрирован в конфигурации, система использует язык по умолчанию.

Язык по умолчанию указывается в системном модуле Конфигурация для каждого домена.


$oCurrentLang = cmsController::getInstance()->getCurrentLang(); 
if ($oCurrentLang instanceof lang) { 
	echo $oCurrentLang->getTitle(); //выведет название текущего языка 
}

 

(mixed) module cmsController :: getModule ( (string) $moduleName )

Описание:

Возвращяет экземпляр модуля, если модуль $moduleName существует и установлен.

В случае, если модуль загрузить не удается, возвращяет false.

Весь функционал, предоставляемый модулем, программно доступен системе и прочим модулям посредством доступа к методам объекта - экземпляра класса данного модуля. Для получения такого объекта необходимо вызвать метод getModule сласса cmsController

 
// попытка получить экземпляр модуля "users" 
if ($oUsersMdl = cmsController::getInstance()->getModule("users")) { 
// теперь доступны все public методы и свойства данного модуля 
// проверяем, авторизован ли пользователь 
if ($oUsersMdl->is_auth()) { 
	echo "Здравствуйте, " . $oUsersMdl->user_fullname . " (" .$oUsersMdl->user_login . ")"; 
} else { 
	echo "Вы гость"; 
} 
} else { 
	echo "Не удалось загрузить модуль"; 
} 
 

 

Обращаю внимание, что таким образом нельзя вызвать модули core, system, custom.

Для вызова их следует использовать запись:


if($macros['module'] == "core" || $macros['module'] == "system" || $macros['module'] == "custom") {
	$module = &system_buildin_load($macros['module']);
} else {
	$module = cmsController::getInstance()->getModule($macros['module']);
}

 

В этом плане показателен как образец метод из udataStream.php


protected function executeMacros($macros) {
	if($macros['module'] == "core" || $macros['module'] == "system" || $macros['module'] == "custom") {
		$module = &system_buildin_load($macros['module']);
	} 
	else {
		$module = cmsController::getInstance()->getModule($macros['module']);
	}
	$method = isset($macros['method']) ? $macros['method'] : false;

	if($module && $method) {
		$is_allowed = false;
		if($macros['module'] != "core" && $macros['module'] != "system" && $macros['module'] != "custom") {
			$is_allowed = (bool) system_is_allowed($macros['module'], $macros['method']);
		} 
		else {
			$is_allowed = true;
		}

		if($is_allowed) {
			$res = call_user_func_array(Array($module, $macros['method']), $macros['params']);
			return $res;
		} 
		else {
			return false;
		}
	} else {
		return false;
	}
}

 

(string) $moduleName cmsController :: getCurrentMode ()

Описание:

Метод возвращает текущий режим работы системы. Возвращает пустую строку (""), если система находится в режиме клиентского просмотра, либо "admin", в режиме администрирования.

Система может работать в двух режимах - режим администрирования и режим клиентского просмотра сайта.

Если текущий адрес http://example.com/news/new1 - система находится в режиме клиентского просмотра.

Если текущий адрес http://example.com/admin/news - система находится в режиме администрирования.


if (cmsController::getInstance()->getCurrentMode() === "admin") { 
	echo "Вы находитесь в режиме администрирования"; 
} else { 
	echo "Вы находитесь на сайте"; 
}

 

(string) $currentModule cmsController :: getCurrentModule ()

Описание:

Возвращяет название модуля, который определился в качестве текущего.

Текущий модуль и метод - модуль и метод, которые система определилa в качестве текущих

Каждая страница в дереве сайта имеет тип в иерархии. Тип в иерархии представляет собой базовый модуль и базовый метод, которые отвечают за то, как данная страница будет обработана. Например, для страницы, которая представляет собой объект каталога, определен тип иерархии "Объект каталога", который представляет собой базовый модуль catalog и базовый метод object.

При открытии какой-либо страницы на сайте, система определит текущую страницу и ее тип иерархии, т.е. текущий модуль и метод для ее обработки.

В режиме администрирования текущий модуль и метод система определяет по текущему url-адресу. Например, если мы добавляем новость (http://example.com/admin/news/add_item/), система определит текущий модуль news и текущий метод add_item.

Если текущий метод не указан, либо системе не удалось его определить, система пытается получить метод "по умолчанию" для текущего модуля

методы "по умолчанию" - методы, которые указаны для модуля в качестве методов "по умолчанию". Методы "по умолчанию" прописываются в инсталляторе модуля (install.php) и при установке регистрируются в реестре системы.

Для разных режимов работы системы могут быть определены разные методы "по умолчанию": $INFO['default_method'] (ключ реестра //module_name/default_method) - метод "по умолчанию" в режиме клиентского просмотра $INFO['default_method_admin'] (ключ реестра //module_name/default_method_admin) - метод "по умолчанию" в режиме администрирования

{{content getCode(7}}

 

(mixed) $elementId cmsController :: getCurrentElementId ()

Описание:

Возвращяет id страницы (id объекта umiHierarchyElement), которая определилась в качестве текущей. Если текущему URL не соответствует какая-то определенная страница в иерархии (umiHierarchy), вернет значение NULL.


// получаем id текущей страницы 
if ($iElementId = cmsController::getInstance()->getCurrentElementId()) { 
	// получаем элемент иерархии по его id 
	$oElement = umiHierarchy::getInstance()->getElement($iElementId); 
	if ($oElement instanceof umiHierarchyElement) { 
		echo "Вы находитесь на странице с именем " . $oElement->getName(); 
	} 
} 
else { 
	echo "Вы находитесь на какой-то системной странице"; 
}

 

(domain) $currentDomain cmsController :: getCurrentDomain ()

Описание:

Возвращяет экземпляр объекта класса domain, который соответствует текущему домену.

Текущий домен система определяет используя переменную окружения $_SERVER['HTTP_HOST']. Если текущий $_SERVER['HTTP_HOST'] не найден в списке доменов и в списке зеркал доменов, то возвращяется домен по-умолчанию.

домен по умолчанию - домен, на который зарегистрирована лицензия UMI.CMS


$oCurrentDomain = cmsController::getInstance()->getCurrentDomain(); 
if ($oCurrentDomain instanceof domain) { 
	// выводим хост 
	echo $oCurrentDomain->getHost(); 
}

 

(module) $buildInModule cmsController :: loadBuildInModule ( (string) moduleName )

Описание:

Возвращяет экземпляр встроенного модуля (system, core или custom).

Со встроенным модулем можно обращяться почти так же, как и с обычным за исключением того, что для них не проверяются права доступа.

 
if($system_inst = cmsController::getInstance()->loadBuildInModule("system")) { 
	echo $system_inst->referer_uri(); //вернет REFERER_URI 
} 
else { 
	echo "Не удалось подгрузить модуль."; 
} 
 

Новости

30.10.2016

Обновлено описание макроса для вывода всех элементов справочника UMI.CMS с учетом версии 14.

 

21.07.2015

Памятка по обновлению до debian 8.1. Приятно вкусить все плюшки PHP 5.6

11.11.2014

Как выполнить SQL-запрос из bash-скрипта. Памятка

11.11.2014

Как отследить нагрузку сайта на сервер.

06.11.2014

Заготовка для галереи изображений с прокруткой. Не знаю, когда дойдут руки довести ее до вида плагина, поэтому открываю как есть. Можно доработать.

05.11.2014

Выкладываю как заготовку свой слайдер изображений на mootools

Все обновления