global $modx; - внутри своей функции.
Я так понял, что внутри опрееляемой мной функции я не мог использовать API?
Хотя наверно и так это известно...
$results = $modx->getDocumentChildren( $id = $startid, $active = 1, $deleted = 0, 'id, pagetitle, published, menuindex, deleted, hidemenu, menutitle', $where = 'hidemenu = 0', $sort='menuindex'); print_r($results);
SELECT DISTINCT sc.id, sc.pagetitle, sc.published, sc.menuindex, sc.deleted, sc.hidemenu, sc.menutitle FROM `modx`.`modx_site_content` sc LEFT JOIN `modx`.`modx_document_groups` dg ON dg.document = sc.id WHERE sc.parent = '52' AND sc.published =1 AND sc.deleted =0 AND hidemenu =0 AND ( sc.privateweb =0 ) GROUP BY sc.id ORDER BY sc.menuindex ASC LIMIT 0 , 30
function getDocumentChildren($parentid= 0, $published= 1, $deleted= 0, $fields= "*", $where= '', $sort= "menuindex", $dir= "ASC", $limit= "") {
$limit= ($limit != "") ? "LIMIT $limit" : "";
$tblsc= $this->getFullTableName("site_content");
$tbldg= $this->getFullTableName("document_groups");
// modify field names to use sc. table reference
$fields= 'sc.' . implode(',sc.', preg_replace("/^\s/i", "", explode(',', $fields)));
$sort= ($sort == "") ? "" : 'sc.' . implode(',sc.', preg_replace("/^\s/i", "", explode(',', $sort)));
if ($where != '')
$where= 'AND ' . $where;
// get document groups for current user
if ($docgrp= $this->getUserDocGroups())
$docgrp= implode(",", $docgrp);
// build query
$access= ($this->isFrontend() ? "sc.privateweb=0" : "1='" . $_SESSION['mgrRole'] . "' OR sc.privatemgr=0") .
(!$docgrp ? "" : " OR dg.document_group IN ($docgrp)");
$sql= "SELECT DISTINCT $fields
FROM $tblsc sc
LEFT JOIN $tbldg dg on dg.document = sc.id
WHERE sc.parent = '$parentid' AND sc.published=$published AND sc.deleted=$deleted $where
AND ($access)
GROUP BY sc.id " .
($sort ? " ORDER BY $sort $dir " : "") . " $limit ";
$result= $this->dbQuery($sql);
$resourceArray= array ();
for ($i= 0; $i < @ $this->recordCount($result); $i++) {
array_push($resourceArray, @ $this->fetchRow($result));
}
return $resourceArray;
}
Если у Вас MySQL 5.0.51, то дело именно в баге данной версии сервера баз данных.
Если я закомментирую "GROUP BY sc.id" ? (вроде так работает)
Это баг или фича? Или у меня кривые руки?