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.