Project

General

Profile

Bug #23470 » 15583-v3.diff

Administrator Admin, 2010-10-29 10:47

View differences:

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);
}
(3-3/4)