Початкова сторінка

Микола Жарких (Київ)

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

?

Об’єкт 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 є мовно-незалежним і обов’язковим, метод в найгіршому випадку поверне його (не порожній рядок).

Цей метод часто перекривається в класах-нащадках (наприклад, коли заголовок вікна формується з інших атрибутів).