This commit was manufactured by cvs2svn to create tag
[Packages/TYPO3.CMS.git] / typo3 / sysext / cms / tslib / media / scripts / xmlversionLib.inc
1 <?php
2 /***************************************************************
3 *  Copyright notice
4 *  
5 *  (c) 1999-2004 Kasper Skaarhoj (kasper@typo3.com)
6 *  All rights reserved
7 *
8 *  This script is part of the TYPO3 project. The TYPO3 project is 
9 *  free software; you can redistribute it and/or modify
10 *  it under the terms of the GNU General Public License as published by
11 *  the Free Software Foundation; either version 2 of the License, or
12 *  (at your option) any later version.
13
14 *  The GNU General Public License can be found at
15 *  http://www.gnu.org/copyleft/gpl.html.
16 *  A copy is found in the textfile GPL.txt and important notices to the license 
17 *  from the author is found in LICENSE.txt distributed with these scripts.
18 *
19
20 *  This script is distributed in the hope that it will be useful,
21 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
22 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23 *  GNU General Public License for more details.
24 *
25 *  This copyright notice MUST APPEAR in all copies of the script!
26 ***************************************************************/
27 /**
28  * Example class showing how one could make XML export of page content elements in TYPO3
29  * 
30  * $Id$
31  * Revised for TYPO3 3.6 June/2003 by Kasper Skaarhoj
32  *
33  * @author      Kasper Skaarhoj <kasper@typo3.com>
34  */
35 /**
36  * [CLASS/FUNCTION INDEX of SCRIPT]
37  *
38  *
39  *
40  *   96: class user_xmlversion 
41  *  107:     function main_xmlversion($content,$conf)   
42  *  137:     function getContentResult($table) 
43  *
44  * TOTAL FUNCTIONS: 2
45  * (This index is automatically created/updated by the extension "extdeveval")
46  *
47  */
48
49 require_once (PATH_t3lib.'class.t3lib_xml.php');
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 /**
70  * Class that creates the current page and content element records as an XML structure using the library "t3lib_xml"
71  * It is demonstrated in use in the testsite package on page "59"
72  * The static template "plugin.alt.xml" is used to trigger this XML creation as well. That template contains this set of TypoScript lines which triggers the XML creation and disables all regular HTML headers
73  *
74  * ## Set up page/type number:
75  * alt_xml >
76  * alt_xml = PAGE
77  * alt_xml {
78  *   typeNum=96
79  *   config.disableAllHeaderCode = 1
80  *   config.additionalHeaders = Content-type: text/xml
81  *
82  *   ## Includes the newsLib:
83  *   includeLibs.alt_xml = media/scripts/xmlversionLib.inc
84  *
85  *   ## Inserting the USER cObject for XML rendering
86  *   10 = USER
87  *   10 {
88  *     userFunc = user_xmlversion->main_xmlversion
89  *   }
90  * }
91  *
92  * @package TYPO3
93  * @subpackage tslib
94  * @author      Kasper Skaarhoj <kasper@typo3.com>
95  */
96 class user_xmlversion {
97         var $cObj;              // The backReference to the mother cObj object set at call time
98
99
100         /**
101          * Main function, called from TypoScript
102          *
103          * @param       string          Empty, ignore.
104          * @param       array           TypoScript properties for this content object/function call
105          * @return      string          XML content
106          */
107         function main_xmlversion($content,$conf)        {
108                 $className=t3lib_div::makeInstanceClassName('t3lib_xml');
109                 $xmlObj = new $className('typo3_page');
110                 $xmlObj->XMLdebug=0;
111                 $xmlObj->setRecFields('pages','doktype,title,alias,hidden,starttime,endtime,fe_group,url,target,no_cache,shortcut,keywords,description,abstract,author,author_email,newUntil,lastUpdated,cache_timeout');
112                 $xmlObj->setRecFields('tt_content','CType,header,header_link,bodytext,image,imagewidth,imageorient,media,records,colPos,starttime,endtime,fe_group');
113
114                         // Creating top level object
115                 $xmlObj->renderHeader();
116
117                         // Add page information
118                 $xmlObj->addRecord('pages',$GLOBALS['TSFE']->page);
119
120                         // Add page content information
121                 $xmlObj->newLevel('content_records',1);
122                 $xmlObj->renderRecords('pages',$this->getContentResult('pages'));
123                 $xmlObj->renderRecords('tt_content',$this->getContentResult('tt_content'));
124                 $xmlObj->newLevel('content_records');
125
126                 $xmlObj->renderFooter();
127
128                 return $xmlObj->getResult();
129         }
130
131         /**
132          * Selects all records from $table having the current page id as PID (records belonging to that page)
133          *
134          * @param       string          A tablename found in $TCA
135          * @return      pointer         A database resource pointer
136          */
137         function getContentResult($table) {
138                 global $TCA;
139                 if ($TCA[$table])       {
140                         $orderBy = $TCA[$table]['ctrl']['sortby'] ? 'ORDER BY '.$TCA[$table]['ctrl']['sortby'] : $TCA[$table]['ctrl']['default_sortby'];
141                         $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', $table, 'pid='.intval($GLOBALS['TSFE']->id).$this->cObj->enableFields($table), '', $GLOBALS['TYPO3_DB']->stripOrderBy($orderBy));
142                         return $res;
143                 }
144         }
145 }
146
147
148
149 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['media/scripts/xmlversionLib.inc']) {
150         include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['media/scripts/xmlversionLib.inc']);
151 }
152 ?>