|
eZ Publish
[4.0]
|
00001 <?php 00002 // 00003 // Definition of eZStylePackageCreator class 00004 // 00005 // Created on: <21-Nov-2003 12:39:59 amos> 00006 // 00007 // ## BEGIN COPYRIGHT, LICENSE AND WARRANTY NOTICE ## 00008 // SOFTWARE NAME: eZ Publish 00009 // SOFTWARE RELEASE: 4.0.x 00010 // COPYRIGHT NOTICE: Copyright (C) 1999-2008 eZ Systems AS 00011 // SOFTWARE LICENSE: GNU General Public License v2.0 00012 // NOTICE: > 00013 // This program is free software; you can redistribute it and/or 00014 // modify it under the terms of version 2.0 of the GNU General 00015 // Public License as published by the Free Software Foundation. 00016 // 00017 // This program is distributed in the hope that it will be useful, 00018 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00019 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00020 // GNU General Public License for more details. 00021 // 00022 // You should have received a copy of version 2.0 of the GNU General 00023 // Public License along with this program; if not, write to the Free 00024 // Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 00025 // MA 02110-1301, USA. 00026 // 00027 // 00028 // ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ## 00029 // 00030 00031 /*! \file ezstylepackagecreator.php 00032 */ 00033 00034 /*! 00035 \ingroup package 00036 \class eZStylePackageCreator ezstylepackagecreator.php 00037 \brief The class eZStylePackageCreator does 00038 00039 */ 00040 00041 //include_once( 'kernel/classes/ezpackagecreationhandler.php' ); 00042 00043 class eZStylePackageCreator extends eZPackageCreationHandler 00044 { 00045 /*! 00046 Constructor 00047 */ 00048 function eZStylePackageCreator( $id ) 00049 { 00050 $steps = array(); 00051 $steps[] = $this->packageThumbnailStep(); 00052 $steps[] = array( 'id' => 'cssfile', 00053 'name' => ezi18n( 'kernel/package', 'CSS files' ), 00054 'methods' => array( 'initialize' => 'initializeCSSFile', 00055 'validate' => 'validateCSSFile', 00056 'commit' => 'commitCSSFile' ), 00057 'template' => 'cssfile.tpl' ); 00058 $steps[] = array( 'id' => 'imagefiles', 00059 'name' => ezi18n( 'kernel/package', 'Image files' ), 00060 'methods' => array( 'initialize' => 'initializeImageFiles', 00061 'validate' => 'validateImageFiles', 00062 'commit' => 'commitImageFiles' ), 00063 'template' => 'imagefiles.tpl' ); 00064 $steps[] = $this->packageInformationStep(); 00065 $steps[] = $this->packageMaintainerStep(); 00066 $steps[] = $this->packageChangelogStep(); 00067 $this->eZPackageCreationHandler( $id, 00068 ezi18n( 'kernel/package', 'Site style' ), 00069 $steps ); 00070 } 00071 00072 function finalize( &$package, $http, &$persistentData ) 00073 { 00074 $cleanupFiles = array(); 00075 $this->createPackage( $package, $http, $persistentData, $cleanupFiles, false ); 00076 00077 $collections = array(); 00078 00079 $siteCssfile = $persistentData['sitecssfile']; 00080 $fileItem = array( 'file' => $siteCssfile['filename'], 00081 'type' => 'file', 00082 'role' => false, 00083 'design' => false, 00084 'path' => $siteCssfile['url'], 00085 'collection' => 'default', 00086 'file-type' => false, 00087 'role-value' => false, 00088 'variable-name' => 'sitecssfile' ); 00089 00090 $package->appendFile( $fileItem['file'], $fileItem['type'], $fileItem['role'], 00091 $fileItem['design'], $fileItem['path'], $fileItem['collection'], 00092 null, null, true, null, 00093 $fileItem['file-type'], $fileItem['role-value'], $fileItem['variable-name'] ); 00094 $cleanupFiles[] = $fileItem['path']; 00095 00096 $classesCssfile = $persistentData['classescssfile']; 00097 $fileItem = array( 'file' => $classesCssfile['filename'], 00098 'type' => 'file', 00099 'role' => false, 00100 'design' => false, 00101 'path' => $classesCssfile['url'], 00102 'collection' => 'default', 00103 'file-type' => false, 00104 'role-value' => false, 00105 'variable-name' => 'classescssfile' ); 00106 00107 $package->appendFile( $fileItem['file'], $fileItem['type'], $fileItem['role'], 00108 $fileItem['design'], $fileItem['path'], $fileItem['collection'], 00109 null, null, true, null, 00110 $fileItem['file-type'], $fileItem['role-value'], $fileItem['variable-name'] ); 00111 $cleanupFiles[] = $fileItem['path']; 00112 00113 if ( !in_array( $fileItem['collection'], $collections ) ) 00114 $collections[] = $fileItem['collection']; 00115 00116 $imageFiles = $persistentData['imagefiles']; 00117 foreach ( $imageFiles as $imageFile ) 00118 { 00119 $fileItem = array( 'file' => $imageFile['filename'], 00120 'type' => 'file', 00121 'role' => false, 00122 'design' => false, 00123 'subdirectory' => 'images', 00124 'path' => $imageFile['url'], 00125 'collection' => 'default', 00126 'file-type' => false, 00127 'role-value' => false, 00128 'variable-name' => 'imagefiles' ); 00129 00130 $package->appendFile( $fileItem['file'], $fileItem['type'], $fileItem['role'], 00131 $fileItem['design'], $fileItem['path'], $fileItem['collection'], 00132 $fileItem['subdirectory'], null, true, null, 00133 $fileItem['file-type'], $fileItem['role-value'], $fileItem['variable-name'] ); 00134 $cleanupFiles[] = $fileItem['path']; 00135 00136 if ( !in_array( $fileItem['collection'], $collections ) ) 00137 $collections[] = $fileItem['collection']; 00138 } 00139 00140 foreach ( $collections as $collection ) 00141 { 00142 $installItems = $package->installItemsList( 'ezfile', false, $collection, true ); 00143 if ( count( $installItems ) == 0 ) 00144 $package->appendInstall( 'ezfile', false, false, true, 00145 false, false, 00146 array( 'collection' => $collection ) ); 00147 $dependencyItems = $package->dependencyItems( 'provides', 00148 array( 'type' => 'ezfile', 00149 'name' => 'collection', 00150 'value' => $collection ) ); 00151 if ( count( $dependencyItems ) == 0 ) 00152 $package->appendDependency( 'provides', 00153 array( 'type' => 'ezfile', 00154 'name' => 'collection', 00155 'value' => $collection ) ); 00156 $installItems = $package->installItemsList( 'ezfile', false, $collection, false ); 00157 if ( count( $installItems ) == 0 ) 00158 $package->appendInstall( 'ezfile', false, false, false, 00159 false, false, 00160 array( 'collection' => $collection ) ); 00161 } 00162 00163 $package->setAttribute( 'is_active', true ); 00164 $package->store(); 00165 00166 foreach ( $cleanupFiles as $cleanupFile ) 00167 { 00168 unlink( $cleanupFile ); 00169 } 00170 } 00171 00172 /*! 00173 \reimp 00174 \return \c 'import' 00175 */ 00176 function packageInstallType( $package, &$persistentData ) 00177 { 00178 return 'import'; 00179 } 00180 00181 /*! 00182 \reimp 00183 Returns \c 'stable', site style packages are always stable. 00184 */ 00185 function packageInitialState( $package, &$persistentData ) 00186 { 00187 return 'stable'; 00188 } 00189 00190 /*! 00191 \return \c 'sitestyle'. 00192 */ 00193 function packageType( $package, &$persistentData ) 00194 { 00195 return 'sitestyle'; 00196 } 00197 00198 00199 function initializeCSSFile( $package, $http, $step, &$persistentData, $tpl ) 00200 { 00201 } 00202 00203 /*! 00204 Checks if the css file was uploaded. 00205 */ 00206 function validateCSSFile( $package, $http, $currentStepID, &$stepMap, &$persistentData, &$errorList ) 00207 { 00208 //include_once( 'lib/ezutils/classes/ezhttpfile.php' ); 00209 $hasSiteFile = eZHTTPFile::canFetch( 'PackageSiteCSSFile' ); 00210 $hasClassesFile = eZHTTPFile::canFetch( 'PackageClassesCSSFile' ); 00211 00212 $result = true; 00213 if ( !$hasSiteFile or !$hasClassesFile ) 00214 { 00215 $errorList[] = array( 'field' => ezi18n( 'kernel/package', 'CSS file' ), 00216 'description' => ezi18n( 'kernel/package', 'You must upload both CSS files' ) ); 00217 return false; 00218 } 00219 00220 $siteFile = eZHTTPFile::fetch( 'PackageSiteCSSFile' ); 00221 $classesFile = eZHTTPFile::fetch( 'PackageClassesCSSFile' ); 00222 if ( !preg_match( "#\.css$#", strtolower( $siteFile->attribute( 'original_filename' ) ) ) or 00223 !preg_match( "#\.css$#", strtolower( $classesFile->attribute( 'original_filename' ) ) ) ) 00224 { 00225 $errorList[] = array( 'field' => ezi18n( 'kernel/package', 'CSS file' ), 00226 'description' => ezi18n( 'kernel/package', 'File did not have a .css suffix, this is most likely not a CSS file' ) ); 00227 $result = false; 00228 } 00229 return $result; 00230 } 00231 00232 function commitCSSFile( $package, $http, $step, &$persistentData, $tpl ) 00233 { 00234 //include_once( 'lib/ezutils/classes/ezhttpfile.php' ); 00235 $siteFile = eZHTTPFile::fetch( 'PackageSiteCSSFile' ); 00236 $classesFile = eZHTTPFile::fetch( 'PackageClassesCSSFile' ); 00237 //include_once( 'lib/ezutils/classes/ezmimetype.php' ); 00238 $siteMimeData = eZMimeType::findByFileContents( $siteFile->attribute( 'original_filename' ) ); 00239 $dir = eZSys::storageDirectory() . '/temp'; 00240 eZMimeType::changeDirectoryPath( $siteMimeData, $dir ); 00241 $siteFile->store( false, false, $siteMimeData ); 00242 $persistentData['sitecssfile'] = $siteMimeData; 00243 00244 $classesMimeData = eZMimeType::findByFileContents( $classesFile->attribute( 'original_filename' ) ); 00245 eZMimeType::changeDirectoryPath( $classesMimeData, $dir ); 00246 $classesFile->store( false, false, $classesMimeData ); 00247 $persistentData['classescssfile'] = $classesMimeData; 00248 } 00249 00250 function initializeImageFiles( $package, $http, $step, &$persistentData, $tpl ) 00251 { 00252 $persistentData['imagefiles'] = array(); 00253 } 00254 00255 /*! 00256 Checks if the css file was uploaded. 00257 */ 00258 function validateImageFiles( $package, $http, $currentStepID, &$stepMap, &$persistentData, &$errorList ) 00259 { 00260 //include_once( 'lib/ezutils/classes/ezhttpfile.php' ); 00261 // If we don't have an image we continue as normal 00262 if ( !eZHTTPFile::canFetch( 'PackageImageFile' ) ) 00263 return true; 00264 00265 $file = eZHTTPFile::fetch( 'PackageImageFile' ); 00266 00267 $result = true; 00268 if ( $file ) 00269 { 00270 //include_once( 'lib/ezutils/classes/ezmimetype.php' ); 00271 $mimeData = eZMimeType::findByFileContents( $file->attribute( 'original_filename' ) ); 00272 $dir = eZSys::storageDirectory() . '/temp'; 00273 eZMimeType::changeDirectoryPath( $mimeData, $dir ); 00274 $file->store( false, false, $mimeData ); 00275 $persistentData['imagefiles'][] = $mimeData; 00276 $result = false; 00277 } 00278 return $result; 00279 } 00280 00281 function commitImageFiles( $package, $http, $step, &$persistentData, $tpl ) 00282 { 00283 } 00284 00285 /*! 00286 \reimp 00287 Fetches the selected content classes and generates a name, summary and description from the selection. 00288 */ 00289 function generatePackageInformation( &$packageInformation, $package, $http, $step, &$persistentData ) 00290 { 00291 $cssfile = $persistentData['sitecssfile']; 00292 if ( $cssfile ) 00293 $cssfile = $persistentData['classescssfile']; 00294 00295 if ( $cssfile ) 00296 { 00297 $packageInformation['name'] = $cssfile['basename']; 00298 $packageInformation['summary'] = $cssfile['basename'] . ' site style'; 00299 $packageInformation['description'] = 'A site style called ' . $cssfile['basename']; 00300 } 00301 } 00302 } 00303 00304 ?>