Albireo CMS 2025.01.17

Функция checkStr() Albireo CMS

/**
 * Проверяем строку на наличие «отрицательного» элемента и возвращаем число
 * 
 * #date-edit:           -> нет строки — возвращаем null
 * date-edit: 2024-01-01 -> в строке указаны данные — возвращаем true
 * date-edit: -          -> в строке указано «отключеное» поле - возвращаем false
 * 
 * $date = getPageData('date-edit', null);
 * $mode = checkStr($date);
 * 
 * if ($mode === null) $result = 'дата'; // notExist
 * elseif ($mode === false) $result = ''; // off
 * elseif ($mode === true) $result = 'файл'; // on
 * 
 **/

function checkStr($str)


// общая таблица состояний

// #draft:  опции нет
pr(checkStr(getPageData('draft', false))); // NULL
pr(checkStr(getPageData('draft', true))); // TRUE
pr(checkStr(getPageData('draft', null))); // NULL

// draft: 1
pr(checkStr(getPageData('draft', false))); // TRUE
pr(checkStr(getPageData('draft', true))); // TRUE
pr(checkStr(getPageData('draft', null))); // TRUE

// draft: 0
pr(checkStr(getPageData('draft', false))); // FALSE
pr(checkStr(getPageData('draft', true))); // FALSE
pr(checkStr(getPageData('draft', null))); // FALSE


// группировки по if-условиям под разные задачи

// если опция явно включена = true
pr( checkStr(getPageData('draft', false)) === true );

// если опция явно отключена = true
pr( checkStr(getPageData('draft', false)) === false ); 

// если опция явно включена или её нет = true
pr( checkStr(getPageData('draft', false)) !== false );

// если опция явно отключена или её нет = true
pr( checkStr(getPageData('draft', false)) !== true );


// полная детализация

// если опция явно включена = true
pr( checkStr(getPageData('draft', false)) === true ); // FALSE  // #draft:  опции нет
pr( checkStr(getPageData('draft', false)) === true ); // FALSE  // draft: 0
pr( checkStr(getPageData('draft', false)) === true ); // TRUE   // draft: 1

pr( checkStr(getPageData('draft', null)) === true );  // FALSE // #draft:  опции нет
pr( checkStr(getPageData('draft', null)) === true );  // FALSE // draft: 0
pr( checkStr(getPageData('draft', null)) === true );  // TRUE  // draft: 1

// если опция явно отключена = true
pr( checkStr(getPageData('draft', true)) !== true ); // FALSE   // #draft:  опции нет
pr( checkStr(getPageData('draft', true)) !== true ); // TRUE    // draft: 0  опция отключена
pr( checkStr(getPageData('draft', true)) !== true ); // FALSE   // draft: 1 опция включена

pr( checkStr(getPageData('draft', false)) === false ); // FALSE // #draft:  опции нет
pr( checkStr(getPageData('draft', false)) === false ); // TRUE  // draft: 0
pr( checkStr(getPageData('draft', false)) === false ); // FALSE // draft: 1

pr( checkStr(getPageData('draft', true)) === false ); // FALSE  // #draft:  опции нет
pr( checkStr(getPageData('draft', true)) === false ); // TRUE   // draft: 0
pr( checkStr(getPageData('draft', true)) === false ); // FALSE  // draft: 1

pr( checkStr(getPageData('draft', null)) === false ); // FALSE // #draft:  опции нет
pr( checkStr(getPageData('draft', null)) === false ); // TRUE  // draft: 0
pr( checkStr(getPageData('draft', null)) === false ); // FALSE // draft: 1

// если опция явно включена или её нет = true
pr( checkStr(getPageData('draft', false)) !== false ); // TRUE  // #draft:  опции нет
pr( checkStr(getPageData('draft', false)) !== false ); // FALSE // draft: 0  опция отключена
pr( checkStr(getPageData('draft', false)) !== false ); // TRUE  // draft: 1 опция включена

pr( checkStr(getPageData('draft', true)) !== false ); // TRUE   // #draft:  опции нет
pr( checkStr(getPageData('draft', true)) !== false ); // FALSE  // draft: 0  опция отключена
pr( checkStr(getPageData('draft', true)) !== false ); // TRUE   // draft: 1 опция включена

pr( checkStr(getPageData('draft', null)) !== false ); // TRUE  // #draft:  опции нет
pr( checkStr(getPageData('draft', null)) !== false ); // FALSE // draft: 0
pr( checkStr(getPageData('draft', null)) !== false ); // TRUE  // draft: 1

// если опция явно отключена или её нет = true
pr( checkStr(getPageData('draft', false)) !== true ); // TRUE   // #draft:  опции нет
pr( checkStr(getPageData('draft', false)) !== true ); // TRUE   // draft: 0  опция отключена
pr( checkStr(getPageData('draft', false)) !== true ); // FALSE  // draft: 1 опция включена

pr( checkStr(getPageData('draft', null)) !== true );  // TRUE  // #draft:  опции нет
pr( checkStr(getPageData('draft', null)) !== true );  // TRUE  // draft: 0
pr( checkStr(getPageData('draft', null)) !== true );  // FALSE // draft: 1


Примеры кода:

// пропускаем те, где явно отмечено sitemap: 0
if (checkArrVal($data, 'sitemap', true) === false) continue;

// пропускаем черновики - где есть draft: 1
if (checkArrVal($data, 'draft', false) === true) continue;

// пропускаем черновики - где есть draft: 1
if (isset($data['draft']) and checkStr($data['draft']) === true) continue;