Cleanup: Updated copyright comments
[Packages/TYPO3.CMS.git] / typo3 / sysext / cms / tslib / content / class.tslib_content_records.php
1 <?php
2 /***************************************************************
3 * Copyright notice
4 *
5 * (c) 2010-2011 Xavier Perseguers <typo3@perseguers.ch>
6 * (c) 2010-2011 Steffen Kamper <steffen@typo3.org>
7 * All rights reserved
8 *
9 * This script is part of the TYPO3 project. The TYPO3 project is
10 * free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * The GNU General Public License can be found at
16 * http://www.gnu.org/copyleft/gpl.html.
17 * A copy is found in the textfile GPL.txt and important notices to the license
18 * from the author is found in LICENSE.txt distributed with these scripts.
19 *
20 *
21 * This script is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
25 *
26 * This copyright notice MUST APPEAR in all copies of the script!
27 ***************************************************************/
28
29 /**
30 * Contains RECORDS class object.
31 *
32 * $Id: class.tslib_content.php 7905 2010-06-13 14:42:33Z ohader $
33 * @author Xavier Perseguers <typo3@perseguers.ch>
34 * @author Steffen Kamper <steffen@typo3.org>
35 */
36 class tslib_content_Records extends tslib_content_Abstract {
37
38 /**
39 * Rendering the cObject, RECORDS
40 *
41 * @param array Array of TypoScript properties
42 * @return string Output
43 */
44 public function render($conf = array()) {
45 $theValue = '';
46
47 $originalRec = $GLOBALS['TSFE']->currentRecord;
48 if ($originalRec) { // If the currentRecord is set, we register, that this record has invoked this function. It's should not be allowed to do this again then!!
49 $GLOBALS['TSFE']->recordRegister[$originalRec]++;
50 }
51
52 $tables = isset($conf['tables.'])
53 ? $this->cObj->stdWrap($conf['tables'], $conf['tables.'])
54 : $conf['tables'];
55 $source = isset($conf['source.'])
56 ? $this->cObj->stdWrap($conf['source'], $conf['source.'])
57 : $conf['source'];
58 if ($tables && $source) {
59 $allowedTables = $tables;
60 if (is_array($conf['conf.'])) {
61 foreach ($conf['conf.'] as $k => $v) {
62 if (substr($k, -1) != '.')
63 $allowedTables .= ',' . $k;
64 }
65 }
66
67 $loadDB = t3lib_div::makeInstance('FE_loadDBGroup');
68 $loadDB->start($source, $allowedTables);
69 foreach ($loadDB->tableArray as $table => $v) {
70 if (is_array($GLOBALS['TCA'][$table])) {
71 $loadDB->additionalWhere[$table] = $this->cObj->enableFields($table);
72 }
73 }
74 $loadDB->getFromDB();
75
76 reset($loadDB->itemArray);
77 $data = $loadDB->results;
78
79 $cObj = t3lib_div::makeInstance('tslib_cObj');
80 $cObj->setParent($this->cObj->data, $this->cObj->currentRecord);
81 $this->cObj->currentRecordNumber = 0;
82 $this->cObj->currentRecordTotal = count($loadDB->itemArray);
83 foreach ($loadDB->itemArray as $val) {
84 $row = $data[$val['table']][$val['id']];
85
86 // Versioning preview:
87 $GLOBALS['TSFE']->sys_page->versionOL($val['table'], $row);
88
89 // Language overlay:
90 if (is_array($row) && $GLOBALS['TSFE']->sys_language_contentOL) {
91 $row = $GLOBALS['TSFE']->sys_page->getRecordOverlay(
92 $val['table'],
93 $row,
94 $GLOBALS['TSFE']->sys_language_content,
95 $GLOBALS['TSFE']->sys_language_contentOL
96 );
97 }
98
99 if (is_array($row)) { // Might be unset in the content overlay things...
100 $dontCheckPid = isset($conf['dontCheckPid.'])
101 ? $this->cObj->stdWrap($conf['dontCheckPid'], $conf['dontCheckPid.'])
102 : $conf['dontCheckPid'];
103 if (!$dontCheckPid) {
104 $row = $this->cObj->checkPid($row['pid'])
105 ? $row
106 : '';
107 }
108 if ($row && !$GLOBALS['TSFE']->recordRegister[$val['table'] . ':' . $val['id']]) {
109 $renderObjName = $conf['conf.'][$val['table']]
110 ? $conf['conf.'][$val['table']]
111 : '<' . $val['table'];
112 $renderObjKey = $conf['conf.'][$val['table']]
113 ? 'conf.' . $val['table']
114 : '';
115 $renderObjConf = $conf['conf.'][$val['table'] . '.'];
116 $this->cObj->currentRecordNumber++;
117 $cObj->parentRecordNumber = $this->cObj->currentRecordNumber;
118 $GLOBALS['TSFE']->currentRecord = $val['table'] . ':' . $val['id'];
119 $this->cObj->lastChanged($row['tstamp']);
120 $cObj->start($row, $val['table']);
121 $tmpValue = $cObj->cObjGetSingle($renderObjName, $renderObjConf, $renderObjKey);
122 $theValue .= $tmpValue;
123 }
124 }
125 }
126 }
127
128 $wrap = isset($conf['wrap.'])
129 ? $this->cObj->stdWrap($conf['wrap'], $conf['wrap.'])
130 : $conf['wrap'];
131 if ($wrap) {
132 $theValue = $this->cObj->wrap($theValue, $wrap);
133 }
134
135 if (isset($conf['stdWrap.'])) {
136 $theValue = $this->cObj->stdWrap($theValue, $conf['stdWrap.']);
137 }
138
139 $GLOBALS['TSFE']->currentRecord = $originalRec; // Restore
140
141 return $theValue;
142 }
143
144 }
145
146
147 if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['tslib/content/class.tslib_content_records.php'])) {
148 include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['tslib/content/class.tslib_content_records.php']);
149 }
150
151 ?>