Documentation TYPO3 par Ameos |
00001 <?php 00002 /*************************************************************** 00003 * Copyright notice 00004 * 00005 * (c) 1999-2005 Kasper Skaarhoj (kasperYYYY@typo3.com) 00006 * All rights reserved 00007 * 00008 * This script is part of the TYPO3 project. The TYPO3 project is 00009 * free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2 of the License, or 00012 * (at your option) any later version. 00013 * 00014 * The GNU General Public License can be found at 00015 * http://www.gnu.org/copyleft/gpl.html. 00016 * A copy is found in the textfile GPL.txt and important notices to the license 00017 * from the author is found in LICENSE.txt distributed with these scripts. 00018 * 00019 * 00020 * This script is distributed in the hope that it will be useful, 00021 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 * GNU General Public License for more details. 00024 * 00025 * This copyright notice MUST APPEAR in all copies of the script! 00026 ***************************************************************/ 00054 require ('init.php'); 00055 require ('template.php'); 00056 require_once (PATH_t3lib.'class.t3lib_tcemain.php'); 00057 00058 00059 00060 00061 00062 00063 00064 00065 00066 00067 00078 class SC_tce_db { 00079 00080 // Internal, static: GPvar 00081 var $flags; // Array. Accepts options to be set in TCE object. Currently it supports "reverseOrder" (boolean). 00082 var $data; // Data array on the form [tablename][uid][fieldname] = value 00083 var $cmd; // Command array on the form [tablename][uid][command] = value. This array may get additional data set internally based on clipboard commands send in CB var! 00084 var $mirror; // Array passed to ->setMirror. 00085 var $cacheCmd; // Cache command sent to ->clear_cacheCmd 00086 var $redirect; // Redirect URL. Script will redirect to this location after performing operations (unless errors has occured) 00087 var $prErr; // Boolean. If set, errors will be printed on screen instead of redirection. Should always be used, otherwise you will see no errors if they happen. 00088 # var $_disableRTE; 00089 var $CB; // Clipboard command array. May trigger changes in "cmd" 00090 var $vC; // Verification code 00091 var $uPT; // Boolean. Update Page Tree Trigger. If set and the manipulated records are pages then the update page tree signal will be set. 00092 var $generalComment; // String, general comment (for raising stages of workspace versions) 00093 00094 // Internal, dynamic: 00095 var $include_once=array(); // Files to include after init() function is called: 00096 var $tce; // TCEmain object 00097 00098 00099 00100 00106 function init() { 00107 global $BE_USER; 00108 00109 // GPvars: 00110 $this->flags = t3lib_div::_GP('flags'); 00111 $this->data = t3lib_div::_GP('data'); 00112 $this->cmd = t3lib_div::_GP('cmd'); 00113 $this->mirror = t3lib_div::_GP('mirror'); 00114 $this->cacheCmd = t3lib_div::_GP('cacheCmd'); 00115 $this->redirect = t3lib_div::_GP('redirect'); 00116 $this->prErr = t3lib_div::_GP('prErr'); 00117 $this->_disableRTE = t3lib_div::_GP('_disableRTE'); 00118 $this->CB = t3lib_div::_GP('CB'); 00119 $this->vC = t3lib_div::_GP('vC'); 00120 $this->uPT = t3lib_div::_GP('uPT'); 00121 $this->generalComment = t3lib_div::_GP('generalComment'); 00122 00123 // Creating TCEmain object 00124 $this->tce = t3lib_div::makeInstance('t3lib_TCEmain'); 00125 $this->tce->stripslashes_values=0; 00126 $this->tce->generalComment = $this->generalComment; 00127 00128 // Configuring based on user prefs. 00129 if ($BE_USER->uc['recursiveDelete']) { 00130 $this->tce->deleteTree = 1; // True if the delete Recursive flag is set. 00131 } 00132 if ($BE_USER->uc['copyLevels']) { 00133 $this->tce->copyTree = t3lib_div::intInRange($BE_USER->uc['copyLevels'],0,100); // Set to number of page-levels to copy. 00134 } 00135 if ($BE_USER->uc['neverHideAtCopy']) { 00136 $this->tce->neverHideAtCopy = 1; 00137 } 00138 00139 $TCAdefaultOverride = $BE_USER->getTSConfigProp('TCAdefaults'); 00140 if (is_array($TCAdefaultOverride)) { 00141 $this->tce->setDefaultsFromUserTS($TCAdefaultOverride); 00142 } 00143 00144 // Reverse order. 00145 if ($this->flags['reverseOrder']) { 00146 $this->tce->reverseOrder=1; 00147 } 00148 00149 # $this->tce->disableRTE = $this->_disableRTE; 00150 00151 // Clipboard? 00152 if (is_array($this->CB)) { 00153 $this->include_once[]=PATH_t3lib.'class.t3lib_clipboard.php'; 00154 } 00155 } 00156 00162 function initClipboard() { 00163 if (is_array($this->CB)) { 00164 $clipObj = t3lib_div::makeInstance('t3lib_clipboard'); 00165 $clipObj->initializeClipboard(); 00166 if ($this->CB['paste']) { 00167 $clipObj->setCurrentPad($this->CB['pad']); 00168 $this->cmd = $clipObj->makePasteCmdArray($this->CB['paste'],$this->cmd); 00169 } 00170 if ($this->CB['delete']) { 00171 $clipObj->setCurrentPad($this->CB['pad']); 00172 $this->cmd = $clipObj->makeDeleteCmdArray($this->cmd); 00173 } 00174 } 00175 } 00176 00182 function main() { 00183 global $BE_USER,$TYPO3_CONF_VARS; 00184 00185 // LOAD TCEmain with data and cmd arrays: 00186 $this->tce->start($this->data,$this->cmd); 00187 if (is_array($this->mirror)) {$this->tce->setMirror($this->mirror);} 00188 00189 // Checking referer / executing 00190 $refInfo=parse_url(t3lib_div::getIndpEnv('HTTP_REFERER')); 00191 $httpHost = t3lib_div::getIndpEnv('TYPO3_HOST_ONLY'); 00192 if ($httpHost!=$refInfo['host'] && $this->vC!=$BE_USER->veriCode() && !$TYPO3_CONF_VARS['SYS']['doNotCheckReferer']) { 00193 $this->tce->log('',0,0,0,1,'Referer host "%s" and server host "%s" did not match and veriCode was not valid either!',1,array($refInfo['host'],$httpHost)); 00194 } else { 00195 // Register uploaded files 00196 $this->tce->process_uploads($_FILES); 00197 00198 // Execute actions: 00199 $this->tce->process_datamap(); 00200 $this->tce->process_cmdmap(); 00201 00202 // Clearing cache: 00203 $this->tce->clear_cacheCmd($this->cacheCmd); 00204 00205 // Update page tree? 00206 if ($this->uPT && (isset($this->data['pages'])||isset($this->cmd['pages']))) { 00207 t3lib_BEfunc::getSetUpdateSignal('updatePageTree'); 00208 } 00209 } 00210 } 00211 00218 function finish() { 00219 // Prints errors, if... 00220 if ($this->prErr) { 00221 $this->tce->printLogErrorMessages($this->redirect); 00222 } 00223 00224 if ($this->redirect && !$this->tce->debug) { 00225 Header('Location: '.t3lib_div::locationHeaderUrl($this->redirect)); 00226 } 00227 } 00228 } 00229 00230 // Include extension? 00231 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/tce_db.php']) { 00232 include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/tce_db.php']); 00233 } 00234 00235 00236 00237 00238 00239 00240 00241 // Make instance: 00242 $SOBE = t3lib_div::makeInstance('SC_tce_db'); 00243 $SOBE->init(); 00244 00245 // Include files? 00246 foreach($SOBE->include_once as $INC_FILE) include_once($INC_FILE); 00247 00248 $SOBE->initClipboard(); 00249 $SOBE->main(); 00250 $SOBE->finish(); 00251 ?>