26require
'../../main.inc.php';
28require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
29require_once DOL_DOCUMENT_ROOT.
'/core/class/doleditor.class.php';
30require_once DOL_DOCUMENT_ROOT.
'/core/modules/printing/modules_printing.php';
31require_once DOL_DOCUMENT_ROOT.
'/printing/lib/printing.lib.php';
32use OAuth\Common\Storage\DoliStorage;
35$langs->loadLangs(array(
'admin',
'printing',
'oauth'));
37$action =
GETPOST(
'action',
'aZ09');
38$mode =
GETPOST(
'mode',
'alpha');
39$value =
GETPOST(
'value',
'alpha', 0,
null,
null, 1);
40$varname =
GETPOST(
'varname',
'alpha');
41$driver =
GETPOST(
'driver',
'alpha');
44 $langs->load($driver);
51$OAUTH_SERVICENAME_GOOGLE =
'Google';
62if (($mode ==
'test' || $mode ==
'setup') && empty($driver)) {
64 header(
"Location: ".$_SERVER[
'PHP_SELF'].
'?mode=config');
68if ($action ==
'setconst' && $user->admin) {
71 foreach ($_POST[
'setupdriver'] as $setupconst) {
73 $result =
dolibarr_set_const($db, $setupconst[
'varname'], $setupconst[
'value'],
'chaine', 0,
'', $conf->entity);
89if ($action ==
'setvalue' && $user->admin) {
112$form =
new Form($db);
114llxHeader(
'', $langs->trans(
"PrintingSetup"));
116$linkback =
'<a href="'.DOL_URL_ROOT.
'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToModuleList").
'</a>';
117print
load_fiche_titre($langs->trans(
"PrintingSetup"), $linkback,
'title_setup');
121if ($mode ==
'setup' && $user->admin) {
122 print
'<form method="post" action="'.$_SERVER[
"PHP_SELF"].
'?mode=setup&driver='.$driver.
'" autocomplete="off">';
123 print
'<input type="hidden" name="token" value="'.newToken().
'">';
124 print
'<input type="hidden" name="action" value="setconst">';
128 print $langs->trans(
"PrintingDriverDesc".$driver).
"<br><br>\n";
130 print
'<table class="noborder centpercent">'.
"\n";
131 print
'<tr class="liste_titre">';
132 print
'<th>'.$langs->trans(
"Parameters").
'</th>';
133 print
'<th>'.$langs->trans(
"Value").
'</th>';
134 print
'<th> </th>';
138 if (!empty($driver)) {
139 if (!empty($conf->modules_parts[
'printing'])) {
140 $dirmodels = array_merge(array(
'/core/modules/printing/'), (array) $conf->modules_parts[
'printing']);
142 $dirmodels = array(
'/core/modules/printing/');
145 foreach ($dirmodels as $dir) {
146 if (file_exists(
dol_buildpath($dir, 0).$driver.
'.modules.php')) {
151 require_once $classfile;
152 $classname =
'printing_'.$driver;
153 $printer =
new $classname($db);
154 $langs->load(
'printing');
158 foreach ($printer->conf as $key) {
159 switch ($key[
'type']) {
162 print
'<tr class="oddeven">';
163 print
'<td'.($key[
'required'] ?
' class=required' :
'').
'>'.$langs->trans($key[
'varname']).
'</td>';
164 print
'<td><input class="width100" type="'.(empty($key[
'type']) ?
'text' : $key[
'type']).
'" name="setupdriver['.$i.
'][value]" value="'.
getDolGlobalString($key[
'varname']).
'"';
165 print isset($key[
'moreattributes']) ?
' '.$key[
'moreattributes'] :
'';
166 print
'><input type="hidden" name="setupdriver['.$i.
'][varname]" value="'.$key[
'varname'].
'"></td>';
167 print
'<td> '.($key[
'example'] !=
'' ? $langs->trans(
"Example").
' : '.$key[
'example'] :
'').
'</td>';
171 print
'<tr class="oddeven">';
172 print
'<td'.($key[
'required'] ?
' class=required' :
'').
'>'.$langs->trans($key[
'varname']).
'</td>';
173 print
'<td><input class="width100" type="'.(empty($key[
'type']) ?
'text' : $key[
'type']).
'" name="setupdriver['.$i.
'][value]" value="1" '.((
getDolGlobalInt($key[
'varname'])) ?
'checked' :
'');
174 print isset($key[
'moreattributes']) ?
' '.$key[
'moreattributes'] :
'';
175 print
'><input type="hidden" name="setupdriver['.$i.
'][varname]" value="'.$key[
'varname'].
'"></td>';
176 print
'<td> '.($key[
'example'] !=
'' ? $langs->trans(
"Example").
' : '.$key[
'example'] :
'').
'</td>';
180 print
'<tr class="oddeven">';
181 print
'<td'.($key[
'required'] ?
' class=required' :
'').
'>';
182 if ($key[
'varname'] ==
'PRINTGCP_TOKEN_ACCESS') {
183 print $langs->trans(
"IsTokenGenerated");
185 print $langs->trans($key[
'varname']);
188 print
'<td>'.$langs->trans($key[
'info']).
'</td>';
191 if ($key[
'varname'] ==
'PRINTGCP_TOKEN_ACCESS') {
193 if (!empty($key[
'delete'])) {
194 print
'<a class="button" href="'.$key[
'delete'].
'">'.$langs->trans(
'DeleteAccess').
'</a><br><br>';
197 print
'<a class="button" href="'.$key[
'renew'].
'">'.$langs->trans(
'RequestAccess').
'</a><br><br>';
199 print $langs->trans(
"ToCheckDeleteTokenOnProvider", $OAUTH_SERVICENAME_GOOGLE).
': <a href="https://security.google.com/settings/security/permissions" target="_google">https://security.google.com/settings/security/permissions</a>';
205 if ($key[
'enabled']) {
212 if ($key[
'varname'] ==
'PRINTGCP_TOKEN_ACCESS') {
213 $keyforprovider =
'';
216 print
'<tr class="oddeven">';
217 print
'<td>'.$langs->trans(
"Token").
'</td>';
218 print
'<td colspan="2">';
221 $storage =
new DoliStorage($db, $conf, $keyforprovider);
223 $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME_GOOGLE);
227 if (is_object($tokenobj)) {
229 print $tokenobj->getAccessToken().
'<br>';
242 print $langs->trans(
'PleaseSelectaDriverfromList');
249 if (!empty($driver)) {
250 if ($submit_enabled) {
251 print
'<div class="center"><input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans(
"Save")).
'"></div>';
257if ($mode ==
'config' && $user->admin) {
260 print $langs->trans(
"PrintingDesc").
"<br><br>\n";
262 print
'<table class="noborder centpercent">'.
"\n";
264 print
'<tr class="liste_titre">';
265 print
'<th>'.$langs->trans(
"Description").
'</th>';
266 print
'<th class="center">'.$langs->trans(
"Active").
'</th>';
267 print
'<th class="center">'.$langs->trans(
"Setup").
'</th>';
268 print
'<th class="center">'.$langs->trans(
"TargetedPrinter").
'</th>';
272 $result =
$object->listDrivers($db, 10);
274 if (!empty($conf->modules_parts[
'printing'])) {
275 $dirmodels = array_merge(array(
'/core/modules/printing/'), (array) $conf->modules_parts[
'printing']);
277 $dirmodels = array(
'/core/modules/printing/');
280 foreach ($result as $tmpdriver) {
281 foreach ($dirmodels as $dir) {
282 if (file_exists(
dol_buildpath($dir, 0).$tmpdriver.
'.modules.php')) {
283 $classfile =
dol_buildpath($dir, 0).$tmpdriver.
'.modules.php';
287 require_once $classfile;
288 $classname =
'printing_'.$tmpdriver;
289 $printer =
new $classname($db);
290 $langs->load(
'printing');
293 print
'<tr class="oddeven">';
294 print
'<td>'.img_picto(
'', $printer->picto).
' '.$langs->trans($printer->desc).
'</td>';
295 print
'<td class="center">';
296 if (!empty($conf->use_javascript_ajax)) {
297 print ajax_constantonoff($printer->active);
300 print
'<a href="'.$_SERVER[
'PHP_SELF'].
'?action=setvalue&token='.
newToken().
'&varname='.urlencode($printer->active).
'&value=1">'.
img_picto($langs->trans(
"Disabled"),
'off').
'</a>';
302 print
'<a href="'.$_SERVER[
'PHP_SELF'].
'?action=setvalue&token='.
newToken().
'&varname='.urlencode($printer->active).
'&value=0">'.
img_picto($langs->trans(
"Enabled"),
'on').
'</a>';
305 print
'<td class="center"><a href="'.$_SERVER[
'PHP_SELF'].
'?mode=setup&token='.
newToken().
'&driver='.urlencode($printer->name).
'">'.
img_picto(
'',
'setup').
'</a></td>';
306 print
'<td class="center"><a href="'.$_SERVER[
'PHP_SELF'].
'?mode=test&token='.
newToken().
'&driver='.urlencode($printer->name).
'">'.
img_picto(
'',
'setup').
'</a></td>';
315if ($mode ==
'test' && $user->admin) {
318 print $langs->trans(
'PrintTestDesc'.$driver).
"<br><br>\n";
320 print
'<table class="noborder centpercent">';
321 if (!empty($driver)) {
322 if (!empty($conf->modules_parts[
'printing'])) {
323 $dirmodels = array_merge(array(
'/core/modules/printing/'), (array) $conf->modules_parts[
'printing']);
325 $dirmodels = array(
'/core/modules/printing/');
328 foreach ($dirmodels as $dir) {
329 if (file_exists(
dol_buildpath($dir, 0).$driver.
'.modules.php')) {
334 require_once $classfile;
335 $classname =
'printing_'.$driver;
336 $printer =
new $classname($db);
337 $langs->load($driver);
338 $langs->load(
'printing');
341 if (count($printer->getlistAvailablePrinters())) {
342 if ($printer->listAvailablePrinters() == 0) {
343 print $printer->resprint;
348 print $langs->trans(
'PleaseConfigureDriverfromList');
351 print $langs->trans(
'PleaseSelectaDriverfromList');
358if ($mode ==
'userconf' && $user->admin) {
361 print $langs->trans(
'PrintUserConfDesc'.$driver).
"<br><br>\n";
363 print
'<table class="noborder centpercent">';
364 print
'<tr class="liste_titre">';
365 print
'<th>'.$langs->trans(
"User").
'</th>';
366 print
'<th>'.$langs->trans(
"PrintModule").
'</th>';
367 print
'<th>'.$langs->trans(
"PrintDriver").
'</th>';
368 print
'<th>'.$langs->trans(
"Printer").
'</th>';
369 print
'<th>'.$langs->trans(
"PrinterLocation").
'</th>';
370 print
'<th>'.$langs->trans(
"PrinterId").
'</th>';
371 print
'<th>'.$langs->trans(
"NumberOfCopy").
'</th>';
372 print
'<th class="center">'.$langs->trans(
"Delete").
'</th>';
374 $sql =
'SELECT p.rowid, p.printer_name, p.printer_location, p.printer_id, p.copy, p.module, p.driver, p.userid, u.login FROM '.MAIN_DB_PREFIX.
'printing as p, '.MAIN_DB_PREFIX.
'user as u WHERE p.userid=u.rowid';
375 $resql = $db->query($sql);
376 while ($row = $db->fetch_array($resql)) {
377 print
'<tr class="oddeven">';
378 print
'<td>'.$row[
'login'].
'</td>';
379 print
'<td>'.$row[
'module'].
'</td>';
380 print
'<td>'.$row[
'driver'].
'</td>';
381 print
'<td>'.$row[
'printer_name'].
'</td>';
382 print
'<td>'.$row[
'printer_location'].
'</td>';
383 print
'<td>'.$row[
'printer_id'].
'</td>';
384 print
'<td>'.$row[
'copy'].
'</td>';
385 print
'<td class="center">'.img_picto($langs->trans(
"Delete"),
'delete').
'</td>';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Parent class of emailing target selectors modules.
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
printingAdminPrepareHead($mode)
Define head array for tabs of printing tools setup pages.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.