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($printer::LANGFILE);
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="'.$conf->global->{$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' :
'').
'>';
173 if ($key[
'varname'] ==
'PRINTGCP_TOKEN_ACCESS') {
174 print $langs->trans(
"IsTokenGenerated");
176 print $langs->trans($key[
'varname']);
179 print
'<td>'.$langs->trans($key[
'info']).
'</td>';
182 if ($key[
'varname'] ==
'PRINTGCP_TOKEN_ACCESS') {
184 if (!empty($key[
'delete'])) {
185 print
'<a class="button" href="'.$key[
'delete'].
'">'.$langs->trans(
'DeleteAccess').
'</a><br><br>';
188 print
'<a class="button" href="'.$key[
'renew'].
'">'.$langs->trans(
'RequestAccess').
'</a><br><br>';
190 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>';
196 if ($key[
'enabled']) {
203 if ($key[
'varname'] ==
'PRINTGCP_TOKEN_ACCESS') {
204 $keyforprovider =
'';
207 print
'<tr class="oddeven">';
208 print
'<td>'.$langs->trans(
"Token").
'</td>';
209 print
'<td colspan="2">';
212 $storage =
new DoliStorage($db, $conf, $keyforprovider);
214 $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME_GOOGLE);
218 if (is_object($tokenobj)) {
220 print $tokenobj->getAccessToken().
'<br>';
233 print $langs->trans(
'PleaseSelectaDriverfromList');
240 if (!empty($driver)) {
241 if ($submit_enabled) {
242 print
'<div class="center"><input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans(
"Save")).
'"></div>';
248if ($mode ==
'config' && $user->admin) {
251 print $langs->trans(
"PrintingDesc").
"<br><br>\n";
253 print
'<table class="noborder centpercent">'.
"\n";
255 print
'<tr class="liste_titre">';
256 print
'<th>'.$langs->trans(
"Description").
'</th>';
257 print
'<th class="center">'.$langs->trans(
"Active").
'</th>';
258 print
'<th class="center">'.$langs->trans(
"Setup").
'</th>';
259 print
'<th class="center">'.$langs->trans(
"TargetedPrinter").
'</th>';
263 $result = $object->listDrivers($db, 10);
265 if (!empty($conf->modules_parts[
'printing'])) {
266 $dirmodels = array_merge(array(
'/core/modules/printing/'), (array) $conf->modules_parts[
'printing']);
268 $dirmodels = array(
'/core/modules/printing/');
271 foreach ($result as $tmpdriver) {
272 foreach ($dirmodels as $dir) {
273 if (file_exists(
dol_buildpath($dir, 0).$tmpdriver.
'.modules.php')) {
274 $classfile =
dol_buildpath($dir, 0).$tmpdriver.
'.modules.php';
278 require_once $classfile;
279 $classname =
'printing_'.$tmpdriver;
280 $printer =
new $classname($db);
281 $langs->load($printer::LANGFILE);
284 print
'<tr class="oddeven">';
285 print
'<td>'.img_picto(
'', $printer->picto).
' '.$langs->trans($printer->desc).
'</td>';
286 print
'<td class="center">';
287 if (!empty($conf->use_javascript_ajax)) {
288 print ajax_constantonoff($printer->active);
290 if (empty($conf->global->{$printer->conf})) {
291 print
'<a href="'.$_SERVER[
'PHP_SELF'].
'?action=setvalue&token='.newToken().
'&varname='.urlencode($printer->active).
'&value=1">'.
img_picto($langs->trans(
"Disabled"),
'off').
'</a>';
293 print
'<a href="'.$_SERVER[
'PHP_SELF'].
'?action=setvalue&token='.newToken().
'&varname='.urlencode($printer->active).
'&value=0">'.
img_picto($langs->trans(
"Enabled"),
'on').
'</a>';
296 print
'<td class="center"><a href="'.$_SERVER[
'PHP_SELF'].
'?mode=setup&token='.newToken().
'&driver='.urlencode($printer->name).
'">'.
img_picto(
'',
'setup').
'</a></td>';
297 print
'<td class="center"><a href="'.$_SERVER[
'PHP_SELF'].
'?mode=test&token='.newToken().
'&driver='.urlencode($printer->name).
'">'.
img_picto(
'',
'setup').
'</a></td>';
306if ($mode ==
'test' && $user->admin) {
309 print $langs->trans(
'PrintTestDesc'.$driver).
"<br><br>\n";
311 print
'<table class="noborder centpercent">';
312 if (!empty($driver)) {
313 if (!empty($conf->modules_parts[
'printing'])) {
314 $dirmodels = array_merge(array(
'/core/modules/printing/'), (array) $conf->modules_parts[
'printing']);
316 $dirmodels = array(
'/core/modules/printing/');
319 foreach ($dirmodels as $dir) {
320 if (file_exists(
dol_buildpath($dir, 0).$driver.
'.modules.php')) {
325 require_once $classfile;
326 $classname =
'printing_'.$driver;
327 $langs->load($driver);
328 $printer =
new $classname($db);
329 $langs->load($printer::LANGFILE);
331 if (count($printer->getlistAvailablePrinters())) {
332 if ($printer->listAvailablePrinters() == 0) {
333 print $printer->resprint;
338 print $langs->trans(
'PleaseConfigureDriverfromList');
341 print $langs->trans(
'PleaseSelectaDriverfromList');
348if ($mode ==
'userconf' && $user->admin) {
351 print $langs->trans(
'PrintUserConfDesc'.$driver).
"<br><br>\n";
353 print
'<table class="noborder centpercent">';
354 print
'<tr class="liste_titre">';
355 print
'<th>'.$langs->trans(
"User").
'</th>';
356 print
'<th>'.$langs->trans(
"PrintModule").
'</th>';
357 print
'<th>'.$langs->trans(
"PrintDriver").
'</th>';
358 print
'<th>'.$langs->trans(
"Printer").
'</th>';
359 print
'<th>'.$langs->trans(
"PrinterLocation").
'</th>';
360 print
'<th>'.$langs->trans(
"PrinterId").
'</th>';
361 print
'<th>'.$langs->trans(
"NumberOfCopy").
'</th>';
362 print
'<th class="center">'.$langs->trans(
"Delete").
'</th>';
364 $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';
365 $resql = $db->query($sql);
366 while ($row = $db->fetch_array($resql)) {
367 print
'<tr class="oddeven">';
368 print
'<td>'.$row[
'login'].
'</td>';
369 print
'<td>'.$row[
'module'].
'</td>';
370 print
'<td>'.$row[
'driver'].
'</td>';
371 print
'<td>'.$row[
'printer_name'].
'</td>';
372 print
'<td>'.$row[
'printer_location'].
'</td>';
373 print
'<td>'.$row[
'printer_id'].
'</td>';
374 print
'<td>'.$row[
'copy'].
'</td>';
375 print
'<td class="center">'.img_picto($langs->trans(
"Delete"),
'delete').
'</td>';
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($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
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_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_get_fiche_end($notab=0)
Return tab footer of a card.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
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.
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.