[ Index ] |
|
Code source de eZ Publish 3.9.0 |
1 <?php 2 // 3 // Definition of eZExtensionPackageHandler class 4 // 5 // Created on: <15-Dec-2005 11:15:42 ks> 6 // 7 // SOFTWARE NAME: eZ publish 8 // SOFTWARE RELEASE: 3.9.0 9 // BUILD VERSION: 17785 10 // COPYRIGHT NOTICE: Copyright (C) 1999-2006 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 29 /*! \file ezextensionpackagehandler.php 30 */ 31 32 /*! 33 \class eZExtensionPackageHandler ezextensionpackagehandler.php 34 \brief Handles extenstions in the package system 35 36 */ 37 38 include_once ( 'lib/ezxml/classes/ezxml.php' ); 39 include_once ( 'kernel/classes/ezcontentobject.php' ); 40 include_once ( 'kernel/classes/ezpackagehandler.php' ); 41 42 define( "EZ_PACKAGE_EXTENSION_ERROR_EXISTS", 1 ); 43 44 define( "EZ_PACKAGE_EXTENSION_REPLACE", 1 ); 45 define( "EZ_PACKAGE_EXTENSION_SKIP", 2 ); 46 47 48 class eZExtensionPackageHandler extends eZPackageHandler 49 { 50 /*! 51 Constructor 52 */ 53 function eZExtensionPackageHandler() 54 { 55 $this->eZPackageHandler( 'ezextension', 56 array( 'extract-install-content' => true ) ); 57 } 58 59 /*! 60 \reimp 61 Returns an explanation for the extension install item. 62 */ 63 function explainInstallItem( &$package, $installItem ) 64 { 65 if ( $installItem['filename'] ) 66 { 67 $filename = $installItem['filename']; 68 $subdirectory = $installItem['sub-directory']; 69 if ( $subdirectory ) 70 $filepath = $subdirectory . '/' . $filename . '.xml'; 71 else 72 $filepath = $filename . '.xml'; 73 74 $filepath = $package->path() . '/' . $filepath; 75 76 $dom =& $package->fetchDOMFromFile( $filepath ); 77 if ( $dom ) 78 { 79 $root =& $dom->root(); 80 $extensionName = $root->getAttribute( 'name' ); 81 return array( 'description' => ezi18n( 'kernel/package', 'Extension \'%extensionname\'', false, 82 array( '%extensionname' => $extensionName ) ) ); 83 } 84 } 85 } 86 87 /*! 88 \reimp 89 Uninstalls extensions. 90 */ 91 function uninstall( &$package, $installType, $parameters, 92 $name, $os, $filename, $subdirectory, 93 &$content, &$installParameters, 94 &$installData ) 95 { 96 $extensionName = $content->getAttribute( 'name' ); 97 98 $siteINI = eZINI::instance(); 99 $extensionDir = $siteINI->variable( 'ExtensionSettings', 'ExtensionDirectory' ) . '/' . $extensionName; 100 101 // TODO: don't delete modified files? 102 103 if ( file_exists( $extensionDir ) ) 104 eZDir::recursiveDelete( $extensionDir ); 105 106 // Deactivate extension 107 $siteINI = eZINI::instance( 'site.ini', 'settings/override', null, null, false, true ); 108 $selectedExtensions = $siteINI->variable( 'ExtensionSettings', "ActiveExtensions" ); 109 110 if ( in_array( $extensionName, $selectedExtensions ) ) 111 { 112 $extensionsFlipped = array_flip( $selectedExtensions ); 113 114 $extKey = $extensionsFlipped[$extensionName]; 115 unset( $selectedExtensions[$extKey] ); 116 117 $siteINI->setVariable( "ExtensionSettings", "ActiveExtensions", $selectedExtensions ); 118 $siteINI->save( 'site.ini.append', '.php', false, false ); 119 } 120 121 return true; 122 } 123 124 /*! 125 \reimp 126 Copy extension from the package to extension repository. 127 */ 128 function install( &$package, $installType, $parameters, 129 $name, $os, $filename, $subdirectory, 130 &$content, &$installParameters, 131 &$installData ) 132 { 133 //$this->Package =& $package; 134 135 $extensionName = $content->getAttribute( 'name' ); 136 137 $siteINI = eZINI::instance(); 138 $extensionDir = $siteINI->variable( 'ExtensionSettings', 'ExtensionDirectory' ) . '/' . $extensionName; 139 $packageExtensionDir = $package->path() . '/' . $parameters['sub-directory'] . '/' . $extensionName; 140 141 // Error: extension already exists. 142 if ( file_exists( $extensionDir ) ) 143 { 144 $description = ezi18n( 'kernel/package', "Extension '%extensionname' already exists.", 145 false, array( '%extensionname' => $extensionName ) ); 146 $choosenAction = $this->errorChoosenAction( EZ_PACKAGE_EXTENSION_ERROR_EXISTS, 147 $installParameters, $description ); 148 switch( $choosenAction ) 149 { 150 case EZ_PACKAGE_EXTENSION_SKIP: 151 return true; 152 153 case EZ_PACKAGE_NON_INTERACTIVE: 154 case EZ_PACKAGE_EXTENSION_REPLACE: 155 eZDir::recursiveDelete( $extensionDir ); 156 break; 157 158 default: 159 $installParameters['error'] = array( 'error_code' => EZ_PACKAGE_EXTENSION_ERROR_EXISTS, 160 'element_id' => $extensionName, 161 'description' => $description, 162 'actions' => array( EZ_PACKAGE_EXTENSION_REPLACE => ezi18n( 'kernel/package', "Replace extension" ), 163 EZ_PACKAGE_EXTENSION_SKIP => ezi18n( 'kernel/package', 'Skip' ) ) ); 164 return false; 165 } 166 } 167 168 eZDir::mkdir( $extensionDir, eZDir::directoryPermission(), true ); 169 170 include_once ( 'lib/ezfile/classes/ezfilehandler.php' ); 171 172 $files = $content->Children; 173 foreach( $files as $file ) 174 { 175 $path = $file->getAttribute( 'path' ); 176 $destPath = $extensionDir . $path . '/' . $file->getAttribute( 'name' ); 177 178 if ( $file->getAttribute( 'type' ) == 'dir' ) 179 { 180 eZDir::mkdir( $destPath, eZDir::directoryPermission() ); 181 } 182 else 183 { 184 $sourcePath = $packageExtensionDir . $path . '/' . $file->getAttribute( 'name' ); 185 eZFileHandler::copy( $sourcePath, $destPath ); 186 } 187 } 188 189 // Activate extension 190 $siteINI = eZINI::instance( 'site.ini', 'settings/override', null, null, false, true ); 191 192 if ( $siteINI->hasVariable( 'ExtensionSettings', "ActiveExtensions" ) ) 193 { 194 $selectedExtensions = $siteINI->variable( 'ExtensionSettings', "ActiveExtensions" ); 195 } 196 else 197 { 198 $selectedExtensions = array(); 199 } 200 201 if ( !in_array( $extensionName, $selectedExtensions ) ) 202 { 203 $selectedExtensions[] = $extensionName; 204 $siteINI->setVariable( "ExtensionSettings", "ActiveExtensions", $selectedExtensions ); 205 $siteINI->save( 'site.ini.append', '.php', false, false ); 206 } 207 return true; 208 } 209 210 var $Package = null; 211 } 212 213 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Feb 24 10:30:04 2007 | par Balluche grâce à PHPXref 0.7 |