Dotclear

source: plugins/daInstaller/index.php @ 1553:e42635c9dc4a

Revision 1553:e42635c9dc4a, 10.1 KB checked in by Anne Kozlika <kozlika@…>, 11 years ago (diff)

Replace class="message" by class="success" where it is needed.

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="success">%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="success">'.__('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="success">'.__('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="success">'.__('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>'.
257
258dcPage::breadcrumb(
259     array(
260          __('System') => '',
261          '<span class="page-title">'.__('DotAddict.org Installer').'</span>' => ''
262     )).
263
264infoMessages();
265
266echo
267'<p>'.__('Install and update your extensions live from DotAddict.org').'</p>';
268
269echo
270'<!-- Available updates -->'.
271'<div class="multi-part" id="update" title="'.__('Available updates').'">';
272if ($u_p_nb > 0 || $u_t_nb > 0) {
273     echo
274     '<p><strong>'.__('Detected updates for your system').'</strong></p>'.
275     '<p class="form-note warn">'.
276          __('Changes can be required after installation of updates. Click on a support link before to be aware about').
277     '</p>';
278}
279else {
280     echo '<p><strong>'.__('No update available').'</strong></p>';
281}
282     $u_p_list->display('plugins',$p_url);
283     $u_t_list->display('themes',$p_url);
284echo
285'</div>'.
286'<!-- Get more plugins -->'.
287'<div class="multi-part" id="plugins" title="'.__('Get more plugins').'">'.
288     '<p><strong>'.($a_p_nb > 0 ? sprintf(__('Available plugins (%s)'),$a_p_nb) : '').'</strong></p>';
289     $a_p_list->display($pages['plugins'],$nb_per_page,'plugins',$p_url);
290echo
291'</div>'.
292'<!-- Get more themes -->'.
293'<div class="multi-part" id="themes" title="'.__('Get more themes').'">'.
294     '<p><strong>'.($a_t_nb > 0 ? sprintf(__('Available themes (%s)'),$a_t_nb) : '').'</strong></p>';
295     $a_t_list->display($pages['themes'],5,'themes',$p_url);
296echo
297'</div>'.
298'<!-- Search -->'.
299'<div class="multi-part" id="search" title="'.__('Search').'">'.
300     '<form method="get" action="'.$p_url.'" class="fieldset">'.
301     '<h3>'.__('Search').'</h3>'.
302     '<p>'.form::hidden('p','daInstaller').
303     '<label for="q" class="classic">'.__('Query:').'&nbsp;</label> '.
304     form::field('q',30,255,html::escapeHTML($q)).'</p>'.
305     '<p><label for="mode" class="classic">'.
306     form::radio(array('mode','mode'),'plugins',$mode == 'plugins').
307     ' '.__('Plugins').'&nbsp;</label> '.
308     '<label for="mode2" class="classic">'.
309     form::radio(array('mode','mode2'),'themes',$mode == 'themes').
310     ' '.__('Themes').'&nbsp;</label></p>'.
311     '<p><input type="submit" value="'.__('Search').'" /></p>'.
312     '</form>';
313if (!empty($q)) {
314     echo '<p><strong>'.sprintf(__('%u %s found'),$s_m_nb,__($mode)).'</strong></p>';
315     if ($s_m_nb > 0) {
316          $s_m_list->display($pages['search'],$nb_per_page,'search-'.$mode,$p_url);
317     }
318}
319echo
320'</div>';
321
322dcPage::helpBlock('da_installer');
323
324echo
325'</body>'.
326'</html>';
Note: See TracBrowser for help on using the repository browser.

Sites map