Dotclear

source: plugins/daInstaller/index.php @ 1339:11fdde189adb

Revision 1339:11fdde189adb, 10.4 KB checked in by franck <carnet.franck.paul@…>, 11 years ago (diff)

New dcPage::breadcrumb function, last step at least

Line 
1<?php
2# ***** BEGIN LICENSE BLOCK *****
3# This file is part of daInstaller, a plugin for DotClear2.
4# Copyright (c) 2008-2011 Tomtom, Pep and contributors, for DotAddict.org.
5# All rights reserved.
6#
7# ***** END LICENSE BLOCK *****
8if (!defined('DC_CONTEXT_ADMIN')) { return; }
9
10# Settings compatibility test
11if (!version_compare(DC_VERSION,'2.2-x','<')) {
12     $core->blog->settings->addNamespace('dainstaller');
13     $s = $core->blog->settings->dainstaller;
14}
15else {
16     $core->blog->settings->setNamespace('dainstaller');
17     $s = $core->blog->settings;
18}
19
20# Initialisation des variables
21$p_url         = 'plugin.php?p=daInstaller';
22$default_tab   = !empty($_GET['tab']) ? html::escapeHTML($_GET['tab']) : 'plugins';
23$page          = !empty($_GET['page']) ? (integer)$_GET['page'] : 1;
24$nb_per_page   = 10;
25$q             = !empty($_GET['q']) ? trim(html::escapeHTML($_GET['q'])) : '';
26$default_tab   = !empty($q) ? 'search' : $default_tab;
27$mode          = isset($_GET['mode']) ? html::escapeHTML($_GET['mode']) : 'plugins';
28$ppaths        = explode(PATH_SEPARATOR, DC_PLUGINS_ROOT);
29$plugins_path  = array_pop($ppaths);
30$daInstaller   = new daInstaller($core);
31unset($ppaths);
32
33$pages['plugins'] = $pages['themes'] = $pages['search'] = 1;
34$pages[$default_tab] = $page;
35
36# Ajout d'un plugin
37if (!empty($_POST['add_plugin']) && !empty($_POST['package_url'])) {
38     try {
39          $url = html::escapeHTML($_POST['package_url']);
40          $dest = $plugins_path.'/'.basename($url);
41
42          $ret_code = $daInstaller->processPackage($url,$dest,$core->plugins);
43          http::redirect($p_url.'&p_added='.$ret_code);
44     }
45     catch (Exception $e) {
46          $core->error->add($e->getMessage());
47          $default_tab = 'plugins';
48     }
49}
50# Mise à jour de plugins
51elseif (!empty($_POST['upd_plugins']) && !empty($_POST['plugins_id'])) {
52     try {
53          $daInstaller->check();
54          $ids = $_POST['plugins_id'];
55          $modules = $daInstaller->getModules('plugins',true);
56
57          foreach ($modules as $module) {
58               if (in_array($module['id'],$ids)) {
59                    if (!$s->dainstaller_allow_multi_install) {
60                         $dest = $module['root'].'/../'.basename($module['file']);
61                    }
62                    else {
63                         $dest = $plugins_path.'/'.basename($module['file']);
64                         if ($module['root'] != $dest) @file_put_contents($module['root'].'/_disabled','');
65                    }
66                    $ret_code[] = $daInstaller->processPackage($module['file'],$dest,$core->plugins);
67               }
68          }
69         
70          $arg = 'p_updated='.implode('|',$ids).'&p_status='.implode('|',$ret_code);
71
72          http::redirect($p_url.'&tab=update&'.$arg);
73         
74     }
75     catch (Exception $e) {
76          $core->error->add($e->getMessage());
77          $default_tab = 'update';
78     }
79}
80# Ajout d'un thème
81elseif (!empty($_POST['add_theme']) && !empty($_POST['package_url'])) {
82     try {
83          $url = html::escapeHTML($_POST['package_url']);
84          $dest = $core->blog->themes_path.'/'.basename($url);
85
86          $core_themes = new dcModules($core);
87          $core_themes->loadModules($core->blog->themes_path,null);
88          $ret_code = $daInstaller->processPackage($url,$dest,$core_themes);
89          http::redirect($p_url.'&tab=themes&t_added='.$ret_code);
90     }
91     catch (Exception $e) {
92          unset($core_themes);
93          $core->error->add($e->getMessage());
94          $default_tab = 'themes';
95     }
96}
97# Mise à jour de thèmes
98elseif (!empty($_POST['upd_themes']) && !empty($_POST['themes_id'])) {
99     try {
100          $daInstaller->check();
101          $core_themes = new dcModules($core);
102          $core_themes->loadModules($core->blog->themes_path,null);
103          $ids = $_POST['themes_id'];
104          $modules = $daInstaller->getModules('themes',true);
105
106          foreach ($modules as $module) {
107               if (in_array($module['id'],$ids)) {
108                    $dest = $core->blog->themes_path.'/'.basename($module['file']);
109                    $ret_code[] = $daInstaller->processPackage($module['file'],$dest,$core_themes);
110               }
111          }
112
113          $arg = 't_updated='.implode('|',$ids).'&t_status='.implode('|',$ret_code);
114
115          http::redirect($p_url.'&tab=update&'.$arg);
116
117     }
118     catch (Exception $e) {
119          unset($core_themes);
120          $core->error->add($e->getMessage());
121          $default_tab = 'update';
122     }
123}
124
125# Et c'est parti !
126$plugins_install = $core->plugins->installModules();
127$daInstaller->check(false,true);
128
129/**
130 * This function returns all error / success messages
131 *
132 * @return string
133 */
134function infoMessages()
135{
136     $res = '';
137     $p_msg = '<p class="message">%s</p>';
138     $p_err = '<p class="error">%s</p>';
139     
140     # Plugins install message
141     if (!empty($_GET['p_added']) && $_GET['p_added'] != 2) {
142          $res .= sprintf($p_msg,__('The plugin has been successfully installed.'));
143     }
144     # Themes install message
145     if (!empty($_GET['t_added']) && $_GET['t_added'] != 2) {
146          $res .= sprintf($p_msg,__('The theme has been successfully installed.'));
147     }
148     # Plugins update message
149     if (!empty($_GET['p_updated'])) {
150          $err = $upd = '';
151          $ids = explode('|',html::escapeHTML($_GET['p_updated']));
152          $status = explode('|',html::escapeHTML($_GET['p_status']));
153          foreach ($ids as $k => $v) {
154               if ($status[$k] != 2) {
155                    $err .= '<li>'.$v.'</li>';
156               }
157               else {
158                    $upd .= '<li>'.$v.'</li>';
159               }
160          }
161          if (!empty($err)) {
162               $res .= '<div class="error">'.__('Following plugins have not been updated:').'<ul>'.$err.'</ul></div>';
163          }
164          else {
165               $res .= '<div class="static-msg">'.__('Following plugins have been updated:').'<ul>'.$upd.'</ul></div>';
166          }
167     }
168     # Themes update message
169     if (!empty($_GET['t_updated'])) {
170          $err = $upd = '';
171          $ids = explode('|',html::escapeHTML($_GET['t_updated']));
172          $status = explode('|',html::escapeHTML($_GET['t_status']));
173          foreach ($ids as $k => $v) {
174               if ($status[$k] != 2) {
175                    $err .= '<li>'.$v.'</li>';
176               }
177               else {
178                    $upd .= '<li>'.$v.'</li>';
179               }
180          }
181          if (!empty($err)) {
182               $res .= '<div class="error">'.__('Following themes have not been updated:').'<ul>'.$err.'</ul></div>';
183          }
184          else {
185               $res .= '<div class="static-msg">'.__('Following themes have been updated:').'<ul>'.$upd.'</ul></div>';
186          }
187     }
188     # Plugins install settings messages
189     if (!empty($plugins_install['success'])) {
190          $res .= '<div class="static-msg">'.__('Following plugins have been installed:').'<ul>';
191          foreach ($plugins_install['success'] as $k => $v) {
192               $res .= '<li>'.$k.'</li>';
193          }
194          $res .= '</ul></div>';
195     }
196     if (!empty($plugins_install['failure'])) {
197          $res .= '<div class="error">'.__('Following plugins have not been installed:').'<ul>';
198          foreach ($plugins_install['failure'] as $k => $v) {
199               $res .= '<li>'.$k.' ('.$v.')</li>';
200          }
201          $res .= '</ul></div>';
202     }
203     
204     return $res;
205}
206
207# Récupération de la liste des mises à jour des plugins
208# et préparation de l'objet d'affichage
209$u_p_rs = $daInstaller->getModules('plugins',true);
210$u_p_nb = count($u_p_rs);
211$u_p_rs = staticRecord::newFromArray($u_p_rs);
212$u_p_list = new daModulesUpdateList($core,$u_p_rs,$u_p_nb);
213
214# Récupération de la liste des mises à jour des thèmes
215# et préparation de l'objet d'affichage
216$u_t_rs = $daInstaller->getModules('themes',true);
217$u_t_nb = count($u_t_rs);
218$u_t_rs = staticRecord::newFromArray($u_t_rs);
219$u_t_list = new daModulesUpdateList($core,$u_t_rs,$u_t_nb);
220
221# Récupération de la liste des plugins disponibles
222# et préparation de l'objet d'affichage
223$avail_plugins = $daInstaller->getModules('plugins');
224$a_p_nb = count($avail_plugins);
225$a_p_rs = staticRecord::newFromArray($avail_plugins);
226$a_p_list = new daModulesList($core,$a_p_rs,$a_p_nb);
227
228# Récupération de la liste des thèmes disponibles
229# et préparation de l'objet d'affichage
230$avail_themes = $daInstaller->getModules('themes');
231$a_t_nb = count($avail_themes);
232$a_t_rs = staticRecord::newFromArray($avail_themes);
233$a_t_list = new daModulesList($core,$a_t_rs,$a_t_nb);
234
235# Récupération de la liste des plugins recherchés
236if (!empty($q))
237{
238     $default_tab = 'search';
239     $search_modules = $daInstaller->search($q,$mode);
240     $s_m_nb = count($search_modules);
241     $s_m_rs = staticRecord::newFromArray($search_modules);
242     $s_m_list = new daModulesList($core,$s_m_rs,$s_m_nb);
243}
244
245# DISPLAY
246# -------
247echo
248'<html>'.
249'<head>'.
250     '<title>'.__('DotAddict.org Installer').'</title>'.
251     dcPage::jsModal().
252     dcPage::jsPageTabs($default_tab).
253     dcPage::jsLoad('index.php?pf=daInstaller/js/_dainstaller.js').
254     '<link rel="stylesheet" href="index.php?pf=daInstaller/style.css" type="text/css" />'.
255'</head>'.
256'<body>'.
257infoMessages();
258
259dcPage::breadcrumb(
260     array(
261          __('System') => '',
262          '<span class="page-title">'.__('DotAddict.org Installer').'</span>' => ''
263     ));
264
265echo
266'<p>'.__('Install and update your extensions live from DotAddict.org').'</p>';
267
268echo
269'<!-- Available updates -->'.
270'<div class="multi-part" id="update" title="'.__('Available updates').'">';
271if ($u_p_nb > 0 || $u_t_nb > 0) {
272     echo
273     '<p><strong>'.__('Detected updates for your system').'</strong></p>'.
274     '<p class="form-note warn">'.
275          __('Changes can be required after installation of updates. Click on a support link before to be aware about').
276     '</p>';
277}
278else {
279     echo '<p><strong>'.__('No update available').'</strong></p>';
280}
281     $u_p_list->display('plugins',$p_url);
282     $u_t_list->display('themes',$p_url);
283echo
284'</div>'.
285'<!-- Get more plugins -->'.
286'<div class="multi-part" id="plugins" title="'.__('Get more plugins').'">'.
287     '<p><strong>'.($a_p_nb > 0 ? sprintf(__('Available plugins (%s)'),$a_p_nb) : '').'</strong></p>';
288     $a_p_list->display($pages['plugins'],$nb_per_page,'plugins',$p_url);
289echo
290'</div>'.
291'<!-- Get more themes -->'.
292'<div class="multi-part" id="themes" title="'.__('Get more themes').'">'.
293     '<p><strong>'.($a_t_nb > 0 ? sprintf(__('Available themes (%s)'),$a_t_nb) : '').'</strong></p>';
294     $a_t_list->display($pages['themes'],5,'themes',$p_url);
295echo
296'</div>'.
297'<!-- Search -->'.
298'<div class="multi-part" id="search" title="'.__('Search').'">'.
299     '<fieldset><legend>'.__('Search options').
300     '</legend>'.
301     '<form method="get" action="'.$p_url.'">'.
302     '<p>'.form::hidden('p','daInstaller').
303     '<label for="q" class="classic">'.__('Query:').'&nbsp; '.
304     form::field('q',30,255,html::escapeHTML($q)).
305     '</label> '.
306     '<label for="mode" class="classic">'.
307     form::radio(array('mode','mode'),'plugins',$mode == 'plugins').
308     ' '.__('Plugins').'&nbsp;</label> '.
309     '<label for="mode2" class="classic">'.
310     form::radio(array('mode','mode2'),'themes',$mode == 'themes')
311     .' '.__('Themes').'&nbsp;</label> '.
312     '<input type="submit" value="'.__('Search').'" /></p>'.
313     '</form>'.
314     '</fieldset>';
315if (!empty($q)) {
316     echo '<p><strong>'.sprintf(__('%u %s found'),$s_m_nb,__($mode)).'</strong></p>';
317     if ($s_m_nb > 0) {
318          $s_m_list->display($pages['search'],$nb_per_page,'search-'.$mode,$p_url);
319     }
320}
321echo
322'</div>';
323
324dcPage::helpBlock('da_installer');
325
326echo
327'</body>'.
328'</html>';
Note: See TracBrowser for help on using the repository browser.

Sites map