Начальная страница

Николай Жарких (Киев)

Персональный сайт

?

Объект Node

Объект Node представляет основной информационный объект Смереки – вершину. Он обеспечивает базовые методы работы с вершинами и выступает протокласом для других, более специализированных классов вершин.

Поля

protected $Attrs – ассоциативный массив атрибутов, не зависящих от языков.

protected $AttrsL – ассоциативный массив атрибутов, зависящих от языков.

protected $Id – сохраняет ид вершины.

protected $LangVer – массив языковых версий вершины, например array ('uk', 'en').

public $LastAccess – сохраняет момент последнего обращения к объекту. Используется одним только буфером объектов для реализации алгоритма LRU.

public function __construct($NodeID)

Очень простой конструктор. Запоминает переданный параметр $NodeID как ид вершины и загружает статические атрибуты методом LoadStaticAttrs().

public function AncestorList($StopClass = 0, $IncludeStopNode = False, $FromRoot = False)

Возвращает массив вершин(объектов Node) от текущей до последней предковской. Если $StopClass = 0, последней предковской вершиной является корневая вершина иерархии; если $StopClass задан, последней предковской вершиной считается первая из предковских вершин заданного класса (типичный пример – поиск корневой вершины домена, к которому принадлежит данная вершина).

Параметр $IncludeStopNode определяет, включать ли в список последнюю предковскую вершину (True), не включать (False).

Параметр $FromRoot определяет, будет ли массив построен от корневой вершины к текущей (True), или от текущей к корневой (False).

public function AncestorListEx($MatchFunc, $MatchArg, $IncludeStopNode = False, $FromRoot = False, &$Result)

Обобщение функции AncestorList. Последняя предковская вершина определяется вычислением заданной пользователем функции $MatchFunc, которая имеет прототип:

function($TestNode, $MatchArg)

Здесь $TestNode – вершина, которую нужно проверить; $MatchArg – необязательный дополнительный параметр, который передается при вызове функции AncestorListEx.

Функция $MatchFunc должен вернуть True, если поиск вершины надо продолжить, или False, если данная вершина является последней предковской вершиной, которую мы ищем.

Действие параметров $IncludeStopNode, $FromRoot такая же, как и для функции AncestorList.

Переменная $Result после вызова может принимать значения: Matched – если процесс остановился на вершине, которая соответствует критерию поиска; Root – если соответствующая вершина не найдена и процесс остановился на последней корневой вершине; Cycle – если при проходе по списку предков вершин обнаружено циклическое ссылки (несчастный случай!)

public function DocTitle($Lang = NULL)

Возвращает строку, служащую заголовком документа (не путать с функцией WinTitle, которая возвращает строку заголовка окна). Заголовок вычисляется для языковой версии, явно заданной параметром $Lang, или для текущей языковой версии, если этот параметр не задан.

Базовая реализация метода очень проста: последовательно проверяется наличие атрибутов DocTitle, Title, symbname для заданной языковой версии и возвращается первое значение, которое не является пустым. Поскольку атрибут symbname является языково-независимым и обязательным, метод в худшем случае вернет его (не пустую строку).

Этот метод часто перекрывается в классах-потомках (например, когда заголовок документа формируется из других атрибутов).

public function ExternalURL($Mode = NULL, $Lng = NULL, $Query = NULL)

Эта важная и часто используемая функция генерирует URL для заданной вершины. Параметр $Mode может иметь одно из следующих значений:

ById – сгенерированный адрес идентифицирует вершину с помощью параметра Node=[id]; используется в режиме редактирования;

ByPath – сгенерированный адрес идентифицирует вершину с помощью параметра Path=[symbolic-path]; используется редко;

Virtual – сгенерированный адрес идентифицирует вершину с помощью полного пути от корня сайта, включая, при необходимости, языковую версию, например http://www.example.com/en/a/b/c.html. Если требуется определенная языковая версия, функция в этом режиме всегда генерирует соответствующий URL, несмотря на то, существует ли в данной вершине нужна языковая версия.

VirtLang – подобно режиму Virtual, но если требуется определенная языковая версия, функция в этом режиме проверяет присутствие в данной вершине нужной языковой версии. Если этой версии нет, функция пытается подобрать ближайшую языковую версию среди имеющихся. Например, если требуется русская версия страницы (которой нет), то будет сделана попытка найти украинскую, а дальше – английскую языковую версию (см. функцию SelectNearestLang).

Параметр $Lng задает нужную языковую версию; если он не задан, используется текущий язык.

Параметр $Query задает дополнительную строку, который нужно присоединить к URL, например, $Query='Skip=30'.

public function GetAttr($AttrName, $Lang = NULL)

Функция возвращает значение атрибута, заданного именем $AttrName, для языковой версии, заданной параметром $Lang (или для текущего языка, если параметр не задан). Функцию следует использовать, если заранее не известно, является $AttrName языково-зависимым, или нет. Если эти известно, лучше использовать более эффективные функции GetAttrLA / GetAttrLN. Все три функции возвращают значение по умолчанию, если атрибут с таким именем не существует.

public function GetAttrLA($AttrName, $Lang)

Функция возвращает значение языково-зависимого атрибута, заданного именем $AttrName, для языковой версии, заданной параметром $Lang (или для текущего языка, если параметр не задан).

public function GetAttrLN($AttrName)

Функция возвращает языково-независимого атрибута, заданного именем $AttrName.

public function GetDefaultAttr($AttrName, $Lang = NULL)

Функция возвращает значение по умолчанию для атрибута, заданного именем $AttrName, для языковой версии, заданной параметром $Lang (или для текущего языка, если параметр не задан). Чтобы задать в каком-либо классе значение по умолчанию для определенного атрибута, следует перекрыть данную функцию.

public function GetDomName($Subst = True)

Функция возвращает имя домена, к которому принадлежит данная вершина. Если вершина не принадлежит к домену, то при $Subst = True она возвращает имя текущего домена, при $Subst = False она возвращает False.

public function GetDomNode()

Функция возвращает корневую вершина домена, к которому принадлежит данная вершина, или False, если вершина не принадлежит к домену.

public function GetIcon()

В классе Node данная функция возвращает пустую строку; в классе NodeDef она перекрыта и возвращает URL пиктограммы данного класса. Этот значок используется я в редакторе для визуализации класса вершины.

public function GetId()

Возвращает ид вершины.

public function GetMetaData()

Возвращает объект метаинформации для данной вершины (типично это объект метакласса).

public function GetParentNode()

Возвращает объект предковской вершины или False, если данная вершина не имеет предка.

public function LangVerDefined($Reset = False)

Возвращает массив доступных языковых версий вершины (см. поле $LangVer). Если параметр $Reset = True, буферизованный массив языковых версий аннулируется и исчисляется заново.

public function LangVerExist($Lang)

Проверяет наличие у вершины заданной языковой версии и возвращает соответствующее булево значение.

protected function LoadStaticAttrs()

Загружает статические атрибуты вершины, которые хранятся в таблице nodes.

public function Reset()

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

public function ResetLinks()

Аннулирует буферизованные в памяти ид-ы других объектов, связанных с данной вершиной.

public function SelectNearestLang($Lng = NULL)

Функция возвращает требуемую языковую версию (если она присутствует), либо выбирает языковую версию, наиболее похожую на требуемую (если последняя отсутствует).

public function SelfLink($Mode = NULL, $Attrs = NULL)

Возвращает HTML код ссылки на данную вершину, используя значения функции DocTitle() как текст ссылки. Параметр $Mode задает режим формирования URL (как в функции ExternalURL; параметр $Attrs задает строку, нужно присоединить к тегу a, например $Attrs ='class="LinkClass"'.

public function SetMetaData($Value)

Устанавливает метаинформацию для данного объекта.

public function Sibling($Pos, $User = NULL)

Возвращает объект из числа иерархически равных данному объекту (его ид определяется функцией SiblingId).

public function SiblingId($Pos, $User = NULL)

Возвращает ид объекта из числа иерархически равных данному объекту. Параметр (строка) $Pos может принимать одно из следующих значений: prev, next, first, last. Параметр $User типично означает текущего пользователя; если он не задан, из числа равных вершин рассматриваются только имеющие публичный уровень доступа. Функция возвращает False, если соответствующего равного объекта нет.

public function WinTitle($Lang = NULL)

Возвращает строку, служащий заголовком окна (не путать с функцией DocTitle, которая возвращает заголовок документа). Заголовок вычисляется для языковой версии, явно заданной параметром $Lang, или для текущей языковой версии, если этот параметр не задан.

Базовая реализация метода очень проста: последовательно проверяется наличие атрибутов Title, symbname для заданной языковой версии и возвращается первое значение, которое не является пустым. Поскольку атрибут symbname является языково-независимым и обязательным, метод в худшем случае вернет его (не пустую строку).

Этот метод часто перекрывается в классах-потомках (например, когда заголовок окна формируется из других атрибутов).