Ура!. Вот так.
Т. е. надо работать не с полем конечной таблицы, а с полем исходной...
SELECT
wu.id AS 'id', wu.username AS 'username', wua.fullname AS 'fullname', wua.surname AS 'surname', wua.email AS 'email',
IF(wua.gender = 1,'',
IF(wua.gender = 2,'','-')) AS 'gender',
IF(wua.blocked,'','-') AS 'blocked', wua.phone,
IF(wua.mobilephone = '', '-', wua.mobilephone) AS mobilephone,
IF(wua.fax = '', '-', wua.fax) AS fax,
IF(wua.dob = 0, '-', DATE_FORMAT(FROM_UNIXTIME(wua.dob), '%d.%m')) AS dob,
IF(wua.empdate = 0, '-', DATE_FORMAT(FROM_UNIXTIME(wua.empdate), '%d.%m.%Y')) AS empdate,
IF(wua.photo='', 'assets/templates/front/images/nophoto.gif', wua.photo) AS photo,
wua.comment, wua.education, wua.hobby, wua.experience
FROM `intinkoff`.`modx_web_users` wu
INNER JOIN `intinkoff`.`modx_web_user_attributes` wua ON wua.internalKey = wu.id
WHERE DATE_FORMAT(FROM_UNIXTIME(wua.dob), '%d.%m') LIKE DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP()), '%d.%m')
Ну епт...
Таким образом мы имеем сниппет, который возвращает пользователей по условию и шаблонизирует данные:
<?php
/**/
$sql = "SELECT wu.id AS 'id', wu.username AS 'username', wua.fullname AS 'fullname', wua.surname AS 'surname', wua.email AS 'email', IF(wua.gender = 1,'".$_lang['user_male']."', IF(wua.gender = 2,'".$_lang['user_female']."','-')) AS 'gender', IF(wua.blocked,'".$_lang['yes']."','-') AS 'blocked', wua.phone, IF(wua.mobilephone = '', '-', wua.mobilephone) AS mobilephone, IF(wua.fax = '', '-', wua.fax) AS fax, IF(wua.dob = 0, '-', FROM_UNIXTIME(wua.dob, '%d.%m')) AS dob, IF(wua.empdate = 0, '-', FROM_UNIXTIME(wua.empdate, '%d.%m.%Y')) AS empdate, IF(wua.photo='', 'assets/templates/front/images/nophoto.gif', wua.photo) AS photo, wua.comment, wua.education, wua.hobby, wua.experience".
" FROM ".$modx->getFullTableName("web_users")." wu " .
" INNER JOIN ".$modx->getFullTableName("web_user_attributes")." wua ON wua.internalKey = wu.id";
$parameter = array('id', 'surname', 'fullname', 'phone', 'dob');
$field = array('wu.id', 'wua.surname', 'wua.fullname', 'wua.phone', 'DATE_FORMAT(FROM_UNIXTIME(wua.dob), \'%d.%m\')');
if (isset($where)) $sql .= ' WHERE ' . $where;
else {
$p = 0;
for($i = 0; $i < count($parameter); $i++) {
if (isset($$parameter[$i])) {
if($p == 0) $sql .= ' WHERE ';
else $sql .= ' AND ';
$sql .= $field[$i] . ' LIKE ' . $$parameter[$i];
$p++;
}
}
}
$result = $modx->dbQuery($sql);
$output = (!$results)? $noResults : '';
while ($row = $modx->fetchRow($result)) {
$row = ($position != '')? array_merge($row, array('position'=>$position)) : $row;
$output .= $modx->parseChunk($tpl, $row, '[+', '+]');
}
return $output;
?>
Там запрос для моей подправленной таблицы, но вернуть все в зад не составит труда.
И вот такой страшноватый вызов
[!User? &dob=`DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP()), '%d.%m')` &tpl=`dob_tpl`!]
Может кому пригодится...