Main Page | Directories | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages | Examples

wizard_add.php

Go to the documentation of this file.
00001 <?php
00002 /***************************************************************
00003 *  Copyright notice
00004 *
00005 *  (c) 1999-2004 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 ***************************************************************/
00050 $BACK_PATH = '';
00051 require ('init.php');
00052 require ('template.php');
00053 $LANG->includeLLFile('EXT:lang/locallang_wizards.xml');
00054 
00055 
00056 
00057 
00058 
00059 
00060 
00061 
00062 
00063 
00064 
00065 
00066 
00067 
00075 class SC_wizard_add {
00076 
00077       // Internal, dynamic:
00078    var $content;           // Content accumulation for the module.
00079    var $include_once=array(); // List of files to include.
00080 
00081    var $processDataFlag=0;    // If set, the TCEmain class is loaded and used to add the returning ID to the parent record.
00082 
00083       // Internal, static:
00084    var $pid;               // Create new record -pid (pos/neg). If blank, return immediately
00085    var $table;             // The parent table we are working on.
00086    var $id;             // Loaded with the created id of a record when TCEforms (alt_doc.php) returns ...
00087 
00088       // Internal, static: GPvars
00089    var $P;                 // Wizard parameters, coming from TCEforms linking to the wizard.
00090    var $returnEditConf;    // Information coming back from alt_doc.php script, telling what the table/id was of the newly created record.
00091 
00092 
00093 
00094 
00095 
00096 
00097 
00098 
00104    function init()   {
00105 
00106          // Init GPvars:
00107       $this->P = t3lib_div::_GP('P');
00108       $this->returnEditConf = t3lib_div::_GP('returnEditConf');
00109 
00110          // Get this record
00111       $origRow = t3lib_BEfunc::getRecord($this->P['table'],$this->P['uid']);
00112 
00113          // Set table:
00114       $this->table = $this->P['params']['table'];
00115 
00116          // Get TSconfig for it.
00117       $TSconfig = t3lib_BEfunc::getTCEFORM_TSconfig($this->table,is_array($origRow)?$origRow:array('pid'=>$this->P['pid']));
00118 
00119          // Set [params][pid]
00120       if (substr($this->P['params']['pid'],0,3)=='###' && substr($this->P['params']['pid'],-3)=='###')   {
00121          $this->pid = intval($TSconfig['_'.substr($this->P['params']['pid'],3,-3)]);
00122       } else $this->pid = intval($this->P['params']['pid']);
00123 
00124          // Return if new record as parent (not possibly/allowed)
00125       if (!strcmp($this->pid,''))   {
00126          header('Location: '.t3lib_div::locationHeaderUrl($this->P['returnUrl']));
00127          exit;
00128       }
00129 
00130          // Else proceed:
00131       if ($this->returnEditConf) {  // If a new id has returned from a newly created record...
00132          $eC = unserialize($this->returnEditConf);
00133          if (is_array($eC[$this->table]) && t3lib_div::testInt($this->P['uid'])) {
00134 
00135                // Getting id and cmd from returning editConf array.
00136             reset($eC[$this->table]);
00137             $this->id = intval(key($eC[$this->table]));
00138             $cmd = current($eC[$this->table]);
00139 
00140                // ... and if everything seems OK we will register some classes for inclusion and instruct the object to perform processing later.
00141             if ($this->P['params']['setValue'] && $cmd=='edit' && $this->id && $this->P['table'] && $this->P['field'] && $this->P['uid']) {
00142                $this->include_once[]=PATH_t3lib.'class.t3lib_loaddbgroup.php';
00143                $this->include_once[]=PATH_t3lib.'class.t3lib_transferdata.php';
00144                $this->include_once[]=PATH_t3lib.'class.t3lib_tcemain.php';
00145                $this->processDataFlag=1;
00146             }
00147          }
00148       }
00149    }
00150 
00157    function main()   {
00158 
00159       if ($this->returnEditConf) {
00160          if ($this->processDataFlag)   {
00161 
00162                // Preparing the data of the parent record...:
00163             $trData = t3lib_div::makeInstance('t3lib_transferData');
00164             $trData->fetchRecord($this->P['table'],$this->P['uid'],''); // 'new'
00165             reset($trData->regTableItems_data);
00166             $current = current($trData->regTableItems_data);
00167 
00168                // If that record was found (should absolutely be...), then init TCEmain and set, prepend or append the record
00169             if (is_array($current)) {
00170                $tce = t3lib_div::makeInstance('t3lib_TCEmain');
00171                $tce->stripslashes_values=0;
00172                $data=array();
00173                $addEl = $this->table.'_'.$this->id;
00174                switch((string)$this->P['params']['setValue'])  {
00175                   case 'set':
00176                      $data[$this->P['table']][$this->P['uid']][$this->P['field']] = $addEl;
00177                   break;
00178                   case 'prepend':
00179                      $data[$this->P['table']][$this->P['uid']][$this->P['field']] = $current[$this->P['field']].','.$addEl;
00180                   break;
00181                   case 'append':
00182                      $data[$this->P['table']][$this->P['uid']][$this->P['field']] = $addEl.','.$current[$this->P['field']];
00183                   break;
00184                }
00185 
00186                   // Setting the new field data:
00187                $data[$this->P['table']][$this->P['uid']][$this->P['field']] = implode(',',t3lib_div::trimExplode(',',$data[$this->P['table']][$this->P['uid']][$this->P['field']],1));
00188 
00189                   // Submit the data:
00190                $tce->start($data,array());
00191                $tce->process_datamap();
00192             }
00193          }
00194             // Return to the parent alt_doc.php record editing session:
00195          header('Location: '.t3lib_div::locationHeaderUrl($this->P['returnUrl']));
00196       } else {
00197             // Redirecting to alt_doc.php with instructions to create a new record AND when closing to return back with information about that records ID etc.
00198          header('Location: '.t3lib_div::locationHeaderUrl('alt_doc.php?returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI')).'&returnEditConf=1&edit['.$this->P['params']['table'].']['.$this->pid.']=new'));
00199       }
00200    }
00201 }
00202 
00203 // Include extension?
00204 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/wizard_add.php']) {
00205    include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/wizard_add.php']);
00206 }
00207 
00208 
00209 
00210 
00211 
00212 
00213 
00214 
00215 
00216 
00217 
00218 
00219 // Make instance:
00220 $SOBE = t3lib_div::makeInstance('SC_wizard_add');
00221 $SOBE->init();
00222 
00223 // Include files?
00224 foreach($SOBE->include_once as $INC_FILE) include_once($INC_FILE);
00225 
00226 $SOBE->main();
00227 $SOBE->printContent();
00228 ?>

Generated on Sun Oct 3 01:06:01 2004 for TYPO3core 3.7.0 dev by  doxygen 1.3.8-20040913