<?php include_once '../doc-typo3-funcs.php'; $doxygen_vars = array( "title" => "TYPO3 4.0.1: typo3_src-4.0.1/t3lib/class.t3lib_transferdata.php Source File", "datetime" => "Sat Dec 2 19:22:19 2006", "date" => "2 Dec 2006", "doxygenversion" => "1.4.6", "projectname" => "TYPO3 4.0.1", "projectnumber" => "4.0.1" ); get_header($doxygen_vars); ?> <!-- Generated by Doxygen 1.4.6 --> <div class="tabs"> <ul> <li><a href="main.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li><a href="classes.html"><span>Classes</span></a></li> <li id="current"><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> <li> <form action="search.php" method="get"> <table cellspacing="0" cellpadding="0" border="0"> <tr> <td><label> <u>S</u>earch for </label></td> <td><input type="text" name="query" value="" size="20" accesskey="s"/></td> </tr> </table> </form> </li> </ul></div> <div class="nav"> <a class="el" href="dir_c8daf1ad746050abf985cc546c89e248.html">typo3_src-4.0.1</a> » <a class="el" href="dir_9d0e5c424a38b69aeeedc616a9634e5f.html">t3lib</a></div> <h1>class.t3lib_transferdata.php</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <?php <a name="l00002"></a>00002 <span class="comment">/***************************************************************</span> <a name="l00003"></a>00003 <span class="comment">* Copyright notice</span> <a name="l00004"></a>00004 <span class="comment">*</span> <a name="l00005"></a>00005 <span class="comment">* (c) 1999-2006 Kasper Skaarhoj (kasperYYYY@typo3.com)</span> <a name="l00006"></a>00006 <span class="comment">* All rights reserved</span> <a name="l00007"></a>00007 <span class="comment">*</span> <a name="l00008"></a>00008 <span class="comment">* This script is part of the TYPO3 project. The TYPO3 project is</span> <a name="l00009"></a>00009 <span class="comment">* free software; you can redistribute it and/or modify</span> <a name="l00010"></a>00010 <span class="comment">* it under the terms of the GNU General Public License as published by</span> <a name="l00011"></a>00011 <span class="comment">* the Free Software Foundation; either version 2 of the License, or</span> <a name="l00012"></a>00012 <span class="comment">* (at your option) any later version.</span> <a name="l00013"></a>00013 <span class="comment">*</span> <a name="l00014"></a>00014 <span class="comment">* The GNU General Public License can be found at</span> <a name="l00015"></a>00015 <span class="comment">* http://www.gnu.org/copyleft/gpl.html.</span> <a name="l00016"></a>00016 <span class="comment">* A copy is found in the textfile GPL.txt and important notices to the license</span> <a name="l00017"></a>00017 <span class="comment">* from the author is found in LICENSE.txt distributed with these scripts.</span> <a name="l00018"></a>00018 <span class="comment">*</span> <a name="l00019"></a>00019 <span class="comment">*</span> <a name="l00020"></a>00020 <span class="comment">* This script is distributed in the hope that it will be useful,</span> <a name="l00021"></a>00021 <span class="comment">* but WITHOUT ANY WARRANTY; without even the implied warranty of</span> <a name="l00022"></a>00022 <span class="comment">* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span> <a name="l00023"></a>00023 <span class="comment">* GNU General Public License for more details.</span> <a name="l00024"></a>00024 <span class="comment">*</span> <a name="l00025"></a>00025 <span class="comment">* This copyright notice MUST APPEAR in all copies of the script!</span> <a name="l00026"></a>00026 <span class="comment">***************************************************************/</span> <a name="l00075"></a>00075 require_once (PATH_t3lib.'<span class="keyword">class</span>.t3lib_loaddbgroup.php'); <a name="l00076"></a>00076 require_once (PATH_t3lib.'<span class="keyword">class</span>.t3lib_loadmodules.php'); <a name="l00077"></a>00077 require_once (PATH_t3lib.'<span class="keyword">class</span>.t3lib_parsehtml_proc.php'); <a name="l00078"></a>00078 require_once (PATH_t3lib.'<span class="keyword">class</span>.t3lib_flexformtools.php'); <a name="l00079"></a>00079 <a name="l00080"></a>00080 <a name="l00081"></a>00081 <a name="l00082"></a>00082 <a name="l00083"></a>00083 <a name="l00084"></a>00084 <a name="l00085"></a>00085 <a name="l00086"></a>00086 <a name="l00087"></a>00087 <a name="l00088"></a>00088 <a name="l00089"></a>00089 <a name="l00090"></a>00090 <a name="l00098"></a><a class="code" href="classt3lib__transferData.html">00098</a> <span class="keyword">class </span><a class="code" href="classt3lib__transferData.html">t3lib_transferData</a> { <a name="l00099"></a>00099 <span class="comment">// External, static:</span> <a name="l00100"></a><a class="code" href="classt3lib__transferData.html#47d8df50390f4efd43f6327ff2c9bd73">00100</a> var <a class="code" href="classt3lib__transferData.html#47d8df50390f4efd43f6327ff2c9bd73">$lockRecords</a>=0; <span class="comment">// If set, the records requested are locked.</span> <a name="l00101"></a><a class="code" href="classt3lib__transferData.html#a297d7621b27060734fc76908fd5d6e4">00101</a> var <a class="code" href="classt3lib__transferData.html#a297d7621b27060734fc76908fd5d6e4">$disableRTE</a>=0; <span class="comment">// Is set externally if RTE is disabled.</span> <a name="l00102"></a><a class="code" href="classt3lib__transferData.html#49d9d30ae85f6bbe127729542f6dfab2">00102</a> var <a class="code" href="classt3lib__transferData.html#49d9d30ae85f6bbe127729542f6dfab2">$prevPageID</a> = ''; <span class="comment">// If the pid in the command is 'prev' then $prevPageID is used as pid for the record. This is used to attach new records to other previous records eg. new pages.</span> <a name="l00103"></a><a class="code" href="classt3lib__transferData.html#45ad6e9cb3a91b0e8e86b68e8874a667">00103</a> var <a class="code" href="classt3lib__transferData.html#45ad6e9cb3a91b0e8e86b68e8874a667">$defVals</a>=array(); <span class="comment">// Can be set with an array of default values for tables. First key is table name, second level keys are field names. Originally this was a GLOBAL array used internally.</span> <a name="l00104"></a><a class="code" href="classt3lib__transferData.html#f7f2bfa4b6f1777805c42e9571bf06fc">00104</a> var <a class="code" href="classt3lib__transferData.html#f7f2bfa4b6f1777805c42e9571bf06fc">$addRawData</a> = FALSE; <span class="comment">// If set, the processed data is overlaid the raw record.</span> <a name="l00105"></a>00105 <a name="l00106"></a>00106 <span class="comment">// Internal, dynamic</span> <a name="l00107"></a><a class="code" href="classt3lib__transferData.html#4554a4f179c5fece4f7b4c93d751e258">00107</a> var <a class="code" href="classt3lib__transferData.html#4554a4f179c5fece4f7b4c93d751e258">$regTableItems</a> = Array(); <span class="comment">// Used to register, which items are already loaded!!</span> <a name="l00108"></a><a class="code" href="classt3lib__transferData.html#abf3e93ceb7de1321579450bc984ffa6">00108</a> var <a class="code" href="classt3lib__transferData.html#abf3e93ceb7de1321579450bc984ffa6">$regTableItems_data</a> = Array(); <span class="comment">// This stores the record data of the loaded records</span> <a name="l00109"></a><a class="code" href="classt3lib__transferData.html#64ccb351a1216f4c8892a22602ae4d4a">00109</a> var <a class="code" href="classt3lib__transferData.html#64ccb351a1216f4c8892a22602ae4d4a">$loadModules</a>=''; <span class="comment">// Contains loadModules object, if used. (for reuse internally)</span> <a name="l00110"></a>00110 <a name="l00111"></a>00111 <a name="l00112"></a>00112 <a name="l00113"></a>00113 <a name="l00114"></a>00114 <a name="l00115"></a>00115 <a name="l00116"></a>00116 <a name="l00117"></a>00117 <a name="l00118"></a>00118 <a name="l00119"></a>00119 <a name="l00120"></a>00120 <span class="comment">/***********************************************</span> <a name="l00121"></a>00121 <span class="comment"> *</span> <a name="l00122"></a>00122 <span class="comment"> * Getting record content, ready for display in TCEforms</span> <a name="l00123"></a>00123 <span class="comment"> *</span> <a name="l00124"></a>00124 <span class="comment"> ***********************************************/</span> <a name="l00125"></a>00125 <a name="l00137"></a><a class="code" href="classt3lib__transferData.html#d0df521d98e150b33fef06358a236198">00137</a> function <a class="code" href="classt3lib__transferData.html#d0df521d98e150b33fef06358a236198">fetchRecord</a>($table,$idList,$operation) { <a name="l00138"></a>00138 global $TCA; <a name="l00139"></a>00139 <a name="l00140"></a>00140 <span class="keywordflow">if</span> ((string)$idList == 'prev') {$idList = $this->prevPageID;} <a name="l00141"></a>00141 <a name="l00142"></a>00142 <span class="keywordflow">if</span> ($TCA[$table]) { <a name="l00143"></a>00143 <a class="code" href="classt3lib__div.html#3a04dbb9a707317b8beccbe92559dcc8">t3lib_div::loadTCA</a>($table); <a name="l00144"></a>00144 <a name="l00145"></a>00145 <span class="comment">// For each ID value (integer) we</span> <a name="l00146"></a>00146 $ids = <a class="code" href="classt3lib__div.html#cfb87d585b85e9b32841bde40beaa96c">t3lib_div::trimExplode</a>(<span class="charliteral">','</span>,$idList,1); <a name="l00147"></a>00147 foreach($ids as $id) { <a name="l00148"></a>00148 <span class="keywordflow">if</span> (strcmp($id,'')) { <span class="comment">// If ID is not blank:</span> <a name="l00149"></a>00149 <a name="l00150"></a>00150 <span class="comment">// For new records to be created, find default values:</span> <a name="l00151"></a>00151 <span class="keywordflow">if</span> ($operation=='<span class="keyword">new</span>') { <a name="l00152"></a>00152 <a name="l00153"></a>00153 <span class="comment">// Default values:</span> <a name="l00154"></a>00154 $newRow = Array(); <span class="comment">// Used to store default values as found here:</span> <a name="l00155"></a>00155 <a name="l00156"></a>00156 <span class="comment">// Default values as set in userTS:</span> <a name="l00157"></a>00157 $TCAdefaultOverride = $GLOBALS['BE_USER']->getTSConfigProp('TCAdefaults'); <a name="l00158"></a>00158 <span class="keywordflow">if</span> (is_array($TCAdefaultOverride[$table.<span class="charliteral">'.'</span>])) { <a name="l00159"></a>00159 foreach($TCAdefaultOverride[$table.<span class="charliteral">'.'</span>] as $theF => $theV) { <a name="l00160"></a>00160 <span class="keywordflow">if</span> (isset($TCA[$table]['columns'][$theF])) { <a name="l00161"></a>00161 $newRow[$theF]=$theV; <a name="l00162"></a>00162 } <a name="l00163"></a>00163 } <a name="l00164"></a>00164 } <a name="l00165"></a>00165 <a name="l00166"></a>00166 <span class="comment">// Default values as submitted:</span> <a name="l00167"></a>00167 <span class="keywordflow">if</span> (is_array($this->defVals[$table])) { <a name="l00168"></a>00168 foreach($this->defVals[$table] as $theF => $theV) { <a name="l00169"></a>00169 <span class="keywordflow">if</span> (isset($TCA[$table]['columns'][$theF])) { <a name="l00170"></a>00170 $newRow[$theF]=$theV; <a name="l00171"></a>00171 } <a name="l00172"></a>00172 } <a name="l00173"></a>00173 } <a name="l00174"></a>00174 <a name="l00175"></a>00175 <span class="comment">// Fetch default values if a previous record exists</span> <a name="l00176"></a>00176 <span class="keywordflow">if</span> ($id<0 && $TCA[$table]['ctrl']['useColumnsForDefaultValues']) { <a name="l00177"></a>00177 <span class="comment">// Fetches the previous record:</span> <a name="l00178"></a>00178 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(<span class="charliteral">'*'</span>, $table, 'uid='.abs($id).<a class="code" href="classt3lib__BEfunc.html#16c74b2f662fa4157494b0e9caacaefb">t3lib_BEfunc::deleteClause</a>($table)); <a name="l00179"></a>00179 <span class="keywordflow">if</span> ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { <a name="l00180"></a>00180 <span class="comment">// Gets the list of fields to copy from the previous record.</span> <a name="l00181"></a>00181 $fArr=<a class="code" href="classt3lib__div.html#cfb87d585b85e9b32841bde40beaa96c">t3lib_div::trimExplode</a>(<span class="charliteral">','</span>,$TCA[$table]['ctrl']['useColumnsForDefaultValues'],1); <a name="l00182"></a>00182 <span class="keywordflow">while</span>(list(,$theF)=each($fArr)) { <a name="l00183"></a>00183 <span class="keywordflow">if</span> (isset($TCA[$table]['columns'][$theF])) { <a name="l00184"></a>00184 $newRow[$theF]=$row[$theF]; <a name="l00185"></a>00185 } <a name="l00186"></a>00186 } <a name="l00187"></a>00187 } <a name="l00188"></a>00188 $GLOBALS['TYPO3_DB']->sql_free_result($res); <a name="l00189"></a>00189 } <a name="l00190"></a>00190 <a name="l00191"></a>00191 <span class="comment">// Finally, call renderRecord:</span> <a name="l00192"></a>00192 $this-><a class="code" href="classt3lib__transferData.html#904dfe961a277c23955ed1b79b62f995">renderRecord</a>($table, uniqid('NEW'), $id, $newRow); <a name="l00193"></a>00193 } <span class="keywordflow">else</span> { <a name="l00194"></a>00194 $id=intval($id); <a name="l00195"></a>00195 <a name="l00196"></a>00196 <span class="comment">// Fetch database values</span> <a name="l00197"></a>00197 $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(<span class="charliteral">'*'</span>, $table, 'uid='.intval($id).<a class="code" href="classt3lib__BEfunc.html#16c74b2f662fa4157494b0e9caacaefb">t3lib_BEfunc::deleteClause</a>($table)); <a name="l00198"></a>00198 <span class="keywordflow">if</span> ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { <a name="l00199"></a>00199 <a class="code" href="classt3lib__BEfunc.html#c4165ad61bfbf28a42389ab1c5072392">t3lib_BEfunc::fixVersioningPid</a>($table,$row); <a name="l00200"></a>00200 $this-><a class="code" href="classt3lib__transferData.html#904dfe961a277c23955ed1b79b62f995">renderRecord</a>($table, $id, $row['pid'], $row); <a name="l00201"></a>00201 $contentTable = $GLOBALS['TYPO3_CONF_VARS']['SYS']['contentTable']; <a name="l00202"></a>00202 $this-><a class="code" href="classt3lib__transferData.html#a0361df2a539986e879b5043d66a8bc0">lockRecord</a>($table, $id, $contentTable==$table?$row['pid']:0); <span class="comment">// Locking the pid if the table edited is the content table.</span> <a name="l00203"></a>00203 } <a name="l00204"></a>00204 $GLOBALS['TYPO3_DB']->sql_free_result($res); <a name="l00205"></a>00205 } <a name="l00206"></a>00206 } <a name="l00207"></a>00207 } <a name="l00208"></a>00208 } <a name="l00209"></a>00209 } <a name="l00210"></a>00210 <a name="l00224"></a><a class="code" href="classt3lib__transferData.html#904dfe961a277c23955ed1b79b62f995">00224</a> function <a class="code" href="classt3lib__transferData.html#904dfe961a277c23955ed1b79b62f995">renderRecord</a>($table, $id, $pid, $row) { <a name="l00225"></a>00225 global $TCA; <a name="l00226"></a>00226 <a name="l00227"></a>00227 <span class="comment">// Init:</span> <a name="l00228"></a>00228 $uniqueItemRef = $table.<span class="charliteral">'_'</span>.$id; <a name="l00229"></a>00229 <a class="code" href="classt3lib__div.html#3a04dbb9a707317b8beccbe92559dcc8">t3lib_div::loadTCA</a>($table); <a name="l00230"></a>00230 <a name="l00231"></a>00231 <span class="comment">// Fetches the true PAGE TSconfig pid to use later, if needed. (Until now, only for the RTE, but later..., who knows?)</span> <a name="l00232"></a>00232 list($tscPID)=<a class="code" href="classt3lib__BEfunc.html#2030470c687cd5e4605b5412d8681724">t3lib_BEfunc::getTSCpid</a>($table,$id,$pid); <a name="l00233"></a>00233 $TSconfig = <a class="code" href="classt3lib__BEfunc.html#522caf53343de891bdb1a7caa5fe556e">t3lib_BEfunc::getTCEFORM_TSconfig</a>($table,array_merge($row,array('uid'=>$id,'pid'=>$pid))); <a name="l00234"></a>00234 <a name="l00235"></a>00235 <span class="comment">// If the record has not already been loaded (in which case we DON'T do it again)...</span> <a name="l00236"></a>00236 <span class="keywordflow">if</span> (!$this->regTableItems[$uniqueItemRef]) { <a name="l00237"></a>00237 $this->regTableItems[$uniqueItemRef] = 1; <span class="comment">// set "loaded" flag.</span> <a name="l00238"></a>00238 <a name="l00239"></a>00239 <span class="comment">// If the table is pages, set the previous page id internally.</span> <a name="l00240"></a>00240 <span class="keywordflow">if</span> ($table == 'pages') {$this->prevPageID = $id;} <a name="l00241"></a>00241 <a name="l00242"></a>00242 $this->regTableItems_data[$uniqueItemRef] = $this-><a class="code" href="classt3lib__transferData.html#510f208a8c9ad8c332089fe99a97da9b">renderRecordRaw</a>($table, $id, $pid, $row, $TSconfig, $tscPID); <a name="l00243"></a>00243 <a name="l00244"></a>00244 <span class="comment">// Merges the processed array on-top of the raw one - this is done because some things in TCEforms may need access to other fields than those in the columns configuration!</span> <a name="l00245"></a>00245 <span class="keywordflow">if</span> ($this->addRawData && is_array($row) && is_array($this->regTableItems_data[$uniqueItemRef])) { <a name="l00246"></a>00246 $this->regTableItems_data[$uniqueItemRef] = array_merge($row, $this->regTableItems_data[$uniqueItemRef]); <a name="l00247"></a>00247 } <a name="l00248"></a>00248 } <a name="l00249"></a>00249 } <a name="l00250"></a>00250 <a name="l00251"></a>00251 <a name="l00252"></a>00252 <a name="l00268"></a><a class="code" href="classt3lib__transferData.html#510f208a8c9ad8c332089fe99a97da9b">00268</a> function <a class="code" href="classt3lib__transferData.html#510f208a8c9ad8c332089fe99a97da9b">renderRecordRaw</a>($table, $id, $pid, $row, $TSconfig='', $tscPID=0) { <a name="l00269"></a>00269 global $TCA; <a name="l00270"></a>00270 <a name="l00271"></a>00271 <span class="keywordflow">if</span>(!is_array($TSconfig)) { <a name="l00272"></a>00272 $TSconfig = array(); <a name="l00273"></a>00273 } <a name="l00274"></a>00274 <a name="l00275"></a>00275 <span class="comment">// Create blank accumulation array:</span> <a name="l00276"></a>00276 $totalRecordContent=array(); <a name="l00277"></a>00277 <a name="l00278"></a>00278 <span class="comment">// Traverse the configured columns for the table (TCA):</span> <a name="l00279"></a>00279 <span class="comment">// For each column configured, we will perform processing if needed based on the type (eg. for "group" and "select" types this is needed)</span> <a name="l00280"></a>00280 <a class="code" href="classt3lib__div.html#3a04dbb9a707317b8beccbe92559dcc8">t3lib_div::loadTCA</a>($table); <a name="l00281"></a>00281 $copyOfColumns = $TCA[$table]['columns']; <a name="l00282"></a>00282 foreach($copyOfColumns as $field => $fieldConfig) { <a name="l00283"></a>00283 <span class="comment">// Set $data variable for the field, either inputted value from $row - or if not found, the default value as defined in the "config" array</span> <a name="l00284"></a>00284 <span class="keywordflow">if</span> (isset($row[$field])) { <a name="l00285"></a>00285 $data = $row[$field]; <a name="l00286"></a>00286 } <span class="keywordflow">else</span> { <a name="l00287"></a>00287 $data = $fieldConfig['config']['<span class="keywordflow">default</span>']; <a name="l00288"></a>00288 } <a name="l00289"></a>00289 <a name="l00290"></a>00290 $data = $this-><a class="code" href="classt3lib__transferData.html#2bac0f3e8ed04f55cc7b9d16aa9c9b40">renderRecord_SW</a>($data,$fieldConfig,$TSconfig,$table,$row,$field); <a name="l00291"></a>00291 <a name="l00292"></a>00292 <span class="comment">// Set the field in the accumulation array IF the $data variabel is set:</span> <a name="l00293"></a>00293 $totalRecordContent[$field] = isset($data) ? $data : ''; <a name="l00294"></a>00294 } <a name="l00295"></a>00295 <a name="l00296"></a>00296 <span class="comment">// Further processing may apply for each field in the record depending on the settings in the "types" configuration (the list of fields to currently display for a record in TCEforms).</span> <a name="l00297"></a>00297 <span class="comment">// For instance this could be processing instructions for the Rich Text Editor.</span> <a name="l00298"></a>00298 $types_fieldConfig = <a class="code" href="classt3lib__BEfunc.html#29c7b0869b57c5070fc7760b05ec3eea">t3lib_BEfunc::getTCAtypes</a>($table,$totalRecordContent); <a name="l00299"></a>00299 <span class="keywordflow">if</span> (is_array($types_fieldConfig)) { <a name="l00300"></a>00300 $totalRecordContent = $this-><a class="code" href="classt3lib__transferData.html#6bd06d916dc5109a2cd3a7307c3ccfcb">renderRecord_typesProc</a>($totalRecordContent,$types_fieldConfig,$tscPID,$table,$pid); <a name="l00301"></a>00301 } <a name="l00302"></a>00302 <a name="l00303"></a>00303 <span class="comment">// Register items, mostly for external use (overriding the regItem() function)</span> <a name="l00304"></a>00304 foreach($totalRecordContent as $field => $data) { <a name="l00305"></a>00305 $this-><a class="code" href="classt3lib__transferData.html#d035906709dd895b75cff26475f2ebd5">regItem</a>($table,$id,$field,$data); <a name="l00306"></a>00306 } <a name="l00307"></a>00307 <a name="l00308"></a>00308 <span class="comment">// Finally, store the result:</span> <a name="l00309"></a>00309 reset($totalRecordContent); <a name="l00310"></a>00310 <a name="l00311"></a>00311 <span class="keywordflow">return</span> $totalRecordContent; <a name="l00312"></a>00312 <a name="l00313"></a>00313 } <a name="l00314"></a>00314 <a name="l00326"></a><a class="code" href="classt3lib__transferData.html#2bac0f3e8ed04f55cc7b9d16aa9c9b40">00326</a> function <a class="code" href="classt3lib__transferData.html#2bac0f3e8ed04f55cc7b9d16aa9c9b40">renderRecord_SW</a>($data,$fieldConfig,$TSconfig,$table,$row,$field) { <a name="l00327"></a>00327 <a name="l00328"></a>00328 <span class="keywordflow">switch</span>((string)$fieldConfig['config']['type']) { <a name="l00329"></a>00329 <span class="keywordflow">case</span> 'group': <a name="l00330"></a>00330 $data = $this-><a class="code" href="classt3lib__transferData.html#8b9f19ebd1db3ad9d2ced1ff6a9be10c">renderRecord_groupProc</a>($data,$fieldConfig,$TSconfig,$table,$row,$field); <a name="l00331"></a>00331 <span class="keywordflow">break</span>; <a name="l00332"></a>00332 <span class="keywordflow">case</span> 'select': <a name="l00333"></a>00333 $data = $this-><a class="code" href="classt3lib__transferData.html#c7a30ec5e211f0fc10f592b03234a2b3">renderRecord_selectProc</a>($data,$fieldConfig,$TSconfig,$table,$row,$field); <a name="l00334"></a>00334 <span class="keywordflow">break</span>; <a name="l00335"></a>00335 <span class="keywordflow">case</span> 'flex': <a name="l00336"></a>00336 $data = $this-><a class="code" href="classt3lib__transferData.html#943b37f543dbe2e8559ce229965042a2">renderRecord_flexProc</a>($data,$fieldConfig,$TSconfig,$table,$row,$field); <a name="l00337"></a>00337 <span class="keywordflow">break</span>; <a name="l00338"></a>00338 } <a name="l00339"></a>00339 <a name="l00340"></a>00340 <span class="keywordflow">return</span> $data; <a name="l00341"></a>00341 } <a name="l00342"></a>00342 <a name="l00356"></a><a class="code" href="classt3lib__transferData.html#8b9f19ebd1db3ad9d2ced1ff6a9be10c">00356</a> function <a class="code" href="classt3lib__transferData.html#8b9f19ebd1db3ad9d2ced1ff6a9be10c">renderRecord_groupProc</a>($data,$fieldConfig,$TSconfig,$table,$row,$field) { <a name="l00357"></a>00357 <span class="keywordflow">switch</span> ($fieldConfig['config']['internal_type']) { <a name="l00358"></a>00358 <span class="keywordflow">case</span> 'file': <a name="l00359"></a>00359 <span class="comment">// Init array used to accumulate the files:</span> <a name="l00360"></a>00360 $dataAcc=array(); <a name="l00361"></a>00361 <a name="l00362"></a>00362 <span class="comment">// Now, load the files into the $dataAcc array, whether stored by MM or as a list of filenames:</span> <a name="l00363"></a>00363 <span class="keywordflow">if</span> ($fieldConfig['config']['MM']) { <a name="l00364"></a>00364 $loadDB = <a class="code" href="classt3lib__div.html#b47f8a8e8be44b79a0b8064dcd427bc1">t3lib_div::makeInstance</a>('<a class="code" href="classt3lib__loadDBGroup.html">t3lib_loadDBGroup</a>'); <a name="l00365"></a>00365 $loadDB->start('', 'files', $fieldConfig['config']['MM'], $row['uid']); <span class="comment">// Setting dummy startup</span> <a name="l00366"></a>00366 <a name="l00367"></a>00367 foreach($loadDB->itemArray as $value) { <a name="l00368"></a>00368 <span class="keywordflow">if</span> ($value['<span class="keywordtype">id</span>']) { <a name="l00369"></a>00369 $dataAcc[]=rawurlencode($value['<span class="keywordtype">id</span>']).<span class="charliteral">'|'</span>.rawurlencode($value['<span class="keywordtype">id</span>']); <a name="l00370"></a>00370 } <a name="l00371"></a>00371 } <a name="l00372"></a>00372 } <span class="keywordflow">else</span> { <a name="l00373"></a>00373 $fileList = <a class="code" href="classt3lib__div.html#cfb87d585b85e9b32841bde40beaa96c">t3lib_div::trimExplode</a>(<span class="charliteral">','</span>,$data,1); <a name="l00374"></a>00374 foreach($fileList as $value) { <a name="l00375"></a>00375 <span class="keywordflow">if</span> ($value) { <a name="l00376"></a>00376 $dataAcc[]=rawurlencode($value).<span class="charliteral">'|'</span>.rawurlencode($value); <a name="l00377"></a>00377 } <a name="l00378"></a>00378 } <a name="l00379"></a>00379 } <a name="l00380"></a>00380 <span class="comment">// Implode the accumulation array to a comma separated string:</span> <a name="l00381"></a>00381 $data = implode(<span class="charliteral">','</span>,$dataAcc); <a name="l00382"></a>00382 <span class="keywordflow">break</span>; <a name="l00383"></a>00383 <span class="keywordflow">case</span> 'db': <a name="l00384"></a>00384 $loadDB = <a class="code" href="classt3lib__div.html#b47f8a8e8be44b79a0b8064dcd427bc1">t3lib_div::makeInstance</a>('<a class="code" href="classt3lib__loadDBGroup.html">t3lib_loadDBGroup</a>'); <a name="l00385"></a>00385 $loadDB->start($data, $fieldConfig['config']['allowed'], $fieldConfig['config']['MM'], $row['uid']); <a name="l00386"></a>00386 $loadDB->getFromDB(); <a name="l00387"></a>00387 $data = $loadDB->readyForInterface(); <a name="l00388"></a>00388 <span class="keywordflow">break</span>; <a name="l00389"></a>00389 } <a name="l00390"></a>00390 <a name="l00391"></a>00391 <span class="keywordflow">return</span> $data; <a name="l00392"></a>00392 } <a name="l00393"></a>00393 <a name="l00407"></a><a class="code" href="classt3lib__transferData.html#c7a30ec5e211f0fc10f592b03234a2b3">00407</a> function <a class="code" href="classt3lib__transferData.html#c7a30ec5e211f0fc10f592b03234a2b3">renderRecord_selectProc</a>($data,$fieldConfig,$TSconfig,$table,$row,$field) { <a name="l00408"></a>00408 global $TCA; <a name="l00409"></a>00409 <a name="l00410"></a>00410 <span class="comment">// Initialize:</span> <a name="l00411"></a>00411 $elements = <a class="code" href="classt3lib__div.html#cfb87d585b85e9b32841bde40beaa96c">t3lib_div::trimExplode</a>(<span class="charliteral">','</span>,$data,1); <span class="comment">// Current data set.</span> <a name="l00412"></a>00412 $dataAcc=array(); <span class="comment">// New data set, ready for interface (list of values, rawurlencoded)</span> <a name="l00413"></a>00413 <a name="l00414"></a>00414 <span class="comment">// For list selectors (multi-value):</span> <a name="l00415"></a>00415 <span class="keywordflow">if</span> (intval($fieldConfig['config']['maxitems'])>1) { <a name="l00416"></a>00416 <a name="l00417"></a>00417 <span class="comment">// Add regular elements:</span> <a name="l00418"></a>00418 <span class="keywordflow">if</span> (is_array($fieldConfig['config']['items'])) { <a name="l00419"></a>00419 $fieldConfig['config']['items'] = $this-><a class="code" href="classt3lib__transferData.html#3e6e182c5429c04b5e90cf188d5b9b13">procesItemArray</a>($fieldConfig['config']['items'], $fieldConfig['config'], $TSconfig[$field], $table, $row, $field); <a name="l00420"></a>00420 foreach($fieldConfig['config']['items'] as $pvpv) { <a name="l00421"></a>00421 foreach($elements as $eKey => $value) { <a name="l00422"></a>00422 <span class="keywordflow">if</span> (!strcmp($value,$pvpv[1])) { <a name="l00423"></a>00423 $dataAcc[$eKey]=rawurlencode($pvpv[1]).<span class="charliteral">'|'</span>.rawurlencode($this-><a class="code" href="classt3lib__transferData.html#b5bf812be3557cf266281d05672dc5a1">sL</a>($pvpv[0])); <a name="l00424"></a>00424 } <a name="l00425"></a>00425 } <a name="l00426"></a>00426 } <a name="l00427"></a>00427 } <a name="l00428"></a>00428 <a name="l00429"></a>00429 <span class="comment">// Add "special"</span> <a name="l00430"></a>00430 <span class="keywordflow">if</span> ($fieldConfig['config']['special']) { <a name="l00431"></a>00431 $dataAcc = $this-><a class="code" href="classt3lib__transferData.html#34be0d5f599c2cef2fd3af89e68e8695">selectAddSpecial</a>($dataAcc, $elements, $fieldConfig['config']['special']); <a name="l00432"></a>00432 } <a name="l00433"></a>00433 <a name="l00434"></a>00434 <span class="comment">// Add "foreign table" stuff:</span> <a name="l00435"></a>00435 <span class="keywordflow">if</span> ($TCA[$fieldConfig['config']['foreign_table']]) { <a name="l00436"></a>00436 $dataAcc = $this-><a class="code" href="classt3lib__transferData.html#4e1539a6493d6354a43f2916ed55071e">selectAddForeign</a>($dataAcc, $elements, $fieldConfig, $field, $TSconfig, $row); <a name="l00437"></a>00437 } <a name="l00438"></a>00438 <a name="l00439"></a>00439 <span class="comment">// Always keep the native order for display in interface:</span> <a name="l00440"></a>00440 ksort($dataAcc); <a name="l00441"></a>00441 } <span class="keywordflow">else</span> { <span class="comment">// Normal, <= 1 -> value without title on it</span> <a name="l00442"></a>00442 <span class="keywordflow">if</span> ($TCA[$fieldConfig['config']['foreign_table']]) { <a name="l00443"></a>00443 <span class="comment">// Getting the data</span> <a name="l00444"></a>00444 $dataIds = $this-><a class="code" href="classt3lib__transferData.html#050376e27992afb8cc79a8a35c1922d8">getDataIdList</a>($elements, $fieldConfig, $row); <a name="l00445"></a>00445 <a name="l00446"></a>00446 <span class="keywordflow">if</span> (!count($dataIds)) $dataIds = array(0); <a name="l00447"></a>00447 $dataAcc[]=$dataIds[0]; <a name="l00448"></a>00448 } <span class="keywordflow">else</span> { <a name="l00449"></a>00449 $dataAcc[]=$elements[0]; <a name="l00450"></a>00450 } <a name="l00451"></a>00451 } <a name="l00452"></a>00452 <a name="l00453"></a>00453 <span class="keywordflow">return</span> implode(<span class="charliteral">','</span>,$dataAcc); <a name="l00454"></a>00454 } <a name="l00455"></a>00455 <a name="l00470"></a><a class="code" href="classt3lib__transferData.html#943b37f543dbe2e8559ce229965042a2">00470</a> function <a class="code" href="classt3lib__transferData.html#943b37f543dbe2e8559ce229965042a2">renderRecord_flexProc</a>($data,$fieldConfig,$TSconfig,$table,$row,$field) { <a name="l00471"></a>00471 global $TCA; <a name="l00472"></a>00472 <a name="l00473"></a>00473 <span class="comment">// Convert the XML data to PHP array:</span> <a name="l00474"></a>00474 $currentValueArray = <a class="code" href="classt3lib__div.html#4f6203e563def3f905bf40fd217ce705">t3lib_div::xml2array</a>($data); <a name="l00475"></a>00475 <span class="keywordflow">if</span> (is_array($currentValueArray)) { <a name="l00476"></a>00476 <a name="l00477"></a>00477 <span class="comment">// Get current value array:</span> <a name="l00478"></a>00478 $dataStructArray = <a class="code" href="classt3lib__BEfunc.html#10ff8b4f81ae6579c99559208fe0d318">t3lib_BEfunc::getFlexFormDS</a>($fieldConfig['config'],$row,$table); <a name="l00479"></a>00479 <span class="keywordflow">if</span> (is_array($dataStructArray)) { <a name="l00480"></a>00480 $currentValueArray['data'] = $this-><a class="code" href="classt3lib__transferData.html#a7816318e24789812f422470ef511898">renderRecord_flexProc_procInData</a>($currentValueArray['data'],$dataStructArray,array($data,$fieldConfig,$TSconfig,$table,$row,$field)); <a name="l00481"></a>00481 <a name="l00482"></a>00482 $flexObj = <a class="code" href="classt3lib__div.html#b47f8a8e8be44b79a0b8064dcd427bc1">t3lib_div::makeInstance</a>('<a class="code" href="classt3lib__flexformtools.html">t3lib_flexformtools</a>'); <a name="l00483"></a>00483 $data = $flexObj->flexArray2Xml($currentValueArray, TRUE); <a name="l00484"></a>00484 } <a name="l00485"></a>00485 } <a name="l00486"></a>00486 <a name="l00487"></a>00487 <span class="keywordflow">return</span> $data; <a name="l00488"></a>00488 } <a name="l00489"></a>00489 <a name="l00501"></a><a class="code" href="classt3lib__transferData.html#6bd06d916dc5109a2cd3a7307c3ccfcb">00501</a> function <a class="code" href="classt3lib__transferData.html#6bd06d916dc5109a2cd3a7307c3ccfcb">renderRecord_typesProc</a>($totalRecordContent,$types_fieldConfig,$tscPID,$table,$pid) { <a name="l00502"></a>00502 foreach($types_fieldConfig as $vconf) { <a name="l00503"></a>00503 <a name="l00504"></a>00504 <span class="comment">// Find file to write to, if configured:</span> <a name="l00505"></a>00505 $eFile = <a class="code" href="classt3lib__parsehtml__proc.html#e6e448146416730c6e56c7d69a3a4ee4">t3lib_parsehtml_proc::evalWriteFile</a>($vconf['spec']['static_write'],$totalRecordContent); <a name="l00506"></a>00506 <a name="l00507"></a>00507 <span class="comment">// Write file configuration:</span> <a name="l00508"></a>00508 <span class="keywordflow">if</span> (is_array($eFile)) { <a name="l00509"></a>00509 <span class="keywordflow">if</span> ($eFile['loadFromFileField'] && $totalRecordContent[$eFile['loadFromFileField']]) { <a name="l00510"></a>00510 <span class="comment">// Read the external file, and insert the content between the ###TYPO3_STATICFILE_EDIT### markers:</span> <a name="l00511"></a>00511 $SW_fileContent = t3lib_div::getUrl($eFile['editFile']); <a name="l00512"></a>00512 $parseHTML = <a class="code" href="classt3lib__div.html#b47f8a8e8be44b79a0b8064dcd427bc1">t3lib_div::makeInstance</a>('<a class="code" href="classt3lib__parsehtml__proc.html">t3lib_parsehtml_proc</a>'); <a name="l00513"></a>00513 $parseHTML->init('<span class="charliteral">','</span>'); <a name="l00514"></a>00514 <a name="l00515"></a>00515 $totalRecordContent[$vconf['field']] = $parseHTML->getSubpart( <a name="l00516"></a>00516 $SW_fileContent, <a name="l00517"></a>00517 $eFile['markerField']&&trim($totalRecordContent[$eFile['markerField']]) <a name="l00518"></a>00518 ? trim($totalRecordContent[$eFile['markerField']]) <a name="l00519"></a>00519 : '###TYPO3_STATICFILE_EDIT###' <a name="l00520"></a>00520 ); <a name="l00521"></a>00521 } <a name="l00522"></a>00522 } <a name="l00523"></a>00523 } <a name="l00524"></a>00524 <a name="l00525"></a>00525 <span class="keywordflow">return</span> $totalRecordContent; <a name="l00526"></a>00526 } <a name="l00527"></a>00527 <a name="l00528"></a>00528 <a name="l00529"></a>00529 <a name="l00530"></a>00530 <a name="l00531"></a>00531 <a name="l00532"></a>00532 <a name="l00533"></a>00533 <a name="l00534"></a>00534 <a name="l00535"></a>00535 <a name="l00536"></a>00536 <a name="l00537"></a>00537 <a name="l00538"></a>00538 <a name="l00539"></a>00539 <a name="l00540"></a>00540 <a name="l00541"></a>00541 <span class="comment">/***********************************************</span> <a name="l00542"></a>00542 <span class="comment"> *</span> <a name="l00543"></a>00543 <span class="comment"> * FlexForm processing functions</span> <a name="l00544"></a>00544 <span class="comment"> *</span> <a name="l00545"></a>00545 <span class="comment"> ***********************************************/</span> <a name="l00546"></a>00546 <a name="l00557"></a><a class="code" href="classt3lib__transferData.html#a7816318e24789812f422470ef511898">00557</a> function <a class="code" href="classt3lib__transferData.html#a7816318e24789812f422470ef511898">renderRecord_flexProc_procInData</a>($dataPart,$dataStructArray,$pParams) { <a name="l00558"></a>00558 <span class="keywordflow">if</span> (is_array($dataPart)) { <a name="l00559"></a>00559 foreach($dataPart as $sKey => $sheetDef) { <a name="l00560"></a>00560 list ($dataStruct,$actualSheet) = <a class="code" href="classt3lib__div.html#ca3046965acf04496029499d52c275e2">t3lib_div::resolveSheetDefInDS</a>($dataStructArray,$sKey); <a name="l00561"></a>00561 <a name="l00562"></a>00562 <span class="keywordflow">if</span> (is_array($dataStruct) && $actualSheet==$sKey && is_array($sheetDef)) { <a name="l00563"></a>00563 foreach($sheetDef as $lKey => $lData) { <a name="l00564"></a>00564 $this-><a class="code" href="classt3lib__transferData.html#6e344d80f214cd5f73c369b45e932821">renderRecord_flexProc_procInData_travDS</a>( <a name="l00565"></a>00565 $dataPart[$sKey][$lKey], <a name="l00566"></a>00566 $dataStruct['ROOT']['el'], <a name="l00567"></a>00567 $pParams <a name="l00568"></a>00568 ); <a name="l00569"></a>00569 } <a name="l00570"></a>00570 } <a name="l00571"></a>00571 } <a name="l00572"></a>00572 } <a name="l00573"></a>00573 <a name="l00574"></a>00574 <span class="keywordflow">return</span> $dataPart; <a name="l00575"></a>00575 } <a name="l00576"></a>00576 <a name="l00586"></a><a class="code" href="classt3lib__transferData.html#6e344d80f214cd5f73c369b45e932821">00586</a> function <a class="code" href="classt3lib__transferData.html#6e344d80f214cd5f73c369b45e932821">renderRecord_flexProc_procInData_travDS</a>(&$dataValues,$DSelements,$pParams) { <a name="l00587"></a>00587 <span class="keywordflow">if</span> (is_array($DSelements)) { <a name="l00588"></a>00588 <a name="l00589"></a>00589 <span class="comment">// For each DS element:</span> <a name="l00590"></a>00590 foreach($DSelements as $key => $dsConf) { <a name="l00591"></a>00591 <a name="l00592"></a>00592 <span class="comment">// Array/Section:</span> <a name="l00593"></a>00593 <span class="keywordflow">if</span> ($DSelements[$key]['type']=='array') { <a name="l00594"></a>00594 <span class="keywordflow">if</span> (is_array($dataValues[$key]['el'])) { <a name="l00595"></a>00595 <span class="keywordflow">if</span> ($DSelements[$key]['section']) { <a name="l00596"></a>00596 foreach($dataValues[$key]['el'] as $ik => $el) { <a name="l00597"></a>00597 $theKey = key($el); <a name="l00598"></a>00598 <span class="keywordflow">if</span> (is_array($dataValues[$key]['el'][$ik][$theKey]['el'])) { <a name="l00599"></a>00599 $this-><a class="code" href="classt3lib__transferData.html#6e344d80f214cd5f73c369b45e932821">renderRecord_flexProc_procInData_travDS</a>( <a name="l00600"></a>00600 $dataValues[$key]['el'][$ik][$theKey]['el'], <a name="l00601"></a>00601 $DSelements[$key]['el'][$theKey]['el'], <a name="l00602"></a>00602 $pParams <a name="l00603"></a>00603 ); <a name="l00604"></a>00604 } <a name="l00605"></a>00605 } <a name="l00606"></a>00606 } <span class="keywordflow">else</span> { <a name="l00607"></a>00607 <span class="keywordflow">if</span> (!isset($dataValues[$key]['el'])) $dataValues[$key]['el']=array(); <a name="l00608"></a>00608 $this-><a class="code" href="classt3lib__transferData.html#6e344d80f214cd5f73c369b45e932821">renderRecord_flexProc_procInData_travDS</a>( <a name="l00609"></a>00609 $dataValues[$key]['el'], <a name="l00610"></a>00610 $DSelements[$key]['el'], <a name="l00611"></a>00611 $pParams <a name="l00612"></a>00612 ); <a name="l00613"></a>00613 } <a name="l00614"></a>00614 } <a name="l00615"></a>00615 } <span class="keywordflow">else</span> { <a name="l00616"></a>00616 <span class="keywordflow">if</span> (is_array($dsConf['TCEforms']['config']) && is_array($dataValues[$key])) { <a name="l00617"></a>00617 foreach($dataValues[$key] as $vKey => $data) { <a name="l00618"></a>00618 <a name="l00619"></a>00619 <span class="comment">// $data,$fieldConfig,$TSconfig,$table,$row,$field</span> <a name="l00620"></a>00620 list(,,$CVTSconfig,$CVtable,$CVrow,$CVfield) = $pParams; <a name="l00621"></a>00621 ; <a name="l00622"></a>00622 <span class="comment">// Set default value:</span> <a name="l00623"></a>00623 <span class="keywordflow">if</span> (!isset($dataValues[$key][$vKey])) { <a name="l00624"></a>00624 $dataValues[$key][$vKey] = $dsConf['TCEforms']['config']['<span class="keywordflow">default</span>']; <a name="l00625"></a>00625 } <a name="l00626"></a>00626 <a name="l00627"></a>00627 <span class="comment">// Process value:</span> <a name="l00628"></a>00628 $dataValues[$key][$vKey] = $this-><a class="code" href="classt3lib__transferData.html#2bac0f3e8ed04f55cc7b9d16aa9c9b40">renderRecord_SW</a>($dataValues[$key][$vKey],$dsConf['TCEforms'],$CVTSconfig,$CVtable,$CVrow,''); <a name="l00629"></a>00629 } <a name="l00630"></a>00630 } <a name="l00631"></a>00631 } <a name="l00632"></a>00632 } <a name="l00633"></a>00633 } <a name="l00634"></a>00634 } <a name="l00635"></a>00635 <a name="l00636"></a>00636 <a name="l00637"></a>00637 <a name="l00638"></a>00638 <a name="l00639"></a>00639 <a name="l00640"></a>00640 <a name="l00641"></a>00641 <a name="l00642"></a>00642 <a name="l00643"></a>00643 <a name="l00644"></a>00644 <a name="l00645"></a>00645 <a name="l00646"></a>00646 <a name="l00647"></a>00647 <span class="comment">/***********************************************</span> <a name="l00648"></a>00648 <span class="comment"> *</span> <a name="l00649"></a>00649 <span class="comment"> * Selector box processing functions</span> <a name="l00650"></a>00650 <span class="comment"> *</span> <a name="l00651"></a>00651 <span class="comment"> ***********************************************/</span> <a name="l00652"></a>00652 <a name="l00663"></a><a class="code" href="classt3lib__transferData.html#34be0d5f599c2cef2fd3af89e68e8695">00663</a> function <a class="code" href="classt3lib__transferData.html#34be0d5f599c2cef2fd3af89e68e8695">selectAddSpecial</a>($dataAcc, $elements, $specialKey) { <a name="l00664"></a>00664 global $TCA; <a name="l00665"></a>00665 <a name="l00666"></a>00666 <span class="comment">// Special select types:</span> <a name="l00667"></a>00667 <span class="keywordflow">switch</span> ((string)$specialKey) { <a name="l00668"></a>00668 <span class="keywordflow">case</span> 'tables': <span class="comment">// Listing all tables from $TCA:</span> <a name="l00669"></a>00669 $tNames = array_keys($TCA); <a name="l00670"></a>00670 foreach($tNames as $tableName) { <a name="l00671"></a>00671 foreach($elements as $eKey => $value) { <a name="l00672"></a>00672 <span class="keywordflow">if</span> (!strcmp($tableName,$value)) { <a name="l00673"></a>00673 $dataAcc[$eKey]=rawurlencode($value).<span class="charliteral">'|'</span>.rawurlencode($this-><a class="code" href="classt3lib__transferData.html#b5bf812be3557cf266281d05672dc5a1">sL</a>($TCA[$value]['ctrl']['title'])); <a name="l00674"></a>00674 } <a name="l00675"></a>00675 } <a name="l00676"></a>00676 } <a name="l00677"></a>00677 <span class="keywordflow">break</span>; <a name="l00678"></a>00678 <span class="keywordflow">case</span> 'pagetypes': <span class="comment">// Listing all page types (doktype)</span> <a name="l00679"></a>00679 $theTypes = $TCA['pages']['columns']['doktype']['config']['items']; <a name="l00680"></a>00680 <span class="keywordflow">if</span> (is_array($theTypes)) { <a name="l00681"></a>00681 foreach($theTypes as $theTypesArrays) { <a name="l00682"></a>00682 foreach($elements as $eKey => $value) { <a name="l00683"></a>00683 <span class="keywordflow">if</span> (!strcmp($theTypesArrays[1],$value)) { <a name="l00684"></a>00684 $dataAcc[$eKey]=rawurlencode($value).<span class="charliteral">'|'</span>.rawurlencode($this-><a class="code" href="classt3lib__transferData.html#b5bf812be3557cf266281d05672dc5a1">sL</a>($theTypesArrays[0])); <a name="l00685"></a>00685 } <a name="l00686"></a>00686 } <a name="l00687"></a>00687 } <a name="l00688"></a>00688 } <a name="l00689"></a>00689 <span class="keywordflow">break</span>; <a name="l00690"></a>00690 <span class="keywordflow">case</span> 'exclude': <span class="comment">// Listing exclude fields.</span> <a name="l00691"></a>00691 $theExcludeFields = <a class="code" href="classt3lib__BEfunc.html#a01166e495c8fcd5c1b1643996d44d0a">t3lib_BEfunc::getExcludeFields</a>(); <a name="l00692"></a>00692 <a name="l00693"></a>00693 <span class="keywordflow">if</span> (is_array($theExcludeFields)) { <a name="l00694"></a>00694 foreach($theExcludeFields as $theExcludeFieldsArrays) { <a name="l00695"></a>00695 foreach($elements as $eKey => $value) { <a name="l00696"></a>00696 <span class="keywordflow">if</span> (!strcmp($theExcludeFieldsArrays[1],$value)) { <a name="l00697"></a>00697 $dataAcc[$eKey]=rawurlencode($value).<span class="charliteral">'|'</span>.rawurlencode(ereg_replace(':$<span class="charliteral">','</span>',$theExcludeFieldsArrays[0])); <a name="l00698"></a>00698 } <a name="l00699"></a>00699 } <a name="l00700"></a>00700 } <a name="l00701"></a>00701 } <a name="l00702"></a>00702 <span class="keywordflow">break</span>; <a name="l00703"></a>00703 <span class="keywordflow">case</span> 'explicitValues': <a name="l00704"></a>00704 $theTypes = <a class="code" href="classt3lib__BEfunc.html#927cf45e9d29c8d0e290bea747f04248">t3lib_BEfunc::getExplicitAuthFieldValues</a>(); <a name="l00705"></a>00705 <a name="l00706"></a>00706 foreach($theTypes as $tableFieldKey => $theTypeArrays) { <a name="l00707"></a>00707 <span class="keywordflow">if</span> (is_array($theTypeArrays['items'])) { <a name="l00708"></a>00708 foreach($theTypeArrays['items'] as $itemValue => $itemContent) { <a name="l00709"></a>00709 foreach($elements as $eKey => $value) { <a name="l00710"></a>00710 <span class="keywordflow">if</span> (!strcmp($tableFieldKey.<span class="charliteral">':'</span>.$itemValue.<span class="charliteral">':'</span>.$itemContent[0], $value)) { <a name="l00711"></a>00711 $dataAcc[$eKey] = rawurlencode($value).<span class="charliteral">'|'</span>.rawurlencode(<span class="charliteral">'['</span>.$itemContent[2].'] '.$itemContent[1]); <a name="l00712"></a>00712 } <a name="l00713"></a>00713 } <a name="l00714"></a>00714 } <a name="l00715"></a>00715 } <a name="l00716"></a>00716 } <a name="l00717"></a>00717 <span class="keywordflow">break</span>; <a name="l00718"></a>00718 <span class="keywordflow">case</span> 'languages': <a name="l00719"></a>00719 $theLangs = <a class="code" href="classt3lib__BEfunc.html#7bf3f591799225078f2bfd2fc7e44b66">t3lib_BEfunc::getSystemLanguages</a>(); <a name="l00720"></a>00720 foreach($theLangs as $lCfg) { <a name="l00721"></a>00721 foreach($elements as $eKey => $value) { <a name="l00722"></a>00722 <span class="keywordflow">if</span> (!strcmp($lCfg[1], $value)) { <a name="l00723"></a>00723 $dataAcc[$eKey] = rawurlencode($value).<span class="charliteral">'|'</span>.rawurlencode($lCfg[0]); <a name="l00724"></a>00724 } <a name="l00725"></a>00725 } <a name="l00726"></a>00726 } <a name="l00727"></a>00727 <span class="keywordflow">break</span>; <a name="l00728"></a>00728 <span class="keywordflow">case</span> 'custom': <a name="l00729"></a>00729 $customOptions = $GLOBALS['TYPO3_CONF_VARS']['BE']['customPermOptions']; <a name="l00730"></a>00730 <a name="l00731"></a>00731 <span class="keywordflow">if</span> (is_array($customOptions)) { <a name="l00732"></a>00732 foreach($customOptions as $coKey => $coValue) { <a name="l00733"></a>00733 <span class="keywordflow">if</span> (is_array($coValue['items'])) { <a name="l00734"></a>00734 <span class="comment">// Traverse items:</span> <a name="l00735"></a>00735 foreach($coValue['items'] as $itemKey => $itemCfg) { <a name="l00736"></a>00736 foreach($elements as $eKey => $value) { <a name="l00737"></a>00737 <span class="keywordflow">if</span> (!strcmp($coKey.<span class="charliteral">':'</span>.$itemKey, $value)) { <a name="l00738"></a>00738 $dataAcc[$eKey] = rawurlencode($value).<span class="charliteral">'|'</span>.rawurlencode($this-><a class="code" href="classt3lib__transferData.html#b5bf812be3557cf266281d05672dc5a1">sL</a>($itemCfg[0])); <a name="l00739"></a>00739 } <a name="l00740"></a>00740 } <a name="l00741"></a>00741 } <a name="l00742"></a>00742 } <a name="l00743"></a>00743 } <a name="l00744"></a>00744 } <a name="l00745"></a>00745 <span class="keywordflow">break</span>; <a name="l00746"></a>00746 <span class="keywordflow">case</span> 'modListGroup': <span class="comment">// Listing modules for GROUPS</span> <a name="l00747"></a>00747 <span class="keywordflow">case</span> 'modListUser': <span class="comment">// Listing modules for USERS:</span> <a name="l00748"></a>00748 <span class="keywordflow">if</span> (!$this->loadModules) { <a name="l00749"></a>00749 $this->loadModules = <a class="code" href="classt3lib__div.html#b47f8a8e8be44b79a0b8064dcd427bc1">t3lib_div::makeInstance</a>('<a class="code" href="classt3lib__loadModules.html">t3lib_loadModules</a>'); <a name="l00750"></a>00750 $this->loadModules->load($GLOBALS['TBE_MODULES']); <a name="l00751"></a>00751 } <a name="l00752"></a>00752 $modList = ($specialKey=='modListUser') ? $this->loadModules->modListUser : $this->loadModules->modListGroup; <a name="l00753"></a>00753 <a name="l00754"></a>00754 foreach($modList as $theModName) { <a name="l00755"></a>00755 foreach($elements as $eKey => $value) { <a name="l00756"></a>00756 $label = ''; <a name="l00757"></a>00757 <span class="comment">// Add label for main module:</span> <a name="l00758"></a>00758 $pp = explode(<span class="charliteral">'_'</span>,$value); <a name="l00759"></a>00759 <span class="keywordflow">if</span> (count($pp)>1) $label.=$GLOBALS['LANG']->moduleLabels['tabs'][$pp[0].'_tab'].<span class="charliteral">'>'</span>; <a name="l00760"></a>00760 <span class="comment">// Add modules own label now:</span> <a name="l00761"></a>00761 $label.= $GLOBALS['LANG']->moduleLabels['tabs'][$value.'_tab']; <a name="l00762"></a>00762 <a name="l00763"></a>00763 <span class="keywordflow">if</span> (!strcmp($theModName,$value)) { <a name="l00764"></a>00764 $dataAcc[$eKey]=rawurlencode($value).<span class="charliteral">'|'</span>.rawurlencode($label); <a name="l00765"></a>00765 } <a name="l00766"></a>00766 } <a name="l00767"></a>00767 } <a name="l00768"></a>00768 <span class="keywordflow">break</span>; <a name="l00769"></a>00769 } <a name="l00770"></a>00770 <a name="l00771"></a>00771 <span class="keywordflow">return</span> $dataAcc; <a name="l00772"></a>00772 } <a name="l00773"></a>00773 <a name="l00787"></a><a class="code" href="classt3lib__transferData.html#4e1539a6493d6354a43f2916ed55071e">00787</a> function <a class="code" href="classt3lib__transferData.html#4e1539a6493d6354a43f2916ed55071e">selectAddForeign</a>($dataAcc, $elements, $fieldConfig, $field, $TSconfig, $row) { <a name="l00788"></a>00788 global $TCA; <a name="l00789"></a>00789 <a name="l00790"></a>00790 <span class="comment">// Init:</span> <a name="l00791"></a>00791 $recordList = Array(); <a name="l00792"></a>00792 <a name="l00793"></a>00793 <span class="comment">// foreign_table</span> <a name="l00794"></a>00794 $subres = <a class="code" href="classt3lib__BEfunc.html#73d309c3f8579bef797d4aad17a605e5">t3lib_BEfunc::exec_foreign_table_where_query</a>($fieldConfig,$field,$TSconfig); <a name="l00795"></a>00795 <span class="keywordflow">while</span> ($subrow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($subres)) { <a name="l00796"></a>00796 $recordList[$subrow['uid']] = <a class="code" href="classt3lib__BEfunc.html#b2fd87d0623e4168bb0f1164572ca1a3">t3lib_BEfunc::getRecordTitle</a>($fieldConfig['config']['foreign_table'],$subrow); <a name="l00797"></a>00797 } <a name="l00798"></a>00798 <a name="l00799"></a>00799 <span class="comment">// neg_foreign_table</span> <a name="l00800"></a>00800 <span class="keywordflow">if</span> (is_array($TCA[$fieldConfig['config']['neg_foreign_table']])) { <a name="l00801"></a>00801 $subres = <a class="code" href="classt3lib__BEfunc.html#73d309c3f8579bef797d4aad17a605e5">t3lib_BEfunc::exec_foreign_table_where_query</a>($fieldConfig,$field,$TSconfig,'neg_'); <a name="l00802"></a>00802 <span class="keywordflow">while</span> ($subrow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($subres)) { <a name="l00803"></a>00803 $recordList[-$subrow['uid']] = <a class="code" href="classt3lib__BEfunc.html#b2fd87d0623e4168bb0f1164572ca1a3">t3lib_BEfunc::getRecordTitle</a>($fieldConfig['config']['neg_foreign_table'],$subrow); <a name="l00804"></a>00804 } <a name="l00805"></a>00805 } <a name="l00806"></a>00806 <a name="l00807"></a>00807 <span class="comment">// At this point all records that CAN be selected is found in $recordList</span> <a name="l00808"></a>00808 <span class="comment">// Now, get the data from loadDBgroup based on the input list of values.</span> <a name="l00809"></a>00809 $dataIds = $this-><a class="code" href="classt3lib__transferData.html#050376e27992afb8cc79a8a35c1922d8">getDataIdList</a>($elements, $fieldConfig, $row); <a name="l00810"></a>00810 <span class="keywordflow">if</span> ($fieldConfig['config']['MM']) $dataAcc=array(); <span class="comment">// Reset, if MM (which cannot bear anything but real relations!)</span> <a name="l00811"></a>00811 <a name="l00812"></a>00812 <span class="comment">// After this we can traverse the loadDBgroup values and match values with the list of possible values in $recordList:</span> <a name="l00813"></a>00813 foreach($dataIds as $theId) { <a name="l00814"></a>00814 <span class="keywordflow">if</span> (isset($recordList[$theId])) { <a name="l00815"></a>00815 $lPrefix = $this-><a class="code" href="classt3lib__transferData.html#b5bf812be3557cf266281d05672dc5a1">sL</a>($fieldConfig['config'][($theId>0?'<span class="charliteral">':'</span>neg_').'foreign_table_prefix']); <a name="l00816"></a>00816 <span class="keywordflow">if</span> ($fieldConfig['config']['MM']) { <a name="l00817"></a>00817 $dataAcc[]=rawurlencode($theId).<span class="charliteral">'|'</span>.rawurlencode(<a class="code" href="classt3lib__div.html#93c658c7682e99d76960c3d670e073e8">t3lib_div::fixed_lgd_cs</a>($lPrefix.strip_tags($recordList[$theId]),$GLOBALS['BE_USER']->uc['titleLen'])); <a name="l00818"></a>00818 } <span class="keywordflow">else</span> { <a name="l00819"></a>00819 foreach($elements as $eKey => $value) { <a name="l00820"></a>00820 <span class="keywordflow">if</span> (!strcmp($theId,$value)) { <a name="l00821"></a>00821 $dataAcc[$eKey]=rawurlencode($theId).<span class="charliteral">'|'</span>.rawurlencode(<a class="code" href="classt3lib__div.html#93c658c7682e99d76960c3d670e073e8">t3lib_div::fixed_lgd_cs</a>($lPrefix.strip_tags($recordList[$theId]),$GLOBALS['BE_USER']->uc['titleLen'])); <a name="l00822"></a>00822 } <a name="l00823"></a>00823 } <a name="l00824"></a>00824 } <a name="l00825"></a>00825 } <a name="l00826"></a>00826 } <a name="l00827"></a>00827 <a name="l00828"></a>00828 <span class="keywordflow">return</span> $dataAcc; <a name="l00829"></a>00829 } <a name="l00830"></a>00830 <a name="l00840"></a><a class="code" href="classt3lib__transferData.html#050376e27992afb8cc79a8a35c1922d8">00840</a> function <a class="code" href="classt3lib__transferData.html#050376e27992afb8cc79a8a35c1922d8">getDataIdList</a>($elements, $fieldConfig, $row) { <a name="l00841"></a>00841 $loadDB = <a class="code" href="classt3lib__div.html#b47f8a8e8be44b79a0b8064dcd427bc1">t3lib_div::makeInstance</a>('<a class="code" href="classt3lib__loadDBGroup.html">t3lib_loadDBGroup</a>'); <a name="l00842"></a>00842 $loadDB->registerNonTableValues=$fieldConfig['config']['allowNonIdValues'] ? 1 : 0; <a name="l00843"></a>00843 $loadDB->start(implode(<span class="charliteral">','</span>,$elements), $fieldConfig['config']['foreign_table'].<span class="charliteral">','</span>.$fieldConfig['config']['neg_foreign_table'], $fieldConfig['config']['MM'], $row['uid']); <a name="l00844"></a>00844 <a name="l00845"></a>00845 $idList = $loadDB->convertPosNeg($loadDB->getValueArray(),$fieldConfig['config']['foreign_table'],$fieldConfig['config']['neg_foreign_table']); <a name="l00846"></a>00846 <a name="l00847"></a>00847 <span class="keywordflow">return</span> $idList; <a name="l00848"></a>00848 } <a name="l00849"></a>00849 <a name="l00863"></a><a class="code" href="classt3lib__transferData.html#3e6e182c5429c04b5e90cf188d5b9b13">00863</a> function <a class="code" href="classt3lib__transferData.html#3e6e182c5429c04b5e90cf188d5b9b13">procesItemArray</a>($selItems,$config,$fieldTSConfig,$table,$row,$field) { <a name="l00864"></a>00864 $selItems = $this-><a class="code" href="classt3lib__transferData.html#674a834a2849fed51c5c316ec8aa8471">addItems</a>($selItems,$fieldTSConfig['<a class="code" href="classt3lib__transferData.html#674a834a2849fed51c5c316ec8aa8471">addItems</a>.']); <a name="l00865"></a>00865 <span class="keywordflow">if</span> ($config['itemsProcFunc']) $selItems = $this-><a class="code" href="classt3lib__transferData.html#b9b872b70475e090241d662414519b9b">procItems</a>($selItems,$fieldTSConfig['itemsProcFunc.'],$config,$table,$row,$field); <a name="l00866"></a>00866 <span class="keywordflow">return</span> $selItems; <a name="l00867"></a>00867 } <a name="l00868"></a>00868 <a name="l00878"></a><a class="code" href="classt3lib__transferData.html#674a834a2849fed51c5c316ec8aa8471">00878</a> function <a class="code" href="classt3lib__transferData.html#674a834a2849fed51c5c316ec8aa8471">addItems</a>($items,$iArray) { <a name="l00879"></a>00879 <span class="keywordflow">if</span> (is_array($iArray)) { <a name="l00880"></a>00880 foreach($iArray as $value => $label) { <a name="l00881"></a>00881 $items[]=array($label,$value); <a name="l00882"></a>00882 } <a name="l00883"></a>00883 } <a name="l00884"></a>00884 <span class="keywordflow">return</span> $items; <a name="l00885"></a>00885 } <a name="l00886"></a>00886 <a name="l00900"></a><a class="code" href="classt3lib__transferData.html#b9b872b70475e090241d662414519b9b">00900</a> function <a class="code" href="classt3lib__transferData.html#b9b872b70475e090241d662414519b9b">procItems</a>($items,$itemsProcFuncTSconfig,$config,$table,$row,$field) { <a name="l00901"></a>00901 $params=array(); <a name="l00902"></a>00902 $params['items'] = &$items; <a name="l00903"></a>00903 $params['config'] = $config; <a name="l00904"></a>00904 $params['TSconfig'] = $itemsProcFuncTSconfig; <a name="l00905"></a>00905 $params['table'] = $table; <a name="l00906"></a>00906 $params['row'] = $row; <a name="l00907"></a>00907 $params['field'] = $field; <a name="l00908"></a>00908 <a name="l00909"></a>00909 <a class="code" href="classt3lib__div.html#1458e987700fb6f722ec5186644f6580">t3lib_div::callUserFunction</a>($config['itemsProcFunc'],$params,$this); <a name="l00910"></a>00910 <span class="keywordflow">return</span> $items; <a name="l00911"></a>00911 } <a name="l00912"></a>00912 <a name="l00913"></a>00913 <a name="l00914"></a>00914 <a name="l00915"></a>00915 <a name="l00916"></a>00916 <a name="l00917"></a>00917 <a name="l00918"></a>00918 <a name="l00919"></a>00919 <a name="l00920"></a>00920 <a name="l00921"></a>00921 <span class="comment">/***********************************************</span> <a name="l00922"></a>00922 <span class="comment"> *</span> <a name="l00923"></a>00923 <span class="comment"> * Helper functions</span> <a name="l00924"></a>00924 <span class="comment"> *</span> <a name="l00925"></a>00925 <span class="comment"> ***********************************************/</span> <a name="l00926"></a>00926 <a name="l00935"></a><a class="code" href="classt3lib__transferData.html#a0361df2a539986e879b5043d66a8bc0">00935</a> function <a class="code" href="classt3lib__transferData.html#a0361df2a539986e879b5043d66a8bc0">lockRecord</a>($table, $id, $pid=0) { <a name="l00936"></a>00936 <span class="keywordflow">if</span> ($this->lockRecords) { <a name="l00937"></a>00937 <a class="code" href="classt3lib__BEfunc.html#ec71c833e679e06565b21df6dce0ea4b">t3lib_BEfunc::lockRecords</a>($table,$id,$pid); <a name="l00938"></a>00938 } <a name="l00939"></a>00939 } <a name="l00940"></a>00940 <a name="l00952"></a><a class="code" href="classt3lib__transferData.html#d035906709dd895b75cff26475f2ebd5">00952</a> function <a class="code" href="classt3lib__transferData.html#d035906709dd895b75cff26475f2ebd5">regItem</a>($table, $id, $field, $content) { <a name="l00953"></a>00953 } <a name="l00954"></a>00954 <a name="l00962"></a><a class="code" href="classt3lib__transferData.html#b5bf812be3557cf266281d05672dc5a1">00962</a> function <a class="code" href="classt3lib__transferData.html#b5bf812be3557cf266281d05672dc5a1">sL</a>($in) { <a name="l00963"></a>00963 <span class="keywordflow">return</span> $GLOBALS['LANG']->sL($in); <a name="l00964"></a>00964 } <a name="l00965"></a>00965 } <a name="l00966"></a>00966 <a name="l00967"></a>00967 <a name="l00968"></a>00968 <span class="keywordflow">if</span> (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/<span class="keyword">class</span>.t3lib_transferdata.php']) { <a name="l00969"></a>00969 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/<span class="keyword">class</span>.t3lib_transferdata.php']); <a name="l00970"></a>00970 } <a name="l00971"></a>00971 ?> </pre></div><?php include_once '../doc-typo3-funcs.php'; get_footer(); ?>