- Fixed #16160: Call to undefined function ezi18n()
[tinyz:tinyz.git] / kernel / visual / templateview.php
1 <?php
2 //
3 // Created on: <08-May-2003 11:16:19 bf>
4 //
5 // ## BEGIN COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
6 // SOFTWARE NAME: eZ Publish
7 // SOFTWARE RELEASE: 4.1.x
8 // COPYRIGHT NOTICE: Copyright (C) 1999-2010 eZ Systems AS
9 // SOFTWARE LICENSE: GNU General Public License v2.0
10 // NOTICE: >
11 //   This program is free software; you can redistribute it and/or
12 //   modify it under the terms of version 2.0  of the GNU General
13 //   Public License as published by the Free Software Foundation.
14 //
15 //   This program is distributed in the hope that it will be useful,
16 //   but WITHOUT ANY WARRANTY; without even the implied warranty of
17 //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 //   GNU General Public License for more details.
19 //
20 //   You should have received a copy of version 2.0 of the GNU General
21 //   Public License along with this program; if not, write to the Free
22 //   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
23 //   MA 02110-1301, USA.
24 //
25 //
26 // ## END COPYRIGHT, LICENSE AND WARRANTY NOTICE ##
27 //
28
29 $http = eZHTTPTool::instance();
30 $module = $Params['Module'];
31 $parameters = $Params["Parameters"];
32
33 require_once( "kernel/common/template.php" );
34 $ini = eZINI::instance();
35 $tpl = templateInit();
36
37 $template = "";
38
39 foreach ( $parameters as $param )
40 {
41     $template .= "/$param";
42 }
43
44 if ( $module->isCurrentAction( 'SelectCurrentSiteAccess' ) )
45 {
46     if ( $http->hasPostVariable( 'CurrentSiteAccess' ) )
47     {
48         $http->setSessionVariable( 'eZTemplateAdminCurrentSiteAccess', $http->postVariable( 'CurrentSiteAccess' ) );
49     }
50 }
51
52 // Fetch siteaccess settings for the selected override
53 // Default to first defined siteacces if none are selected
54 if ( !$http->hasSessionVariable( 'eZTemplateAdminCurrentSiteAccess' ) )
55 {
56     $siteAccessList = $ini->variable( 'SiteAccessSettings', 'RelatedSiteAccessList' );
57     $http->setSessionVariable( 'eZTemplateAdminCurrentSiteAccess', $siteAccessList[0] );
58 }
59
60 $siteAccess = $http->sessionVariable( 'eZTemplateAdminCurrentSiteAccess' );
61
62 if ( $module->isCurrentAction( 'NewOverride' ) )
63 {
64     if ( $http->hasPostVariable( 'CurrentSiteAccess' ) )
65     {
66         $http->setSessionVariable( 'eZTemplateAdminCurrentSiteAccess', $http->postVariable( 'CurrentSiteAccess' ) );
67     }
68
69     $module->redirectTo( '/visual/templatecreate'. $template );
70     return eZModule::HOOK_STATUS_CANCEL_RUN;
71 }
72
73 if ( $module->isCurrentAction( 'UpdateOverride' ) )
74 {
75     if ( $http->hasPostVariable( 'PriorityArray' ) )
76     {
77         $priorityArray = $http->postVariable( 'PriorityArray' );
78
79         // Load override.ini for the current siteaccess
80         $overrideINI = eZINI::instance( 'override.ini', 'settings', null, null, true );
81         $overrideINI->prependOverrideDir( "siteaccess/$siteAccess", false, 'siteaccess' );
82         $overrideINI->loadCache();
83
84         asort( $priorityArray );
85         $currentINIGroups =& $overrideINI->groups();
86
87         $newGroupArray = array();
88         foreach ( array_keys( $priorityArray ) as $key )
89         {
90             $newGroupArray[$key] = $currentINIGroups[$key];
91             unset( $currentINIGroups[$key] );
92         }
93         $overrideINI->setGroups( array_merge( $currentINIGroups, $newGroupArray ) );
94
95         $filePermission = $ini->variable( 'FileSettings', 'StorageFilePermissions' );
96
97         $oldumask = umask( 0 );
98         $overrideINI->save( "siteaccess/$siteAccess/override.ini.append" );
99         chmod( "settings/siteaccess/$siteAccess/override.ini.append", octdec( $filePermission ) );
100         umask( $oldumask );
101     }
102 }
103
104 $overrideINISaveFailed = false;
105 $notRemoved = array();
106
107 if ( $module->isCurrentAction( 'RemoveOverride' ) )
108 {
109     if ( $http->hasPostVariable( 'RemoveOverrideArray' ) )
110     {
111         $removeOverrideArray = $http->postVariable( 'RemoveOverrideArray' );
112         // TODO: read from correct site.ini
113         $siteBase = $siteAccess;
114
115         // Load override.ini for the current siteaccess
116         $overrideINI = eZINI::instance( 'override.ini', 'settings', null, null, true );
117         $overrideINI->prependOverrideDir( "siteaccess/$siteAccess", false, 'siteaccess' );
118         $overrideINI->loadCache();
119
120         $siteINI = eZINI::instance( 'site.ini', 'settings', null, null, true );
121         $siteINI->prependOverrideDir( "siteaccess/$siteAccess", false, 'siteaccess' );
122         $siteINI->loadCache();
123         $siteBase = $siteINI->variable( 'DesignSettings', 'SiteDesign' );
124
125         // Remove settings and file
126         foreach ( $removeOverrideArray as $removeOverride )
127         {
128             $group = $overrideINI->group( $removeOverride );
129
130             $fileName = "design/$siteBase/override/templates/" . $group['MatchFile'];
131
132             if ( unlink( $fileName ) )
133             {
134                 $overrideINI->removeGroup( $removeOverride );
135             }
136             else
137             {
138                 $notRemoved[] = array( 'filename' => $fileName );
139             }
140         }
141         if ( $overrideINI->save( "siteaccess/$siteAccess/override.ini.append" ) == false )
142         {
143             $overrideINISaveFailed = true;
144         }
145
146         // Expire content view cache
147         eZContentCacheManager::clearAllContentCache();
148
149         // Clear override cache
150         $cachedDir = eZSys::cacheDirectory();
151         $cachedDir .= "/override/";
152         eZDir::recursiveDelete( $cachedDir );
153     }
154 }
155
156 $overrideArray = eZTemplateDesignResource::overrideArray( $siteAccess );
157
158 $templateSettings = false;
159 if ( isset( $overrideArray[$template] ) )
160 {
161     $templateSettings = $overrideArray[$template];
162 }
163
164 if ( !isset( $templateSettings['custom_match'] ) )
165     $templateSettings['custom_match'] = 0;
166
167 $tpl->setVariable( 'template_settings', $templateSettings );
168 $tpl->setVariable( 'current_siteaccess', $siteAccess );
169 $tpl->setVariable( 'not_removed', $notRemoved );
170 $tpl->setVariable( 'ini_not_saved', $overrideINISaveFailed );
171
172 $siteINI = eZINI::instance( 'site.ini' );
173 if ( $siteINI->variable( 'BackwardCompatibilitySettings', 'UsingDesignAdmin34' ) == 'enabled' )
174 {
175     $tpl->setVariable( 'custom_match', $templateSettings['custom_match'] );
176 }
177
178 $Result = array();
179 $Result['content'] = $tpl->fetch( "design:visual/templateview.tpl" );
180 $Result['path'] = array( array( 'url' => "/visual/templatelist/",
181                                 'text' => ezpI18n::translate( 'kernel/design', 'Template list' ) ),
182                          array( 'url' => false,
183                                 'text' => ezpI18n::translate( 'kernel/design', 'Template view' ) ) );
184 ?>