source: branches/2.5/admin/extend_for_templates.php @ 21187

Last change on this file since 21187 was 19703, checked in by plg, 12 years ago

update Piwigo headers to 2013 (the end of the world didn't occur as expected on r12922)

  • Property svn:eol-style set to LF
File size: 8.4 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | Piwigo - a PHP based photo gallery                                    |
4// +-----------------------------------------------------------------------+
5// | Copyright(C) 2008-2013 Piwigo Team                  http://piwigo.org |
6// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
7// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
8// +-----------------------------------------------------------------------+
9// | This program is free software; you can redistribute it and/or modify  |
10// | it under the terms of the GNU General Public License as published by  |
11// | the Free Software Foundation                                          |
12// |                                                                       |
13// | This program is distributed in the hope that it will be useful, but   |
14// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
15// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
16// | General Public License for more details.                              |
17// |                                                                       |
18// | You should have received a copy of the GNU General Public License     |
19// | along with this program; if not, write to the Free Software           |
20// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
21// | USA.                                                                  |
22// +-----------------------------------------------------------------------+
23
24/**
25 * Define replacement conditions for each template from template-extension
26 * (template called "replacer").
27 *
28 * "original template" from ./template/yoga (or any other than yoga)
29 * will be replaced by a "replacer" if the replacer is linked to this "original template"
30 * (and optionally, when the requested URL contains an "optional URL keyword").
31 *
32 * "Optional URL keywords" are those you can find after the module name in URLs.
33 *
34 * Therefore "Optional URL keywords" can be an active "permalink"
35 * (see permalinks in our documentation for further explanation).
36 */
37
38// +-----------------------------------------------------------------------+
39//                            initialization                              |
40// +-----------------------------------------------------------------------+
41
42if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); }
43include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
44check_status(ACCESS_ADMINISTRATOR);
45
46$tpl_extension = isset($conf['extents_for_templates']) ?
47      unserialize($conf['extents_for_templates']) : array();
48$new_extensions = get_extents(); 
49
50/* Selective URLs keyword */
51$relevant_parameters = array(
52    '----------',
53    'category',
54    'favorites',
55    'most_visited',
56    'best_rated',
57    'recent_pics',
58    'recent_cats',
59    'created-monthly-calendar',
60    'posted-monthly-calendar',
61    'search',
62    'flat',
63    'list', /* <=> Random */
64    'tags',
65    ); 
66  $query = '
67SELECT permalink
68  FROM '.CATEGORIES_TABLE.'
69  WHERE permalink IS NOT NULL
70';
71
72/* Add active permalinks */ 
73$permalinks = array_from_query($query, 'permalink');
74$relevant_parameters = array_merge($relevant_parameters, $permalinks);
75
76/* Link all supported templates to their respective handle */
77$eligible_templates = array(
78    '----------'                 => 'N/A',
79    'about.tpl'                  => 'about',
80    'comments.tpl'               => 'comments',
81    'comment_list.tpl'           => 'comment_list',
82    'footer.tpl'                 => 'tail',
83    'header.tpl'                 => 'header',
84    'identification.tpl'         => 'identification',
85    'index.tpl'                  => 'index',
86    'mainpage_categories.tpl'    => 'index_category_thumbnails',
87    'menubar.tpl'                => 'menubar',
88    'menubar_categories.tpl'     => 'mbCategories',
89    'menubar_identification.tpl' => 'mbIdentification',
90    'menubar_links.tpl'          => 'mbLinks',
91    'menubar_menu.tpl'           => 'mbMenu',
92    'menubar_specials.tpl'       => 'mbSpecials',
93    'menubar_tags.tpl'           => 'mbTags',
94        'month_calendar.tpl'         => 'month_calendar',
95    'navigation_bar.tpl'         => 'navbar',
96    'nbm.tpl'                    => 'nbm',
97    'notification.tpl'           => 'notification',
98        'password.tpl'               => 'password',   
99    'picture.tpl'                => 'picture',
100    'picture_content.tpl'        => 'default_content',
101    'picture_nav_buttons.tpl'    => 'picture_nav_buttons',
102    'popuphelp.tpl'              => 'popuphelp',
103    'profile.tpl'                => 'profile',
104    'profile_content.tpl'        => 'profile_content',
105    'redirect.tpl'               => 'redirect',
106    'register.tpl'               => 'register',
107    'search.tpl'                 => 'search',
108    'search_rules.tpl'           => 'search_rules',
109    'slideshow.tpl'              => 'slideshow',
110    'tags.tpl'                   => 'tags',
111    'thumbnails.tpl'             => 'index_thumbnails',
112);
113
114$flip_templates = array_flip($eligible_templates);
115
116/**
117 * returns an array contening sub-directories, excluding ".svn"
118 *
119 * @param string $dir
120 * @return array
121 */
122function get_dirs($directory)
123{
124  $sub_dirs = array();
125  if ($opendir = opendir($directory))
126  {
127    while ($file = readdir($opendir))
128    {
129      if ($file != '.'
130          and $file != '..'
131          and is_dir($directory.'/'.$file)
132          and $file != '.svn')
133      {
134        array_push($sub_dirs, $file);
135      }
136    }
137    closedir($opendir);
138  }
139  return $sub_dirs;
140}
141
142$available_templates = array_merge(
143  array('N/A' => '----------'),
144  get_dirs(PHPWG_ROOT_PATH.'themes'));
145
146// +-----------------------------------------------------------------------+
147// |                            selected templates                         |
148// +-----------------------------------------------------------------------+
149
150if (isset($_POST['submit']))
151{
152  $replacements = array();
153  $i = 0;
154  while (isset($_POST['reptpl'][$i]))
155  {
156    $newtpl = $_POST['reptpl'][$i];
157    $original = $_POST['original'][$i];
158    $handle = $eligible_templates[$original];
159    $url_keyword = $_POST['url'][$i];
160    if ($url_keyword == '----------') $url_keyword = 'N/A';
161    $bound_tpl = $_POST['bound'][$i];
162    if ($bound_tpl == '----------') $bound_tpl = 'N/A';
163    if ($handle != 'N/A')
164    {
165      $replacements[$newtpl] = array($handle, $url_keyword, $bound_tpl);
166    }
167    $i++;
168  }
169  $conf['extents_for_templates'] = serialize($replacements);
170  $tpl_extension = $replacements;
171  /* ecrire la nouvelle conf */
172  $query = '
173UPDATE '.CONFIG_TABLE.'
174  SET value = \''. $conf['extents_for_templates'] .'\'
175WHERE param = \'extents_for_templates\';';
176  if (pwg_query($query))
177  {
178    array_push($page['infos'], 
179      l10n('Templates configuration has been recorded.'));
180  }
181}
182
183// +-----------------------------------------------------------------------+
184// |                             template init                             |
185// +-----------------------------------------------------------------------+
186
187/* Clearing (remove old extents, add new ones) */
188foreach ($tpl_extension as $file => $conditions)
189{
190  if ( !in_array($file,$new_extensions) ) unset($tpl_extension[$file]);
191  else $new_extensions = array_diff($new_extensions,array($file)); 
192}
193foreach ($new_extensions as $file)
194{
195  $tpl_extension[$file] = array('N/A', 'N/A', 'N/A');
196}
197
198$template->set_filenames(array('extend_for_templates'
199     => 'extend_for_templates.tpl'));
200
201$base_url = PHPWG_ROOT_PATH.'admin.php?page=extend_for_templates';
202
203$template->assign(
204  array(
205    'U_HELP' => get_root_url().'admin/popuphelp.php?page=extend_for_templates',
206    ));
207ksort($tpl_extension);
208foreach ($tpl_extension as $file => $conditions)   
209{
210  $handle = $conditions[0];
211  $url_keyword = $conditions[1];
212  $bound_tpl = $conditions[2];
213  { 
214  $template->append('extents',
215    array(
216      'replacer'       => $file,
217      'url_parameter'  => $relevant_parameters,
218      'original_tpl'   => array_keys($eligible_templates),
219      'bound_tpl'          => $available_templates,
220      'selected_tpl'   => $flip_templates[$handle],
221      'selected_url'   => $url_keyword,
222      'selected_bound' => $bound_tpl,)
223      );
224  }
225}
226// +-----------------------------------------------------------------------+
227// |                           html code display                           |
228// +-----------------------------------------------------------------------+
229
230$template->assign_var_from_handle('ADMIN_CONTENT', 'extend_for_templates');
231?>
Note: See TracBrowser for help on using the repository browser.