Bug #23470 » 15583-v3.diff
typo3/sysext/cms/tslib/class.tslib_pibase.php (revision ) | ||
---|---|---|
* @todo Deprecated but still used in the Core!
|
||
*/
|
||
function pi_list_query($table,$count=0,$addWhere='',$mm_cat='',$groupBy='',$orderBy='',$query='',$returnQueryArray=FALSE) {
|
||
t3lib_div::logDeprecatedFunction();
|
||
// Begin Query:
|
||
if (!$query) {
|
||
// Fetches the list of PIDs to select from.
|
||
... | ... | |
* @return pointer SQL result pointer
|
||
*/
|
||
function pi_exec_query($table,$count=0,$addWhere='',$mm_cat='',$groupBy='',$orderBy='',$query='') {
|
||
$queryParts = $this->pi_list_query($table,$count,$addWhere,$mm_cat,$groupBy,$orderBy,$query, TRUE);
|
||
// Begin Query:
|
||
if (!$query) {
|
||
// Fetches the list of PIDs to select from.
|
||
// TypoScript property .pidList is a comma list of pids. If blank, current page id is used.
|
||
// TypoScript property .recursive is a int+ which determines how many levels down from the pids in the pid-list subpages should be included in the select.
|
||
$pidList = $this->pi_getPidList($this->conf['pidList'],$this->conf['recursive']);
|
||
if (is_array($mm_cat)) {
|
||
$query='FROM '.$table.','.$mm_cat['table'].','.$mm_cat['mmtable'].LF.
|
||
' WHERE '.$table.'.uid='.$mm_cat['mmtable'].'.uid_local AND '.$mm_cat['table'].'.uid='.$mm_cat['mmtable'].'.uid_foreign '.LF.
|
||
(strcmp($mm_cat['catUidList'],'')?' AND '.$mm_cat['table'].'.uid IN ('.$mm_cat['catUidList'].')':'').LF.
|
||
' AND '.$table.'.pid IN ('.$pidList.')'.LF.
|
||
$this->cObj->enableFields($table).LF; // This adds WHERE-clauses that ensures deleted, hidden, starttime/endtime/access records are NOT selected, if they should not! Almost ALWAYS add this to your queries!
|
||
} else {
|
||
$query='FROM '.$table.' WHERE pid IN ('.$pidList.')'.LF.
|
||
$this->cObj->enableFields($table).LF; // This adds WHERE-clauses that ensures deleted, hidden, starttime/endtime/access records are NOT selected, if they should not! Almost ALWAYS add this to your queries!
|
||
}
|
||
}
|
||
// Split the "FROM ... WHERE" string so we get the WHERE part and TABLE names separated...:
|
||
list($TABLENAMES, $WHERE) = preg_split('/WHERE/i', trim($query), 2);
|
||
$TABLENAMES = trim(substr(trim($TABLENAMES),5));
|
||
$WHERE = trim($WHERE);
|
||
// Add '$addWhere'
|
||
if ($addWhere) {$WHERE.=' '.$addWhere.LF;}
|
||
// Search word:
|
||
if ($this->piVars['sword'] && $this->internal['searchFieldList']) {
|
||
$WHERE.=$this->cObj->searchWhere($this->piVars['sword'],$this->internal['searchFieldList'],$table).LF;
|
||
}
|
||
if ($count) {
|
||
$queryParts = array(
|
||
'SELECT' => 'count(*)',
|
||
'FROM' => $TABLENAMES,
|
||
'WHERE' => $WHERE,
|
||
'GROUPBY' => '',
|
||
'ORDERBY' => '',
|
||
'LIMIT' => ''
|
||
);
|
||
} else {
|
||
// Order by data:
|
||
if (!$orderBy && $this->internal['orderBy']) {
|
||
if (t3lib_div::inList($this->internal['orderByList'],$this->internal['orderBy'])) {
|
||
$orderBy = 'ORDER BY '.$table.'.'.$this->internal['orderBy'].($this->internal['descFlag']?' DESC':'');
|
||
}
|
||
}
|
||
// Limit data:
|
||
$pointer = $this->piVars['pointer'];
|
||
$pointer = intval($pointer);
|
||
$results_at_a_time = t3lib_div::intInRange($this->internal['results_at_a_time'],1,1000);
|
||
$LIMIT = ($pointer*$results_at_a_time).','.$results_at_a_time;
|
||
// Add 'SELECT'
|
||
$queryParts = array(
|
||
'SELECT' => $this->pi_prependFieldsWithTable($table,$this->pi_listFields),
|
||
'FROM' => $TABLENAMES,
|
||
'WHERE' => $WHERE,
|
||
'GROUPBY' => $GLOBALS['TYPO3_DB']->stripGroupBy($groupBy),
|
||
'ORDERBY' => $GLOBALS['TYPO3_DB']->stripOrderBy($orderBy),
|
||
'LIMIT' => $LIMIT
|
||
);
|
||
}
|
||
return $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryParts);
|
||
}
|
||