switch ($sortDir) { case 'ASC': $out = $aDate->getTimestamp() - $bDate->getTimestamp(); break; case 'DESC': $out = $bDate->getTimestamp() - $aDate->getTimestamp(); break; } return $out; })->reindex()->unique(); //Применяем шаблон к каждой отображаемой дате foreach ($outReflects as $reflectItem) { $tpl = !is_null($activeReflect) && $activeReflect == $reflectItem ? $activeReflectTPL : $reflectTPL; $data = DLReflect::switchReflect($reflectType, function () use($reflectItem, $DLAPI) { list($vMonth, $vYear) = explode('-', $reflectItem, 2); return array('monthNum' => $vMonth, 'monthName' => $DLAPI->getMsg('months.' . (int) $vMonth), 'year' => $vYear); }, function () use($reflectItem) { return array('year' => $reflectItem); }); $data = array_merge(array('title' => $reflectItem, 'url' => $modx->makeUrl($targetID, '', http_build_query(array($reflectType => $reflectItem))), 'reflects' => $totalReflects->count(), 'displayReflects' => $outReflects->count()), $data); $out .= $DLAPI->parseChunk($tpl, $data); } //Заворачиваем в шаблон обертку весь список дат $out = $DLAPI->parseChunk($wrapTPL, array('wrap' => $out, 'reflects' => $totalReflects->count(), 'displayReflects' => $outReflects->count())); //Ну и выводим стек отладки если это нужно if (isset($_SESSION['usertype']) && $_SESSION['usertype'] == 'manager') { $debug = $DLAPI->debug->showLog(); } else { $debug = ''; } return $debug . $out;
include_once MODX_BASE_PATH . 'assets/lib/APIHelpers.class.php'; include_once MODX_BASE_PATH . 'assets/snippets/DocLister/lib/DLReflect.class.php'; $params = is_array($modx->event->params) ? $modx->event->params : array(); /** * reflectType * Тип фильтрации. Возможные значения: * month - по месяцам (значение по умолчанию) * year - по годам */ $reflectType = APIHelpers::getkey($params, 'reflectType', 'month'); if (!in_array($reflectType, array('year', 'month'))) { return ''; } list($dateFormat, $sqlDateFormat, $reflectValidator) = DLReflect::switchReflect($reflectType, function () { return array('m-Y', '%m-%Y', array('DLReflect', 'validateMonth')); }, function () { return array('Y', '%Y', array('DLReflect', 'validateYear')); }); $reflectSource = APIHelpers::getkey($params, 'reflectSource', 'content'); $reflectField = APIHelpers::getkey($params, 'reflectField', 'if(pub_date=0,createdon,pub_date)'); $tmp = date($dateFormat); /** * currentReflect * Текущая дата (месяц в формате 00-0000 или год в формате 0000), где: * 00 - Номер месяца с ведущим нулем (01, 02, 03, ..., 12) * 0000 - Год * Если не указан в параметре, то генерируется автоматически текущая дата */ $selectCurrentReflect = APIHelpers::getkey($params, 'selectCurrentReflect', 1); if ($selectCurrentReflect) { $currentReflect = APIHelpers::getkey($params, 'currentReflect', $tmp);