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_PRINTPROFILE';
14 include($path_to_root . "/includes/session.inc");
15 include($path_to_root . "/admin/db/printers_db.inc");
16 include($path_to_root . "/includes/ui.inc");
18 page(_($help_context = "Printing Profiles"));
20 $selected_id = get_post('profile_id','');
22 //-------------------------------------------------------------------------------------------------
23 // Returns array of defined reports
25 function get_reports() {
26 global $path_to_root, $go_debug;
28 if ($go_debug || !isset($_SESSION['reports'])) {
29 // to save time, store in session.
31 $path_to_root.'/reporting/',
32 company_path(). '/reporting/');
33 $reports = array( '' => _('Default printing destination'));
35 foreach($paths as $dirno => $path) {
36 $repdir = opendir($path);
37 while(false !== ($fname = readdir($repdir)))
39 // reports have filenames in form rep(repid).php
40 // where repid must contain at least one digit (reports_main.php is not ;)
41 if (is_file($path.$fname)
42 // && preg_match('/.*[^0-9]([0-9]+)[.]php/', $fname, $match))
43 && preg_match('/rep(.*[0-9]+.*)[.]php/', $fname, $match))
48 $line = file_get_contents($path.$fname);
49 if (preg_match('/.*(FrontReport\()\s*_\([\'"]([^\'"]*)/', $line, $match)) {
50 $title = trim($match[2]);
52 else // for any 3rd party printouts without FrontReport() class use
53 if (preg_match('/.*(\$Title).*[\'"](.*)[\'"].+/', $line, $match)) {
54 $title = trim($match[2]);
56 $reports[$repno] = $title;
62 $_SESSION['reports'] = $reports;
64 return $_SESSION['reports'];
69 global $selected_id, $Ajax;
73 $Ajax->activate('_page_body');
76 function check_delete($name)
78 // check if selected profile is used by any user
79 if ($name=='') return 0; // cannot delete system default profile
80 return key_in_foreign_table($name, 'users', 'print_profile');
82 //-------------------------------------------------------------------------------------------
83 if ( get_post('submit'))
88 if ($_POST['profile_id'] == '' && empty($_POST['name']))
91 display_error( _("Printing profile name cannot be empty."));
97 $prof = array('' => get_post('Prn')); // store default value/profile name
98 foreach (get_reports() as $rep => $descr) {
99 $val = get_post('Prn'.$rep);
102 if ($_POST['profile_id']=='')
103 $_POST['profile_id'] = get_post('name');
105 update_printer_profile($_POST['profile_id'], $prof);
106 if ($selected_id == '') {
107 display_notification_centered(_('New printing profile has been created'));
110 display_notification_centered(_('Printing profile has been updated'));
115 if(get_post('delete'))
117 if (!check_delete(get_post('name'))) {
118 delete_printer_profile($selected_id);
119 display_notification(_('Selected printing profile has been deleted'));
124 if(get_post('_profile_id_update')) {
125 $Ajax->activate('_page_body');
130 print_profiles_list_row(_('Select printing profile'). ':', 'profile_id', null,
131 _('New printing profile'), true);
135 if (get_post('profile_id') == '')
136 text_row(_("Printing Profile Name").':', 'name', null, 30, 30);
138 label_cells(_("Printing Profile Name").':', get_post('profile_id'));
141 $result = get_print_profile(get_post('profile_id'));
143 while ($myrow = db_fetch($result)) {
144 $prints[$myrow['report']] = $myrow['printer'];
147 start_table(TABLESTYLE);
148 $th = array(_("Report Id"), _("Description"), _("Printer"));
153 foreach(get_reports() as $rep => $descr)
155 alt_table_row_color($k);
157 label_cell($rep=='' ? '-' : $rep, 'align=center');
158 label_cell($descr == '' ? '???<sup>1)</sup>' : _($descr));
159 $_POST['Prn'.$rep] = isset($prints[$rep]) ? $prints[$rep] : '';
161 echo printers_list('Prn'.$rep, null,
162 $rep == '' ? _('Browser support') : _('Default'));
164 if ($descr == '') $unkn = 1;
169 display_note('<sup>1)</sup> - '._("no title was found in this report definition file."), 0, 1, '');
173 div_start('controls');
174 if (get_post('profile_id') == '') {
175 submit_center('submit', _("Add New Profile"), true, '', 'default');
177 submit_center_first('submit', _("Update Profile"),
178 _('Update printer profile'), 'default');
179 submit_center_last('delete', _("Delete Profile"),
180 _('Delete printer profile (only if not used by any user)'), true);