- Fixed #16160: Call to undefined function ezi18n()
[tinyz:tinyz.git] / kernel / classes / packagecreators / ezcontentclass / ezcontentclasspackagecreator.php
1 <?php
2 //
3 // Definition of eZContentClassPackageCreator class
4 //
5 // Created on: <21-Nov-2003 12:39:59 amos>
6 //
7 // ## BEGIN COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
8 // SOFTWARE NAME: eZ Publish
9 // SOFTWARE RELEASE: 4.1.x
10 // COPYRIGHT NOTICE: Copyright (C) 1999-2010 eZ Systems AS
11 // SOFTWARE LICENSE: GNU General Public License v2.0
12 // NOTICE: >
13 //   This program is free software; you can redistribute it and/or
14 //   modify it under the terms of version 2.0  of the GNU General
15 //   Public License as published by the Free Software Foundation.
16 //
17 //   This program is distributed in the hope that it will be useful,
18 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
19 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 //   GNU General Public License for more details.
21 //
22 //   You should have received a copy of version 2.0 of the GNU General
23 //   Public License along with this program; if not, write to the Free
24 //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
25 //   MA 02110-1301, USA.
26 //
27 //
28 // ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
29 //
30
31 /*! \file
32 */
33
34 /*!
35   \ingroup package
36   \class eZContentClassPackageCreator ezcontentclasspackagecreator.php
37   \brief A package creator for content classes
38
39 */
40
41 class eZContentClassPackageCreator extends eZPackageCreationHandler
42 {
43     function eZContentClassPackageCreator( $id )
44     {
45         $steps = array();
46         $steps[] = array( 'id' => 'class',
47                           'name' => ezpI18n::translate( 'kernel/package', 'Content classes to include' ),
48                           'methods' => array( 'initialize' => 'initializeClassData',
49                                               'validate' => 'validateClassData',
50                                               'commit' => 'commitClassData' ),
51                           'template' => 'class.tpl' );
52         $steps[] = $this->packageInformationStep();
53         $steps[] = $this->packageMaintainerStep();
54         $steps[] = $this->packageChangelogStep();
55         $this->eZPackageCreationHandler( $id,
56                                          ezpI18n::translate( 'kernel/package', 'Content class export' ),
57                                          $steps );
58     }
59
60     /*!
61      Creates the package and adds the selected content classes.
62     */
63     function finalize( &$package, $http, &$persistentData )
64     {
65         $this->createPackage( $package, $http, $persistentData, $cleanupFiles );
66
67         $classHandler = eZPackage::packageHandler( 'ezcontentclass' );
68         $classList = $persistentData['classlist'];
69         foreach ( $classList as $classID )
70         {
71             $classHandler->addClass( $package, $classID );
72         }
73         $package->setAttribute( 'is_active', true );
74         $package->store();
75     }
76
77     /*!
78      Returns \c 'stable', content class packages are always stable.
79     */
80     function packageInitialState( $package, &$persistentData )
81     {
82         return 'stable';
83     }
84
85     /*!
86      \return \c 'contentclass'.
87     */
88     function packageType( $package, &$persistentData )
89     {
90         return 'contentclass';
91     }
92
93     function initializeClassData( $package, $http, $step, &$persistentData, $tpl )
94     {
95     }
96
97     /*!
98      Checks if at least one content class has been selected.
99     */
100     function validateClassData( $package, $http, $currentStepID, &$stepMap, &$persistentData, &$errorList )
101     {
102         $classList = array();
103         if ( $http->hasPostVariable( 'ClassList' ) )
104             $classList = $http->postVariable( 'ClassList' );
105
106         $persistentData['classlist'] = $classList;
107
108         $result = true;
109         if ( count( $classList ) == 0 )
110         {
111             $errorList[] = array( 'field' => ezpI18n::translate( 'kernel/package', 'Class list' ),
112                                   'description' => ezpI18n::translate( 'kernel/package', 'You must select at least one class for inclusion' ) );
113             $result = false;
114         }
115         return $result;
116     }
117
118     function commitClassData( $package, $http, $step, &$persistentData, $tpl )
119     {
120     }
121
122     /*!
123      Fetches the selected content classes and generates a name, summary and description from the selection.
124     */
125     function generatePackageInformation( &$packageInformation, $package, $http, $step, &$persistentData )
126     {
127         $classList = $persistentData['classlist'];
128
129         if ( count( $classList ) == 1 )
130         {
131             $classID = $classList[0];
132             $class = eZContentClass::fetch( $classID );
133             if ( $class )
134             {
135                 $packageInformation['name'] = $class->attribute( 'name' );
136                 $packageInformation['summary'] = 'Export of content class ' . $class->attribute( 'name' );
137                 $packageInformation['description'] = 'This package contains an exported definition of the content class ' . $class->attribute( 'name' ) . ' which can be imported to another eZ Publish site';
138             }
139         }
140         else if ( count( $classList ) > 1 )
141         {
142             $classNames = array();
143             foreach ( $classList as $classID )
144             {
145                 $class = eZContentClass::fetch( $classID );
146                 if ( $class )
147                 {
148                     $classNames[] = $class->attribute( 'name' );
149                 }
150             }
151             $packageInformation['name'] = count( $classList ) . ' Classes';
152             $packageInformation['summary'] = 'Export of ' . count( $classList ) . ' content classes';
153             $description = 'This package contains exported definitions of the following content classes:' . "\n";
154             foreach ( $classNames as $className )
155             {
156                 $description .= '- ' . $className . "\n";
157             }
158             $packageInformation['description'] = $description;
159         }
160     }
161 }
162
163 ?>