- Fixed #16160: Call to undefined function ezi18n()
[tinyz:tinyz.git] / kernel / classes / packagehandlers / ezinstallscript / ezinstallscriptpackagehandler.php
1 <?php
2 //
3 // Definition of eZInstallScriptPackageHandler class
4 //
5 // Created on: <16-Feb-2006 11:15:42 ks>
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   \class eZInstallScriptPackageHandler ezinstallscriptpackagehandler.php
36   \brief Empty handler to support package custom install scripts.
37
38 */
39
40
41 class eZInstallScriptPackageHandler extends eZPackageHandler
42 {
43     /*!
44      Constructor
45     */
46     function eZInstallScriptPackageHandler()
47     {
48         $this->eZPackageHandler( 'ezinstallscript',
49                                  array( 'extract-install-content' => false ) );
50     }
51
52     /*!
53      Returns an explanation for the extension install item.
54     */
55     function explainInstallItem( $package, $installItem, $requestedInfo = array() )
56     {
57         $itemPath = $package->path() . '/' . $installItem['sub-directory'];
58         $xmlPath = $itemPath . '/' . $installItem['filename'] . '.xml';
59
60         $dom = $package->fetchDOMFromFile( $xmlPath );
61         if ( !$dom )
62             return false;
63
64         $mainNode =& $dom->documentElement;
65
66         $description = $mainNode->getAttribute( 'description' );
67         if ( !$description )
68             return false;
69
70         return array( 'description' => ezpI18n::translate( 'kernel/package', 'Install script: %description', false,
71                                                array( '%description' => $description ) ) );
72     }
73
74     /*!
75      Do nothing
76     */
77     function uninstall( $package, $installType, $parameters,
78                       $name, $os, $filename, $subdirectory,
79                       $content, &$installParameters,
80                       &$installData )
81     {
82         return true;
83     }
84
85     /*!
86      Do nothing
87     */
88     function install( $package, $installType, $parameters,
89                       $name, $os, $filename, $subdirectory,
90                       $content, &$installParameters,
91                       &$installData )
92     {
93         return true;
94     }
95
96     function add( $packageType, $package, $cli, $parameters )
97     {
98         $siteINI = eZINI::instance();
99         $extensionDir = $siteINI->variable( 'ExtensionSettings', 'ExtensionDirectory' );
100
101         //$cli->output( var_export( $parameters, true ) );
102         foreach ( $parameters as $scriptItem )
103         {
104             $cli->output( 'adding install script ' . $cli->style( 'dir' ) . $scriptItem['filename'] .  $cli->style( 'dir-end' ) );
105
106             $sourceDir = $scriptItem['source-directory'];
107             $targetDir = $package->path() . '/' . $scriptItem['sub-directory'];
108
109             eZDir::mkdir( $targetDir, false, true );
110             eZDir::copy( $sourceDir, $targetDir, false );
111
112             $package->appendInstall( 'ezinstallscript', false, false, true,
113                                      $scriptItem['filename'], $scriptItem['sub-directory'],
114                                      array( 'content' => false ) );
115         }
116     }
117
118     function handleAddParameters( $packageType, $package, $cli, $arguments )
119     {
120         $scriptArgumentList = array_chunk( $arguments, 3 );
121         $params = array();
122
123         foreach ( $scriptArgumentList as $scriptArguments )
124         {
125             if ( count( $scriptArguments ) < 3 )
126             {
127                 break;
128             }
129
130             $script = array(
131                 'sub-directory' => $scriptArguments[0],
132                 'filename' => $scriptArguments[1],
133                 'source-directory' => $scriptArguments[2]
134             );
135
136             if ( !file_exists( $script['source-directory'] ) )
137             {
138                 $cli->error( 'install script source directory ' . $cli->style( 'dir' ) . $script['source-directory'] . $cli->style( 'dir-end' ) . 'does not exist' );
139                 return false;
140             }
141
142             $installFile = $script['source-directory'] . '/' . $script['filename'] . '.xml';
143             if ( !file_exists( $installFile ) )
144             {
145                 $cli->error( 'install script ' . $cli->style( 'dir' ) . $script['filename'] . '.xml' . $cli->style( 'dir-end' ) . 'does not exist in source dir' );
146                 return false;
147             }
148
149             $params[] = $script;
150         }
151
152         return $params;
153     }
154 }
155
156 ?>