Fixed description popup.
[fa-stable.git] / admin / inst_theme.php
1 <?php
2 /**********************************************************************
3     Copyright (C) FrontAccounting, LLC.
4         Released under the terms of the GNU General Public License, GPL, 
5         as published by the Free Software Foundation, either version 3 
6         of the License, or (at your option) any later version.
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
10     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 $page_security = 'SA_CREATEMODULES';
13 $path_to_root="..";
14 include_once($path_to_root . "/includes/session.inc");
15 include_once($path_to_root."/includes/packages.inc");
16
17 if ($use_popup_windows) {
18         $js = get_js_open_window(900, 500);
19 }
20 page(_($help_context = "Install Themes"), false, false, '', $js);
21
22 include_once($path_to_root . "/includes/date_functions.inc");
23 include_once($path_to_root . "/admin/db/company_db.inc");
24 include_once($path_to_root . "/admin/db/maintenance_db.inc");
25 include_once($path_to_root . "/includes/ui.inc");
26
27 //---------------------------------------------------------------------------------------------
28 // If theme is used in customer record set to default
29 //
30 function clean_user_themes($id)
31 {
32         global $db_connections, $db, $installed_extensions;
33
34         $theme = $installed_extensions[$id]['package'];
35         $db_sav = $db;
36
37         foreach ($db_connections as $n => $conn) {
38                 $db = $_SESSION["wa_current_user"]->get_db_connection($n);
39                 $sql = "UPDATE {$conn['tbpref']}users SET theme='default' WHERE theme='$theme'";
40                 if (!db_query($sql, 'Cannot update user theme settings'))
41                         return false;
42         }
43         $db = $db_sav;
44         $_SESSION['wa_current_user']->prefs->theme = 'default';
45         return true;
46 }
47
48 if (($id = find_submit('Delete', false)) && clean_user_themes($id))
49 {
50         $extensions = get_company_extensions();
51         $theme = $extensions[$id]['package'];
52         if (uninstall_package($theme)) {
53                 $dirname = $path_to_root.'/themes/'.$theme;
54                 flush_dir($dirname, true);
55                 rmdir($dirname);
56                 unset($extensions[$id]);
57                 if (update_extensions($extensions)) {
58                         display_notification(_("Selected theme has been successfully deleted"));
59                         meta_forward($_SERVER['PHP_SELF']);
60                 }
61         }
62 }
63
64 if ($id = find_submit('Update', false))
65         install_extension($id);
66
67 //---------------------------------------------------------------------------------------------
68 start_form(true);
69
70         div_start('ext_tbl');
71         start_table(TABLESTYLE);
72
73         $th = array(_("Theme"),  _("Installed"), _("Available"), "", "");
74         table_header($th);
75
76         $k = 0;
77         $mods = get_themes_list();
78
79         foreach($mods as $pkg_name => $ext)
80         {
81                 $available = @$ext['available'];
82                 $installed = @$ext['version'];
83                 $id = @$ext['local_id'];
84
85                 alt_table_row_color($k);
86
87 //              label_cell(is_array($ext['Descr']) ? $ext['Descr'][0] : $ext['Descr']);
88                 label_cell($available ? get_package_view_str($pkg_name, $ext['name']) : $ext['name']);
89
90                 label_cell($id === null ? _("None") :
91                         ($available && $installed ? $installed : _("Unknown")));
92                 label_cell($available ? $available : _("None"));
93
94                 if ($available && check_pkg_upgrade($installed, $available)) // outdated or not installed theme in repo
95                         button_cell('Update'.$pkg_name, $installed ? _("Update") : _("Install"),
96                                 _('Upload and install latest extension package'), ICON_DOWN);
97                 else
98                         label_cell('');
99
100                 if ($id !== null) {
101                         delete_button_cell('Delete'.$id, _('Delete'));
102                         submit_js_confirm('Delete'.$id, 
103                                 sprintf(_("You are about to remove package \'%s\'.\nDo you want to continue ?"), 
104                                         $ext['name']));
105                 } else
106                         label_cell('');
107
108                 end_row();
109         }
110
111         end_table(1);
112
113         div_end();
114
115 //---------------------------------------------------------------------------------------------
116 end_form();
117
118 end_page();
119 ?>