diff --git a/scripts/bank/export-bank-receipts.php b/scripts/bank/export-bank-receipts.php index f1654b92d2a..1fb0058610a 100755 --- a/scripts/bank/export-bank-receipts.php +++ b/scripts/bank/export-bank-receipts.php @@ -1,7 +1,7 @@ #!/usr/bin/env php + * Copyright (C) 2013 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -10,7 +10,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -18,200 +18,160 @@ */ /** - * \file scripts/bank/export-bank-receipts.php - * \ingroup bank - * \brief Script file to export bank receipts into Excel files + * \file scripts/bank/export-bank-receipts.php + * \ingroup bank + * \brief Script file to export bank receipts into Excel files */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; -require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php'; -require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; -require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/paymentsocialcontribution.class.php'; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT . '/core/lib/bank.lib.php'; +require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php'; +require_once DOL_DOCUMENT_ROOT . '/adherents/class/adherent.class.php'; +require_once DOL_DOCUMENT_ROOT . '/compta/sociales/class/chargesociales.class.php'; +require_once DOL_DOCUMENT_ROOT . '/compta/paiement/class/paiement.class.php'; +require_once DOL_DOCUMENT_ROOT . '/compta/tva/class/tva.class.php'; +require_once DOL_DOCUMENT_ROOT . '/fourn/class/paiementfourn.class.php'; +require_once DOL_DOCUMENT_ROOT . '/compta/bank/class/account.class.php'; +require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php'; +require_once DOL_DOCUMENT_ROOT . '/fourn/class/fournisseur.facture.class.php'; +require_once DOL_DOCUMENT_ROOT . '/compta/tva/class/tva.class.php'; +require_once DOL_DOCUMENT_ROOT . '/compta/sociales/class/paymentsocialcontribution.class.php'; // Global variables -$version=DOL_VERSION; -$error=0; - - +$version = DOL_VERSION; +$error = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); if (! isset($argv[3]) || ! $argv[3]) { - print "Usage: ".$script_file." bank_ref [bank_receipt_number|all] (csv|tsv|excel|excel2007) [lang=xx_XX]\n"; - exit(-1); + print "Usage: " . $script_file . " bank_ref [bank_receipt_number|all] (csv|tsv|excel|excel2007) [lang=xx_XX]\n"; + exit(- 1); } -$bankref=$argv[1]; -$num=$argv[2]; -$model=$argv[3]; -$newlangid='en_EN'; // To force a new lang id - - -$invoicestatic=new Facture($db); -$invoicesupplierstatic=new FactureFournisseur($db); -$societestatic=new Societe($db); -$chargestatic=new ChargeSociales($db); -$memberstatic=new Adherent($db); -$paymentstatic=new Paiement($db); -$paymentsupplierstatic=new PaiementFourn($db); -$paymentsocialcontributionstatic=new PaymentSocialContribution($db); -$paymentvatstatic=new Tva($db); -$bankstatic=new Account($db); -$banklinestatic=new AccountLine($db); +$bankref = $argv[1]; +$num = $argv[2]; +$model = $argv[3]; +$newlangid = 'en_EN'; // To force a new lang id +$invoicestatic = new Facture($db); +$invoicesupplierstatic = new FactureFournisseur($db); +$societestatic = new Societe($db); +$chargestatic = new ChargeSociales($db); +$memberstatic = new Adherent($db); +$paymentstatic = new Paiement($db); +$paymentsupplierstatic = new PaiementFourn($db); +$paymentsocialcontributionstatic = new PaymentSocialContribution($db); +$paymentvatstatic = new Tva($db); +$bankstatic = new Account($db); +$banklinestatic = new AccountLine($db); // Parse parameters -foreach ($argv as $key => $value) -{ - $found=false; +foreach ($argv as $key => $value) { + $found = false; // Define options - if (preg_match('/^lang=/i', $value)) - { - $found=true; - $valarray=explode('=', $value); - $newlangid=$valarray[1]; - print 'Use language '.$newlangid.".\n"; + if (preg_match('/^lang=/i', $value)) { + $found = true; + $valarray = explode('=', $value); + $newlangid = $valarray[1]; + print 'Use language ' . $newlangid . ".\n"; } } $outputlangs = $langs; -if (! empty($newlangid)) -{ - if ($outputlangs->defaultlang != $newlangid) - { +if (! empty($newlangid)) { + if ($outputlangs->defaultlang != $newlangid) { $outputlangs = new Translate("", $conf); $outputlangs->setDefaultLang($newlangid); } } // Load translation files required by the page -$outputlangs->loadLangs(array("main", "companies", "bills", "banks", "members", "compta")); +$outputlangs->loadLangs(array("main","companies","bills","banks","members","compta")); -$acct=new Account($db); -$result=$acct->fetch('', $bankref); -if ($result <= 0) -{ - print "Failed to find bank account with ref ".$bankref.".\n"; - exit(-1); +$acct = new Account($db); +$result = $acct->fetch('', $bankref); +if ($result <= 0) { + print "Failed to find bank account with ref " . $bankref . ".\n"; + exit(- 1); +} else { + print "Export for bank account " . $acct->ref . " (" . $acct->label . ").\n"; } -else -{ - print "Export for bank account ".$acct->ref." (".$acct->label.").\n"; -} - // Creation de la classe d'export du model ExportXXX $dir = DOL_DOCUMENT_ROOT . "/core/modules/export/"; -$file = "export_".$model.".modules.php"; -$classname = "Export".$model; -if (! dol_is_file($dir.$file)) -{ - print "No driver to export with format ".$model."\n"; - exit(-1); +$file = "export_" . $model . ".modules.php"; +$classname = "Export" . $model; +if (! dol_is_file($dir . $file)) { + print "No driver to export with format " . $model . "\n"; + exit(- 1); } -require_once $dir.$file; +require_once $dir . $file; $objmodel = new $classname($db); - // Define target path $dirname = $conf->bank->dir_temp; -$filename = 'export-bank-receipts-'.$bankref.'-'.$num.'.'.$objmodel->extension; - - -$array_fields=array( -'bankreceipt'=>$outputlangs->transnoentitiesnoconv("AccountStatementShort"), 'bankaccount'=>$outputlangs->transnoentitiesnoconv("BankAccount"), -'dateop'=>$outputlangs->transnoentitiesnoconv("DateOperationShort"),'dateval'=>$outputlangs->transnoentitiesnoconv("DateValueShort"),'type'=>$outputlangs->transnoentitiesnoconv("Type"), -'description'=>$outputlangs->transnoentitiesnoconv("Description"), 'thirdparty'=>$outputlangs->transnoentitiesnoconv("Tiers"), 'accountelem'=>$outputlangs->transnoentitiesnoconv("Piece"), -'debit'=>$outputlangs->transnoentitiesnoconv("Debit"), 'credit'=>$outputlangs->transnoentitiesnoconv("Credit"), -'soldbefore'=>$outputlangs->transnoentitiesnoconv("BankBalanceBefore"), 'soldafter'=>$outputlangs->transnoentitiesnoconv("BankBalanceAfter"), -'comment'=>$outputlangs->transnoentitiesnoconv("Comment") -); -$array_selected=array( -'bankreceipt'=>'bankreceipt', 'bankaccount'=>'bankaccount', -'dateop'=>'dateop','dateval'=>'dateval','type'=>'type', -'description'=>'description', 'thirdparty'=>'thirdparty', 'accountelem'=>'accountelem', -'debit'=>'debit', 'credit'=>'credit', -'soldbefore'=>'soldbefore','soldafter'=>'soldafter', -'comment'=>'comment' -); -$array_export_TypeFields=array( -'bankreceipt'=>'Text', 'bankaccount'=>'Text', -'dateop'=>'Date','dateval'=>'Date','type'=>'Text', -'description'=>'Text', 'thirdparty'=>'Text', 'accountelem'=>'Text', -'debit'=>'Number', 'credit'=>'Number', -'soldbefore'=>'Number','soldafter'=>'Number', -'comment'=>'Text' -); +$filename = 'export-bank-receipts-' . $bankref . '-' . $num . '.' . $objmodel->extension; +$array_fields = array('bankreceipt' => $outputlangs->transnoentitiesnoconv("AccountStatementShort"),'bankaccount' => $outputlangs->transnoentitiesnoconv("BankAccount"),'dateop' => $outputlangs->transnoentitiesnoconv("DateOperationShort"),'dateval' => $outputlangs->transnoentitiesnoconv("DateValueShort"),'type' => $outputlangs->transnoentitiesnoconv("Type"),'description' => $outputlangs->transnoentitiesnoconv("Description"),'thirdparty' => $outputlangs->transnoentitiesnoconv("Tiers"),'accountelem' => $outputlangs->transnoentitiesnoconv("Piece"),'debit' => $outputlangs->transnoentitiesnoconv("Debit"),'credit' => $outputlangs->transnoentitiesnoconv("Credit"),'soldbefore' => $outputlangs->transnoentitiesnoconv("BankBalanceBefore"),'soldafter' => $outputlangs->transnoentitiesnoconv("BankBalanceAfter"),'comment' => $outputlangs->transnoentitiesnoconv("Comment")); +$array_selected = array('bankreceipt' => 'bankreceipt','bankaccount' => 'bankaccount','dateop' => 'dateop','dateval' => 'dateval','type' => 'type','description' => 'description','thirdparty' => 'thirdparty','accountelem' => 'accountelem','debit' => 'debit','credit' => 'credit','soldbefore' => 'soldbefore','soldafter' => 'soldafter','comment' => 'comment'); +$array_export_TypeFields = array('bankreceipt' => 'Text','bankaccount' => 'Text','dateop' => 'Date','dateval' => 'Date','type' => 'Text','description' => 'Text','thirdparty' => 'Text','accountelem' => 'Text','debit' => 'Number','credit' => 'Number','soldbefore' => 'Number','soldafter' => 'Number','comment' => 'Text'); // Build request to find records for a bank account/receipt -$listofnum=""; -if (! empty($num) && $num != "all") -{ - $listofnum.="'"; - $arraynum=explode(',', $num); - foreach($arraynum as $val) - { - if ($listofnum != "'") $listofnum.="','"; - $listofnum.=$val; +$listofnum = ""; +if (! empty($num) && $num != "all") { + $listofnum .= "'"; + $arraynum = explode(',', $num); + foreach ($arraynum as $val) { + if ($listofnum != "'") + $listofnum .= "','"; + $listofnum .= $val; } - $listofnum.="'"; + $listofnum .= "'"; } $sql = "SELECT b.rowid, b.dateo as do, b.datev as dv,"; -$sql.= " b.amount, b.label, b.rappro, b.num_releve, b.num_chq, b.fk_type,"; -$sql.= " ba.rowid as bankid, ba.ref as bankref, ba.label as banklabel"; -$sql.= " FROM ".MAIN_DB_PREFIX."bank_account as ba"; -$sql.= ", ".MAIN_DB_PREFIX."bank as b"; -$sql.= " WHERE b.fk_account = ".$acct->id; -if ($listofnum) $sql.= " AND b.num_releve IN (".$listofnum.")"; -if (!isset($num)) $sql.= " OR b.num_releve is null"; -$sql.= " AND b.fk_account = ba.rowid"; -$sql.= $db->order("b.num_releve, b.datev, b.datec", "ASC"); // We add date of creation to have correct order when everything is done the same day -//print $sql; +$sql .= " b.amount, b.label, b.rappro, b.num_releve, b.num_chq, b.fk_type,"; +$sql .= " ba.rowid as bankid, ba.ref as bankref, ba.label as banklabel"; +$sql .= " FROM " . MAIN_DB_PREFIX . "bank_account as ba"; +$sql .= ", " . MAIN_DB_PREFIX . "bank as b"; +$sql .= " WHERE b.fk_account = " . $acct->id; +if ($listofnum) + $sql .= " AND b.num_releve IN (" . $listofnum . ")"; +if (! isset($num)) + $sql .= " OR b.num_releve is null"; +$sql .= " AND b.fk_account = ba.rowid"; +$sql .= $db->order("b.num_releve, b.datev, b.datec", "ASC"); // We add date of creation to have correct order when everything is done the same day + // print $sql; -$resql=$db->query($sql); -if ($resql) -{ - $balancebefore=array(); +$resql = $db->query($sql); +if ($resql) { + $balancebefore = array(); $numrows = $db->num_rows($resql); - if ($numrows > 0) - { + if ($numrows > 0) { // Open file - print 'Open file '.$filename.' into directory '.$dirname."\n"; + print 'Open file ' . $filename . ' into directory ' . $dirname . "\n"; dol_mkdir($dirname); - $result=$objmodel->open_file($dirname."/".$filename, $outputlangs); + $result = $objmodel->open_file($dirname . "/" . $filename, $outputlangs); - if ($result < 0) - { - print 'Failed to create file '.$filename.' into dir '.$dirname.'.'."\n"; - return -1; + if ($result < 0) { + print 'Failed to create file ' . $filename . ' into dir ' . $dirname . '.' . "\n"; + return - 1; } // Genere en-tete @@ -221,35 +181,30 @@ if ($resql) $objmodel->write_title($array_fields, $array_selected, $outputlangs, $array_export_TypeFields); } - $i=0; - while ($i < $numrows) - { - $thirdparty=''; - $accountelem=''; - $comment=''; + $i = 0; + while ($i < $numrows) { + $thirdparty = ''; + $accountelem = ''; + $comment = ''; $objp = $db->fetch_object($resql); // Calculate start balance - if (! isset($balancebefore[$objp->num_releve])) - { - print 'Calculate start balance for receipt '.$objp->num_releve."\n"; + if (! isset($balancebefore[$objp->num_releve])) { + print 'Calculate start balance for receipt ' . $objp->num_releve . "\n"; $sql2 = "SELECT sum(b.amount) as amount"; - $sql2.= " FROM ".MAIN_DB_PREFIX."bank as b"; - $sql2.= " WHERE b.num_releve < '".$db->escape($objp->num_releve)."'"; - $sql2.= " AND b.fk_account = ".$objp->bankid; - $resql2=$db->query($sql2); - if ($resql2) - { - $obj2=$db->fetch_object($resql2); - $balancebefore[$objp->num_releve] = ($obj2->amount?$obj2->amount:0); + $sql2 .= " FROM " . MAIN_DB_PREFIX . "bank as b"; + $sql2 .= " WHERE b.num_releve < '" . $db->escape($objp->num_releve) . "'"; + $sql2 .= " AND b.fk_account = " . $objp->bankid; + $resql2 = $db->query($sql2); + if ($resql2) { + $obj2 = $db->fetch_object($resql2); + $balancebefore[$objp->num_releve] = ($obj2->amount ? $obj2->amount : 0); $db->free($resql2); - } - else - { + } else { dol_print_error($db); - exit(-1); + exit(- 1); } $total = $balancebefore[$objp->num_releve]; @@ -258,168 +213,153 @@ if ($resql) $totalbefore = $total; $total = $total + $objp->amount; - - // Date operation - $dateop=$db->jdate($objp->do); + $dateop = $db->jdate($objp->do); // Date de valeur - $datevalue=$db->jdate($objp->dv); + $datevalue = $db->jdate($objp->dv); // Num cheque - $numchq=($objp->num_chq?$objp->num_chq:''); + $numchq = ($objp->num_chq ? $objp->num_chq : ''); // Libelle - $reg=array(); - preg_match('/\((.+)\)/i', $objp->label, $reg); // Si texte entoure de parenthese on tente recherche de traduction - if ($reg[1] && $langs->transnoentitiesnoconv($reg[1])!=$reg[1]) $description=$langs->transnoentitiesnoconv($reg[1]); - else $description=$objp->label; + $reg = array(); + preg_match('/\((.+)\)/i', $objp->label, $reg); // Si texte entoure de parenthese on tente recherche de traduction + if ($reg[1] && $langs->transnoentitiesnoconv($reg[1]) != $reg[1]) + $description = $langs->transnoentitiesnoconv($reg[1]); + else + $description = $objp->label; /* * Ajout les liens (societe, company...) */ $links = $acct->get_url($objp->rowid); - foreach($links as $key=>$val) - { - if ($links[$key]['type']=='payment') - { + foreach ($links as $key => $val) { + if ($links[$key]['type'] == 'payment') { $paymentstatic->fetch($links[$key]['url_id']); - $tmparray=$paymentstatic->getBillsArray(''); - if (is_array($tmparray)) - { - foreach($tmparray as $key => $val) - { + $tmparray = $paymentstatic->getBillsArray(''); + if (is_array($tmparray)) { + foreach ($tmparray as $key => $val) { $invoicestatic->fetch($val); - if ($accountelem) $accountelem.= ', '; - $accountelem.=$invoicestatic->ref; + if ($accountelem) + $accountelem .= ', '; + $accountelem .= $invoicestatic->ref; } } - } - elseif ($links[$key]['type']=='payment_supplier') - { + } elseif ($links[$key]['type'] == 'payment_supplier') { $paymentsupplierstatic->fetch($links[$key]['url_id']); - $tmparray=$paymentsupplierstatic->getBillsArray(''); - if (is_array($tmparray)) - { - foreach($tmparray as $key => $val) - { + $tmparray = $paymentsupplierstatic->getBillsArray(''); + if (is_array($tmparray)) { + foreach ($tmparray as $key => $val) { $invoicesupplierstatic->fetch($val); - if ($accountelem) $accountelem.= ', '; - $accountelem.=$invoicesupplierstatic->ref; + if ($accountelem) + $accountelem .= ', '; + $accountelem .= $invoicesupplierstatic->ref; } } - } - elseif ($links[$key]['type']=='payment_sc') - { + } elseif ($links[$key]['type'] == 'payment_sc') { $paymentsocialcontributionstatic->fetch($links[$key]['url_id']); - if ($accountelem) $accountelem.= ', '; - $accountelem.=$langs->transnoentitiesnoconv("SocialContribution").' '.$paymentsocialcontributionstatic->ref; - } - elseif ($links[$key]['type']=='payment_vat') - { + if ($accountelem) + $accountelem .= ', '; + $accountelem .= $langs->transnoentitiesnoconv("SocialContribution") . ' ' . $paymentsocialcontributionstatic->ref; + } elseif ($links[$key]['type'] == 'payment_vat') { $paymentvatstatic->fetch($links[$key]['url_id']); - if ($accountelem) $accountelem.= ', '; - $accountelem.=$langs->transnoentitiesnoconv("VATPayments").' '.$paymentvatstatic->ref; - } - elseif ($links[$key]['type']=='banktransfert') - { - $comment=$outputlangs->transnoentitiesnoconv("Transfer"); - if ($objp->amount > 0) - { - if ($comment) $comment.= ' '; + if ($accountelem) + $accountelem .= ', '; + $accountelem .= $langs->transnoentitiesnoconv("VATPayments") . ' ' . $paymentvatstatic->ref; + } elseif ($links[$key]['type'] == 'banktransfert') { + $comment = $outputlangs->transnoentitiesnoconv("Transfer"); + if ($objp->amount > 0) { + if ($comment) + $comment .= ' '; $banklinestatic->fetch($links[$key]['url_id']); - $bankstatic->id=$banklinestatic->fk_account; - $bankstatic->label=$banklinestatic->bank_account_label; - $comment.= ' ('.$langs->transnoentitiesnoconv("from").' '; - $comment.= $bankstatic->getNomUrl(1, 'transactions'); - $comment.= ' '.$langs->transnoentitiesnoconv("toward").' '; - $bankstatic->id=$objp->bankid; - $bankstatic->label=$objp->bankref; - $comment.= $bankstatic->getNomUrl(1, ''); - $comment.= ')'; - } - else - { - if ($comment) $comment.= ' '; - $bankstatic->id=$objp->bankid; - $bankstatic->label=$objp->bankref; - $comment.= ' ('.$langs->transnoentitiesnoconv("from").' '; - $comment.= $bankstatic->getNomUrl(1, ''); - $comment.= ' '.$langs->transnoentitiesnoconv("toward").' '; + $bankstatic->id = $banklinestatic->fk_account; + $bankstatic->label = $banklinestatic->bank_account_label; + $comment .= ' (' . $langs->transnoentitiesnoconv("from") . ' '; + $comment .= $bankstatic->getNomUrl(1, 'transactions'); + $comment .= ' ' . $langs->transnoentitiesnoconv("toward") . ' '; + $bankstatic->id = $objp->bankid; + $bankstatic->label = $objp->bankref; + $comment .= $bankstatic->getNomUrl(1, ''); + $comment .= ')'; + } else { + if ($comment) + $comment .= ' '; + $bankstatic->id = $objp->bankid; + $bankstatic->label = $objp->bankref; + $comment .= ' (' . $langs->transnoentitiesnoconv("from") . ' '; + $comment .= $bankstatic->getNomUrl(1, ''); + $comment .= ' ' . $langs->transnoentitiesnoconv("toward") . ' '; $banklinestatic->fetch($links[$key]['url_id']); - $bankstatic->id=$banklinestatic->fk_account; - $bankstatic->label=$banklinestatic->bank_account_label; - $comment.= $bankstatic->getNomUrl(1, 'transactions'); - $comment.= ')'; + $bankstatic->id = $banklinestatic->fk_account; + $bankstatic->label = $banklinestatic->bank_account_label; + $comment .= $bankstatic->getNomUrl(1, 'transactions'); + $comment .= ')'; } + } elseif ($links[$key]['type'] == 'company') { + if ($thirdparty) + $thirdparty .= ', '; + $thirdparty .= dol_trunc($links[$key]['label'], 24); + $newline = 0; + } elseif ($links[$key]['type'] == 'member') { + if ($thirdparty) + $accountelem .= ', '; + $thirdparty .= $links[$key]['label']; + $newline = 0; } - elseif ($links[$key]['type']=='company') - { - if ($thirdparty) $thirdparty.= ', '; - $thirdparty.= dol_trunc($links[$key]['label'], 24); - $newline=0; - } - elseif ($links[$key]['type']=='member') - { - if ($thirdparty) $accountelem.= ', '; - $thirdparty.= $links[$key]['label']; - $newline=0; - } - /*elseif ($links[$key]['type']=='sc') - { - if ($accountelem) $accountelem.= ', '; - //$accountelem.= ''; - //$accountelem.= img_object($langs->transnoentitiesnoconv('ShowBill'),'bill').' '; - $accountelem.= $langs->transnoentitiesnoconv("SocialContribution"); - //$accountelem.= ''; - $newline=0; - } - else - { - if ($accountelem) $accountelem.= ', '; - //$accountelem.= ''; - $accountelem.= $links[$key]['label']; - //$accountelem.= ''; - $newline=0; - }*/ + /* + * elseif ($links[$key]['type']=='sc') + * { + * if ($accountelem) $accountelem.= ', '; + * //$accountelem.= ''; + * //$accountelem.= img_object($langs->transnoentitiesnoconv('ShowBill'),'bill').' '; + * $accountelem.= $langs->transnoentitiesnoconv("SocialContribution"); + * //$accountelem.= ''; + * $newline=0; + * } + * else + * { + * if ($accountelem) $accountelem.= ', '; + * //$accountelem.= ''; + * $accountelem.= $links[$key]['label']; + * //$accountelem.= ''; + * $newline=0; + * } + */ } - $debit=$credit=''; - if ($objp->amount < 0) - { + $debit = $credit = ''; + if ($objp->amount < 0) { $totald = $totald + abs($objp->amount); - $debit=price2num($objp->amount * -1); - } - else - { + $debit = price2num($objp->amount * - 1); + } else { $totalc = $totalc + abs($objp->amount); - $credit=price2num($objp->amount); + $credit = price2num($objp->amount); } - $i++; + $i ++; - $rec=new stdClass(); - $rec->bankreceipt=$objp->num_releve; - $rec->bankaccount=$objp->banklabel; - $rec->dateop=dol_print_date($dateop, 'dayrfc'); - $rec->dateval=dol_print_date($datevalue, 'dayrfc'); - $rec->type=$objp->fk_type.' '.($objp->num_chq?$objp->num_chq:''); - $rec->description=$description; - $rec->thirdparty=$thirdparty; - $rec->accountelem=$accountelem; - $rec->debit=$debit; - $rec->credit=$credit; - $rec->comment=$comment; - $rec->soldbefore=price2num($totalbefore); - $rec->soldafter=price2num($total); + $rec = new stdClass(); + $rec->bankreceipt = $objp->num_releve; + $rec->bankaccount = $objp->banklabel; + $rec->dateop = dol_print_date($dateop, 'dayrfc'); + $rec->dateval = dol_print_date($datevalue, 'dayrfc'); + $rec->type = $objp->fk_type . ' ' . ($objp->num_chq ? $objp->num_chq : ''); + $rec->description = $description; + $rec->thirdparty = $thirdparty; + $rec->accountelem = $accountelem; + $rec->debit = $debit; + $rec->credit = $credit; + $rec->comment = $comment; + $rec->soldbefore = price2num($totalbefore); + $rec->soldafter = price2num($total); // end of special operation processing $objmodel->write_record($array_selected, $rec, $outputlangs, $array_export_TypeFields); } - if ($numrows > 0) - { - print "Found ".$numrows." records for receipt ".$num."\n"; + if ($numrows > 0) { + print "Found " . $numrows . " records for receipt " . $num . "\n"; // Genere en-tete $objmodel->write_footer($outputlangs); @@ -427,21 +367,17 @@ if ($resql) // Close file $objmodel->close_file(); - print 'File '.$filename.' was generated into dir '.$dirname.'.'."\n"; + print 'File ' . $filename . ' was generated into dir ' . $dirname . '.' . "\n"; - $ret=0; - } - else - { - print "No records found for receipt ".$num."\n"; + $ret = 0; + } else { + print "No records found for receipt " . $num . "\n"; - $ret=0; + $ret = 0; } -} -else -{ +} else { dol_print_error($db); - $ret=-1; + $ret = - 1; } $db->close(); diff --git a/scripts/company/export-contacts-xls-example.php b/scripts/company/export-contacts-xls-example.php index 1850cbece74..856496c0842 100755 --- a/scripts/company/export-contacts-xls-example.php +++ b/scripts/company/export-contacts-xls-example.php @@ -1,8 +1,8 @@ #!/usr/bin/env php - * Copyright (C) 2009-2013 Laurent Destailleur + * Copyright (C) 2004 Rodolphe Quiedeville + * Copyright (C) 2009-2013 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -11,7 +11,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -19,52 +19,49 @@ */ /** - * \file scripts/company/export-contacts-xls-example.php - * \ingroup company - * \brief Script file to export contacts into an Excel file + * \file scripts/company/export-contacts-xls-example.php + * \ingroup company + * \brief Script file to export contacts into an Excel file */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } if (! isset($argv[1]) || ! $argv[1]) { print "Usage: $script_file now\n"; - exit(-1); + exit(- 1); } -$now=$argv[1]; +$now = $argv[1]; +require_once $path . "../../htdocs/master.inc.php"; +// require_once PHP_WRITEEXCEL_PATH."/class.writeexcel_workbook.inc.php"; +// require_once PHP_WRITEEXCEL_PATH."/class.writeexcel_worksheet.inc.php"; -require_once $path."../../htdocs/master.inc.php"; -//require_once PHP_WRITEEXCEL_PATH."/class.writeexcel_workbook.inc.php"; -//require_once PHP_WRITEEXCEL_PATH."/class.writeexcel_worksheet.inc.php"; - -require_once PHPEXCEL_PATH."/PHPExcel.php"; -//require_once PHPEXCEL_PATH."/PHPExcel/Writer/Excel2007.php"; -require_once PHPEXCEL_PATH."/PHPExcel/Writer/Excel5.php"; +require_once PHPEXCEL_PATH . "/PHPExcel.php"; +// require_once PHPEXCEL_PATH."/PHPExcel/Writer/Excel2007.php"; +require_once PHPEXCEL_PATH . "/PHPExcel/Writer/Excel5.php"; // Global variables -$version=DOL_VERSION; -$error=0; - +$version = DOL_VERSION; +$error = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); -$fname = DOL_DATA_ROOT.'/export-contacts.xls'; +$fname = DOL_DATA_ROOT . '/export-contacts.xls'; -//$objPHPExcel = new writeexcel_workbook($fname); +// $objPHPExcel = new writeexcel_workbook($fname); $objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties()->setCreator("Dolibarr script"); $objPHPExcel->getProperties()->setLastModifiedBy("Dolibarr script"); @@ -72,23 +69,21 @@ $objPHPExcel->getProperties()->setTitle("Test Document"); $objPHPExcel->getProperties()->setSubject("Test Document"); $objPHPExcel->getProperties()->setDescription("Test document, generated using PHP classes."); - -//$page = &$objPHPExcel->addworksheet('Export Dolibarr'); +// $page = &$objPHPExcel->addworksheet('Export Dolibarr'); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setTitle('Contacts'); -//$page->set_column(0,4,18); // A +// $page->set_column(0,4,18); // A $sql = "SELECT distinct c.lastname, c.firstname, c.email, s.nom as name"; -$sql.= " FROM ".MAIN_DB_PREFIX."socpeople as c"; -$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on s.rowid = c.fk_soc"; +$sql .= " FROM " . MAIN_DB_PREFIX . "socpeople as c"; +$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as s on s.rowid = c.fk_soc"; -$resql=$db->query($sql); -if ($resql) -{ +$resql = $db->query($sql); +if ($resql) { $num = $db->num_rows($resql); - print "Lines ".$num."\n"; + print "Lines " . $num . "\n"; $i = 0; $j = 1; @@ -98,27 +93,25 @@ if ($resql) $objPHPExcel->getActiveSheet()->SetCellValue('C1', $langs->trans("Email")); $objPHPExcel->getActiveSheet()->SetCellValue('D1', $langs->trans("ThirdPart")); - while ($i < $num) - { + while ($i < $num) { $obj = $db->fetch_object($resql); - $objPHPExcel->getActiveSheet()->SetCellValue('A'.($i+2), $obj->firstname); - $objPHPExcel->getActiveSheet()->SetCellValue('B'.($i+2), $obj->lastname); - $objPHPExcel->getActiveSheet()->SetCellValue('C'.($i+2), $obj->email); - $objPHPExcel->getActiveSheet()->SetCellValue('D'.($i+2), $obj->name); + $objPHPExcel->getActiveSheet()->SetCellValue('A' . ($i + 2), $obj->firstname); + $objPHPExcel->getActiveSheet()->SetCellValue('B' . ($i + 2), $obj->lastname); + $objPHPExcel->getActiveSheet()->SetCellValue('C' . ($i + 2), $obj->email); + $objPHPExcel->getActiveSheet()->SetCellValue('D' . ($i + 2), $obj->name); - $j++; - $i++; + $j ++; + $i ++; } } - -//$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); +// $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); $objWriter->save($fname); -//$objPHPExcel->close(); +// $objPHPExcel->close(); -print 'File '.$fname.' was generated.'."\n"; +print 'File ' . $fname . ' was generated.' . "\n"; exit(0); diff --git a/scripts/company/sync_contacts_dolibarr2ldap.php b/scripts/company/sync_contacts_dolibarr2ldap.php index d70ad7d20b3..9ee59e6cada 100755 --- a/scripts/company/sync_contacts_dolibarr2ldap.php +++ b/scripts/company/sync_contacts_dolibarr2ldap.php @@ -1,8 +1,8 @@ #!/usr/bin/env php - * Copyright (C) 2006-2009 Laurent Destailleur + * Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2006-2009 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -11,7 +11,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -19,74 +19,70 @@ */ /** - * \file scripts/company/sync_contacts_dolibarr2ldap.php - * \ingroup ldap company - * \brief Script to update all contacts from Dolibarr into a LDAP database + * \file scripts/company/sync_contacts_dolibarr2ldap.php + * \ingroup ldap company + * \brief Script to update all contacts from Dolibarr into a LDAP database */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } - -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/contact/class/contact.class.php"; -require_once DOL_DOCUMENT_ROOT."/user/class/user.class.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/contact/class/contact.class.php"; +require_once DOL_DOCUMENT_ROOT . "/user/class/user.class.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/ldap.class.php"; // Global variables -$version=DOL_VERSION; -$error=0; -$confirmed=0; - +$version = DOL_VERSION; +$error = 0; +$confirmed = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); if (! isset($argv[1]) || ! $argv[1]) { - print "Usage: $script_file now [-y]\n"; - exit(-1); + print "Usage: $script_file now [-y]\n"; + exit(- 1); } -foreach($argv as $key => $val) -{ - if (preg_match('/-y$/', $val, $reg)) $confirmed=1; +foreach ($argv as $key => $val) { + if (preg_match('/-y$/', $val, $reg)) + $confirmed = 1; } -$now=$argv[1]; +$now = $argv[1]; print "Mails sending disabled (useless in batch mode)\n"; -$conf->global->MAIN_DISABLE_ALL_MAILS=1; // On bloque les mails +$conf->global->MAIN_DISABLE_ALL_MAILS = 1; // On bloque les mails print "\n"; print "----- Synchronize all records from Dolibarr database:\n"; -print "type=".$conf->db->type."\n"; -print "host=".$conf->db->host."\n"; -print "port=".$conf->db->port."\n"; -print "login=".$conf->db->user."\n"; -//print "pass=".preg_replace('/./i','*',$conf->db->password)."\n"; // Not defined for security reasons -print "database=".$conf->db->name."\n"; +print "type=" . $conf->db->type . "\n"; +print "host=" . $conf->db->host . "\n"; +print "port=" . $conf->db->port . "\n"; +print "login=" . $conf->db->user . "\n"; +// print "pass=".preg_replace('/./i','*',$conf->db->password)."\n"; // Not defined for security reasons +print "database=" . $conf->db->name . "\n"; print "\n"; print "----- To LDAP database:\n"; -print "host=".$conf->global->LDAP_SERVER_HOST."\n"; -print "port=".$conf->global->LDAP_SERVER_PORT."\n"; -print "login=".$conf->global->LDAP_ADMIN_DN."\n"; -print "pass=".preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)."\n"; -print "DN target=".$conf->global->LDAP_CONTACT_DN."\n"; +print "host=" . $conf->global->LDAP_SERVER_HOST . "\n"; +print "port=" . $conf->global->LDAP_SERVER_PORT . "\n"; +print "login=" . $conf->global->LDAP_ADMIN_DN . "\n"; +print "pass=" . preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS) . "\n"; +print "DN target=" . $conf->global->LDAP_CONTACT_DN . "\n"; print "\n"; -if (! $confirmed) -{ +if (! $confirmed) { print "Press a key to confirm...\n"; $input = trim(fgets(STDIN)); print "Warning, this operation may result in data loss if it failed.\n"; @@ -96,28 +92,26 @@ if (! $confirmed) } /* -if (! $conf->global->LDAP_CONTACT_ACTIVE) -{ - print $langs->trans("LDAPSynchronizationNotSetupInDolibarr"); - exit(-1); -} -*/ + * if (! $conf->global->LDAP_CONTACT_ACTIVE) + * { + * print $langs->trans("LDAPSynchronizationNotSetupInDolibarr"); + * exit(-1); + * } + */ $sql = "SELECT rowid"; -$sql .= " FROM ".MAIN_DB_PREFIX."socpeople"; +$sql .= " FROM " . MAIN_DB_PREFIX . "socpeople"; $resql = $db->query($sql); -if ($resql) -{ +if ($resql) { $num = $db->num_rows($resql); $i = 0; - $ldap=new Ldap(); + $ldap = new Ldap(); $ldap->connect_bind(); - while ($i < $num) - { - $ldap->error=""; + while ($i < $num) { + $ldap->error = ""; $obj = $db->fetch_object($resql); @@ -125,37 +119,32 @@ if ($resql) $contact->id = $obj->rowid; $contact->fetch($contact->id); - print $langs->trans("UpdateContact")." rowid=".$contact->id." ".$contact->getFullName($langs); + print $langs->trans("UpdateContact") . " rowid=" . $contact->id . " " . $contact->getFullName($langs); - $oldobject=$contact; + $oldobject = $contact; - $oldinfo=$oldobject->_load_ldap_info(); - $olddn=$oldobject->_load_ldap_dn($oldinfo); + $oldinfo = $oldobject->_load_ldap_info(); + $olddn = $oldobject->_load_ldap_dn($oldinfo); - $info=$contact->_load_ldap_info(); - $dn=$contact->_load_ldap_dn($info); + $info = $contact->_load_ldap_info(); + $dn = $contact->_load_ldap_dn($info); - $result=$ldap->add($dn, $info, $user); // Wil fail if already exists - $result=$ldap->update($dn, $info, $user, $olddn); - if ($result > 0) - { - print " - ".$langs->trans("OK"); - } - else - { - $error++; - print " - ".$langs->trans("KO").' - '.$ldap->error; + $result = $ldap->add($dn, $info, $user); // Wil fail if already exists + $result = $ldap->update($dn, $info, $user, $olddn); + if ($result > 0) { + print " - " . $langs->trans("OK"); + } else { + $error ++; + print " - " . $langs->trans("KO") . ' - ' . $ldap->error; } print "\n"; - $i++; + $i ++; } $ldap->unbind(); $ldap->close(); -} -else -{ +} else { dol_print_error($db); } diff --git a/scripts/contracts/email_expire_services_to_customers.php b/scripts/contracts/email_expire_services_to_customers.php index eeb5967556e..041f9dd0b1c 100755 --- a/scripts/contracts/email_expire_services_to_customers.php +++ b/scripts/contracts/email_expire_services_to_customers.php @@ -1,9 +1,9 @@ #!/usr/bin/env php - * Copyright (C) 2005-2013 Laurent Destailleur - * Copyright (C) 2013 Juanjo Menent + * Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2005-2013 Laurent Destailleur + * Copyright (C) 2013 Juanjo Menent * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -12,7 +12,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -20,297 +20,283 @@ */ /** - * \file scripts/contracts/email_expire_services_to_customers.php - * \ingroup facture - * \brief Script to send a mail to customers with services to expire + * \file scripts/contracts/email_expire_services_to_customers.php + * \ingroup facture + * \brief Script to send a mail to customers with services to expire */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test si mode batch $sapi_type = php_sapi_name(); if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -if (! isset($argv[1]) || ! $argv[1] || ! in_array($argv[1], array('test','confirm')) || ! in_array($argv[2], array('thirdparties','contacts'))) -{ +if (! isset($argv[1]) || ! $argv[1] || ! in_array($argv[1], array('test','confirm')) || ! in_array($argv[2], array('thirdparties','contacts'))) { print "Usage: $script_file (test|confirm) (thirdparties|contacts) [delay] [after]\n"; print "\n"; print "Send an email to customers to remind all contracts services to expire or expired.\n"; print "If you choose 'test' mode, no emails are sent.\n"; print "If you add param delay (nb of days), only services with expired date < today + delay are included.\n"; print "If you add param after (nb of days), only services with expired date >= today + delay are included.\n"; - exit(-1); + exit(- 1); } -$mode=$argv[1]; -$targettype=$argv[2]; +$mode = $argv[1]; +$targettype = $argv[2]; +require $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/CMailFile.class.php"; -require $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php"; - -$langs->loadLangs(array('main', 'contracts')); +$langs->loadLangs(array('main','contracts')); // Global variables -$version=DOL_VERSION; -$error=0; - +$version = DOL_VERSION; +$error = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); -$now=dol_now('tzserver'); -$duration_value=isset($argv[3])?$argv[3]:'none'; -$duration_value2=isset($argv[4])?$argv[4]:'none'; +$now = dol_now('tzserver'); +$duration_value = isset($argv[3]) ? $argv[3] : 'none'; +$duration_value2 = isset($argv[4]) ? $argv[4] : 'none'; $error = 0; -print $script_file." launched with mode ".$mode." default lang=".$langs->defaultlang.(is_numeric($duration_value)?" delay=".$duration_value:"").(is_numeric($duration_value2)?" after=".$duration_value2:"")."\n"; +print $script_file . " launched with mode " . $mode . " default lang=" . $langs->defaultlang . (is_numeric($duration_value) ? " delay=" . $duration_value : "") . (is_numeric($duration_value2) ? " after=" . $duration_value2 : "") . "\n"; -if ($mode != 'confirm') $conf->global->MAIN_DISABLE_ALL_MAILS=1; +if ($mode != 'confirm') + $conf->global->MAIN_DISABLE_ALL_MAILS = 1; -$sql = "SELECT c.ref, cd.date_fin_validite, cd.total_ttc, cd.description as description, p.label as plabel,"; -$sql.= " s.rowid as sid, s.nom as name, s.email, s.default_lang"; -if ($targettype == 'contacts') $sql.= ", sp.rowid as cid, sp.firstname as cfirstname, sp.lastname as clastname, sp.email as cemail"; -$sql .= " FROM ".MAIN_DB_PREFIX."societe AS s"; -if ($targettype == 'contacts') $sql.= ", ".MAIN_DB_PREFIX."socpeople as sp"; -$sql .= ", ".MAIN_DB_PREFIX."contrat AS c"; -$sql .= ", ".MAIN_DB_PREFIX."contratdet AS cd"; -$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product AS p ON p.rowid = cd.fk_product"; +$sql = "SELECT c.ref, cd.date_fin_validite, cd.total_ttc, cd.description as description, p.label as plabel,"; +$sql .= " s.rowid as sid, s.nom as name, s.email, s.default_lang"; +if ($targettype == 'contacts') + $sql .= ", sp.rowid as cid, sp.firstname as cfirstname, sp.lastname as clastname, sp.email as cemail"; +$sql .= " FROM " . MAIN_DB_PREFIX . "societe AS s"; +if ($targettype == 'contacts') + $sql .= ", " . MAIN_DB_PREFIX . "socpeople as sp"; +$sql .= ", " . MAIN_DB_PREFIX . "contrat AS c"; +$sql .= ", " . MAIN_DB_PREFIX . "contratdet AS cd"; +$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product AS p ON p.rowid = cd.fk_product"; $sql .= " WHERE s.rowid = c.fk_soc AND c.rowid = cd.fk_contrat AND c.statut > 0 AND cd.statut < 5"; -if (is_numeric($duration_value2)) $sql.= " AND cd.date_fin_validite >= '".$db->idate(dol_time_plus_duree($now, $duration_value2, "d"))."'"; -if (is_numeric($duration_value)) $sql.= " AND cd.date_fin_validite < '".$db->idate(dol_time_plus_duree($now, $duration_value, "d"))."'"; -if ($targettype == 'contacts') $sql.= " AND s.rowid = sp.fk_soc"; -$sql.= " ORDER BY"; -if ($targettype == 'contacts') $sql.= " sp.email, sp.rowid,"; -$sql.= " s.email ASC, s.rowid ASC, cd.date_fin_validite ASC"; // Order by email to allow one message per email +if (is_numeric($duration_value2)) + $sql .= " AND cd.date_fin_validite >= '" . $db->idate(dol_time_plus_duree($now, $duration_value2, "d")) . "'"; +if (is_numeric($duration_value)) + $sql .= " AND cd.date_fin_validite < '" . $db->idate(dol_time_plus_duree($now, $duration_value, "d")) . "'"; +if ($targettype == 'contacts') + $sql .= " AND s.rowid = sp.fk_soc"; +$sql .= " ORDER BY"; +if ($targettype == 'contacts') + $sql .= " sp.email, sp.rowid,"; +$sql .= " s.email ASC, s.rowid ASC, cd.date_fin_validite ASC"; // Order by email to allow one message per email -//print $sql; -$resql=$db->query($sql); -if ($resql) -{ - $num = $db->num_rows($resql); - $i = 0; - $oldemail = 'none'; $oldsid = 0; $oldcid = 0; $oldlang=''; - $total = 0; $foundtoprocess = 0; - $trackthirdpartiessent = array(); +// print $sql; +$resql = $db->query($sql); +if ($resql) { + $num = $db->num_rows($resql); + $i = 0; + $oldemail = 'none'; + $oldsid = 0; + $oldcid = 0; + $oldlang = ''; + $total = 0; + $foundtoprocess = 0; + $trackthirdpartiessent = array(); - print "We found ".$num." couples (services to expire-".$targettype.") qualified\n"; - dol_syslog("We found ".$num." couples (services to expire-".$targettype.") qualified"); - $message=''; + print "We found " . $num . " couples (services to expire-" . $targettype . ") qualified\n"; + dol_syslog("We found " . $num . " couples (services to expire-" . $targettype . ") qualified"); + $message = ''; - if ($num) - { - while ($i < $num) - { - $obj = $db->fetch_object($resql); + if ($num) { + while ($i < $num) { + $obj = $db->fetch_object($resql); - $newemail=empty($obj->cemail)?$obj->email:$obj->cemail; + $newemail = empty($obj->cemail) ? $obj->email : $obj->cemail; - // Check if this record is a break after previous one - $startbreak=false; - if ($newemail <> $oldemail || $oldemail == 'none') $startbreak=true; - if ($obj->sid && $obj->sid <> $oldsid) $startbreak=true; - if ($obj->cid && $obj->cid <> $oldcid) $startbreak=true; + // Check if this record is a break after previous one + $startbreak = false; + if ($newemail != $oldemail || $oldemail == 'none') + $startbreak = true; + if ($obj->sid && $obj->sid != $oldsid) + $startbreak = true; + if ($obj->cid && $obj->cid != $oldcid) + $startbreak = true; - if ($startbreak) - { - // Break onto sales representative (new email or cid) - if (dol_strlen($oldemail) && $oldemail != 'none' && empty($trackthirdpartiessent[$oldsid.'|'.$oldemail])) - { - envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldtarget, $duration_value); - $trackthirdpartiessent[$oldsid.'|'.$oldemail]='contact id '.$oldcid; - } - else - { - if ($oldemail != 'none') - { - if (empty($trackthirdpartiessent[$oldsid.'|'.$oldemail])) print "- No email sent for '".$oldtarget."', total: ".$total."\n"; - else print "- No email sent for '".$oldtarget."', total: ".$total." (already sent to ".$trackthirdpartiessent[$oldsid.'|'.$oldemail].")\n"; - } - } - $oldemail = $newemail; - $oldsid = $obj->sid; - $oldcid = $obj->cid; - $oldlang = $obj->lang; - $oldtarget=(empty($obj->cfirstname) && empty($obj->clastname))?$obj->name:($obj->clastname." ".$obj->cfirstname); - $message = ''; - $total = 0; - $foundtoprocess = 0; - $target=(empty($obj->cfirstname) && empty($obj->clastname))?$obj->name:($obj->clastname." ".$obj->cfirstname); - //if (empty($newemail)) print "Warning: Customer ".$target." has no email. Notice disabled.\n"; - } + if ($startbreak) { + // Break onto sales representative (new email or cid) + if (dol_strlen($oldemail) && $oldemail != 'none' && empty($trackthirdpartiessent[$oldsid . '|' . $oldemail])) { + envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldtarget, $duration_value); + $trackthirdpartiessent[$oldsid . '|' . $oldemail] = 'contact id ' . $oldcid; + } else { + if ($oldemail != 'none') { + if (empty($trackthirdpartiessent[$oldsid . '|' . $oldemail])) + print "- No email sent for '" . $oldtarget . "', total: " . $total . "\n"; + else + print "- No email sent for '" . $oldtarget . "', total: " . $total . " (already sent to " . $trackthirdpartiessent[$oldsid . '|' . $oldemail] . ")\n"; + } + } + $oldemail = $newemail; + $oldsid = $obj->sid; + $oldcid = $obj->cid; + $oldlang = $obj->lang; + $oldtarget = (empty($obj->cfirstname) && empty($obj->clastname)) ? $obj->name : ($obj->clastname . " " . $obj->cfirstname); + $message = ''; + $total = 0; + $foundtoprocess = 0; + $target = (empty($obj->cfirstname) && empty($obj->clastname)) ? $obj->name : ($obj->clastname . " " . $obj->cfirstname); + // if (empty($newemail)) print "Warning: Customer ".$target." has no email. Notice disabled.\n"; + } - // Define line content - $outputlangs=new Translate('', $conf); - $outputlangs->setDefaultLang(empty($obj->default_lang)?$langs->defaultlang:$obj->default_lang); // By default language of customer + // Define line content + $outputlangs = new Translate('', $conf); + $outputlangs->setDefaultLang(empty($obj->default_lang) ? $langs->defaultlang : $obj->default_lang); // By default language of customer - // Load translation files required by the page - $outputlangs->loadLangs(array("main", "contracts", "bills", "products")); + // Load translation files required by the page + $outputlangs->loadLangs(array("main","contracts","bills","products")); - if (dol_strlen($newemail)) - { - $message .= $outputlangs->trans("Contract")." ".$obj->ref.": ".$outputlangs->trans("Service")." ".dol_concatdesc($obj->plabel, $obj->description)." (".price($obj->total_ttc, 0, $outputlangs, 0, 0, -1, $conf->currency)."), ".$outputlangs->trans("DateEndPlannedShort")." ".dol_print_date($db->jdate($obj->date_fin_validite), 'day')."\n\n"; - dol_syslog("email_expire_services_to_customers.php: ".$newemail." ".$message); - $foundtoprocess++; - } - print "Service to expire ".$obj->ref.", label ".dol_concatdesc($obj->plabel, $obj->description).", due date ".dol_print_date($db->jdate($obj->date_fin_validite), 'day').", customer id ".$obj->sid." ".$obj->name.", ".($obj->cid?"contact id ".$obj->cid." ".$obj->clastname." ".$obj->cfirstname.", ":"")."email ".$newemail.", lang ".$outputlangs->defaultlang.": "; - if (dol_strlen($newemail)) print "qualified."; - else print "disqualified (no email)."; + if (dol_strlen($newemail)) { + $message .= $outputlangs->trans("Contract") . " " . $obj->ref . ": " . $outputlangs->trans("Service") . " " . dol_concatdesc($obj->plabel, $obj->description) . " (" . price($obj->total_ttc, 0, $outputlangs, 0, 0, - 1, $conf->currency) . "), " . $outputlangs->trans("DateEndPlannedShort") . " " . dol_print_date($db->jdate($obj->date_fin_validite), 'day') . "\n\n"; + dol_syslog("email_expire_services_to_customers.php: " . $newemail . " " . $message); + $foundtoprocess ++; + } + print "Service to expire " . $obj->ref . ", label " . dol_concatdesc($obj->plabel, $obj->description) . ", due date " . dol_print_date($db->jdate($obj->date_fin_validite), 'day') . ", customer id " . $obj->sid . " " . $obj->name . ", " . ($obj->cid ? "contact id " . $obj->cid . " " . $obj->clastname . " " . $obj->cfirstname . ", " : "") . "email " . $newemail . ", lang " . $outputlangs->defaultlang . ": "; + if (dol_strlen($newemail)) + print "qualified."; + else + print "disqualified (no email)."; print "\n"; - unset($outputlangs); + unset($outputlangs); - $total += $obj->total_ttc; + $total += $obj->total_ttc; - $i++; - } + $i ++; + } - // Si il reste des envois en buffer - if ($foundtoprocess) - { - if (dol_strlen($oldemail) && $oldemail != 'none' && empty($trackthirdpartiessent[$oldsid.'|'.$oldemail])) // Break onto email (new email) - { - envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldtarget, $duration_value); - $trackthirdpartiessent[$oldsid.'|'.$oldemail]='contact id '.$oldcid; - } - else + // Si il reste des envois en buffer + if ($foundtoprocess) { + if (dol_strlen($oldemail) && $oldemail != 'none' && empty($trackthirdpartiessent[$oldsid . '|' . $oldemail])) // Break onto email (new email) { - if ($oldemail != 'none') - { - if (empty($trackthirdpartiessent[$oldsid.'|'.$oldemail])) print "- No email sent for '".$oldtarget."', total: ".$total."\n"; - else print "- No email sent for '".$oldtarget."', total: ".$total." (already sent to ".$trackthirdpartiessent[$oldsid.'|'.$oldemail].")\n"; - } - } - } - } - else - { - print "No services to expire found\n"; - } + envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldtarget, $duration_value); + $trackthirdpartiessent[$oldsid . '|' . $oldemail] = 'contact id ' . $oldcid; + } else { + if ($oldemail != 'none') { + if (empty($trackthirdpartiessent[$oldsid . '|' . $oldemail])) + print "- No email sent for '" . $oldtarget . "', total: " . $total . "\n"; + else + print "- No email sent for '" . $oldtarget . "', total: " . $total . " (already sent to " . $trackthirdpartiessent[$oldsid . '|' . $oldemail] . ")\n"; + } + } + } + } else { + print "No services to expire found\n"; + } - exit(0); + exit(0); +} else { + dol_print_error($db); + dol_syslog("email_expire_services_to_customers.php: Error"); + + exit(- 1); } -else -{ - dol_print_error($db); - dol_syslog("email_expire_services_to_customers.php: Error"); - - exit(-1); -} - /** - * Send email + * Send email * - * @param string $mode Mode (test | confirm) - * @param string $oldemail Target email - * @param string $message Message to send - * @param string $total Total amount of unpayed invoices - * @param string $userlang Code lang to use for email output. - * @param string $oldtarget Target name - * @param int $duration_value duration value - * @return int <0 if KO, >0 if OK + * @param string $mode + * Mode (test | confirm) + * @param string $oldemail + * Target email + * @param string $message + * Message to send + * @param string $total + * Total amount of unpayed invoices + * @param string $userlang + * Code lang to use for email output. + * @param string $oldtarget + * Target name + * @param int $duration_value + * duration value + * @return int <0 if KO, >0 if OK */ function envoi_mail($mode, $oldemail, $message, $total, $userlang, $oldtarget, $duration_value) { - global $conf,$langs; + global $conf, $langs; - if (getenv('DOL_FORCE_EMAIL_TO')) $oldemail=getenv('DOL_FORCE_EMAIL_TO'); + if (getenv('DOL_FORCE_EMAIL_TO')) + $oldemail = getenv('DOL_FORCE_EMAIL_TO'); - $newlangs=new Translate('', $conf); - $newlangs->setDefaultLang(empty($userlang)?(empty($conf->global->MAIN_LANG_DEFAULT)?'auto':$conf->global->MAIN_LANG_DEFAULT):$userlang); - $newlangs->load("main"); - $newlangs->load("contracts"); + $newlangs = new Translate('', $conf); + $newlangs->setDefaultLang(empty($userlang) ? (empty($conf->global->MAIN_LANG_DEFAULT) ? 'auto' : $conf->global->MAIN_LANG_DEFAULT) : $userlang); + $newlangs->load("main"); + $newlangs->load("contracts"); - if ($duration_value) - { - if ($duration_value > 0) $title=$newlangs->transnoentities("ListOfServicesToExpireWithDuration", $duration_value); - else $title=$newlangs->transnoentities("ListOfServicesToExpireWithDurationNeg", $duration_value); - } - else - $title= $newlangs->transnoentities("ListOfServicesToExpire"); + if ($duration_value) { + if ($duration_value > 0) + $title = $newlangs->transnoentities("ListOfServicesToExpireWithDuration", $duration_value); + else + $title = $newlangs->transnoentities("ListOfServicesToExpireWithDurationNeg", $duration_value); + } else + $title = $newlangs->transnoentities("ListOfServicesToExpire"); - $subject = (empty($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_SUBJECT)?$title:$conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_SUBJECT); - $sendto = $oldemail; - $from = $conf->global->MAIN_MAIL_EMAIL_FROM; - $errorsto = $conf->global->MAIN_MAIL_ERRORS_TO; - $msgishtml = -1; + $subject = (empty($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_SUBJECT) ? $title : $conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_SUBJECT); + $sendto = $oldemail; + $from = $conf->global->MAIN_MAIL_EMAIL_FROM; + $errorsto = $conf->global->MAIN_MAIL_ERRORS_TO; + $msgishtml = - 1; - print "- Send email to '".$oldtarget."' (".$oldemail."), total: ".$total."\n"; - dol_syslog("email_expire_services_to_customers.php: send mail to ".$oldemail); + print "- Send email to '" . $oldtarget . "' (" . $oldemail . "), total: " . $total . "\n"; + dol_syslog("email_expire_services_to_customers.php: send mail to " . $oldemail); - $usehtml=0; - if (dol_textishtml($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_FOOTER)) $usehtml+=1; - if (dol_textishtml($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_HEADER)) $usehtml+=1; + $usehtml = 0; + if (dol_textishtml($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_FOOTER)) + $usehtml += 1; + if (dol_textishtml($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_HEADER)) + $usehtml += 1; - $allmessage=''; - if (! empty($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_HEADER)) - { - $allmessage.=$conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_HEADER; - } - else - { - $allmessage.= "Dear customer".($usehtml?"
\n":"\n").($usehtml?"
\n":"\n"); - $allmessage.= "Please, find a summary of the services contracted by you that are about to expire.".($usehtml?"
\n":"\n").($usehtml?"
\n":"\n"); - } - $allmessage.= $message.($usehtml?"
\n":"\n"); - //$allmessage.= $langs->trans("Total")." = ".price($total,0,$userlang,0,0,-1,$conf->currency).($usehtml?"
\n":"\n"); - if (! empty($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_FOOTER)) - { - $allmessage.=$conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_FOOTER; - if (dol_textishtml($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_FOOTER)) $usehtml+=1; - } + $allmessage = ''; + if (! empty($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_HEADER)) { + $allmessage .= $conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_HEADER; + } else { + $allmessage .= "Dear customer" . ($usehtml ? "
\n" : "\n") . ($usehtml ? "
\n" : "\n"); + $allmessage .= "Please, find a summary of the services contracted by you that are about to expire." . ($usehtml ? "
\n" : "\n") . ($usehtml ? "
\n" : "\n"); + } + $allmessage .= $message . ($usehtml ? "
\n" : "\n"); + // $allmessage.= $langs->trans("Total")." = ".price($total,0,$userlang,0,0,-1,$conf->currency).($usehtml?"
\n":"\n"); + if (! empty($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_FOOTER)) { + $allmessage .= $conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_FOOTER; + if (dol_textishtml($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_CUSTOMERS_FOOTER)) + $usehtml += 1; + } - $mail = new CMailFile( - $subject, - $sendto, - $from, - $allmessage, - array(), - array(), - array(), - '', - '', - 0, - $msgishtml - ); + $mail = new CMailFile($subject, $sendto, $from, $allmessage, array(), array(), array(), '', '', 0, $msgishtml); - $mail->errors_to = $errorsto; + $mail->errors_to = $errorsto; - // Send or not email - if ($mode == 'confirm') - { - $result=$mail->sendfile(); - if (! $result) - { - print "Error sending email ".$mail->error."\n"; - dol_syslog("Error sending email ".$mail->error."\n"); - } - } - else - { - print "No email sent (test mode)\n"; - dol_syslog("No email sent (test mode)"); - $mail->dump_mail(); - $result=1; - } + // Send or not email + if ($mode == 'confirm') { + $result = $mail->sendfile(); + if (! $result) { + print "Error sending email " . $mail->error . "\n"; + dol_syslog("Error sending email " . $mail->error . "\n"); + } + } else { + print "No email sent (test mode)\n"; + dol_syslog("No email sent (test mode)"); + $mail->dump_mail(); + $result = 1; + } - unset($newlangs); - if ($result) - { - return 1; - } - else - { - return -1; - } + unset($newlangs); + if ($result) { + return 1; + } else { + return - 1; + } } diff --git a/scripts/contracts/email_expire_services_to_representatives.php b/scripts/contracts/email_expire_services_to_representatives.php index 19b57c10fc5..be63d4804f9 100755 --- a/scripts/contracts/email_expire_services_to_representatives.php +++ b/scripts/contracts/email_expire_services_to_representatives.php @@ -1,9 +1,9 @@ #!/usr/bin/env php - * Copyright (C) 2005-2013 Laurent Destailleur - * Copyright (C) 2013 Juanjo Menent + * Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2005-2013 Laurent Destailleur + * Copyright (C) 2013 Juanjo Menent * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -12,7 +12,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -20,263 +20,241 @@ */ /** - * \file scripts/contracts/email_expire_services_to_representatives.php - * \ingroup contracts - * \brief Script to send a mail to dolibarr users linked to companies with services to expire + * \file scripts/contracts/email_expire_services_to_representatives.php + * \ingroup contracts + * \brief Script to send a mail to dolibarr users linked to companies with services to expire */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test si mode batch $sapi_type = php_sapi_name(); if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -if (! isset($argv[1]) || ! $argv[1] || ! in_array($argv[1], array('test','confirm'))) -{ +if (! isset($argv[1]) || ! $argv[1] || ! in_array($argv[1], array('test','confirm'))) { print "Usage: $script_file (test|confirm) [delay]\n"; print "\n"; print "Send an email to remind all contracts services to expire, to users that are sale representative for.\n"; print "If you choose 'test' mode, no emails are sent.\n"; print "If you add a delay (nb of days), only services with expired date < today + delay are included.\n"; - exit(-1); + exit(- 1); } -$mode=$argv[1]; +$mode = $argv[1]; +require $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/CMailFile.class.php"; -require $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php"; - -$langs->loadLangs(array('main', 'contracts')); +$langs->loadLangs(array('main','contracts')); // Global variables -$version=DOL_VERSION; -$error=0; - +$version = DOL_VERSION; +$error = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); -$now=dol_now('tzserver'); -$duration_value=isset($argv[2])?$argv[2]:'none'; +$now = dol_now('tzserver'); +$duration_value = isset($argv[2]) ? $argv[2] : 'none'; -print $script_file." launched with mode ".$mode." default lang=".$langs->defaultlang.(is_numeric($duration_value)?" delay=".$duration_value:"")."\n"; +print $script_file . " launched with mode " . $mode . " default lang=" . $langs->defaultlang . (is_numeric($duration_value) ? " delay=" . $duration_value : "") . "\n"; -if ($mode != 'confirm') $conf->global->MAIN_DISABLE_ALL_MAILS=1; +if ($mode != 'confirm') + $conf->global->MAIN_DISABLE_ALL_MAILS = 1; -$sql = "SELECT DISTINCT c.ref, c.fk_soc, cd.date_fin_validite, cd.total_ttc, cd.description as description, p.label as plabel, s.rowid, s.nom as name, s.email, s.default_lang,"; -$sql.= " u.rowid as uid, u.lastname, u.firstname, u.email, u.lang"; -$sql.= " FROM ".MAIN_DB_PREFIX."societe AS s, ".MAIN_DB_PREFIX."contrat AS c, ".MAIN_DB_PREFIX."contratdet AS cd"; -$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product AS p ON p.rowid = cd.fk_product, ".MAIN_DB_PREFIX."societe_commerciaux AS sc, ".MAIN_DB_PREFIX."user AS u"; -$sql.= " WHERE s.rowid = c.fk_soc AND c.rowid = cd.fk_contrat AND c.statut > 0 AND cd.statut<5"; -if (is_numeric($duration_value)) $sql .= " AND cd.date_fin_validite < '".$db->idate(dol_time_plus_duree($now, $duration_value, "d"))."'"; -$sql.= " AND sc.fk_soc = s.rowid AND sc.fk_user = u.rowid"; -$sql .= " ORDER BY u.email ASC, s.rowid ASC, c.ref ASC"; // Order by email to allow one message per email +$sql = "SELECT DISTINCT c.ref, c.fk_soc, cd.date_fin_validite, cd.total_ttc, cd.description as description, p.label as plabel, s.rowid, s.nom as name, s.email, s.default_lang,"; +$sql .= " u.rowid as uid, u.lastname, u.firstname, u.email, u.lang"; +$sql .= " FROM " . MAIN_DB_PREFIX . "societe AS s, " . MAIN_DB_PREFIX . "contrat AS c, " . MAIN_DB_PREFIX . "contratdet AS cd"; +$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product AS p ON p.rowid = cd.fk_product, " . MAIN_DB_PREFIX . "societe_commerciaux AS sc, " . MAIN_DB_PREFIX . "user AS u"; +$sql .= " WHERE s.rowid = c.fk_soc AND c.rowid = cd.fk_contrat AND c.statut > 0 AND cd.statut<5"; +if (is_numeric($duration_value)) + $sql .= " AND cd.date_fin_validite < '" . $db->idate(dol_time_plus_duree($now, $duration_value, "d")) . "'"; +$sql .= " AND sc.fk_soc = s.rowid AND sc.fk_user = u.rowid"; +$sql .= " ORDER BY u.email ASC, s.rowid ASC, c.ref ASC"; // Order by email to allow one message per email -//print $sql; -$resql=$db->query($sql); -if ($resql) -{ - $num = $db->num_rows($resql); - $i = 0; - $oldemail = 'none'; $olduid = 0; $oldlang=''; - $total = 0; $foundtoprocess = 0; - print "We found ".$num." couples (services to expire - sale representative) qualified\n"; - dol_syslog("We found ".$num." couples (services to expire - sale representative) qualified"); - $message=''; +// print $sql; +$resql = $db->query($sql); +if ($resql) { + $num = $db->num_rows($resql); + $i = 0; + $oldemail = 'none'; + $olduid = 0; + $oldlang = ''; + $total = 0; + $foundtoprocess = 0; + print "We found " . $num . " couples (services to expire - sale representative) qualified\n"; + dol_syslog("We found " . $num . " couples (services to expire - sale representative) qualified"); + $message = ''; - if ($num) - { - while ($i < $num) - { - $obj = $db->fetch_object($resql); + if ($num) { + while ($i < $num) { + $obj = $db->fetch_object($resql); - if (($obj->email <> $oldemail || $obj->uid <> $olduid) || $oldemail == 'none') - { - // Break onto sales representative (new email or uid) - if (dol_strlen($oldemail) && $oldemail != 'none') - { - envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldsalerepresentative, $duration_value); - } - else - { - if ($oldemail != 'none') print "- No email sent for ".$oldsalerepresentative.", total: ".$total."\n"; - } - $oldemail = $obj->email; - $olduid = $obj->uid; - $oldlang = $obj->lang; - $oldsalerepresentative=dolGetFirstLastname($obj->firstname, $obj->lastname); - $message = ''; - $total = 0; - $foundtoprocess = 0; - $salerepresentative=dolGetFirstLastname($obj->firstname, $obj->lastname); - if (empty($obj->email)) print "Warning: Sale representative ".$salerepresentative." has no email. Notice disabled.\n"; - } + if (($obj->email != $oldemail || $obj->uid != $olduid) || $oldemail == 'none') { + // Break onto sales representative (new email or uid) + if (dol_strlen($oldemail) && $oldemail != 'none') { + envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldsalerepresentative, $duration_value); + } else { + if ($oldemail != 'none') + print "- No email sent for " . $oldsalerepresentative . ", total: " . $total . "\n"; + } + $oldemail = $obj->email; + $olduid = $obj->uid; + $oldlang = $obj->lang; + $oldsalerepresentative = dolGetFirstLastname($obj->firstname, $obj->lastname); + $message = ''; + $total = 0; + $foundtoprocess = 0; + $salerepresentative = dolGetFirstLastname($obj->firstname, $obj->lastname); + if (empty($obj->email)) + print "Warning: Sale representative " . $salerepresentative . " has no email. Notice disabled.\n"; + } - // Define line content - $outputlangs=new Translate('', $conf); - $outputlangs->setDefaultLang(empty($obj->lang)?$langs->defaultlang:$obj->lang); // By default language of sale representative + // Define line content + $outputlangs = new Translate('', $conf); + $outputlangs->setDefaultLang(empty($obj->lang) ? $langs->defaultlang : $obj->lang); // By default language of sale representative - // Load translation files required by the page - $outputlangs->loadLangs(array("main", "contracts", "bills", "products")); + // Load translation files required by the page + $outputlangs->loadLangs(array("main","contracts","bills","products")); - if (dol_strlen($obj->email)) - { - $message .= $outputlangs->trans("Contract")." ".$obj->ref.": ".$langs->trans("Service")." ".dol_concatdesc($obj->plabel, $obj->description)." (".price($obj->total_ttc, 0, $outputlangs, 0, 0, -1, $conf->currency).") ".$obj->name.", ".$outputlangs->trans("DateEndPlannedShort")." ".dol_print_date($db->jdate($obj->date_fin_validite), 'day')."\n\n"; - dol_syslog("email_expire_services_to_representatives.php: ".$obj->email); - $foundtoprocess++; - } - print "Service to expire ".$obj->ref.", label ".dol_concatdesc($obj->plabel, $obj->description).", due date ".dol_print_date($db->jdate($obj->date_fin_validite), 'day')." (linked to company ".$obj->name.", sale representative ".dolGetFirstLastname($obj->firstname, $obj->lastname).", email ".$obj->email."): "; - if (dol_strlen($obj->email)) print "qualified."; - else print "disqualified (no email)."; + if (dol_strlen($obj->email)) { + $message .= $outputlangs->trans("Contract") . " " . $obj->ref . ": " . $langs->trans("Service") . " " . dol_concatdesc($obj->plabel, $obj->description) . " (" . price($obj->total_ttc, 0, $outputlangs, 0, 0, - 1, $conf->currency) . ") " . $obj->name . ", " . $outputlangs->trans("DateEndPlannedShort") . " " . dol_print_date($db->jdate($obj->date_fin_validite), 'day') . "\n\n"; + dol_syslog("email_expire_services_to_representatives.php: " . $obj->email); + $foundtoprocess ++; + } + print "Service to expire " . $obj->ref . ", label " . dol_concatdesc($obj->plabel, $obj->description) . ", due date " . dol_print_date($db->jdate($obj->date_fin_validite), 'day') . " (linked to company " . $obj->name . ", sale representative " . dolGetFirstLastname($obj->firstname, $obj->lastname) . ", email " . $obj->email . "): "; + if (dol_strlen($obj->email)) + print "qualified."; + else + print "disqualified (no email)."; print "\n"; unset($outputlangs); $total += $obj->total_ttc; - $i++; - } + $i ++; + } - // Si il reste des envois en buffer - if ($foundtoprocess) - { - if (dol_strlen($oldemail) && $oldemail != 'none') // Break onto email (new email) - { - envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldsalerepresentative, $duration_value); - } - else + // Si il reste des envois en buffer + if ($foundtoprocess) { + if (dol_strlen($oldemail) && $oldemail != 'none') // Break onto email (new email) { - if ($oldemail != 'none') print "- No email sent for ".$oldsalerepresentative.", total: ".$total."\n"; - } - } - } - else - { - print "No services to expire (for companies linked to a particular commercial dolibarr user) found\n"; - } + envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldsalerepresentative, $duration_value); + } else { + if ($oldemail != 'none') + print "- No email sent for " . $oldsalerepresentative . ", total: " . $total . "\n"; + } + } + } else { + print "No services to expire (for companies linked to a particular commercial dolibarr user) found\n"; + } - exit(0); + exit(0); +} else { + dol_print_error($db); + dol_syslog("email_expire_services_to_representatives.php: Error"); + + exit(- 1); } -else -{ - dol_print_error($db); - dol_syslog("email_expire_services_to_representatives.php: Error"); - - exit(-1); -} - /** - * Send email + * Send email * - * @param string $mode Mode (test | confirm) - * @param string $oldemail Old email - * @param string $message Message to send - * @param string $total Total amount of unpayed invoices - * @param string $userlang Code lang to use for email output. - * @param string $oldsalerepresentative Old sale representative - * @param int $duration_value duration value - * @return int <0 if KO, >0 if OK + * @param string $mode + * Mode (test | confirm) + * @param string $oldemail + * Old email + * @param string $message + * Message to send + * @param string $total + * Total amount of unpayed invoices + * @param string $userlang + * Code lang to use for email output. + * @param string $oldsalerepresentative + * Old sale representative + * @param int $duration_value + * duration value + * @return int <0 if KO, >0 if OK */ function envoi_mail($mode, $oldemail, $message, $total, $userlang, $oldsalerepresentative, $duration_value) { - global $conf,$langs; + global $conf, $langs; - if (getenv('DOL_FORCE_EMAIL_TO')) $oldemail=getenv('DOL_FORCE_EMAIL_TO'); + if (getenv('DOL_FORCE_EMAIL_TO')) + $oldemail = getenv('DOL_FORCE_EMAIL_TO'); - $newlangs=new Translate('', $conf); - $newlangs->setDefaultLang(empty($userlang)?(empty($conf->global->MAIN_LANG_DEFAULT)?'auto':$conf->global->MAIN_LANG_DEFAULT):$userlang); - $newlangs->load("main"); - $newlangs->load("contracts"); + $newlangs = new Translate('', $conf); + $newlangs->setDefaultLang(empty($userlang) ? (empty($conf->global->MAIN_LANG_DEFAULT) ? 'auto' : $conf->global->MAIN_LANG_DEFAULT) : $userlang); + $newlangs->load("main"); + $newlangs->load("contracts"); - if ($duration_value) - { - if ($duration_value > 0) $title=$newlangs->transnoentities("ListOfServicesToExpireWithDuration", $duration_value); - else $title=$newlangs->transnoentities("ListOfServicesToExpireWithDurationNeg", $duration_value); - } - else - $title= $newlangs->transnoentities("ListOfServicesToExpire"); + if ($duration_value) { + if ($duration_value > 0) + $title = $newlangs->transnoentities("ListOfServicesToExpireWithDuration", $duration_value); + else + $title = $newlangs->transnoentities("ListOfServicesToExpireWithDurationNeg", $duration_value); + } else + $title = $newlangs->transnoentities("ListOfServicesToExpire"); - $subject = (empty($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_SUBJECT)?$title:$conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_SUBJECT); - $sendto = $oldemail; - $from = $conf->global->MAIN_MAIL_EMAIL_FROM; - $errorsto = $conf->global->MAIN_MAIL_ERRORS_TO; - $msgishtml = -1; + $subject = (empty($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_SUBJECT) ? $title : $conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_SUBJECT); + $sendto = $oldemail; + $from = $conf->global->MAIN_MAIL_EMAIL_FROM; + $errorsto = $conf->global->MAIN_MAIL_ERRORS_TO; + $msgishtml = - 1; - print "- Send email for ".$oldsalerepresentative." (".$oldemail."), total: ".$total."\n"; - dol_syslog("email_expire_services_to_representatives.php: send mail to ".$oldemail); + print "- Send email for " . $oldsalerepresentative . " (" . $oldemail . "), total: " . $total . "\n"; + dol_syslog("email_expire_services_to_representatives.php: send mail to " . $oldemail); - $usehtml=0; - if (dol_textishtml($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_FOOTER)) $usehtml+=1; - if (dol_textishtml($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_HEADER)) $usehtml+=1; + $usehtml = 0; + if (dol_textishtml($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_FOOTER)) + $usehtml += 1; + if (dol_textishtml($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_HEADER)) + $usehtml += 1; - $allmessage=''; - if (! empty($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_HEADER)) - { - $allmessage.=$conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_HEADER; - } - else - { - $allmessage.= $title.($usehtml?"
\n":"\n").($usehtml?"
\n":"\n"); - $allmessage.= $newlangs->transnoentities("NoteListOfYourExpiredServices").($usehtml?"
\n":"\n").($usehtml?"
\n":"\n"); - } - $allmessage.= $message.($usehtml?"
\n":"\n"); - $allmessage.= $langs->trans("Total")." = ".price($total, 0, $userlang, 0, 0, -1, $conf->currency).($usehtml?"
\n":"\n"); - if (! empty($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_FOOTER)) - { - $allmessage.=$conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_FOOTER; - if (dol_textishtml($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_FOOTER)) $usehtml+=1; - } + $allmessage = ''; + if (! empty($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_HEADER)) { + $allmessage .= $conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_HEADER; + } else { + $allmessage .= $title . ($usehtml ? "
\n" : "\n") . ($usehtml ? "
\n" : "\n"); + $allmessage .= $newlangs->transnoentities("NoteListOfYourExpiredServices") . ($usehtml ? "
\n" : "\n") . ($usehtml ? "
\n" : "\n"); + } + $allmessage .= $message . ($usehtml ? "
\n" : "\n"); + $allmessage .= $langs->trans("Total") . " = " . price($total, 0, $userlang, 0, 0, - 1, $conf->currency) . ($usehtml ? "
\n" : "\n"); + if (! empty($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_FOOTER)) { + $allmessage .= $conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_FOOTER; + if (dol_textishtml($conf->global->SCRIPT_EMAIL_EXPIRE_SERVICES_SALESREPRESENTATIVES_FOOTER)) + $usehtml += 1; + } - $mail = new CMailFile( - $subject, - $sendto, - $from, - $allmessage, - array(), - array(), - array(), - '', - '', - 0, - $msgishtml - ); + $mail = new CMailFile($subject, $sendto, $from, $allmessage, array(), array(), array(), '', '', 0, $msgishtml); - $mail->errors_to = $errorsto; + $mail->errors_to = $errorsto; - // Send or not email - if ($mode == 'confirm') - { - $result=$mail->sendfile(); - if (! $result) - { - print "Error sending email ".$mail->error."\n"; - dol_syslog("Error sending email ".$mail->error."\n"); - } - } - else - { - print "No email sent (test mode)\n"; - dol_syslog("No email sent (test mode)"); - $mail->dump_mail(); - $result=1; - } + // Send or not email + if ($mode == 'confirm') { + $result = $mail->sendfile(); + if (! $result) { + print "Error sending email " . $mail->error . "\n"; + dol_syslog("Error sending email " . $mail->error . "\n"); + } + } else { + print "No email sent (test mode)\n"; + dol_syslog("No email sent (test mode)"); + $mail->dump_mail(); + $result = 1; + } - if ($result) - { - return 1; - } - else - { - return -1; - } + if ($result) { + return 1; + } else { + return - 1; + } } diff --git a/scripts/cron/cron_run_jobs.php b/scripts/cron/cron_run_jobs.php index b115f4bbea9..54559e28c19 100755 --- a/scripts/cron/cron_run_jobs.php +++ b/scripts/cron/cron_run_jobs.php @@ -1,7 +1,8 @@ #!/usr/bin/env php * * This program is free software; you can redistribute it and/or modify @@ -11,7 +12,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -19,255 +20,231 @@ */ /** - * \file scripts/cron/cron_run_jobs.php - * \ingroup cron - * \brief Execute pendings jobs + * \file scripts/cron/cron_run_jobs.php + * \ingroup cron + * \brief Execute pendings jobs */ -if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Disables token renewal -if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); -if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); -if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); -if (! defined('NOLOGIN')) define('NOLOGIN', '1'); -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); - +if (! defined('NOTOKENRENEWAL')) + define('NOTOKENRENEWAL', '1'); // Disables token renewal +if (! defined('NOREQUIREMENU')) + define('NOREQUIREMENU', '1'); +if (! defined('NOREQUIREHTML')) + define('NOREQUIREHTML', '1'); +if (! defined('NOREQUIREAJAX')) + define('NOREQUIREAJAX', '1'); +if (! defined('NOLOGIN')) + define('NOLOGIN', '1'); +// if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Error if Web mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/cron/class/cronjob.class.php"; -require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/cron/class/cronjob.class.php"; +require_once DOL_DOCUMENT_ROOT . '/user/class/user.class.php'; // Check parameters if (! isset($argv[1]) || ! $argv[1]) { usage($path, $script_file); - exit(-1); + exit(- 1); } -$key=$argv[1]; +$key = $argv[1]; if (! isset($argv[2]) || ! $argv[2]) { usage($path, $script_file); - exit(-1); + exit(- 1); } -$userlogin=$argv[2]; - +$userlogin = $argv[2]; // Global variables -$version=DOL_VERSION; -$error=0; - - +$version = DOL_VERSION; +$error = 0; /* * Main */ -$langs->loadLangs(array('main', 'dict')); +$langs->loadLangs(array('main','dict')); // current date -$now=dol_now(); +$now = dol_now(); @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." ***** userlogin=" . $userlogin . " ***** " . dol_print_date($now, 'dayhourrfc') . " *****\n"; +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " ***** userlogin=" . $userlogin . " ***** " . dol_print_date($now, 'dayhourrfc') . " *****\n"; // Check module cron is activated -if (empty($conf->cron->enabled)) -{ +if (empty($conf->cron->enabled)) { print "Error: module Scheduled jobs (cron) not activated\n"; - exit(-1); + exit(- 1); } // Check module cron is activated -if (empty($conf->cron->enabled)) -{ +if (empty($conf->cron->enabled)) { print "Error: module Scheduled jobs (cron) not activated\n"; - exit(-1); + exit(- 1); } // Check security key -if ($key != $conf->global->CRON_KEY) -{ +if ($key != $conf->global->CRON_KEY) { print "Error: securitykey is wrong\n"; - exit(-1); + exit(- 1); } // If param userlogin is reserved word 'firstadmin' -if ($userlogin == 'firstadmin') -{ - $sql='SELECT login, entity from '.MAIN_DB_PREFIX.'user WHERE admin = 1 and statut = 1 ORDER BY entity LIMIT 1'; - $resql=$db->query($sql); - if ($resql) - { - $obj=$db->fetch_object($resql); - if ($obj) - { - $userlogin = $obj->login; - echo "First admin user found is login '".$userlogin."', entity ".$obj->entity."\n"; - } - } - else dol_print_error($db); +if ($userlogin == 'firstadmin') { + $sql = 'SELECT login, entity from ' . MAIN_DB_PREFIX . 'user WHERE admin = 1 and statut = 1 ORDER BY entity LIMIT 1'; + $resql = $db->query($sql); + if ($resql) { + $obj = $db->fetch_object($resql); + if ($obj) { + $userlogin = $obj->login; + echo "First admin user found is login '" . $userlogin . "', entity " . $obj->entity . "\n"; + } + } else + dol_print_error($db); } // Check user login -$user=new User($db); -$result=$user->fetch('', $userlogin); -if ($result < 0) -{ - echo "User Error: ".$user->error; - dol_syslog("cron_run_jobs.php:: User Error:".$user->error, LOG_ERR); - exit(-1); -} -else -{ - if (empty($user->id)) - { - echo "User login: ".$userlogin." does not exists"; - dol_syslog("User login:".$userlogin." does not exists", LOG_ERR); - exit(-1); +$user = new User($db); +$result = $user->fetch('', $userlogin); +if ($result < 0) { + echo "User Error: " . $user->error; + dol_syslog("cron_run_jobs.php:: User Error:" . $user->error, LOG_ERR); + exit(- 1); +} else { + if (empty($user->id)) { + echo "User login: " . $userlogin . " does not exists"; + dol_syslog("User login:" . $userlogin . " does not exists", LOG_ERR); + exit(- 1); } } $user->getrights(); -if (isset($argv[3]) || $argv[3]) -{ +if (isset($argv[3]) || $argv[3]) { $id = $argv[3]; } // create a jobs object $object = new Cronjob($db); -$filter=array(); +$filter = array(); if (! empty($id)) { - if (! is_numeric($id)) - { + if (! is_numeric($id)) { echo "Error: Bad value for parameter job id"; dol_syslog("cron_run_jobs.php Bad value for parameter job id", LOG_WARNING); - exit; + exit(); } - $filter['t.rowid']=$id; + $filter['t.rowid'] = $id; } $result = $object->fetch_all('ASC,ASC,ASC', 't.priority,t.entity,t.rowid', 0, 0, 1, $filter, 0); -if ($result<0) -{ - echo "Error: ".$object->error; - dol_syslog("cron_run_jobs.php:: fetch Error ".$object->error, LOG_ERR); - exit(-1); +if ($result < 0) { + echo "Error: " . $object->error; + dol_syslog("cron_run_jobs.php:: fetch Error " . $object->error, LOG_ERR); + exit(- 1); } - $qualifiedjobs = array(); -foreach($object->lines as $val) -{ - if (! verifCond($val->test)) continue; +foreach ($object->lines as $val) { + if (! verifCond($val->test)) + continue; $qualifiedjobs[] = $val; } // TODO Duplicate. This sequence of code must be shared with code into public/cron/cron_run_jobs.php php page. -$nbofjobs=count($qualifiedjobs); -$nbofjobslaunchedok=0; -$nbofjobslaunchedko=0; +$nbofjobs = count($qualifiedjobs); +$nbofjobslaunchedok = 0; +$nbofjobslaunchedko = 0; -if (is_array($qualifiedjobs) && (count($qualifiedjobs)>0)) -{ +if (is_array($qualifiedjobs) && (count($qualifiedjobs) > 0)) { // Loop over job - foreach($qualifiedjobs as $line) - { - dol_syslog("cron_run_jobs.php cronjobid: ".$line->id." priority=".$line->priority." entity=".$line->entity." label=".$line->label, LOG_DEBUG); + foreach ($qualifiedjobs as $line) { + dol_syslog("cron_run_jobs.php cronjobid: " . $line->id . " priority=" . $line->priority . " entity=" . $line->entity . " label=" . $line->label, LOG_DEBUG); - echo "cron_run_jobs.php cronjobid: ".$line->id." priority=".$line->priority." entity=".$line->entity." label=".$line->label; + echo "cron_run_jobs.php cronjobid: " . $line->id . " priority=" . $line->priority . " entity=" . $line->entity . " label=" . $line->label; - //If date_next_jobs is less of current date, execute the program, and store the execution time of the next execution in database - if (($line->datenextrun < $now) && (empty($line->datestart) || $line->datestart <= $now) && (empty($line->dateend) || $line->dateend >= $now)) - { + // If date_next_jobs is less of current date, execute the program, and store the execution time of the next execution in database + if (($line->datenextrun < $now) && (empty($line->datestart) || $line->datestart <= $now) && (empty($line->dateend) || $line->dateend >= $now)) { echo " - qualified"; - dol_syslog("cron_run_jobs.php line->datenextrun:".dol_print_date($line->datenextrun, 'dayhourrfc')." line->datestart:".dol_print_date($line->datestart, 'dayhourrfc')." line->dateend:".dol_print_date($line->dateend, 'dayhourrfc')." now:".dol_print_date($now, 'dayhourrfc')); + dol_syslog("cron_run_jobs.php line->datenextrun:" . dol_print_date($line->datenextrun, 'dayhourrfc') . " line->datestart:" . dol_print_date($line->datestart, 'dayhourrfc') . " line->dateend:" . dol_print_date($line->dateend, 'dayhourrfc') . " now:" . dol_print_date($now, 'dayhourrfc')); - $cronjob=new Cronjob($db); - $result=$cronjob->fetch($line->id); - if ($result < 0) - { - echo "Error cronjobid: ".$line->id." cronjob->fetch: ".$cronjob->error."\n"; - echo "Failed to fetch job ".$line->id."\n"; - dol_syslog("cron_run_jobs.php::fetch Error ".$cronjob->error, LOG_ERR); - exit(-1); + $cronjob = new Cronjob($db); + $result = $cronjob->fetch($line->id); + if ($result < 0) { + echo "Error cronjobid: " . $line->id . " cronjob->fetch: " . $cronjob->error . "\n"; + echo "Failed to fetch job " . $line->id . "\n"; + dol_syslog("cron_run_jobs.php::fetch Error " . $cronjob->error, LOG_ERR); + exit(- 1); } // Execute job - $result=$cronjob->run_jobs($userlogin); - if ($result < 0) - { - echo "Error cronjobid: ".$line->id." cronjob->run_job: ".$cronjob->error."\n"; + $result = $cronjob->run_jobs($userlogin); + if ($result < 0) { + echo "Error cronjobid: " . $line->id . " cronjob->run_job: " . $cronjob->error . "\n"; echo "At least one job failed. Go on menu Home-Setup-Admin tools to see result for each job.\n"; echo "You can also enable module Log if not yet enabled, run again and take a look into dolibarr.log file\n"; - dol_syslog("cron_run_jobs.php::run_jobs Error ".$cronjob->error, LOG_ERR); - $nbofjobslaunchedko++; - } - else - { - $nbofjobslaunchedok++; + dol_syslog("cron_run_jobs.php::run_jobs Error " . $cronjob->error, LOG_ERR); + $nbofjobslaunchedko ++; + } else { + $nbofjobslaunchedok ++; } - echo " - result of run_jobs = ".$result; + echo " - result of run_jobs = " . $result; // we re-program the next execution and stores the last execution time for this job - $result=$cronjob->reprogram_jobs($userlogin, $now); - if ($result<0) - { - echo "Error cronjobid: ".$line->id." cronjob->reprogram_job: ".$cronjob->error."\n"; + $result = $cronjob->reprogram_jobs($userlogin, $now); + if ($result < 0) { + echo "Error cronjobid: " . $line->id . " cronjob->reprogram_job: " . $cronjob->error . "\n"; echo "Enable module Log if not yet enabled, run again and take a look into dolibarr.log file\n"; - dol_syslog("cron_run_jobs.php::reprogram_jobs Error ".$cronjob->error, LOG_ERR); - exit(-1); + dol_syslog("cron_run_jobs.php::reprogram_jobs Error " . $cronjob->error, LOG_ERR); + exit(- 1); } echo " - reprogrammed\n"; - } - else - { + } else { echo " - not qualified\n"; - dol_syslog("cron_run_jobs.php job not qualified line->datenextrun:".dol_print_date($line->datenextrun, 'dayhourrfc')." line->datestart:".dol_print_date($line->datestart, 'dayhourrfc')." line->dateend:".dol_print_date($line->dateend, 'dayhourrfc')." now:".dol_print_date($now, 'dayhourrfc')); + dol_syslog("cron_run_jobs.php job not qualified line->datenextrun:" . dol_print_date($line->datenextrun, 'dayhourrfc') . " line->datestart:" . dol_print_date($line->datestart, 'dayhourrfc') . " line->dateend:" . dol_print_date($line->dateend, 'dayhourrfc') . " now:" . dol_print_date($now, 'dayhourrfc')); } } -} -else -{ +} else { echo "cron_run_jobs.php no qualified job found\n"; } $db->close(); -if ($nbofjobslaunchedko) exit(1); +if ($nbofjobslaunchedko) + exit(1); exit(0); - - /** * script cron usage * - * @param string $path path - * @param string $script_file filename + * @param string $path + * path + * @param string $script_file + * filename * @return void */ function usage($path, $script_file) { global $conf; - print "Usage: ".$script_file." securitykey userlogin|'firstadmin' [cronjobid]\n"; + print "Usage: " . $script_file . " securitykey userlogin|'firstadmin' [cronjobid]\n"; print "The script return 0 when everything worked successfully.\n"; print "\n"; print "On Linux system, you can have cron jobs ran automatically by adding an entry into cron.\n"; print "For example, to run pending tasks each day at 3:30, you can add this line:\n"; - print "30 3 * * * ".$path.$script_file." securitykey userlogin > ".DOL_DATA_ROOT."/".$script_file.".log\n"; + print "30 3 * * * " . $path . $script_file . " securitykey userlogin > " . DOL_DATA_ROOT . "/" . $script_file . ".log\n"; print "For example, to run pending tasks every 5mn, you can add this line:\n"; - print "*/5 * * * * ".$path.$script_file." securitykey userlogin > ".DOL_DATA_ROOT."/".$script_file.".log\n"; + print "*/5 * * * * " . $path . $script_file . " securitykey userlogin > " . DOL_DATA_ROOT . "/" . $script_file . ".log\n"; } diff --git a/scripts/emailings/mailing-send.php b/scripts/emailings/mailing-send.php index f3d88592dc4..0e161a9c9cc 100755 --- a/scripts/emailings/mailing-send.php +++ b/scripts/emailings/mailing-send.php @@ -1,9 +1,9 @@ #!/usr/bin/env php - * Copyright (C) 2005-2013 Laurent Destailleur - * Copyright (C) 2005-2016 Regis Houssin + * Copyright (C) 2004 Rodolphe Quiedeville + * Copyright (C) 2005-2013 Laurent Destailleur + * Copyright (C) 2005-2016 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -12,386 +12,347 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - /** - * \file scripts/emailings/mailing-send.php - * \ingroup mailing - * \brief Script d'envoi d'un mailing prepare et valide + * \file scripts/emailings/mailing-send.php + * \ingroup mailing + * \brief Script d'envoi d'un mailing prepare et valide */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } if (! isset($argv[1]) || ! $argv[1]) { - print "Usage: ".$script_file." (ID_MAILING|all)\n"; - exit(-1); + print "Usage: " . $script_file . " (ID_MAILING|all)\n"; + exit(- 1); } -$id=$argv[1]; -if (isset($argv[2]) || !empty($argv[2])) $login = $argv[2]; -else $login = ''; - -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php"; -require_once DOL_DOCUMENT_ROOT."/comm/mailing/class/mailing.class.php"; +$id = $argv[1]; +if (isset($argv[2]) || ! empty($argv[2])) + $login = $argv[2]; +else + $login = ''; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/CMailFile.class.php"; +require_once DOL_DOCUMENT_ROOT . "/comm/mailing/class/mailing.class.php"; // Global variables -$version=DOL_VERSION; -$error=0; - - +$version = DOL_VERSION; +$error = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; -if ($conf->global->MAILING_LIMIT_SENDBYCLI == '-1') -{ -} +if ($conf->global->MAILING_LIMIT_SENDBYCLI == '-1') {} $user = new User($db); // for signature, we use user send as parameter -if (! empty($login)) $user->fetch('', $login); +if (! empty($login)) + $user->fetch('', $login); // We get list of emailing id to process $sql = "SELECT m.rowid"; -$sql.= " FROM ".MAIN_DB_PREFIX."mailing as m"; -$sql.= " WHERE m.statut IN (1,2)"; -if ($id != 'all') -{ - $sql.= " AND m.rowid= ".$id; - $sql.= " LIMIT 1"; +$sql .= " FROM " . MAIN_DB_PREFIX . "mailing as m"; +$sql .= " WHERE m.statut IN (1,2)"; +if ($id != 'all') { + $sql .= " AND m.rowid= " . $id; + $sql .= " LIMIT 1"; } -$resql=$db->query($sql); -if ($resql) -{ +$resql = $db->query($sql); +if ($resql) { $num = $db->num_rows($resql); $j = 0; - if ($num) - { - for ($j=0; $j<$num; $j++) - { + if ($num) { + for ($j = 0; $j < $num; $j ++) { $obj = $db->fetch_object($resql); - dol_syslog("Process mailing with id ".$obj->rowid); - print "Process mailing with id ".$obj->rowid."\n"; + dol_syslog("Process mailing with id " . $obj->rowid); + print "Process mailing with id " . $obj->rowid . "\n"; $emailing = new Mailing($db); $emailing->fetch($obj->rowid); - $id = $emailing->id; - $subject = $emailing->sujet; - $message = $emailing->body; - $from = $emailing->email_from; - $replyto = $emailing->email_replyto; + $id = $emailing->id; + $subject = $emailing->sujet; + $message = $emailing->body; + $from = $emailing->email_from; + $replyto = $emailing->email_replyto; $errorsto = $emailing->email_errorsto; // Le message est-il en html - $msgishtml=-1; // Unknown by default - if (preg_match('/[\s\t]*/i', $message)) $msgishtml=1; + $msgishtml = - 1; // Unknown by default + if (preg_match('/[\s\t]*/i', $message)) + $msgishtml = 1; - $nbok=0; $nbko=0; + $nbok = 0; + $nbko = 0; // On choisit les mails non deja envoyes pour ce mailing (statut=0) // ou envoyes en erreur (statut=-1) $sql2 = "SELECT mc.rowid, mc.fk_mailing, mc.lastname, mc.firstname, mc.email, mc.other, mc.source_url, mc.source_id, mc.source_type, mc.tag"; - $sql2.= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc"; - $sql2.= " WHERE mc.statut < 1 AND mc.fk_mailing = ".$id; - if ($conf->global->MAILING_LIMIT_SENDBYCLI > 0) - { - $sql2.= " LIMIT ".$conf->global->MAILING_LIMIT_SENDBYCLI; + $sql2 .= " FROM " . MAIN_DB_PREFIX . "mailing_cibles as mc"; + $sql2 .= " WHERE mc.statut < 1 AND mc.fk_mailing = " . $id; + if ($conf->global->MAILING_LIMIT_SENDBYCLI > 0) { + $sql2 .= " LIMIT " . $conf->global->MAILING_LIMIT_SENDBYCLI; } - $resql2=$db->query($sql2); - if ($resql2) - { + $resql2 = $db->query($sql2); + if ($resql2) { $num2 = $db->num_rows($resql2); - dol_syslog("Nb of targets = ".$num2, LOG_DEBUG); - print "Nb of targets = ".$num2."\n"; + dol_syslog("Nb of targets = " . $num2, LOG_DEBUG); + print "Nb of targets = " . $num2 . "\n"; - if ($num2) - { - $now=dol_now(); + if ($num2) { + $now = dol_now(); // Positionne date debut envoi - $sqlstartdate="UPDATE ".MAIN_DB_PREFIX."mailing SET date_envoi='".$db->idate($now)."' WHERE rowid=".$id; - $resqlstartdate=$db->query($sqlstartdate); - if (! $resqlstartdate) - { + $sqlstartdate = "UPDATE " . MAIN_DB_PREFIX . "mailing SET date_envoi='" . $db->idate($now) . "' WHERE rowid=" . $id; + $resqlstartdate = $db->query($sqlstartdate); + if (! $resqlstartdate) { dol_print_error($db); - $error++; + $error ++; } // Look on each email and sent message $i = 0; - while ($i < $num2) - { + while ($i < $num2) { // Here code is common with same loop ino card.php - $res=1; - $now=dol_now(); + $res = 1; + $now = dol_now(); $obj = $db->fetch_object($resql2); // sendto en RFC2822 - $sendto = str_replace(',', ' ', dolGetFirstLastname($obj->firstname, $obj->lastname) ." <".$obj->email.">"); + $sendto = str_replace(',', ' ', dolGetFirstLastname($obj->firstname, $obj->lastname) . " <" . $obj->email . ">"); // Make subtsitutions on topic and body - $other=explode(';', $obj->other); - $tmpfield=explode('=', $other[0], 2); $other1=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]); - $tmpfield=explode('=', $other[1], 2); $other2=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]); - $tmpfield=explode('=', $other[2], 2); $other3=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]); - $tmpfield=explode('=', $other[3], 2); $other4=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]); - $tmpfield=explode('=', $other[4], 2); $other5=(isset($tmpfield[1])?$tmpfield[1]:$tmpfield[0]); - $signature = ((!empty($user->signature) && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))?$user->signature:''); + $other = explode(';', $obj->other); + $tmpfield = explode('=', $other[0], 2); + $other1 = (isset($tmpfield[1]) ? $tmpfield[1] : $tmpfield[0]); + $tmpfield = explode('=', $other[1], 2); + $other2 = (isset($tmpfield[1]) ? $tmpfield[1] : $tmpfield[0]); + $tmpfield = explode('=', $other[2], 2); + $other3 = (isset($tmpfield[1]) ? $tmpfield[1] : $tmpfield[0]); + $tmpfield = explode('=', $other[3], 2); + $other4 = (isset($tmpfield[1]) ? $tmpfield[1] : $tmpfield[0]); + $tmpfield = explode('=', $other[4], 2); + $other5 = (isset($tmpfield[1]) ? $tmpfield[1] : $tmpfield[0]); + $signature = ((! empty($user->signature) && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN)) ? $user->signature : ''); - $object = null; // Not defined with mass emailing - $parameters=array('mode'=>'emailing'); - $substitutionarray=getCommonSubstitutionArray($langs, 0, array('object','objectamount'), $object); // Note: On mass emailing, this is null because we don't know object + $object = null; // Not defined with mass emailing + $parameters = array('mode' => 'emailing'); + $substitutionarray = getCommonSubstitutionArray($langs, 0, array('object','objectamount'), $object); // Note: On mass emailing, this is null because we don't know object // Array of possible substitutions (See also file mailing-send.php that should manage same substitutions) $substitutionarray['__ID__'] = $obj->source_id; $substitutionarray['__EMAIL__'] = $obj->email; $substitutionarray['__LASTNAME__'] = $obj->lastname; $substitutionarray['__FIRSTNAME__'] = $obj->firstname; - $substitutionarray['__MAILTOEMAIL__'] = ''.$obj->email.''; + $substitutionarray['__MAILTOEMAIL__'] = '' . $obj->email . ''; $substitutionarray['__OTHER1__'] = $other1; $substitutionarray['__OTHER2__'] = $other2; $substitutionarray['__OTHER3__'] = $other3; $substitutionarray['__OTHER4__'] = $other4; $substitutionarray['__OTHER5__'] = $other5; - $substitutionarray['__USER_SIGNATURE__'] = $signature; // Signature is empty when ran from command line or taken from user in parameter) - $substitutionarray['__SIGNATURE__'] = $signature; // For backward compatibility - $substitutionarray['__CHECK_READ__'] = ''; - $substitutionarray['__UNSUBSCRIBE__'] = ''.$langs->trans("MailUnsubcribe").''; + $substitutionarray['__USER_SIGNATURE__'] = $signature; // Signature is empty when ran from command line or taken from user in parameter) + $substitutionarray['__SIGNATURE__'] = $signature; // For backward compatibility + $substitutionarray['__CHECK_READ__'] = ''; + $substitutionarray['__UNSUBSCRIBE__'] = '' . $langs->trans("MailUnsubcribe") . ''; $onlinepaymentenabled = 0; - if (! empty($conf->paypal->enabled)) $onlinepaymentenabled++; - if (! empty($conf->paybox->enabled)) $onlinepaymentenabled++; - if (! empty($conf->stripe->enabled)) $onlinepaymentenabled++; - if ($onlinepaymentenabled && ! empty($conf->global->PAYMENT_SECURITY_TOKEN)) - { - $substitutionarray['__SECUREKEYPAYMENT__']=dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); - if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) - { - $substitutionarray['__SECUREKEYPAYMENT_MEMBER__']=dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); - $substitutionarray['__SECUREKEYPAYMENT_ORDER__']=dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); - $substitutionarray['__SECUREKEYPAYMENT_INVOICE__']=dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); - $substitutionarray['__SECUREKEYPAYMENT_CONTRACTLINE__']=dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); - } - else - { - $substitutionarray['__SECUREKEYPAYMENT_MEMBER__']=dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . 'membersubscription' . $obj->source_id, 2); - $substitutionarray['__SECUREKEYPAYMENT_ORDER__']=dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . 'order' . $obj->source_id, 2); - $substitutionarray['__SECUREKEYPAYMENT_INVOICE__']=dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . 'invoice' . $obj->source_id, 2); - $substitutionarray['__SECUREKEYPAYMENT_CONTRACTLINE__']=dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . 'contractline' . $obj->source_id, 2); + if (! empty($conf->paypal->enabled)) + $onlinepaymentenabled ++; + if (! empty($conf->paybox->enabled)) + $onlinepaymentenabled ++; + if (! empty($conf->stripe->enabled)) + $onlinepaymentenabled ++; + if ($onlinepaymentenabled && ! empty($conf->global->PAYMENT_SECURITY_TOKEN)) { + $substitutionarray['__SECUREKEYPAYMENT__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); + if (empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { + $substitutionarray['__SECUREKEYPAYMENT_MEMBER__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); + $substitutionarray['__SECUREKEYPAYMENT_ORDER__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); + $substitutionarray['__SECUREKEYPAYMENT_INVOICE__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); + $substitutionarray['__SECUREKEYPAYMENT_CONTRACTLINE__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN, 2); + } else { + $substitutionarray['__SECUREKEYPAYMENT_MEMBER__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . 'membersubscription' . $obj->source_id, 2); + $substitutionarray['__SECUREKEYPAYMENT_ORDER__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . 'order' . $obj->source_id, 2); + $substitutionarray['__SECUREKEYPAYMENT_INVOICE__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . 'invoice' . $obj->source_id, 2); + $substitutionarray['__SECUREKEYPAYMENT_CONTRACTLINE__'] = dol_hash($conf->global->PAYMENT_SECURITY_TOKEN . 'contractline' . $obj->source_id, 2); } } /* For backward compatibility */ - if (! empty($conf->paypal->enabled) && ! empty($conf->global->PAYPAL_SECURITY_TOKEN)) - { - $substitutionarray['__SECUREKEYPAYPAL__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); + if (! empty($conf->paypal->enabled) && ! empty($conf->global->PAYPAL_SECURITY_TOKEN)) { + $substitutionarray['__SECUREKEYPAYPAL__'] = dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); - if (empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) $substitutionarray['__SECUREKEYPAYPAL_MEMBER__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); - else $substitutionarray['__SECUREKEYPAYPAL_MEMBER__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'membersubscription' . $obj->source_id, 2); + if (empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) + $substitutionarray['__SECUREKEYPAYPAL_MEMBER__'] = dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); + else + $substitutionarray['__SECUREKEYPAYPAL_MEMBER__'] = dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'membersubscription' . $obj->source_id, 2); - if (empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) $substitutionarray['__SECUREKEYPAYPAL_ORDER__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); - else $substitutionarray['__SECUREKEYPAYPAL_ORDER__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'order' . $obj->source_id, 2); + if (empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) + $substitutionarray['__SECUREKEYPAYPAL_ORDER__'] = dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); + else + $substitutionarray['__SECUREKEYPAYPAL_ORDER__'] = dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'order' . $obj->source_id, 2); - if (empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) $substitutionarray['__SECUREKEYPAYPAL_INVOICE__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); - else $substitutionarray['__SECUREKEYPAYPAL_INVOICE__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'invoice' . $obj->source_id, 2); + if (empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) + $substitutionarray['__SECUREKEYPAYPAL_INVOICE__'] = dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); + else + $substitutionarray['__SECUREKEYPAYPAL_INVOICE__'] = dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'invoice' . $obj->source_id, 2); - if (empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) $substitutionarray['__SECUREKEYPAYPAL_CONTRACTLINE__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); - else $substitutionarray['__SECUREKEYPAYPAL_CONTRACTLINE__']=dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'contractline' . $obj->source_id, 2); + if (empty($conf->global->PAYPAL_SECURITY_TOKEN_UNIQUE)) + $substitutionarray['__SECUREKEYPAYPAL_CONTRACTLINE__'] = dol_hash($conf->global->PAYPAL_SECURITY_TOKEN, 2); + else + $substitutionarray['__SECUREKEYPAYPAL_CONTRACTLINE__'] = dol_hash($conf->global->PAYPAL_SECURITY_TOKEN . 'contractline' . $obj->source_id, 2); } complete_substitutions_array($substitutionarray, $langs); - $newsubject=make_substitutions($subject, $substitutionarray); - $newmessage=make_substitutions($message, $substitutionarray); + $newsubject = make_substitutions($subject, $substitutionarray); + $newmessage = make_substitutions($message, $substitutionarray); - $substitutionisok=true; + $substitutionisok = true; // Fabrication du mail - $trackid='emailing-'.$obj->fk_mailing.'-'.$obj->rowid; - $mail = new CMailFile( - $newsubject, - $sendto, - $from, - $newmessage, - array(), - array(), - array(), - '', - '', - 0, - $msgishtml, - $errorsto, - '', - $trackid, - '', - 'emailing' - ); + $trackid = 'emailing-' . $obj->fk_mailing . '-' . $obj->rowid; + $mail = new CMailFile($newsubject, $sendto, $from, $newmessage, array(), array(), array(), '', '', 0, $msgishtml, $errorsto, '', $trackid, '', 'emailing'); - if ($mail->error) - { - $res=0; + if ($mail->error) { + $res = 0; } - if (! $substitutionisok) - { - $mail->error='Some substitution failed'; - $res=0; + if (! $substitutionisok) { + $mail->error = 'Some substitution failed'; + $res = 0; } // Send Email - if ($res) - { - $res=$mail->sendfile(); + if ($res) { + $res = $mail->sendfile(); } - if ($res) - { + if ($res) { // Mail successful - $nbok++; + $nbok ++; - dol_syslog("ok for emailing id ".$id." #".$i.($mail->error?' - '.$mail->error:''), LOG_DEBUG); + dol_syslog("ok for emailing id " . $id . " #" . $i . ($mail->error ? ' - ' . $mail->error : ''), LOG_DEBUG); // Note: If emailing is 100 000 targets, 100 000 entries are added, so we don't enter events for each target here // We must union table llx_mailing_taget for event tab OR enter 1 event with a special table link (id of email in event) // Run trigger /* - if ($obj->source_type == 'contact') - { - $emailing->sendtoid = $obj->source_id; - } - if ($obj->source_type == 'thirdparty') - { - $emailing->socid = $obj->source_id; - } - // Call trigger - $result=$emailing->call_trigger('EMAILING_SENTBYMAIL',$user); - if ($result < 0) $error++; - // End call triggers - */ + * if ($obj->source_type == 'contact') + * { + * $emailing->sendtoid = $obj->source_id; + * } + * if ($obj->source_type == 'thirdparty') + * { + * $emailing->socid = $obj->source_id; + * } + * // Call trigger + * $result=$emailing->call_trigger('EMAILING_SENTBYMAIL',$user); + * if ($result < 0) $error++; + * // End call triggers + */ - $sqlok ="UPDATE ".MAIN_DB_PREFIX."mailing_cibles"; - $sqlok.=" SET statut=1, date_envoi='".$db->idate($now)."' WHERE rowid=".$obj->rowid; - $resqlok=$db->query($sqlok); - if (! $resqlok) - { + $sqlok = "UPDATE " . MAIN_DB_PREFIX . "mailing_cibles"; + $sqlok .= " SET statut=1, date_envoi='" . $db->idate($now) . "' WHERE rowid=" . $obj->rowid; + $resqlok = $db->query($sqlok); + if (! $resqlok) { dol_print_error($db); - $error++; - } - else - { - //if cheack read is use then update prospect contact status - if (strpos($message, '__CHECK_READ__') !== false) - { - //Update status communication of thirdparty prospect - $sqlx = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=2 WHERE rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE rowid=".$obj->rowid.")"; + $error ++; + } else { + // if cheack read is use then update prospect contact status + if (strpos($message, '__CHECK_READ__') !== false) { + // Update status communication of thirdparty prospect + $sqlx = "UPDATE " . MAIN_DB_PREFIX . "societe SET fk_stcomm=2 WHERE rowid IN (SELECT source_id FROM " . MAIN_DB_PREFIX . "mailing_cibles WHERE rowid=" . $obj->rowid . ")"; dol_syslog("card.php: set prospect thirdparty status", LOG_DEBUG); - $resqlx=$db->query($sqlx); - if (! $resqlx) - { + $resqlx = $db->query($sqlx); + if (! $resqlx) { dol_print_error($db); - $error++; + $error ++; } - //Update status communication of contact prospect - $sqlx = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=2 WHERE rowid IN (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."socpeople AS sc INNER JOIN ".MAIN_DB_PREFIX."mailing_cibles AS mc ON mc.rowid=".$obj->rowid." AND mc.source_type = 'contact' AND mc.source_id = sc.rowid)"; + // Update status communication of contact prospect + $sqlx = "UPDATE " . MAIN_DB_PREFIX . "societe SET fk_stcomm=2 WHERE rowid IN (SELECT sc.fk_soc FROM " . MAIN_DB_PREFIX . "socpeople AS sc INNER JOIN " . MAIN_DB_PREFIX . "mailing_cibles AS mc ON mc.rowid=" . $obj->rowid . " AND mc.source_type = 'contact' AND mc.source_id = sc.rowid)"; dol_syslog("card.php: set prospect contact status", LOG_DEBUG); - $resqlx=$db->query($sqlx); - if (! $resqlx) - { + $resqlx = $db->query($sqlx); + if (! $resqlx) { dol_print_error($db); - $error++; + $error ++; } } - if (!empty($conf->global->MAILING_DELAY)) { + if (! empty($conf->global->MAILING_DELAY)) { sleep($conf->global->MAILING_DELAY); } } - } - else - { + } else { // Mail failed - $nbko++; + $nbko ++; - dol_syslog("error for emailing id ".$id." #".$i.($mail->error?' - '.$mail->error:''), LOG_DEBUG); + dol_syslog("error for emailing id " . $id . " #" . $i . ($mail->error ? ' - ' . $mail->error : ''), LOG_DEBUG); - $sqlerror="UPDATE ".MAIN_DB_PREFIX."mailing_cibles"; - $sqlerror.=" SET statut=-1, date_envoi=".$db->idate($now)." WHERE rowid=".$obj->rowid; - $resqlerror=$db->query($sqlerror); - if (! $resqlerror) - { + $sqlerror = "UPDATE " . MAIN_DB_PREFIX . "mailing_cibles"; + $sqlerror .= " SET statut=-1, date_envoi=" . $db->idate($now) . " WHERE rowid=" . $obj->rowid; + $resqlerror = $db->query($sqlerror); + if (! $resqlerror) { dol_print_error($db); - $error++; + $error ++; } } - $i++; + $i ++; } - } - else - { - $mesg="Emailing id ".$id." has no recipient to target"; - print $mesg."\n"; + } else { + $mesg = "Emailing id " . $id . " has no recipient to target"; + print $mesg . "\n"; dol_syslog($mesg, LOG_ERR); } // Loop finished, set global statut of mail - $statut=2; - if (! $nbko) $statut=3; + $statut = 2; + if (! $nbko) + $statut = 3; - $sqlenddate="UPDATE ".MAIN_DB_PREFIX."mailing SET statut=".$statut." WHERE rowid=".$id; + $sqlenddate = "UPDATE " . MAIN_DB_PREFIX . "mailing SET statut=" . $statut . " WHERE rowid=" . $id; dol_syslog("update global status", LOG_DEBUG); - print "Update status of emailing id ".$id." to ".$statut."\n"; - $resqlenddate=$db->query($sqlenddate); - if (! $resqlenddate) - { + print "Update status of emailing id " . $id . " to " . $statut . "\n"; + $resqlenddate = $db->query($sqlenddate); + if (! $resqlenddate) { dol_print_error($db); - $error++; + $error ++; } - } - else - { + } else { dol_print_error($db); - $error++; + $error ++; } } - } - else - { - $mesg="No validated emailing id to send found."; - print $mesg."\n"; + } else { + $mesg = "No validated emailing id to send found."; + print $mesg . "\n"; dol_syslog($mesg, LOG_ERR); - $error++; + $error ++; } -} -else -{ +} else { dol_print_error($db); - $error++; + $error ++; } - exit($error); diff --git a/scripts/invoices/email_unpaid_invoices_to_customers.php b/scripts/invoices/email_unpaid_invoices_to_customers.php index 5681688c645..e64c9e10edb 100755 --- a/scripts/invoices/email_unpaid_invoices_to_customers.php +++ b/scripts/invoices/email_unpaid_invoices_to_customers.php @@ -1,9 +1,9 @@ #!/usr/bin/env php - * Copyright (C) 2005-2013 Laurent Destailleur - * Copyright (C) 2013 Juanjo Menent + * Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2005-2013 Laurent Destailleur + * Copyright (C) 2013 Juanjo Menent * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -12,7 +12,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -20,288 +20,272 @@ */ /** - * \file scripts/invoices/email_unpaid_invoices_to_customers.php - * \ingroup facture - * \brief Script to send a mail to customers with unpaid invoices + * \file scripts/invoices/email_unpaid_invoices_to_customers.php + * \ingroup facture + * \brief Script to send a mail to customers with unpaid invoices */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test si mode batch $sapi_type = php_sapi_name(); if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -if (! isset($argv[2]) || ! $argv[2] || ! in_array($argv[1], array('test','confirm')) || ! in_array($argv[2], array('thirdparties','contacts'))) -{ +if (! isset($argv[2]) || ! $argv[2] || ! in_array($argv[1], array('test','confirm')) || ! in_array($argv[2], array('thirdparties','contacts'))) { print "Usage: $script_file (test|confirm) (thirdparties|contacts) [delay] [after]\n"; print "\n"; print "Send an email to customers to remind all unpaid customer invoices.\n"; print "If you choose 'test' mode, no emails are sent.\n"; print "If you add param delay (nb of days), only invoice with due date < today + delay are included.\n"; print "If you add param after (nb of days), only invoice with due date >= today + delay are included.\n"; - exit(-1); + exit(- 1); } -$mode=$argv[1]; -$targettype=$argv[2]; +$mode = $argv[1]; +$targettype = $argv[2]; - -require $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php"; +require $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/CMailFile.class.php"; $langs->load('main'); // Global variables -$version=DOL_VERSION; -$error=0; - - +$version = DOL_VERSION; +$error = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); -$now=dol_now('tzserver'); -$duration_value=isset($argv[3])?$argv[3]:'none'; -$duration_value2=isset($argv[4])?$argv[4]:'none'; +$now = dol_now('tzserver'); +$duration_value = isset($argv[3]) ? $argv[3] : 'none'; +$duration_value2 = isset($argv[4]) ? $argv[4] : 'none'; $error = 0; -print $script_file." launched with mode ".$mode." default lang=".$langs->defaultlang.(is_numeric($duration_value)?" delay=".$duration_value:"").(is_numeric($duration_value2)?" after=".$duration_value2:"")."\n"; +print $script_file . " launched with mode " . $mode . " default lang=" . $langs->defaultlang . (is_numeric($duration_value) ? " delay=" . $duration_value : "") . (is_numeric($duration_value2) ? " after=" . $duration_value2 : "") . "\n"; -if ($mode != 'confirm') $conf->global->MAIN_DISABLE_ALL_MAILS=1; +if ($mode != 'confirm') + $conf->global->MAIN_DISABLE_ALL_MAILS = 1; $sql = "SELECT f.ref, f.total_ttc, f.date_lim_reglement as due_date,"; -$sql.= " s.rowid as sid, s.nom as name, s.email, s.default_lang"; -if ($targettype == 'contacts') $sql.= ", sp.rowid as cid, sp.firstname as cfirstname, sp.lastname as clastname, sp.email as cemail"; -$sql.= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."societe as s"; -if ($targettype == 'contacts') $sql.= ", ".MAIN_DB_PREFIX."socpeople as sp"; -$sql.= " WHERE f.fk_statut = 1 AND f.paye = 0"; -$sql.= " AND f.fk_soc = s.rowid"; -if (is_numeric($duration_value2)) $sql.= " AND f.date_lim_reglement >= '".$db->idate(dol_time_plus_duree($now, $duration_value2, "d"))."'"; -if (is_numeric($duration_value)) $sql.= " AND f.date_lim_reglement < '".$db->idate(dol_time_plus_duree($now, $duration_value, "d"))."'"; -if ($targettype == 'contacts') $sql.= " AND s.rowid = sp.fk_soc"; -$sql.= " ORDER BY"; -if ($targettype == 'contacts') $sql.= " sp.email, sp.rowid,"; -$sql.= " s.email ASC, s.rowid ASC, f.ref ASC"; // Order by email to allow one message per email +$sql .= " s.rowid as sid, s.nom as name, s.email, s.default_lang"; +if ($targettype == 'contacts') + $sql .= ", sp.rowid as cid, sp.firstname as cfirstname, sp.lastname as clastname, sp.email as cemail"; +$sql .= " FROM " . MAIN_DB_PREFIX . "facture as f, " . MAIN_DB_PREFIX . "societe as s"; +if ($targettype == 'contacts') + $sql .= ", " . MAIN_DB_PREFIX . "socpeople as sp"; +$sql .= " WHERE f.fk_statut = 1 AND f.paye = 0"; +$sql .= " AND f.fk_soc = s.rowid"; +if (is_numeric($duration_value2)) + $sql .= " AND f.date_lim_reglement >= '" . $db->idate(dol_time_plus_duree($now, $duration_value2, "d")) . "'"; +if (is_numeric($duration_value)) + $sql .= " AND f.date_lim_reglement < '" . $db->idate(dol_time_plus_duree($now, $duration_value, "d")) . "'"; +if ($targettype == 'contacts') + $sql .= " AND s.rowid = sp.fk_soc"; +$sql .= " ORDER BY"; +if ($targettype == 'contacts') + $sql .= " sp.email, sp.rowid,"; +$sql .= " s.email ASC, s.rowid ASC, f.ref ASC"; // Order by email to allow one message per email -//print $sql; -$resql=$db->query($sql); -if ($resql) -{ - $num = $db->num_rows($resql); - $i = 0; - $oldemail = 'none'; $oldsid = 0; $oldcid = 0; $oldlang=''; - $total = 0; $foundtoprocess = 0; - $trackthirdpartiessent = array(); +// print $sql; +$resql = $db->query($sql); +if ($resql) { + $num = $db->num_rows($resql); + $i = 0; + $oldemail = 'none'; + $oldsid = 0; + $oldcid = 0; + $oldlang = ''; + $total = 0; + $foundtoprocess = 0; + $trackthirdpartiessent = array(); - print "We found ".$num." couples (unpayed validated invoices-".$targettype.") qualified\n"; - dol_syslog("We found ".$num." couples (unpayed validated invoices-".$targettype.") qualified"); - $message=''; + print "We found " . $num . " couples (unpayed validated invoices-" . $targettype . ") qualified\n"; + dol_syslog("We found " . $num . " couples (unpayed validated invoices-" . $targettype . ") qualified"); + $message = ''; - if ($num) - { - while ($i < $num) - { - $obj = $db->fetch_object($resql); + if ($num) { + while ($i < $num) { + $obj = $db->fetch_object($resql); - $newemail=empty($obj->cemail)?$obj->email:$obj->cemail; + $newemail = empty($obj->cemail) ? $obj->email : $obj->cemail; - // Check if this record is a break after previous one - $startbreak=false; - if ($newemail <> $oldemail || $oldemail == 'none') $startbreak=true; - if ($obj->sid && $obj->sid <> $oldsid) $startbreak=true; - if ($obj->cid && $obj->cid <> $oldcid) $startbreak=true; + // Check if this record is a break after previous one + $startbreak = false; + if ($newemail != $oldemail || $oldemail == 'none') + $startbreak = true; + if ($obj->sid && $obj->sid != $oldsid) + $startbreak = true; + if ($obj->cid && $obj->cid != $oldcid) + $startbreak = true; - if ($startbreak) - { - // Break onto sales representative (new email or cid) - if (dol_strlen($oldemail) && $oldemail != 'none' && empty($trackthirdpartiessent[$oldsid.'|'.$oldemail])) - { - envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldtarget); - $trackthirdpartiessent[$oldsid.'|'.$oldemail]='contact id '.$oldcid; - } - else - { - if ($oldemail != 'none') - { - if (empty($trackthirdpartiessent[$oldsid.'|'.$oldemail])) print "- No email sent for '".$oldtarget."', total: ".$total."\n"; - else print "- No email sent for '".$oldtarget."', total: ".$total." (already sent to ".$trackthirdpartiessent[$oldsid.'|'.$oldemail].")\n"; - } - } - $oldemail = $newemail; - $oldsid = $obj->sid; - $oldcid = $obj->cid; - $oldlang = $obj->lang; - $oldtarget=(empty($obj->cfirstname) && empty($obj->clastname))?$obj->name:($obj->clastname." ".$obj->cfirstname); - $message = ''; - $total = 0; - $foundtoprocess = 0; - $target=(empty($obj->cfirstname) && empty($obj->clastname))?$obj->name:($obj->clastname." ".$obj->cfirstname); - //if (empty($newemail)) print "Warning: Customer ".$target." has no email. Notice disabled.\n"; - } + if ($startbreak) { + // Break onto sales representative (new email or cid) + if (dol_strlen($oldemail) && $oldemail != 'none' && empty($trackthirdpartiessent[$oldsid . '|' . $oldemail])) { + envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldtarget); + $trackthirdpartiessent[$oldsid . '|' . $oldemail] = 'contact id ' . $oldcid; + } else { + if ($oldemail != 'none') { + if (empty($trackthirdpartiessent[$oldsid . '|' . $oldemail])) + print "- No email sent for '" . $oldtarget . "', total: " . $total . "\n"; + else + print "- No email sent for '" . $oldtarget . "', total: " . $total . " (already sent to " . $trackthirdpartiessent[$oldsid . '|' . $oldemail] . ")\n"; + } + } + $oldemail = $newemail; + $oldsid = $obj->sid; + $oldcid = $obj->cid; + $oldlang = $obj->lang; + $oldtarget = (empty($obj->cfirstname) && empty($obj->clastname)) ? $obj->name : ($obj->clastname . " " . $obj->cfirstname); + $message = ''; + $total = 0; + $foundtoprocess = 0; + $target = (empty($obj->cfirstname) && empty($obj->clastname)) ? $obj->name : ($obj->clastname . " " . $obj->cfirstname); + // if (empty($newemail)) print "Warning: Customer ".$target." has no email. Notice disabled.\n"; + } - // Define line content - $outputlangs=new Translate('', $conf); - $outputlangs->setDefaultLang(empty($obj->default_lang)?$langs->defaultlang:$obj->default_lang); // By default language of customer + // Define line content + $outputlangs = new Translate('', $conf); + $outputlangs->setDefaultLang(empty($obj->default_lang) ? $langs->defaultlang : $obj->default_lang); // By default language of customer - // Load translation files required by the page - $outputlangs->loadLangs(array("main", "bills")); + // Load translation files required by the page + $outputlangs->loadLangs(array("main","bills")); - if (dol_strlen($newemail)) - { - $message .= $outputlangs->trans("Invoice")." ".$obj->ref." : ".price($obj->total_ttc, 0, $outputlangs, 0, 0, -1, $conf->currency)."\n"; - dol_syslog("email_unpaid_invoices_to_customers.php: ".$newemail." ".$message); - $foundtoprocess++; - } - print "Unpaid invoice ".$obj->ref.", price ".price2num($obj->total_ttc).", due date ".dol_print_date($db->jdate($obj->due_date), 'day').", customer id ".$obj->sid." ".$obj->name.", ".($obj->cid?"contact id ".$obj->cid." ".$obj->clastname." ".$obj->cfirstname.", ":"")."email ".$newemail.", lang ".$outputlangs->defaultlang.": "; - if (dol_strlen($newemail)) print "qualified."; - else print "disqualified (no email)."; - print "\n"; + if (dol_strlen($newemail)) { + $message .= $outputlangs->trans("Invoice") . " " . $obj->ref . " : " . price($obj->total_ttc, 0, $outputlangs, 0, 0, - 1, $conf->currency) . "\n"; + dol_syslog("email_unpaid_invoices_to_customers.php: " . $newemail . " " . $message); + $foundtoprocess ++; + } + print "Unpaid invoice " . $obj->ref . ", price " . price2num($obj->total_ttc) . ", due date " . dol_print_date($db->jdate($obj->due_date), 'day') . ", customer id " . $obj->sid . " " . $obj->name . ", " . ($obj->cid ? "contact id " . $obj->cid . " " . $obj->clastname . " " . $obj->cfirstname . ", " : "") . "email " . $newemail . ", lang " . $outputlangs->defaultlang . ": "; + if (dol_strlen($newemail)) + print "qualified."; + else + print "disqualified (no email)."; + print "\n"; - unset($outputlangs); + unset($outputlangs); - $total += $obj->total_ttc; + $total += $obj->total_ttc; - $i++; - } + $i ++; + } - // Si il reste des envois en buffer - if ($foundtoprocess) - { - if (dol_strlen($oldemail) && $oldemail != 'none' && empty($trackthirdpartiessent[$oldsid.'|'.$oldemail])) // Break onto email (new email) - { - envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldtarget); - $trackthirdpartiessent[$oldsid.'|'.$oldemail]='contact id '.$oldcid; - } - else + // Si il reste des envois en buffer + if ($foundtoprocess) { + if (dol_strlen($oldemail) && $oldemail != 'none' && empty($trackthirdpartiessent[$oldsid . '|' . $oldemail])) // Break onto email (new email) { - if ($oldemail != 'none') - { - if (empty($trackthirdpartiessent[$oldsid.'|'.$oldemail])) print "- No email sent for '".$oldtarget."', total: ".$total."\n"; - else print "- No email sent for '".$oldtarget."', total: ".$total." (already sent to ".$trackthirdpartiessent[$oldsid.'|'.$oldemail].")\n"; - } - } - } - } - else - { - print "No unpaid invoices found\n"; - } + envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldtarget); + $trackthirdpartiessent[$oldsid . '|' . $oldemail] = 'contact id ' . $oldcid; + } else { + if ($oldemail != 'none') { + if (empty($trackthirdpartiessent[$oldsid . '|' . $oldemail])) + print "- No email sent for '" . $oldtarget . "', total: " . $total . "\n"; + else + print "- No email sent for '" . $oldtarget . "', total: " . $total . " (already sent to " . $trackthirdpartiessent[$oldsid . '|' . $oldemail] . ")\n"; + } + } + } + } else { + print "No unpaid invoices found\n"; + } - exit(0); + exit(0); +} else { + dol_print_error($db); + dol_syslog("email_unpaid_invoices_to_customers.php: Error"); + + exit(- 1); } -else -{ - dol_print_error($db); - dol_syslog("email_unpaid_invoices_to_customers.php: Error"); - - exit(-1); -} - /** - * Send email + * Send email * - * @param string $mode Mode (test | confirm) - * @param string $oldemail Target email - * @param string $message Message to send - * @param string $total Total amount of unpayed invoices - * @param string $userlang Code lang to use for email output. - * @param string $oldtarget Target name - * @return int <0 if KO, >0 if OK + * @param string $mode + * Mode (test | confirm) + * @param string $oldemail + * Target email + * @param string $message + * Message to send + * @param string $total + * Total amount of unpayed invoices + * @param string $userlang + * Code lang to use for email output. + * @param string $oldtarget + * Target name + * @return int <0 if KO, >0 if OK */ function envoi_mail($mode, $oldemail, $message, $total, $userlang, $oldtarget) { - global $conf,$langs; + global $conf, $langs; - if (getenv('DOL_FORCE_EMAIL_TO')) $oldemail=getenv('DOL_FORCE_EMAIL_TO'); + if (getenv('DOL_FORCE_EMAIL_TO')) + $oldemail = getenv('DOL_FORCE_EMAIL_TO'); - $newlangs=new Translate('', $conf); - $newlangs->setDefaultLang(empty($userlang)?(empty($conf->global->MAIN_LANG_DEFAULT)?'auto':$conf->global->MAIN_LANG_DEFAULT):$userlang); - $newlangs->load("main"); - $newlangs->load("bills"); + $newlangs = new Translate('', $conf); + $newlangs->setDefaultLang(empty($userlang) ? (empty($conf->global->MAIN_LANG_DEFAULT) ? 'auto' : $conf->global->MAIN_LANG_DEFAULT) : $userlang); + $newlangs->load("main"); + $newlangs->load("bills"); - $subject = (empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_SUBJECT)?$newlangs->trans("ListOfYourUnpaidInvoices"):$conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_SUBJECT); - $sendto = $oldemail; - $from = $conf->global->MAIN_MAIL_EMAIL_FROM; - $errorsto = $conf->global->MAIN_MAIL_ERRORS_TO; - $msgishtml = -1; + $subject = (empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_SUBJECT) ? $newlangs->trans("ListOfYourUnpaidInvoices") : $conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_SUBJECT); + $sendto = $oldemail; + $from = $conf->global->MAIN_MAIL_EMAIL_FROM; + $errorsto = $conf->global->MAIN_MAIL_ERRORS_TO; + $msgishtml = - 1; - print "- Send email to '".$oldtarget."' (".$oldemail."), total: ".$total."\n"; - dol_syslog("email_unpaid_invoices_to_customers.php: send mail to ".$oldemail); + print "- Send email to '" . $oldtarget . "' (" . $oldemail . "), total: " . $total . "\n"; + dol_syslog("email_unpaid_invoices_to_customers.php: send mail to " . $oldemail); - $usehtml=0; - if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_FOOTER)) $usehtml+=1; - if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_HEADER)) $usehtml+=1; + $usehtml = 0; + if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_FOOTER)) + $usehtml += 1; + if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_HEADER)) + $usehtml += 1; - $allmessage=''; - if (! empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_HEADER)) - { - $allmessage.=$conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_HEADER; - } - else - { - $allmessage.= "Dear customer".($usehtml?"
\n":"\n").($usehtml?"
\n":"\n"); - $allmessage.= "Please, find a summary of the bills with pending payments from you.".($usehtml?"
\n":"\n").($usehtml?"
\n":"\n"); - $allmessage.= "Note: This list contains only unpaid invoices.".($usehtml?"
\n":"\n"); - } - $allmessage.= $message.($usehtml?"
\n":"\n"); - $allmessage.= $langs->trans("Total")." = ".price($total, 0, $userlang, 0, 0, -1, $conf->currency).($usehtml?"
\n":"\n"); - if (! empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_FOOTER)) - { - $allmessage.=$conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_FOOTER; - if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_FOOTER)) $usehtml+=1; - } + $allmessage = ''; + if (! empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_HEADER)) { + $allmessage .= $conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_HEADER; + } else { + $allmessage .= "Dear customer" . ($usehtml ? "
\n" : "\n") . ($usehtml ? "
\n" : "\n"); + $allmessage .= "Please, find a summary of the bills with pending payments from you." . ($usehtml ? "
\n" : "\n") . ($usehtml ? "
\n" : "\n"); + $allmessage .= "Note: This list contains only unpaid invoices." . ($usehtml ? "
\n" : "\n"); + } + $allmessage .= $message . ($usehtml ? "
\n" : "\n"); + $allmessage .= $langs->trans("Total") . " = " . price($total, 0, $userlang, 0, 0, - 1, $conf->currency) . ($usehtml ? "
\n" : "\n"); + if (! empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_FOOTER)) { + $allmessage .= $conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_FOOTER; + if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_CUSTOMERS_FOOTER)) + $usehtml += 1; + } - $mail = new CMailFile( - $subject, - $sendto, - $from, - $allmessage, - array(), - array(), - array(), - '', - '', - 0, - $msgishtml - ); + $mail = new CMailFile($subject, $sendto, $from, $allmessage, array(), array(), array(), '', '', 0, $msgishtml); - $mail->errors_to = $errorsto; + $mail->errors_to = $errorsto; - // Send or not email - if ($mode == 'confirm') - { - $result=$mail->sendfile(); - if (! $result) - { - print "Error sending email ".$mail->error."\n"; - dol_syslog("Error sending email ".$mail->error."\n"); - } - } - else - { - print "No email sent (test mode)\n"; - dol_syslog("No email sent (test mode)"); - $mail->dump_mail(); - $result=1; - } + // Send or not email + if ($mode == 'confirm') { + $result = $mail->sendfile(); + if (! $result) { + print "Error sending email " . $mail->error . "\n"; + dol_syslog("Error sending email " . $mail->error . "\n"); + } + } else { + print "No email sent (test mode)\n"; + dol_syslog("No email sent (test mode)"); + $mail->dump_mail(); + $result = 1; + } - unset($newlangs); - if ($result) - { - return 1; - } - else - { - return -1; - } + unset($newlangs); + if ($result) { + return 1; + } else { + return - 1; + } } diff --git a/scripts/invoices/email_unpaid_invoices_to_representatives.php b/scripts/invoices/email_unpaid_invoices_to_representatives.php index 126ee5b8bd4..bf4264d57ba 100755 --- a/scripts/invoices/email_unpaid_invoices_to_representatives.php +++ b/scripts/invoices/email_unpaid_invoices_to_representatives.php @@ -1,9 +1,9 @@ #!/usr/bin/env php - * Copyright (C) 2005-2013 Laurent Destailleur - * Copyright (C) 2013 Juanjo Menent + * Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2005-2013 Laurent Destailleur + * Copyright (C) 2013 Juanjo Menent * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -12,7 +12,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -20,260 +20,235 @@ */ /** - * \file scripts/invoices/email_unpaid_invoices_to_representatives.php - * \ingroup facture - * \brief Script to send a mail to dolibarr users linked to companies with unpaid invoices + * \file scripts/invoices/email_unpaid_invoices_to_representatives.php + * \ingroup facture + * \brief Script to send a mail to dolibarr users linked to companies with unpaid invoices */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test si mode batch $sapi_type = php_sapi_name(); if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -if (! isset($argv[1]) || ! $argv[1] || ! in_array($argv[1], array('test','confirm'))) -{ +if (! isset($argv[1]) || ! $argv[1] || ! in_array($argv[1], array('test','confirm'))) { print "Usage: $script_file (test|confirm) [delay]\n"; print "\n"; print "Send an email to users to remind all unpaid customer invoices user is sale representative for.\n"; print "If you choose 'test' mode, no emails are sent.\n"; print "If you add a delay (nb of days), only invoice with due date < today + delay are included.\n"; - exit(-1); + exit(- 1); } -$mode=$argv[1]; +$mode = $argv[1]; - -require $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/CMailFile.class.php"; +require $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/CMailFile.class.php"; $langs->load('main'); - // Global variables -$version=DOL_VERSION; -$error=0; - - +$version = DOL_VERSION; +$error = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); -$now=dol_now('tzserver'); -$duration_value=isset($argv[2])?$argv[2]:'none'; +$now = dol_now('tzserver'); +$duration_value = isset($argv[2]) ? $argv[2] : 'none'; -print $script_file." launched with mode ".$mode." default lang=".$langs->defaultlang.(is_numeric($duration_value)?" delay=".$duration_value:"")."\n"; +print $script_file . " launched with mode " . $mode . " default lang=" . $langs->defaultlang . (is_numeric($duration_value) ? " delay=" . $duration_value : "") . "\n"; -if ($mode != 'confirm') $conf->global->MAIN_DISABLE_ALL_MAILS=1; +if ($mode != 'confirm') + $conf->global->MAIN_DISABLE_ALL_MAILS = 1; $sql = "SELECT f.ref, f.total_ttc, f.date_lim_reglement as due_date, s.nom as name, s.email, s.default_lang,"; -$sql.= " u.rowid as uid, u.lastname, u.firstname, u.email, u.lang"; -$sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; -$sql .= " , ".MAIN_DB_PREFIX."societe as s"; -$sql .= " , ".MAIN_DB_PREFIX."societe_commerciaux as sc"; -$sql .= " , ".MAIN_DB_PREFIX."user as u"; +$sql .= " u.rowid as uid, u.lastname, u.firstname, u.email, u.lang"; +$sql .= " FROM " . MAIN_DB_PREFIX . "facture as f"; +$sql .= " , " . MAIN_DB_PREFIX . "societe as s"; +$sql .= " , " . MAIN_DB_PREFIX . "societe_commerciaux as sc"; +$sql .= " , " . MAIN_DB_PREFIX . "user as u"; $sql .= " WHERE f.fk_statut = 1 AND f.paye = 0"; $sql .= " AND f.fk_soc = s.rowid"; -if (is_numeric($duration_value)) $sql .= " AND f.date_lim_reglement < '".$db->idate(dol_time_plus_duree($now, $duration_value, "d"))."'"; +if (is_numeric($duration_value)) + $sql .= " AND f.date_lim_reglement < '" . $db->idate(dol_time_plus_duree($now, $duration_value, "d")) . "'"; $sql .= " AND sc.fk_soc = s.rowid"; $sql .= " AND sc.fk_user = u.rowid"; -$sql .= " ORDER BY u.email ASC, s.rowid ASC, f.ref ASC"; // Order by email to allow one message per email +$sql .= " ORDER BY u.email ASC, s.rowid ASC, f.ref ASC"; // Order by email to allow one message per email -//print $sql; -$resql=$db->query($sql); -if ($resql) -{ - $num = $db->num_rows($resql); - $i = 0; - $oldemail = 'none'; $olduid = 0; $oldlang=''; - $total = 0; $foundtoprocess = 0; - print "We found ".$num." couples (unpayed validated invoice - sale representative) qualified\n"; - dol_syslog("We found ".$num." couples (unpayed validated invoice - sale representative) qualified"); - $message=''; +// print $sql; +$resql = $db->query($sql); +if ($resql) { + $num = $db->num_rows($resql); + $i = 0; + $oldemail = 'none'; + $olduid = 0; + $oldlang = ''; + $total = 0; + $foundtoprocess = 0; + print "We found " . $num . " couples (unpayed validated invoice - sale representative) qualified\n"; + dol_syslog("We found " . $num . " couples (unpayed validated invoice - sale representative) qualified"); + $message = ''; - if ($num) - { - while ($i < $num) - { - $obj = $db->fetch_object($resql); + if ($num) { + while ($i < $num) { + $obj = $db->fetch_object($resql); - if (($obj->email <> $oldemail || $obj->uid <> $olduid) || $oldemail == 'none') - { - // Break onto sales representative (new email or uid) - if (dol_strlen($oldemail) && $oldemail != 'none') - { - envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldsalerepresentative); - } - else - { - if ($oldemail != 'none') print "- No email sent for ".$oldsalerepresentative.", total: ".$total."\n"; - } - $oldemail = $obj->email; - $olduid = $obj->uid; - $oldlang = $obj->lang; - $oldsalerepresentative=dolGetFirstLastname($obj->firstname, $obj->lastname); - $message = ''; - $total = 0; - $foundtoprocess = 0; - $salerepresentative=dolGetFirstLastname($obj->firstname, $obj->lastname); - if (empty($obj->email)) print "Warning: Sale representative ".$salerepresentative." has no email. Notice disabled.\n"; - } + if (($obj->email != $oldemail || $obj->uid != $olduid) || $oldemail == 'none') { + // Break onto sales representative (new email or uid) + if (dol_strlen($oldemail) && $oldemail != 'none') { + envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldsalerepresentative); + } else { + if ($oldemail != 'none') + print "- No email sent for " . $oldsalerepresentative . ", total: " . $total . "\n"; + } + $oldemail = $obj->email; + $olduid = $obj->uid; + $oldlang = $obj->lang; + $oldsalerepresentative = dolGetFirstLastname($obj->firstname, $obj->lastname); + $message = ''; + $total = 0; + $foundtoprocess = 0; + $salerepresentative = dolGetFirstLastname($obj->firstname, $obj->lastname); + if (empty($obj->email)) + print "Warning: Sale representative " . $salerepresentative . " has no email. Notice disabled.\n"; + } - // Define line content - $outputlangs=new Translate('', $conf); - $outputlangs->setDefaultLang(empty($obj->lang)?$langs->defaultlang:$obj->lang); // By default language of sale representative + // Define line content + $outputlangs = new Translate('', $conf); + $outputlangs->setDefaultLang(empty($obj->lang) ? $langs->defaultlang : $obj->lang); // By default language of sale representative - // Load translation files required by the page - $outputlangs->loadLangs(array("main", "bills")); + // Load translation files required by the page + $outputlangs->loadLangs(array("main","bills")); - if (dol_strlen($obj->email)) - { - $message .= $outputlangs->trans("Invoice")." ".$obj->ref." : ".price($obj->total_ttc, 0, $outputlangs, 0, 0, -1, $conf->currency)." : ".$obj->name."\n"; - dol_syslog("email_unpaid_invoices_to_representatives.php: ".$obj->email); - $foundtoprocess++; - } - print "Unpaid invoice ".$obj->ref.", price ".price2num($obj->total_ttc).", due date ".dol_print_date($db->jdate($obj->due_date), 'day')." (linked to company ".$obj->name.", sale representative ".dolGetFirstLastname($obj->firstname, $obj->lastname).", email ".$obj->email.", lang ".$outputlangs->defaultlang."): "; - if (dol_strlen($obj->email)) print "qualified."; - else print "disqualified (no email)."; + if (dol_strlen($obj->email)) { + $message .= $outputlangs->trans("Invoice") . " " . $obj->ref . " : " . price($obj->total_ttc, 0, $outputlangs, 0, 0, - 1, $conf->currency) . " : " . $obj->name . "\n"; + dol_syslog("email_unpaid_invoices_to_representatives.php: " . $obj->email); + $foundtoprocess ++; + } + print "Unpaid invoice " . $obj->ref . ", price " . price2num($obj->total_ttc) . ", due date " . dol_print_date($db->jdate($obj->due_date), 'day') . " (linked to company " . $obj->name . ", sale representative " . dolGetFirstLastname($obj->firstname, $obj->lastname) . ", email " . $obj->email . ", lang " . $outputlangs->defaultlang . "): "; + if (dol_strlen($obj->email)) + print "qualified."; + else + print "disqualified (no email)."; print "\n"; unset($outputlangs); - $total += $obj->total_ttc; - $i++; - } + $total += $obj->total_ttc; + $i ++; + } - // Si il reste des envois en buffer - if ($foundtoprocess) - { - if (dol_strlen($oldemail) && $oldemail != 'none') // Break onto email (new email) - { - envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldsalerepresentative); - } - else + // Si il reste des envois en buffer + if ($foundtoprocess) { + if (dol_strlen($oldemail) && $oldemail != 'none') // Break onto email (new email) { - if ($oldemail != 'none') print "- No email sent for ".$oldsalerepresentative.", total: ".$total."\n"; - } - } - } - else - { - print "No unpaid invoices (for companies linked to a particular commercial dolibarr user) found\n"; - } + envoi_mail($mode, $oldemail, $message, $total, $oldlang, $oldsalerepresentative); + } else { + if ($oldemail != 'none') + print "- No email sent for " . $oldsalerepresentative . ", total: " . $total . "\n"; + } + } + } else { + print "No unpaid invoices (for companies linked to a particular commercial dolibarr user) found\n"; + } - exit(0); + exit(0); +} else { + dol_print_error($db); + dol_syslog("email_unpaid_invoices_to_representatives.php: Error"); + + exit(- 1); } -else -{ - dol_print_error($db); - dol_syslog("email_unpaid_invoices_to_representatives.php: Error"); - - exit(-1); -} - /** - * Send email + * Send email * - * @param string $mode Mode (test | confirm) - * @param string $oldemail Old email - * @param string $message Message to send - * @param string $total Total amount of unpayed invoices - * @param string $userlang Code lang to use for email output. - * @param string $oldsalerepresentative Old sale representative - * @return int <0 if KO, >0 if OK + * @param string $mode + * Mode (test | confirm) + * @param string $oldemail + * Old email + * @param string $message + * Message to send + * @param string $total + * Total amount of unpayed invoices + * @param string $userlang + * Code lang to use for email output. + * @param string $oldsalerepresentative + * Old sale representative + * @return int <0 if KO, >0 if OK */ function envoi_mail($mode, $oldemail, $message, $total, $userlang, $oldsalerepresentative) { - global $conf,$langs; + global $conf, $langs; - if (getenv('DOL_FORCE_EMAIL_TO')) $oldemail=getenv('DOL_FORCE_EMAIL_TO'); + if (getenv('DOL_FORCE_EMAIL_TO')) + $oldemail = getenv('DOL_FORCE_EMAIL_TO'); - $newlangs=new Translate('', $conf); - $newlangs->setDefaultLang(empty($userlang)?(empty($conf->global->MAIN_LANG_DEFAULT)?'auto':$conf->global->MAIN_LANG_DEFAULT):$userlang); - $newlangs->load("main"); - $newlangs->load("bills"); + $newlangs = new Translate('', $conf); + $newlangs->setDefaultLang(empty($userlang) ? (empty($conf->global->MAIN_LANG_DEFAULT) ? 'auto' : $conf->global->MAIN_LANG_DEFAULT) : $userlang); + $newlangs->load("main"); + $newlangs->load("bills"); - $subject = (empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_SUBJECT)?$newlangs->trans("ListOfYourUnpaidInvoices"):$conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_SUBJECT); - $sendto = $oldemail; - $from = $conf->global->MAIN_MAIL_EMAIL_FROM; - $errorsto = $conf->global->MAIN_MAIL_ERRORS_TO; - $msgishtml = -1; + $subject = (empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_SUBJECT) ? $newlangs->trans("ListOfYourUnpaidInvoices") : $conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_SUBJECT); + $sendto = $oldemail; + $from = $conf->global->MAIN_MAIL_EMAIL_FROM; + $errorsto = $conf->global->MAIN_MAIL_ERRORS_TO; + $msgishtml = - 1; - print "- Send email for ".$oldsalerepresentative." (".$oldemail."), total: ".$total."\n"; - dol_syslog("email_unpaid_invoices_to_representatives.php: send mail to ".$oldemail); + print "- Send email for " . $oldsalerepresentative . " (" . $oldemail . "), total: " . $total . "\n"; + dol_syslog("email_unpaid_invoices_to_representatives.php: send mail to " . $oldemail); - $usehtml=0; - if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_FOOTER)) $usehtml+=1; - if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_HEADER)) $usehtml+=1; + $usehtml = 0; + if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_FOOTER)) + $usehtml += 1; + if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_HEADER)) + $usehtml += 1; - $allmessage=''; - if (! empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_HEADER)) - { - $allmessage.=$conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_HEADER; - } - else - { - $allmessage.= $newlangs->transnoentities("ListOfYourUnpaidInvoices").($usehtml?"
\n":"\n").($usehtml?"
\n":"\n"); - $allmessage.= $newlangs->transnoentities("NoteListOfYourUnpaidInvoices").($usehtml?"
\n":"\n"); - } - $allmessage.= $message.($usehtml?"
\n":"\n"); - $allmessage.= $langs->trans("Total")." = ".price($total, 0, $newlangs, 0, 0, -1, $conf->currency).($usehtml?"
\n":"\n"); - if (! empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_FOOTER)) - { - $allmessage.=$conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_FOOTER; - if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_FOOTER)) $usehtml+=1; - } + $allmessage = ''; + if (! empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_HEADER)) { + $allmessage .= $conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_HEADER; + } else { + $allmessage .= $newlangs->transnoentities("ListOfYourUnpaidInvoices") . ($usehtml ? "
\n" : "\n") . ($usehtml ? "
\n" : "\n"); + $allmessage .= $newlangs->transnoentities("NoteListOfYourUnpaidInvoices") . ($usehtml ? "
\n" : "\n"); + } + $allmessage .= $message . ($usehtml ? "
\n" : "\n"); + $allmessage .= $langs->trans("Total") . " = " . price($total, 0, $newlangs, 0, 0, - 1, $conf->currency) . ($usehtml ? "
\n" : "\n"); + if (! empty($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_FOOTER)) { + $allmessage .= $conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_FOOTER; + if (dol_textishtml($conf->global->SCRIPT_EMAIL_UNPAID_INVOICES_SALESREPRESENTATIVES_FOOTER)) + $usehtml += 1; + } - $mail = new CMailFile( - $subject, - $sendto, - $from, - $allmessage, - array(), - array(), - array(), - '', - '', - 0, - $msgishtml - ); + $mail = new CMailFile($subject, $sendto, $from, $allmessage, array(), array(), array(), '', '', 0, $msgishtml); - $mail->errors_to = $errorsto; + $mail->errors_to = $errorsto; - // Send or not email - if ($mode == 'confirm') - { - $result=$mail->sendfile(); - if (! $result) - { - print "Error sending email ".$mail->error."\n"; - dol_syslog("Error sending email ".$mail->error."\n"); - } - } - else - { - print "No email sent (test mode)\n"; - dol_syslog("No email sent (test mode)"); - $mail->dump_mail(); - $result=1; - } + // Send or not email + if ($mode == 'confirm') { + $result = $mail->sendfile(); + if (! $result) { + print "Error sending email " . $mail->error . "\n"; + dol_syslog("Error sending email " . $mail->error . "\n"); + } + } else { + print "No email sent (test mode)\n"; + dol_syslog("No email sent (test mode)"); + $mail->dump_mail(); + $result = 1; + } - if ($result) - { - return 1; - } - else - { - return -1; - } + if ($result) { + return 1; + } else { + return - 1; + } } diff --git a/scripts/invoices/rebuild_merge_pdf.php b/scripts/invoices/rebuild_merge_pdf.php index 62865570b28..f90f4a615c9 100755 --- a/scripts/invoices/rebuild_merge_pdf.php +++ b/scripts/invoices/rebuild_merge_pdf.php @@ -1,7 +1,7 @@ #!/usr/bin/env php + * Copyright (C) 2009-2012 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -10,7 +10,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -18,251 +18,217 @@ */ /** - * \file scripts/invoices/rebuild_merge_pdf.php - * \ingroup facture - * \brief Script to rebuild PDF and merge PDF files into one + * \file scripts/invoices/rebuild_merge_pdf.php + * \ingroup facture + * \brief Script to rebuild PDF and merge PDF files into one */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } // Include Dolibarr environment -require_once $path."../../htdocs/master.inc.php"; +require_once $path . "../../htdocs/master.inc.php"; // After this $db is an opened handler to database. We close it at end of file. -require_once DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php"; -require_once DOL_DOCUMENT_ROOT."/core/modules/facture/modules_facture.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/date.lib.php"; -require_once DOL_DOCUMENT_ROOT.'/core/lib/invoice2.lib.php'; - +require_once DOL_DOCUMENT_ROOT . "/compta/facture/class/facture.class.php"; +require_once DOL_DOCUMENT_ROOT . "/core/modules/facture/modules_facture.php"; +require_once DOL_DOCUMENT_ROOT . "/core/lib/date.lib.php"; +require_once DOL_DOCUMENT_ROOT . '/core/lib/invoice2.lib.php'; // Load main language strings $langs->load("main"); // Global variables -$version=DOL_VERSION; -$error=0; - - +$version = DOL_VERSION; +$error = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); // Check parameters -if (! isset($argv[1])) -{ +if (! isset($argv[1])) { usage(); - exit(-1); + exit(- 1); } -$diroutputpdf=$conf->facture->dir_output . '/temp'; -$newlangid='en_EN'; // To force a new lang id -$filter=array(); -$regenerate=''; // Ask regenerate (contains name of model to use) -$option=''; -$fileprefix='mergedpdf'; +$diroutputpdf = $conf->facture->dir_output . '/temp'; +$newlangid = 'en_EN'; // To force a new lang id +$filter = array(); +$regenerate = ''; // Ask regenerate (contains name of model to use) +$option = ''; +$fileprefix = 'mergedpdf'; -foreach ($argv as $key => $value) -{ - $found=false; +foreach ($argv as $key => $value) { + $found = false; // Define options - if (preg_match('/^lang=/i', $value)) - { - $found=true; - $valarray=explode('=', $value); - $newlangid=$valarray[1]; - print 'Use language '.$newlangid.".\n"; + if (preg_match('/^lang=/i', $value)) { + $found = true; + $valarray = explode('=', $value); + $newlangid = $valarray[1]; + print 'Use language ' . $newlangid . ".\n"; } - if (preg_match('/^prefix=/i', $value)) - { - $found=true; - $valarray=explode('=', $value); - $fileprefix=$valarray[1]; - print 'Use prefix for filename '.$fileprefix.".\n"; + if (preg_match('/^prefix=/i', $value)) { + $found = true; + $valarray = explode('=', $value); + $fileprefix = $valarray[1]; + print 'Use prefix for filename ' . $fileprefix . ".\n"; } - if (preg_match('/^regenerate=(.*)/i', $value, $reg)) - { - if (! in_array($reg[1], array('','0','no'))) - { - $found=true; - $regenerate=$reg[1]; - print 'Regeneration of PDF is requested with template '.$regenerate."\n"; - } - } - - if ($value == 'filter=all') - { - $found=true; - $option.=(empty($option)?'':'_').'all'; - $filter[]='all'; - - print 'Rebuild PDF for all invoices'."\n"; - } - - if ($value == 'filter=date') - { - $found=true; - $option.=(empty($option)?'':'_').'date_'.$argv[$key+1].'_'.$argv[$key+2]; - $filter[]='date'; - - $dateafterdate=dol_stringtotime($argv[$key+1]); - $datebeforedate=dol_stringtotime($argv[$key+2]); - print 'Rebuild PDF for invoices validated between '.dol_print_date($dateafterdate, 'day', 'gmt')." and ".dol_print_date($datebeforedate, 'day', 'gmt').".\n"; - } - - if ($value == 'filter=payments') - { - $found=true; - $option.=(empty($option)?'':'_').'payments_'.$argv[$key+1].'_'.$argv[$key+2]; - $filter[]='payments'; - - $paymentdateafter=dol_stringtotime($argv[$key+1].'000000'); - $paymentdatebefore=dol_stringtotime($argv[$key+2].'235959'); - if (empty($paymentdateafter) || empty($paymentdatebefore)) - { - print 'Error: Bad date format or value'."\n"; - exit(-1); + if (preg_match('/^regenerate=(.*)/i', $value, $reg)) { + if (! in_array($reg[1], array('','0','no'))) { + $found = true; + $regenerate = $reg[1]; + print 'Regeneration of PDF is requested with template ' . $regenerate . "\n"; } - print 'Rebuild PDF for invoices with at least one payment between '.dol_print_date($paymentdateafter, 'day', 'gmt')." and ".dol_print_date($paymentdatebefore, 'day', 'gmt').".\n"; } - if ($value == 'filter=nopayment') - { - $found=true; - $option.=(empty($option)?'':'_').'nopayment'; - $filter[]='nopayment'; + if ($value == 'filter=all') { + $found = true; + $option .= (empty($option) ? '' : '_') . 'all'; + $filter[] = 'all'; - print 'Rebuild PDF for invoices with no payment done yet.'."\n"; + print 'Rebuild PDF for all invoices' . "\n"; } - if ($value == 'filter=bank') - { - $found=true; - $option.=(empty($option)?'':'_').'bank_'.$argv[$key+1]; - $filter[]='bank'; + if ($value == 'filter=date') { + $found = true; + $option .= (empty($option) ? '' : '_') . 'date_' . $argv[$key + 1] . '_' . $argv[$key + 2]; + $filter[] = 'date'; - $paymentonbankref=$argv[$key+1]; - $bankaccount=new Account($db); - $result=$bankaccount->fetch(0, $paymentonbankref); - if ($result <= 0) - { - print 'Error: Bank account with ref "'.$paymentonbankref.'" not found'."\n"; - exit(-1); + $dateafterdate = dol_stringtotime($argv[$key + 1]); + $datebeforedate = dol_stringtotime($argv[$key + 2]); + print 'Rebuild PDF for invoices validated between ' . dol_print_date($dateafterdate, 'day', 'gmt') . " and " . dol_print_date($datebeforedate, 'day', 'gmt') . ".\n"; + } + + if ($value == 'filter=payments') { + $found = true; + $option .= (empty($option) ? '' : '_') . 'payments_' . $argv[$key + 1] . '_' . $argv[$key + 2]; + $filter[] = 'payments'; + + $paymentdateafter = dol_stringtotime($argv[$key + 1] . '000000'); + $paymentdatebefore = dol_stringtotime($argv[$key + 2] . '235959'); + if (empty($paymentdateafter) || empty($paymentdatebefore)) { + print 'Error: Bad date format or value' . "\n"; + exit(- 1); } - $paymentonbankid=$bankaccount->id; - print 'Rebuild PDF for invoices with at least one payment on financial account '.$bankaccount->ref."\n"; + print 'Rebuild PDF for invoices with at least one payment between ' . dol_print_date($paymentdateafter, 'day', 'gmt') . " and " . dol_print_date($paymentdatebefore, 'day', 'gmt') . ".\n"; } - if ($value == 'filter=nodeposit') - { - $found=true; - $option.=(empty($option)?'':'_').'nodeposit'; - $filter[]='nodeposit'; + if ($value == 'filter=nopayment') { + $found = true; + $option .= (empty($option) ? '' : '_') . 'nopayment'; + $filter[] = 'nopayment'; - print 'Exclude deposit invoices'."\n"; - } - if ($value == 'filter=noreplacement') - { - $found=true; - $option.=(empty($option)?'':'_').'noreplacement'; - $filter[]='noreplacement'; + print 'Rebuild PDF for invoices with no payment done yet.' . "\n"; + } - print 'Exclude replacement invoices'."\n"; - } - if ($value == 'filter=nocreditnote') - { - $found=true; - $option.=(empty($option)?'':'_').'nocreditnote'; - $filter[]='nocreditnote'; + if ($value == 'filter=bank') { + $found = true; + $option .= (empty($option) ? '' : '_') . 'bank_' . $argv[$key + 1]; + $filter[] = 'bank'; - print 'Exclude credit note invoices'."\n"; - } + $paymentonbankref = $argv[$key + 1]; + $bankaccount = new Account($db); + $result = $bankaccount->fetch(0, $paymentonbankref); + if ($result <= 0) { + print 'Error: Bank account with ref "' . $paymentonbankref . '" not found' . "\n"; + exit(- 1); + } + $paymentonbankid = $bankaccount->id; + print 'Rebuild PDF for invoices with at least one payment on financial account ' . $bankaccount->ref . "\n"; + } - if ($value == 'filter=excludethirdparties') - { - $found=true; - $filter[]='excludethirdparties'; + if ($value == 'filter=nodeposit') { + $found = true; + $option .= (empty($option) ? '' : '_') . 'nodeposit'; + $filter[] = 'nodeposit'; - $thirdpartiesid=explode(',', $argv[$key+1]); - print 'Exclude thirdparties with id in list ('.join(',', $thirdpartiesid).").\n"; + print 'Exclude deposit invoices' . "\n"; + } + if ($value == 'filter=noreplacement') { + $found = true; + $option .= (empty($option) ? '' : '_') . 'noreplacement'; + $filter[] = 'noreplacement'; - $option.=(empty($option)?'':'_').'excludethirdparties'.join('-', $thirdpartiesid); - } - if ($value == 'filter=onlythirdparties') - { - $found=true; - $filter[]='onlythirdparties'; + print 'Exclude replacement invoices' . "\n"; + } + if ($value == 'filter=nocreditnote') { + $found = true; + $option .= (empty($option) ? '' : '_') . 'nocreditnote'; + $filter[] = 'nocreditnote'; - $thirdpartiesid=explode(',', $argv[$key+1]); - print 'Only thirdparties with id in list ('.join(',', $thirdpartiesid).").\n"; + print 'Exclude credit note invoices' . "\n"; + } - $option.=(empty($option)?'':'_').'onlythirdparty'.join('-', $thirdpartiesid); - } + if ($value == 'filter=excludethirdparties') { + $found = true; + $filter[] = 'excludethirdparties'; - if (! $found && preg_match('/filter=/i', $value)) - { + $thirdpartiesid = explode(',', $argv[$key + 1]); + print 'Exclude thirdparties with id in list (' . join(',', $thirdpartiesid) . ").\n"; + + $option .= (empty($option) ? '' : '_') . 'excludethirdparties' . join('-', $thirdpartiesid); + } + if ($value == 'filter=onlythirdparties') { + $found = true; + $filter[] = 'onlythirdparties'; + + $thirdpartiesid = explode(',', $argv[$key + 1]); + print 'Only thirdparties with id in list (' . join(',', $thirdpartiesid) . ").\n"; + + $option .= (empty($option) ? '' : '_') . 'onlythirdparty' . join('-', $thirdpartiesid); + } + + if (! $found && preg_match('/filter=/i', $value)) { usage(); - exit(-1); + exit(- 1); } } // Check if an option and a filter has been provided -if (empty($option) && count($filter) <= 0) -{ +if (empty($option) && count($filter) <= 0) { usage(); - exit(-1); + exit(- 1); } // Check if there is no uncompatible choice -if (in_array('payments', $filter) && in_array('nopayment', $filter)) -{ +if (in_array('payments', $filter) && in_array('nopayment', $filter)) { usage(); - exit(-1); + exit(- 1); } -if (in_array('bank', $filter) && in_array('nopayment', $filter)) -{ +if (in_array('bank', $filter) && in_array('nopayment', $filter)) { usage(); - exit(-1); + exit(- 1); } - // Define SQL and SQL request to select invoices // Use $filter, $dateafterdate, datebeforedate, $paymentdateafter, $paymentdatebefore -$result=rebuild_merge_pdf($db, $langs, $conf, $diroutputpdf, $newlangid, $filter, $dateafterdate, $datebeforedate, $paymentdateafter, $paymentdatebefore, 1, $regenerate, $option, $paymentonbankid, $thirdpartiesid, $fileprefix); - - +$result = rebuild_merge_pdf($db, $langs, $conf, $diroutputpdf, $newlangid, $filter, $dateafterdate, $datebeforedate, $paymentdateafter, $paymentdatebefore, 1, $regenerate, $option, $paymentonbankid, $thirdpartiesid, $fileprefix); // -------------------- END OF YOUR CODE -------------------- -if ($result >= 0) -{ - $error=0; - print '--- end ok'."\n"; -} -else -{ - $error=$result; - print '--- end error code='.$error."\n"; +if ($result >= 0) { + $error = 0; + print '--- end ok' . "\n"; +} else { + $error = $result; + print '--- end error code=' . $error . "\n"; } $db->close(); exit($error); - - /** * Show usage of script * @@ -272,29 +238,29 @@ function usage() { global $script_file; - print "Rebuild PDF files for some invoices and merge PDF files into one.\n"; + print "Rebuild PDF files for some invoices and merge PDF files into one.\n"; print "\n"; print "To build/merge PDF for invoices in a date range:\n"; - print "Usage: ".$script_file." filter=date dateafter datebefore\n"; + print "Usage: " . $script_file . " filter=date dateafter datebefore\n"; print "To build/merge PDF for invoices with at least one payment in a date range:\n"; - print "Usage: ".$script_file." filter=payments dateafter datebefore\n"; + print "Usage: " . $script_file . " filter=payments dateafter datebefore\n"; print "To build/merge PDF for invoices with at least one payment onto a bank account:\n"; - print "Usage: ".$script_file." filter=bank bankref\n"; + print "Usage: " . $script_file . " filter=bank bankref\n"; print "To build/merge PDF for all invoices, use filter=all\n"; - print "Usage: ".$script_file." filter=all\n"; + print "Usage: " . $script_file . " filter=all\n"; print "To build/merge PDF for invoices with no payments, use filter=nopayment\n"; - print "Usage: ".$script_file." filter=nopayment\n"; - print "To exclude credit notes, use filter=nocreditnote\n"; - print "To exclude replacement invoices, use filter=noreplacement\n"; - print "To exclude deposit invoices, use filter=nodeposit\n"; - print "To exclude some thirdparties, use filter=excludethirdparties id1,id2...\n"; - print "To limit to some thirdparties, use filter=onlythirdparties id1,id2...\n"; - print "To regenerate existing PDF, use regenerate=templatename\n"; - print "To generate invoices in a language, use lang=xx_XX\n"; - print "To set prefix of generated file name, use prefix=myfileprefix\n"; - print "\n"; - print "Example: ".$script_file." filter=payments 20080101 20081231 lang=fr_FR regenerate=crabe\n"; - print "Example: ".$script_file." filter=all lang=en_US\n"; + print "Usage: " . $script_file . " filter=nopayment\n"; + print "To exclude credit notes, use filter=nocreditnote\n"; + print "To exclude replacement invoices, use filter=noreplacement\n"; + print "To exclude deposit invoices, use filter=nodeposit\n"; + print "To exclude some thirdparties, use filter=excludethirdparties id1,id2...\n"; + print "To limit to some thirdparties, use filter=onlythirdparties id1,id2...\n"; + print "To regenerate existing PDF, use regenerate=templatename\n"; + print "To generate invoices in a language, use lang=xx_XX\n"; + print "To set prefix of generated file name, use prefix=myfileprefix\n"; + print "\n"; + print "Example: " . $script_file . " filter=payments 20080101 20081231 lang=fr_FR regenerate=crabe\n"; + print "Example: " . $script_file . " filter=all lang=en_US\n"; print "\n"; print "Note that some filters can be cumulated.\n"; } diff --git a/scripts/members/sync_members_dolibarr2ldap.php b/scripts/members/sync_members_dolibarr2ldap.php index 598098e240a..82d9a68a1b1 100755 --- a/scripts/members/sync_members_dolibarr2ldap.php +++ b/scripts/members/sync_members_dolibarr2ldap.php @@ -1,8 +1,8 @@ #!/usr/bin/env php - * Copyright (C) 2006-2008 Laurent Destailleur + * Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2006-2008 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -11,7 +11,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -19,74 +19,71 @@ */ /** - * \file scripts/members/sync_members_dolibarr2ldap.php - * \ingroup ldap member - * \brief Script de mise a jour des adherents dans LDAP depuis base Dolibarr + * \file scripts/members/sync_members_dolibarr2ldap.php + * \ingroup ldap member + * \brief Script de mise a jour des adherents dans LDAP depuis base Dolibarr */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; -require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php"; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/ldap.class.php"; +require_once DOL_DOCUMENT_ROOT . "/adherents/class/adherent.class.php"; $langs->load("main"); // Global variables -$version=DOL_VERSION; -$error=0; -$confirmed=0; - +$version = DOL_VERSION; +$error = 0; +$confirmed = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); if (! isset($argv[1]) || ! $argv[1]) { - print "Usage: $script_file now [-y]\n"; - exit(-1); + print "Usage: $script_file now [-y]\n"; + exit(- 1); } -foreach($argv as $key => $val) -{ - if (preg_match('/-y$/', $val, $reg)) $confirmed=1; +foreach ($argv as $key => $val) { + if (preg_match('/-y$/', $val, $reg)) + $confirmed = 1; } -$now=$argv[1]; +$now = $argv[1]; print "Mails sending disabled (useless in batch mode)\n"; -$conf->global->MAIN_DISABLE_ALL_MAILS=1; // On bloque les mails +$conf->global->MAIN_DISABLE_ALL_MAILS = 1; // On bloque les mails print "\n"; print "----- Synchronize all records from Dolibarr database:\n"; -print "type=".$conf->db->type."\n"; -print "host=".$conf->db->host."\n"; -print "port=".$conf->db->port."\n"; -print "login=".$conf->db->user."\n"; -//print "pass=".preg_replace('/./i','*',$conf->db->password)."\n"; // Not defined for security reasons -print "database=".$conf->db->name."\n"; +print "type=" . $conf->db->type . "\n"; +print "host=" . $conf->db->host . "\n"; +print "port=" . $conf->db->port . "\n"; +print "login=" . $conf->db->user . "\n"; +// print "pass=".preg_replace('/./i','*',$conf->db->password)."\n"; // Not defined for security reasons +print "database=" . $conf->db->name . "\n"; print "\n"; print "----- To LDAP database:\n"; -print "host=".$conf->global->LDAP_SERVER_HOST."\n"; -print "port=".$conf->global->LDAP_SERVER_PORT."\n"; -print "login=".$conf->global->LDAP_ADMIN_DN."\n"; -print "pass=".preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)."\n"; -print "DN target=".$conf->global->LDAP_MEMBER_DN."\n"; +print "host=" . $conf->global->LDAP_SERVER_HOST . "\n"; +print "port=" . $conf->global->LDAP_SERVER_PORT . "\n"; +print "login=" . $conf->global->LDAP_ADMIN_DN . "\n"; +print "pass=" . preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS) . "\n"; +print "DN target=" . $conf->global->LDAP_MEMBER_DN . "\n"; print "\n"; -if (! $confirmed) -{ +if (! $confirmed) { print "Press a key to confirm...\n"; $input = trim(fgets(STDIN)); print "Warning, this operation may result in data loss if it failed.\n"; @@ -96,76 +93,67 @@ if (! $confirmed) } /* -if (! $conf->global->LDAP_MEMBER_ACTIVE) -{ - print $langs->trans("LDAPSynchronizationNotSetupInDolibarr"); - exit(-1); -} -*/ + * if (! $conf->global->LDAP_MEMBER_ACTIVE) + * { + * print $langs->trans("LDAPSynchronizationNotSetupInDolibarr"); + * exit(-1); + * } + */ $sql = "SELECT rowid"; -$sql .= " FROM ".MAIN_DB_PREFIX."adherent"; +$sql .= " FROM " . MAIN_DB_PREFIX . "adherent"; $resql = $db->query($sql); -if ($resql) -{ +if ($resql) { $num = $db->num_rows($resql); $i = 0; - $ldap=new Ldap(); + $ldap = new Ldap(); $ldap->connect_bind(); - while ($i < $num) - { - $ldap->error=""; + while ($i < $num) { + $ldap->error = ""; $obj = $db->fetch_object($resql); $member = new Adherent($db); - $result=$member->fetch($obj->rowid); - if ($result < 0) - { + $result = $member->fetch($obj->rowid); + if ($result < 0) { dol_print_error($db, $member->error); - exit(-1); + exit(- 1); } - $result=$member->fetch_subscriptions(); - if ($result < 0) - { + $result = $member->fetch_subscriptions(); + if ($result < 0) { dol_print_error($db, $member->error); - exit(-1); + exit(- 1); } - print $langs->transnoentities("UpdateMember")." rowid=".$member->id." ".$member->getFullName($langs); + print $langs->transnoentities("UpdateMember") . " rowid=" . $member->id . " " . $member->getFullName($langs); - $oldobject=$member; + $oldobject = $member; - $oldinfo=$oldobject->_load_ldap_info(); - $olddn=$oldobject->_load_ldap_dn($oldinfo); + $oldinfo = $oldobject->_load_ldap_info(); + $olddn = $oldobject->_load_ldap_dn($oldinfo); - $info=$member->_load_ldap_info(); - $dn=$member->_load_ldap_dn($info); + $info = $member->_load_ldap_info(); + $dn = $member->_load_ldap_dn($info); - $result=$ldap->add($dn, $info, $user); // Wil fail if already exists - $result=$ldap->update($dn, $info, $user, $olddn); - if ($result > 0) - { - print " - ".$langs->transnoentities("OK"); - } - else - { - $error++; - print " - ".$langs->transnoentities("KO").' - '.$ldap->error; + $result = $ldap->add($dn, $info, $user); // Wil fail if already exists + $result = $ldap->update($dn, $info, $user, $olddn); + if ($result > 0) { + print " - " . $langs->transnoentities("OK"); + } else { + $error ++; + print " - " . $langs->transnoentities("KO") . ' - ' . $ldap->error; } print "\n"; - $i++; + $i ++; } $ldap->unbind(); $ldap->close(); -} -else -{ +} else { dol_print_error($db); } diff --git a/scripts/members/sync_members_ldap2dolibarr.php b/scripts/members/sync_members_ldap2dolibarr.php index 2a9036ca0b2..3a7aee9c5df 100755 --- a/scripts/members/sync_members_ldap2dolibarr.php +++ b/scripts/members/sync_members_ldap2dolibarr.php @@ -1,8 +1,8 @@ #!/usr/bin/env php - * Copyright (C) 2006-2015 Laurent Destailleur + * Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2006-2015 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -11,7 +11,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -19,322 +19,265 @@ */ /** - * \file scripts/members/sync_members_ldap2dolibarr.php - * \ingroup ldap member - * \brief Script de mise a jour des adherents dans Dolibarr depuis LDAP + * \file scripts/members/sync_members_ldap2dolibarr.php + * \ingroup ldap member + * \brief Script de mise a jour des adherents dans Dolibarr depuis LDAP */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/date.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; -require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php"; -require_once DOL_DOCUMENT_ROOT."/adherents/class/subscription.class.php"; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/lib/date.lib.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/ldap.class.php"; +require_once DOL_DOCUMENT_ROOT . "/adherents/class/adherent.class.php"; +require_once DOL_DOCUMENT_ROOT . "/adherents/class/subscription.class.php"; -$langs->loadLangs(array("main", "errors")); +$langs->loadLangs(array("main","errors")); // Global variables -$version=DOL_VERSION; -$error=0; -$forcecommit=0; -$confirmed=0; - +$version = DOL_VERSION; +$error = 0; +$forcecommit = 0; +$confirmed = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); // List of fields to get from LDAP -$required_fields = array( - $conf->global->LDAP_KEY_MEMBERS, - $conf->global->LDAP_FIELD_FULLNAME, - $conf->global->LDAP_FIELD_LOGIN, - $conf->global->LDAP_FIELD_LOGIN_SAMBA, - $conf->global->LDAP_FIELD_PASSWORD, - $conf->global->LDAP_FIELD_PASSWORD_CRYPTED, - $conf->global->LDAP_FIELD_NAME, - $conf->global->LDAP_FIELD_FIRSTNAME, - $conf->global->LDAP_FIELD_MAIL, - $conf->global->LDAP_FIELD_PHONE, - $conf->global->LDAP_FIELD_PHONE_PERSO, - $conf->global->LDAP_FIELD_MOBILE, - $conf->global->LDAP_FIELD_FAX, - $conf->global->LDAP_FIELD_ADDRESS, - $conf->global->LDAP_FIELD_ZIP, - $conf->global->LDAP_FIELD_TOWN, - $conf->global->LDAP_FIELD_COUNTRY, - $conf->global->LDAP_FIELD_DESCRIPTION, - $conf->global->LDAP_FIELD_BIRTHDATE, - $conf->global->LDAP_FIELD_MEMBER_STATUS, - $conf->global->LDAP_FIELD_MEMBER_END_LASTSUBSCRIPTION, +$required_fields = array($conf->global->LDAP_KEY_MEMBERS,$conf->global->LDAP_FIELD_FULLNAME,$conf->global->LDAP_FIELD_LOGIN,$conf->global->LDAP_FIELD_LOGIN_SAMBA,$conf->global->LDAP_FIELD_PASSWORD,$conf->global->LDAP_FIELD_PASSWORD_CRYPTED,$conf->global->LDAP_FIELD_NAME,$conf->global->LDAP_FIELD_FIRSTNAME,$conf->global->LDAP_FIELD_MAIL,$conf->global->LDAP_FIELD_PHONE,$conf->global->LDAP_FIELD_PHONE_PERSO,$conf->global->LDAP_FIELD_MOBILE,$conf->global->LDAP_FIELD_FAX,$conf->global->LDAP_FIELD_ADDRESS,$conf->global->LDAP_FIELD_ZIP,$conf->global->LDAP_FIELD_TOWN,$conf->global->LDAP_FIELD_COUNTRY,$conf->global->LDAP_FIELD_DESCRIPTION,$conf->global->LDAP_FIELD_BIRTHDATE,$conf->global->LDAP_FIELD_MEMBER_STATUS,$conf->global->LDAP_FIELD_MEMBER_END_LASTSUBSCRIPTION, // Subscriptions - $conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE, - $conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_AMOUNT, - $conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_DATE, - $conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_AMOUNT -); + $conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE,$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_AMOUNT,$conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_DATE,$conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_AMOUNT); // Remove from required_fields all entries not configured in LDAP (empty) and duplicated -$required_fields=array_unique(array_values(array_filter($required_fields, "dolValidElement"))); - +$required_fields = array_unique(array_values(array_filter($required_fields, "dolValidElement"))); if (! isset($argv[2]) || ! is_numeric($argv[2])) { - print "Usage: $script_file (nocommitiferror|commitiferror) id_member_type [--server=ldapserverhost] [-y]\n"; - exit(-1); + print "Usage: $script_file (nocommitiferror|commitiferror) id_member_type [--server=ldapserverhost] [-y]\n"; + exit(- 1); } -$typeid=$argv[2]; -foreach($argv as $key => $val) -{ - if ($val == 'commitiferror') $forcecommit=1; - if (preg_match('/--server=([^\s]+)$/', $val, $reg)) $conf->global->LDAP_SERVER_HOST=$reg[1]; - if (preg_match('/-y$/', $val, $reg)) $confirmed=1; +$typeid = $argv[2]; +foreach ($argv as $key => $val) { + if ($val == 'commitiferror') + $forcecommit = 1; + if (preg_match('/--server=([^\s]+)$/', $val, $reg)) + $conf->global->LDAP_SERVER_HOST = $reg[1]; + if (preg_match('/-y$/', $val, $reg)) + $confirmed = 1; } print "Mails sending disabled (useless in batch mode)\n"; -$conf->global->MAIN_DISABLE_ALL_MAILS=1; // On bloque les mails +$conf->global->MAIN_DISABLE_ALL_MAILS = 1; // On bloque les mails print "\n"; print "----- Synchronize all records from LDAP database:\n"; -print "host=".$conf->global->LDAP_SERVER_HOST."\n"; -print "port=".$conf->global->LDAP_SERVER_PORT."\n"; -print "login=".$conf->global->LDAP_ADMIN_DN."\n"; -print "pass=".preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)."\n"; -print "DN to extract=".$conf->global->LDAP_MEMBER_DN."\n"; -if (! empty($conf->global->LDAP_MEMBER_FILTER)) print 'Filter=('.$conf->global->LDAP_MEMBER_FILTER.')'."\n"; // Note: filter is defined into function getRecords -else print 'Filter=('.$conf->global->LDAP_KEY_MEMBERS.'=*)'."\n"; +print "host=" . $conf->global->LDAP_SERVER_HOST . "\n"; +print "port=" . $conf->global->LDAP_SERVER_PORT . "\n"; +print "login=" . $conf->global->LDAP_ADMIN_DN . "\n"; +print "pass=" . preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS) . "\n"; +print "DN to extract=" . $conf->global->LDAP_MEMBER_DN . "\n"; +if (! empty($conf->global->LDAP_MEMBER_FILTER)) + print 'Filter=(' . $conf->global->LDAP_MEMBER_FILTER . ')' . "\n"; // Note: filter is defined into function getRecords +else + print 'Filter=(' . $conf->global->LDAP_KEY_MEMBERS . '=*)' . "\n"; print "----- To Dolibarr database:\n"; -print "type=".$conf->db->type."\n"; -print "host=".$conf->db->host."\n"; -print "port=".$conf->db->port."\n"; -print "login=".$conf->db->user."\n"; -print "database=".$conf->db->name."\n"; +print "type=" . $conf->db->type . "\n"; +print "host=" . $conf->db->host . "\n"; +print "port=" . $conf->db->port . "\n"; +print "login=" . $conf->db->user . "\n"; +print "database=" . $conf->db->name . "\n"; print "----- Options:\n"; -print "commitiferror=".$forcecommit."\n"; -print "Mapped LDAP fields=".join(',', $required_fields)."\n"; +print "commitiferror=" . $forcecommit . "\n"; +print "Mapped LDAP fields=" . join(',', $required_fields) . "\n"; print "\n"; // Check parameters -if (empty($conf->global->LDAP_MEMBER_DN)) -{ - print $langs->trans("Error").': '.$langs->trans("LDAP setup for members not defined inside Dolibarr")."\n"; - exit(-1); +if (empty($conf->global->LDAP_MEMBER_DN)) { + print $langs->trans("Error") . ': ' . $langs->trans("LDAP setup for members not defined inside Dolibarr") . "\n"; + exit(- 1); } -if ($typeid <= 0) -{ - print $langs->trans("Error").': Parameter id_member_type is not a valid ref of an existing member type'."\n"; - exit(-2); +if ($typeid <= 0) { + print $langs->trans("Error") . ': Parameter id_member_type is not a valid ref of an existing member type' . "\n"; + exit(- 2); } - -if (! $confirmed) -{ +if (! $confirmed) { print "Hit Enter to continue or CTRL+C to stop...\n"; $input = trim(fgets(STDIN)); } // Load table of correspondence of countries -$hashlib2rowid=array(); -$countries=array(); +$hashlib2rowid = array(); +$countries = array(); $sql = "SELECT rowid, code, label, active"; -$sql.= " FROM ".MAIN_DB_PREFIX."c_country"; -$sql.= " WHERE active = 1"; -$sql.= " ORDER BY code ASC"; -$resql=$db->query($sql); -if ($resql) -{ +$sql .= " FROM " . MAIN_DB_PREFIX . "c_country"; +$sql .= " WHERE active = 1"; +$sql .= " ORDER BY code ASC"; +$resql = $db->query($sql); +if ($resql) { $num = $db->num_rows($resql); $i = 0; - if ($num) - { - while ($i < $num) - { + if ($num) { + while ($i < $num) { $obj = $db->fetch_object($resql); - if ($obj) - { - //print 'Load cache for country '.strtolower($obj->label).' rowid='.$obj->rowid."\n"; - $hashlib2rowid[strtolower($obj->label)]=$obj->rowid; - $countries[$obj->rowid]=array('rowid' => $obj->rowid, 'label' => $obj->label, 'code' => $obj->code); + if ($obj) { + // print 'Load cache for country '.strtolower($obj->label).' rowid='.$obj->rowid."\n"; + $hashlib2rowid[strtolower($obj->label)] = $obj->rowid; + $countries[$obj->rowid] = array('rowid' => $obj->rowid,'label' => $obj->label,'code' => $obj->code); } - $i++; + $i ++; } } -} -else -{ +} else { dol_print_error($db); - exit(-1); + exit(- 1); } - - $ldap = new Ldap(); $result = $ldap->connect_bind(); -if ($result >= 0) -{ - $justthese=array(); - +if ($result >= 0) { + $justthese = array(); // We disable synchro Dolibarr-LDAP - $conf->global->LDAP_MEMBER_ACTIVE=0; + $conf->global->LDAP_MEMBER_ACTIVE = 0; - $ldaprecords = $ldap->getRecords('*', $conf->global->LDAP_MEMBER_DN, $conf->global->LDAP_KEY_MEMBERS, $required_fields, 'member'); // Fiter on 'member' filter param - if (is_array($ldaprecords)) - { + $ldaprecords = $ldap->getRecords('*', $conf->global->LDAP_MEMBER_DN, $conf->global->LDAP_KEY_MEMBERS, $required_fields, 'member'); // Fiter on 'member' filter param + if (is_array($ldaprecords)) { $db->begin(); // Warning $ldapuser has a key in lowercase - foreach ($ldaprecords as $key => $ldapuser) - { + foreach ($ldaprecords as $key => $ldapuser) { $member = new Adherent($db); // Propriete membre - $member->firstname=$ldapuser[$conf->global->LDAP_FIELD_FIRSTNAME]; - $member->lastname=$ldapuser[$conf->global->LDAP_FIELD_NAME]; - $member->login=$ldapuser[$conf->global->LDAP_FIELD_LOGIN]; - $member->pass=$ldapuser[$conf->global->LDAP_FIELD_PASSWORD]; + $member->firstname = $ldapuser[$conf->global->LDAP_FIELD_FIRSTNAME]; + $member->lastname = $ldapuser[$conf->global->LDAP_FIELD_NAME]; + $member->login = $ldapuser[$conf->global->LDAP_FIELD_LOGIN]; + $member->pass = $ldapuser[$conf->global->LDAP_FIELD_PASSWORD]; - //$member->societe; - $member->address=$ldapuser[$conf->global->LDAP_FIELD_ADDRESS]; - $member->zip=$ldapuser[$conf->global->LDAP_FIELD_ZIP]; - $member->town=$ldapuser[$conf->global->LDAP_FIELD_TOWN]; - $member->country=$ldapuser[$conf->global->LDAP_FIELD_COUNTRY]; - $member->country_id=$countries[$hashlib2rowid[strtolower($member->country)]]['rowid']; - $member->country_code=$countries[$hashlib2rowid[strtolower($member->country)]]['code']; + // $member->societe; + $member->address = $ldapuser[$conf->global->LDAP_FIELD_ADDRESS]; + $member->zip = $ldapuser[$conf->global->LDAP_FIELD_ZIP]; + $member->town = $ldapuser[$conf->global->LDAP_FIELD_TOWN]; + $member->country = $ldapuser[$conf->global->LDAP_FIELD_COUNTRY]; + $member->country_id = $countries[$hashlib2rowid[strtolower($member->country)]]['rowid']; + $member->country_code = $countries[$hashlib2rowid[strtolower($member->country)]]['code']; - $member->phone=$ldapuser[$conf->global->LDAP_FIELD_PHONE]; - $member->phone_perso=$ldapuser[$conf->global->LDAP_FIELD_PHONE_PERSO]; - $member->phone_mobile=$ldapuser[$conf->global->LDAP_FIELD_MOBILE]; - $member->email=$ldapuser[$conf->global->LDAP_FIELD_MAIL]; + $member->phone = $ldapuser[$conf->global->LDAP_FIELD_PHONE]; + $member->phone_perso = $ldapuser[$conf->global->LDAP_FIELD_PHONE_PERSO]; + $member->phone_mobile = $ldapuser[$conf->global->LDAP_FIELD_MOBILE]; + $member->email = $ldapuser[$conf->global->LDAP_FIELD_MAIL]; - $member->note=$ldapuser[$conf->global->LDAP_FIELD_DESCRIPTION]; - $member->morphy='phy'; - $member->photo=''; - $member->public=1; - $member->birth=dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_BIRTHDATE]); + $member->note = $ldapuser[$conf->global->LDAP_FIELD_DESCRIPTION]; + $member->morphy = 'phy'; + $member->photo = ''; + $member->public = 1; + $member->birth = dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_BIRTHDATE]); - $member->statut=-1; - if (isset($ldapuser[$conf->global->LDAP_FIELD_MEMBER_STATUS])) - { - $member->datec=dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE]); - $member->datevalid=dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE]); - $member->statut=$ldapuser[$conf->global->LDAP_FIELD_MEMBER_STATUS]; + $member->statut = - 1; + if (isset($ldapuser[$conf->global->LDAP_FIELD_MEMBER_STATUS])) { + $member->datec = dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE]); + $member->datevalid = dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE]); + $member->statut = $ldapuser[$conf->global->LDAP_FIELD_MEMBER_STATUS]; } - //if ($member->statut > 1) $member->statut=1; + // if ($member->statut > 1) $member->statut=1; - //print_r($ldapuser); + // print_r($ldapuser); // Propriete type membre - $member->typeid=$typeid; + $member->typeid = $typeid; // Creation membre - print $langs->transnoentities("MemberCreate").' # '.$key.': login='.$member->login.', fullname='.$member->getFullName($langs); - print ', datec='.$member->datec; - $member_id=$member->create($user); - if ($member_id > 0) - { - print ' --> Created member id='.$member_id.' login='.$member->login; - } - else - { - $error++; - print ' --> '.$member->error; + print $langs->transnoentities("MemberCreate") . ' # ' . $key . ': login=' . $member->login . ', fullname=' . $member->getFullName($langs); + print ', datec=' . $member->datec; + $member_id = $member->create($user); + if ($member_id > 0) { + print ' --> Created member id=' . $member_id . ' login=' . $member->login; + } else { + $error ++; + print ' --> ' . $member->error; } print "\n"; - //print_r($member); + // print_r($member); - $datefirst=''; - if ($conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE) - { - $datefirst=dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE]); - $pricefirst=price2num($ldapuser[$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_AMOUNT]); + $datefirst = ''; + if ($conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE) { + $datefirst = dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE]); + $pricefirst = price2num($ldapuser[$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_AMOUNT]); } - $datelast=''; - if ($conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_DATE) - { - $datelast=dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_DATE]); - $pricelast=price2num($ldapuser[$conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_AMOUNT]); - } - elseif ($conf->global->LDAP_FIELD_MEMBER_END_LASTSUBSCRIPTION) - { - $datelast=dol_time_plus_duree(dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_END_LASTSUBSCRIPTION]), -1, 'y')+60*60*24; - $pricelast=price2num($ldapuser[$conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_AMOUNT]); + $datelast = ''; + if ($conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_DATE) { + $datelast = dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_DATE]); + $pricelast = price2num($ldapuser[$conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_AMOUNT]); + } elseif ($conf->global->LDAP_FIELD_MEMBER_END_LASTSUBSCRIPTION) { + $datelast = dol_time_plus_duree(dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_END_LASTSUBSCRIPTION]), - 1, 'y') + 60 * 60 * 24; + $pricelast = price2num($ldapuser[$conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_AMOUNT]); // Cas special ou date derniere <= date premiere - if ($datefirst && $datelast && $datelast <= $datefirst) - { + if ($datefirst && $datelast && $datelast <= $datefirst) { // On ne va inserer que la premiere - $datelast=0; - if (! $pricefirst && $pricelast) $pricefirst = $pricelast; + $datelast = 0; + if (! $pricefirst && $pricelast) + $pricefirst = $pricelast; } } - // Insert first subscription - if ($datefirst) - { + if ($datefirst) { // Cree premiere cotisation et met a jour datefin dans adherent - //print "xx".$datefirst."\n"; - $crowid=$member->subscription($datefirst, $pricefirst, 0); + // print "xx".$datefirst."\n"; + $crowid = $member->subscription($datefirst, $pricefirst, 0); } // Insert last subscription - if ($datelast) - { + if ($datelast) { // Cree derniere cotisation et met a jour datefin dans adherent - //print "yy".dol_print_date($datelast)."\n"; - $crowid=$member->subscription($datelast, $pricelast, 0); + // print "yy".dol_print_date($datelast)."\n"; + $crowid = $member->subscription($datelast, $pricelast, 0); } } - if (! $error || $forcecommit) - { - if (! $error) print $langs->transnoentities("NoErrorCommitIsDone")."\n"; - else print $langs->transnoentities("ErrorButCommitIsDone")."\n"; + if (! $error || $forcecommit) { + if (! $error) + print $langs->transnoentities("NoErrorCommitIsDone") . "\n"; + else + print $langs->transnoentities("ErrorButCommitIsDone") . "\n"; $db->commit(); - } - else - { - print $langs->transnoentities("ErrorSomeErrorWereFoundRollbackIsDone", $error)."\n"; + } else { + print $langs->transnoentities("ErrorSomeErrorWereFoundRollbackIsDone", $error) . "\n"; $db->rollback(); } print "\n"; - } - else - { + } else { dol_print_error('', $ldap->error); - $error++; + $error ++; } -} -else -{ +} else { dol_print_error('', $ldap->error); - $error++; + $error ++; } - exit($error); - /** * Function to say if a value is empty or not * - * @param string $element Value to test - * @return boolean True of false + * @param string $element + * Value to test + * @return boolean True of false */ function dolValidElement($element) { diff --git a/scripts/members/sync_members_types_dolibarr2ldap.php b/scripts/members/sync_members_types_dolibarr2ldap.php index 0c0da924f98..a5e2f5ace94 100755 --- a/scripts/members/sync_members_types_dolibarr2ldap.php +++ b/scripts/members/sync_members_types_dolibarr2ldap.php @@ -1,9 +1,9 @@ #!/usr/bin/env php - * Copyright (C) 2006 Laurent Destailleur - * Copyright (C) 2017 Regis Houssin + * Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2006 Laurent Destailleur + * Copyright (C) 2017 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -12,7 +12,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -20,69 +20,64 @@ */ /** - * \file scripts/user/sync_members_types_dolibarr2ldap.php - * \ingroup ldap core - * \brief Script de mise a jour des types de membres dans LDAP depuis base Dolibarr + * \file scripts/user/sync_members_types_dolibarr2ldap.php + * \ingroup ldap core + * \brief Script de mise a jour des types de membres dans LDAP depuis base Dolibarr */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } if (! isset($argv[1]) || ! $argv[1]) { - print "Usage: ".$script_file." now\n"; - exit(-1); + print "Usage: " . $script_file . " now\n"; + exit(- 1); } -$now=$argv[1]; +$now = $argv[1]; -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; -require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php"; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/ldap.class.php"; +require_once DOL_DOCUMENT_ROOT . "/adherents/class/adherent_type.class.php"; // Global variables -$version=DOL_VERSION; -$error=0; - +$version = DOL_VERSION; +$error = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); /* -if (! $conf->global->LDAP_SYNCHRO_ACTIVE) -{ - print $langs->trans("LDAPSynchronizationNotSetupInDolibarr"); - exit(-1); -} -*/ + * if (! $conf->global->LDAP_SYNCHRO_ACTIVE) + * { + * print $langs->trans("LDAPSynchronizationNotSetupInDolibarr"); + * exit(-1); + * } + */ $sql = "SELECT rowid"; -$sql .= " FROM ".MAIN_DB_PREFIX."adherent_type"; +$sql .= " FROM " . MAIN_DB_PREFIX . "adherent_type"; $resql = $db->query($sql); -if ($resql) -{ +if ($resql) { $num = $db->num_rows($resql); $i = 0; - $ldap=new Ldap(); - $result=$ldap->connect_bind(); + $ldap = new Ldap(); + $result = $ldap->connect_bind(); - if ($result > 0) - { - while ($i < $num) - { - $ldap->error=""; + if ($result > 0) { + while ($i < $num) { + $ldap->error = ""; $obj = $db->fetch_object($resql); @@ -90,41 +85,35 @@ if ($resql) $membertype->id = $obj->rowid; $membertype->fetch($membertype->id); - print $langs->trans("UpdateMemberType")." rowid=".$membertype->id." ".$membertype-label; + print $langs->trans("UpdateMemberType") . " rowid=" . $membertype->id . " " . $membertype - label; - $oldobject=$membertype; + $oldobject = $membertype; - $oldinfo=$membertype->_load_ldap_info(); - $olddn=$membertype->_load_ldap_dn($oldinfo); + $oldinfo = $membertype->_load_ldap_info(); + $olddn = $membertype->_load_ldap_dn($oldinfo); - $info=$membertype->_load_ldap_info(); - $dn=$membertype->_load_ldap_dn($info); + $info = $membertype->_load_ldap_info(); + $dn = $membertype->_load_ldap_dn($info); - $result=$ldap->add($dn, $info, $user); // Wil fail if already exists - $result=$ldap->update($dn, $info, $user, $olddn); - if ($result > 0) - { - print " - ".$langs->trans("OK"); - } - else - { - $error++; - print " - ".$langs->trans("KO").' - '.$ldap->error; + $result = $ldap->add($dn, $info, $user); // Wil fail if already exists + $result = $ldap->update($dn, $info, $user, $olddn); + if ($result > 0) { + print " - " . $langs->trans("OK"); + } else { + $error ++; + print " - " . $langs->trans("KO") . ' - ' . $ldap->error; } print "\n"; - $i++; + $i ++; } $ldap->unbind(); $ldap->close(); - } - else { + } else { print $ldap->error; } -} -else -{ +} else { dol_print_error($db); } diff --git a/scripts/members/sync_members_types_ldap2dolibarr.php b/scripts/members/sync_members_types_ldap2dolibarr.php index 3ce15cab13a..fe9a07e14da 100755 --- a/scripts/members/sync_members_types_ldap2dolibarr.php +++ b/scripts/members/sync_members_types_ldap2dolibarr.php @@ -1,10 +1,10 @@ #!/usr/bin/env php - * Copyright (C) 2006-2012 Laurent Destailleur - * Copyright (C) 2013 Maxime Kohlhaas - * Copyright (C) 2017 Regis Houssin + * Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2006-2012 Laurent Destailleur + * Copyright (C) 2013 Maxime Kohlhaas + * Copyright (C) 2017 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -13,7 +13,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -21,196 +21,172 @@ */ /** - * \file scripts/user/sync_members_types_ldap2dolibarr.php - * \ingroup ldap member - * \brief Script to update members types into Dolibarr from LDAP + * \file scripts/user/sync_members_types_ldap2dolibarr.php + * \ingroup ldap member + * \brief Script to update members types into Dolibarr from LDAP */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/date.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; -require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php"; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/lib/date.lib.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/ldap.class.php"; +require_once DOL_DOCUMENT_ROOT . "/adherents/class/adherent_type.class.php"; -$langs->loadLangs(array("main", "errors")); +$langs->loadLangs(array("main","errors")); // Global variables -$version=DOL_VERSION; -$error=0; -$forcecommit=0; -$confirmed=0; - +$version = DOL_VERSION; +$error = 0; +$forcecommit = 0; +$confirmed = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); // List of fields to get from LDAP -$required_fields = array( - $conf->global->LDAP_KEY_MEMBERS_TYPES, - $conf->global->LDAP_MEMBER_TYPE_FIELD_FULLNAME, - $conf->global->LDAP_MEMBER_TYPE_FIELD_DESCRIPTION, - $conf->global->LDAP_MEMBER_TYPE_FIELD_GROUPMEMBERS -); +$required_fields = array($conf->global->LDAP_KEY_MEMBERS_TYPES,$conf->global->LDAP_MEMBER_TYPE_FIELD_FULLNAME,$conf->global->LDAP_MEMBER_TYPE_FIELD_DESCRIPTION,$conf->global->LDAP_MEMBER_TYPE_FIELD_GROUPMEMBERS); // Remove from required_fields all entries not configured in LDAP (empty) and duplicated -$required_fields=array_unique(array_values(array_filter($required_fields, "dolValidElementType"))); - +$required_fields = array_unique(array_values(array_filter($required_fields, "dolValidElementType"))); if (! isset($argv[1])) { - //print "Usage: $script_file (nocommitiferror|commitiferror) [id_group]\n"; + // print "Usage: $script_file (nocommitiferror|commitiferror) [id_group]\n"; print "Usage: $script_file (nocommitiferror|commitiferror) [--server=ldapserverhost] [--excludeuser=user1,user2...] [-y]\n"; - exit(-1); + exit(- 1); } -foreach($argv as $key => $val) -{ - if ($val == 'commitiferror') $forcecommit=1; - if (preg_match('/--server=([^\s]+)$/', $val, $reg)) $conf->global->LDAP_SERVER_HOST=$reg[1]; - if (preg_match('/--excludeuser=([^\s]+)$/', $val, $reg)) $excludeuser=explode(',', $reg[1]); - if (preg_match('/-y$/', $val, $reg)) $confirmed=1; +foreach ($argv as $key => $val) { + if ($val == 'commitiferror') + $forcecommit = 1; + if (preg_match('/--server=([^\s]+)$/', $val, $reg)) + $conf->global->LDAP_SERVER_HOST = $reg[1]; + if (preg_match('/--excludeuser=([^\s]+)$/', $val, $reg)) + $excludeuser = explode(',', $reg[1]); + if (preg_match('/-y$/', $val, $reg)) + $confirmed = 1; } print "Mails sending disabled (useless in batch mode)\n"; -$conf->global->MAIN_DISABLE_ALL_MAILS=1; // On bloque les mails +$conf->global->MAIN_DISABLE_ALL_MAILS = 1; // On bloque les mails print "\n"; print "----- Synchronize all records from LDAP database:\n"; -print "host=".$conf->global->LDAP_SERVER_HOST."\n"; -print "port=".$conf->global->LDAP_SERVER_PORT."\n"; -print "login=".$conf->global->LDAP_ADMIN_DN."\n"; -print "pass=".preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)."\n"; -print "DN to extract=".$conf->global->LDAP_MEMBER_TYPE_DN."\n"; -print 'Filter=('.$conf->global->LDAP_KEY_MEMBERS_TYPES.'=*)'."\n"; +print "host=" . $conf->global->LDAP_SERVER_HOST . "\n"; +print "port=" . $conf->global->LDAP_SERVER_PORT . "\n"; +print "login=" . $conf->global->LDAP_ADMIN_DN . "\n"; +print "pass=" . preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS) . "\n"; +print "DN to extract=" . $conf->global->LDAP_MEMBER_TYPE_DN . "\n"; +print 'Filter=(' . $conf->global->LDAP_KEY_MEMBERS_TYPES . '=*)' . "\n"; print "----- To Dolibarr database:\n"; -print "type=".$conf->db->type."\n"; -print "host=".$conf->db->host."\n"; -print "port=".$conf->db->port."\n"; -print "login=".$conf->db->user."\n"; -print "database=".$conf->db->name."\n"; +print "type=" . $conf->db->type . "\n"; +print "host=" . $conf->db->host . "\n"; +print "port=" . $conf->db->port . "\n"; +print "login=" . $conf->db->user . "\n"; +print "database=" . $conf->db->name . "\n"; print "----- Options:\n"; -print "commitiferror=".$forcecommit."\n"; -print "Mapped LDAP fields=".join(',', $required_fields)."\n"; +print "commitiferror=" . $forcecommit . "\n"; +print "Mapped LDAP fields=" . join(',', $required_fields) . "\n"; print "\n"; -if (! $confirmed) -{ +if (! $confirmed) { print "Hit Enter to continue or CTRL+C to stop...\n"; $input = trim(fgets(STDIN)); } -if (empty($conf->global->LDAP_MEMBER_TYPE_DN)) -{ - print $langs->trans("Error").': '.$langs->trans("LDAP setup for members types not defined inside Dolibarr"); - exit(-1); +if (empty($conf->global->LDAP_MEMBER_TYPE_DN)) { + print $langs->trans("Error") . ': ' . $langs->trans("LDAP setup for members types not defined inside Dolibarr"); + exit(- 1); } - $ldap = new Ldap(); $result = $ldap->connect_bind(); -if ($result >= 0) -{ - $justthese=array(); - +if ($result >= 0) { + $justthese = array(); // We disable synchro Dolibarr-LDAP - $conf->global->LDAP_MEMBER_TYPE_ACTIVE=0; + $conf->global->LDAP_MEMBER_TYPE_ACTIVE = 0; $ldaprecords = $ldap->getRecords('*', $conf->global->LDAP_MEMBER_TYPE_DN, $conf->global->LDAP_KEY_MEMBERS_TYPES, $required_fields, 0, array($conf->global->LDAP_MEMBER_TYPE_FIELD_GROUPMEMBERS)); - if (is_array($ldaprecords)) - { + if (is_array($ldaprecords)) { $db->begin(); // Warning $ldapuser has a key in lowercase - foreach ($ldaprecords as $key => $ldapgroup) - { + foreach ($ldaprecords as $key => $ldapgroup) { $membertype = new AdherentType($db); $membertype->fetch('', $ldapgroup[$conf->global->LDAP_KEY_MEMBERS_TYPES]); $membertype->label = $ldapgroup[$conf->global->LDAP_MEMBER_TYPE_FIELD_FULLNAME]; $membertype->description = $ldapgroup[$conf->global->LDAP_MEMBER_TYPE_FIELD_DESCRIPTION]; $membertype->entity = $conf->entity; - //print_r($ldapgroup); + // print_r($ldapgroup); if ($membertype->id > 0) { // Member type update - print $langs->transnoentities("MemberTypeUpdate").' # '.$key.': name='.$membertype->label; - $res=$membertype->update($user); + print $langs->transnoentities("MemberTypeUpdate") . ' # ' . $key . ': name=' . $membertype->label; + $res = $membertype->update($user); - if ($res > 0) - { - print ' --> Updated member type id='.$membertype->id.' name='.$membertype->label; - } - else - { - $error++; - print ' --> '.$res.' '.$membertype->error; + if ($res > 0) { + print ' --> Updated member type id=' . $membertype->id . ' name=' . $membertype->label; + } else { + $error ++; + print ' --> ' . $res . ' ' . $membertype->error; } print "\n"; } else { // Member type creation - print $langs->transnoentities("MemberTypeCreate").' # '.$key.': name='.$membertype->label; - $res=$membertype->create($user); + print $langs->transnoentities("MemberTypeCreate") . ' # ' . $key . ': name=' . $membertype->label; + $res = $membertype->create($user); - if ($res > 0) - { - print ' --> Created member type id='.$membertype->id.' name='.$membertype->label; - } - else - { - $error++; - print ' --> '.$res.' '.$membertype->error; + if ($res > 0) { + print ' --> Created member type id=' . $membertype->id . ' name=' . $membertype->label; + } else { + $error ++; + print ' --> ' . $res . ' ' . $membertype->error; } print "\n"; } - //print_r($membertype); + // print_r($membertype); } - if (! $error || $forcecommit) - { - if (! $error) print $langs->transnoentities("NoErrorCommitIsDone")."\n"; - else print $langs->transnoentities("ErrorButCommitIsDone")."\n"; + if (! $error || $forcecommit) { + if (! $error) + print $langs->transnoentities("NoErrorCommitIsDone") . "\n"; + else + print $langs->transnoentities("ErrorButCommitIsDone") . "\n"; $db->commit(); - } - else - { - print $langs->transnoentities("ErrorSomeErrorWereFoundRollbackIsDone", $error)."\n"; + } else { + print $langs->transnoentities("ErrorSomeErrorWereFoundRollbackIsDone", $error) . "\n"; $db->rollback(); } print "\n"; - } - else - { + } else { dol_print_error('', $ldap->error); - $error++; + $error ++; } -} -else -{ +} else { dol_print_error('', $ldap->error); - $error++; + $error ++; } - exit($error); - /** * Function to say if a value is empty or not * - * @param string $element Value to test - * @return boolean True of false + * @param string $element + * Value to test + * @return boolean True of false */ function dolValidElementType($element) { diff --git a/scripts/modulebuilder/builddoc.php b/scripts/modulebuilder/builddoc.php index c0b44a0bed8..a13f1f7eae1 100755 --- a/scripts/modulebuilder/builddoc.php +++ b/scripts/modulebuilder/builddoc.php @@ -1,7 +1,7 @@ #!/usr/bin/env php + * Copyright (C) 2005-2013 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -10,99 +10,94 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - /** - * \file scripts/modulebuilder/builddoc.php - * \ingroup modulebuilder - * \brief Script to build a documentation from input files (.asciidoc or .md files). Use asciidoctor tool. + * \file scripts/modulebuilder/builddoc.php + * \ingroup modulebuilder + * \brief Script to build a documentation from input files (.asciidoc or .md files). + * Use asciidoctor tool. * - * If file is a MD file, convert image links into asciidoc format. - * ![Screenshot patient card](img/dolimed_screenshot_patientcard.png?raw=true "Patient card") - * image:img/dolimed_screenshot_patientcard.png[Screenshot patient card] + * If file is a MD file, convert image links into asciidoc format. + * ![Screenshot patient card](img/dolimed_screenshot_patientcard.png?raw=true "Patient card") + * image:img/dolimed_screenshot_patientcard.png[Screenshot patient card] */ - - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } if (! isset($argv[1]) || ! $argv[1]) { - print "Usage: ".$script_file." ModuleName\n"; - exit(-1); + print "Usage: " . $script_file . " ModuleName\n"; + exit(- 1); } -$modulename=$argv[1]; +$modulename = $argv[1]; -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/modulebuilder.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/utils.class.php'; - -$langs->loadLangs(array("admin", "modulebuilder", "other", "cron")); +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php'; +require_once DOL_DOCUMENT_ROOT . '/core/class/html.formadmin.class.php'; +require_once DOL_DOCUMENT_ROOT . '/core/lib/modulebuilder.lib.php'; +require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; +require_once DOL_DOCUMENT_ROOT . '/core/class/utils.class.php'; +$langs->loadLangs(array("admin","modulebuilder","other","cron")); // Global variables -$version=DOL_VERSION; -$error=0; +$version = DOL_VERSION; +$error = 0; // Dir for custom dirs -$tmp=explode(',', $dolibarr_main_document_root_alt); +$tmp = explode(',', $dolibarr_main_document_root_alt); $dirins = $tmp[0]; $dirread = $dirins; $forceddirread = 0; $tmpdir = explode('@', $module); -if (! empty($tmpdir[1])) -{ - $module=$tmpdir[0]; - $dirread=$tmpdir[1]; - $forceddirread=1; +if (! empty($tmpdir[1])) { + $module = $tmpdir[0]; + $dirread = $tmpdir[1]; + $forceddirread = 1; } -$FILEFLAG='modulebuilder.txt'; +$FILEFLAG = 'modulebuilder.txt'; -$now=dol_now(); +$now = dol_now(); $newmask = 0; -if (empty($newmask) && ! empty($conf->global->MAIN_UMASK)) $newmask=$conf->global->MAIN_UMASK; -if (empty($newmask)) // This should no happen +if (empty($newmask) && ! empty($conf->global->MAIN_UMASK)) + $newmask = $conf->global->MAIN_UMASK; +if (empty($newmask)) // This should no happen { - $newmask='0664'; + $newmask = '0664'; } - /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -print "modulename=".$modulename."\n"; -print "dirins=".$dirins."\n"; +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +print "modulename=" . $modulename . "\n"; +print "dirins=" . $dirins . "\n"; -$FILENAMEDOC=strtolower($module).'.html'; // TODO Use/text PDF -$dirofmodule = dol_buildpath(strtolower($module), 0).'/doc'; -$outputfiledoc = $dirofmodule.'/'.$FILENAMEDOC; +$FILENAMEDOC = strtolower($module) . '.html'; // TODO Use/text PDF +$dirofmodule = dol_buildpath(strtolower($module), 0) . '/doc'; +$outputfiledoc = $dirofmodule . '/' . $FILENAMEDOC; $util = new Utils($db); $result = $util->generateDoc($module); -if ($result <= 0) -{ +if ($result <= 0) { print $util->errors; exit(1); } diff --git a/scripts/modulebuilder/initmodule.php b/scripts/modulebuilder/initmodule.php index 46d3e6a7032..6bdab236078 100755 --- a/scripts/modulebuilder/initmodule.php +++ b/scripts/modulebuilder/initmodule.php @@ -1,7 +1,7 @@ #!/usr/bin/env php + * Copyright (C) 2005-2013 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -10,165 +10,138 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - /** - * \file scripts/modulebuilder/initmodule.php - * \ingroup modulebuilder - * \brief Script to initialize a module. + * \file scripts/modulebuilder/initmodule.php + * \ingroup modulebuilder + * \brief Script to initialize a module. */ - - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } if (! isset($argv[1]) || ! $argv[1]) { - print "Usage: ".$script_file." ModuleName\n"; - exit(-1); + print "Usage: " . $script_file . " ModuleName\n"; + exit(- 1); } -$modulename=$argv[1]; +$modulename = $argv[1]; -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/modulebuilder.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - -$langs->loadLangs(array("admin", "modulebuilder", "other", "cron")); +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php'; +require_once DOL_DOCUMENT_ROOT . '/core/class/html.formadmin.class.php'; +require_once DOL_DOCUMENT_ROOT . '/core/lib/modulebuilder.lib.php'; +require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; +$langs->loadLangs(array("admin","modulebuilder","other","cron")); // Global variables -$version=DOL_VERSION; -$error=0; +$version = DOL_VERSION; +$error = 0; // Dir for custom dirs -$tmp=explode(',', $dolibarr_main_document_root_alt); +$tmp = explode(',', $dolibarr_main_document_root_alt); $dirins = $tmp[0]; $dirread = $dirins; $forceddirread = 0; $tmpdir = explode('@', $module); -if (! empty($tmpdir[1])) -{ - $module=$tmpdir[0]; - $dirread=$tmpdir[1]; - $forceddirread=1; +if (! empty($tmpdir[1])) { + $module = $tmpdir[0]; + $dirread = $tmpdir[1]; + $forceddirread = 1; } -$FILEFLAG='modulebuilder.txt'; +$FILEFLAG = 'modulebuilder.txt'; -$now=dol_now(); +$now = dol_now(); $newmask = 0; -if (empty($newmask) && ! empty($conf->global->MAIN_UMASK)) $newmask=$conf->global->MAIN_UMASK; -if (empty($newmask)) // This should no happen +if (empty($newmask) && ! empty($conf->global->MAIN_UMASK)) + $newmask = $conf->global->MAIN_UMASK; +if (empty($newmask)) // This should no happen { - $newmask='0664'; + $newmask = '0664'; } - /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -print "modulename=".$modulename."\n"; -print "dirins=".$dirins."\n"; +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +print "modulename=" . $modulename . "\n"; +print "dirins=" . $dirins . "\n"; -if (preg_match('/[^a-z0-9_]/i', $modulename)) -{ - $error++; - print 'Error '.$langs->trans("SpaceOrSpecialCharAreNotAllowed")."\n"; +if (preg_match('/[^a-z0-9_]/i', $modulename)) { + $error ++; + print 'Error ' . $langs->trans("SpaceOrSpecialCharAreNotAllowed") . "\n"; exit(1); } -if (! $error) -{ - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $destdir = $dirins.'/'.strtolower($modulename); +if (! $error) { + $srcdir = DOL_DOCUMENT_ROOT . '/modulebuilder/template'; + $destdir = $dirins . '/' . strtolower($modulename); - $arrayreplacement=array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename - ); + $arrayreplacement = array('mymodule' => strtolower($modulename),'MyModule' => $modulename); $result = dolCopyDir($srcdir, $destdir, 0, 0, $arrayreplacement); - //dol_mkdir($destfile); - if ($result <= 0) - { - if ($result < 0) - { - $error++; + // dol_mkdir($destfile); + if ($result <= 0) { + if ($result < 0) { + $error ++; $langs->load("errors"); - print $langs->trans("ErrorFailToCopyDir", $srcdir, $destdir)."\n"; + print $langs->trans("ErrorFailToCopyDir", $srcdir, $destdir) . "\n"; exit(2); - } - else // $result == 0 + } else // $result == 0 { - print $langs->trans("AllFilesDidAlreadyExist", $srcdir, $destdir)."\n"; + print $langs->trans("AllFilesDidAlreadyExist", $srcdir, $destdir) . "\n"; } } // Delete some files - dol_delete_file($destdir.'/myobject_card.php'); - dol_delete_file($destdir.'/myobject_note.php'); - dol_delete_file($destdir.'/myobject_document.php'); - dol_delete_file($destdir.'/myobject_agenda.php'); - dol_delete_file($destdir.'/myobject_list.php'); - dol_delete_file($destdir.'/lib/myobject.lib.php'); - dol_delete_file($destdir.'/test/phpunit/MyObjectTest.php'); - dol_delete_file($destdir.'/sql/llx_mymodule_myobject.sql'); - dol_delete_file($destdir.'/sql/llx_mymodule_myobject_extrafields.sql'); - dol_delete_file($destdir.'/sql/llx_mymodule_myobject.key.sql'); - dol_delete_file($destdir.'/scripts/myobject.php'); - dol_delete_file($destdir.'/img/object_myobject.png'); - dol_delete_file($destdir.'/class/myobject.class.php'); - dol_delete_file($destdir.'/class/api_mymodule.class.php'); + dol_delete_file($destdir . '/myobject_card.php'); + dol_delete_file($destdir . '/myobject_note.php'); + dol_delete_file($destdir . '/myobject_document.php'); + dol_delete_file($destdir . '/myobject_agenda.php'); + dol_delete_file($destdir . '/myobject_list.php'); + dol_delete_file($destdir . '/lib/myobject.lib.php'); + dol_delete_file($destdir . '/test/phpunit/MyObjectTest.php'); + dol_delete_file($destdir . '/sql/llx_mymodule_myobject.sql'); + dol_delete_file($destdir . '/sql/llx_mymodule_myobject_extrafields.sql'); + dol_delete_file($destdir . '/sql/llx_mymodule_myobject.key.sql'); + dol_delete_file($destdir . '/scripts/myobject.php'); + dol_delete_file($destdir . '/img/object_myobject.png'); + dol_delete_file($destdir . '/class/myobject.class.php'); + dol_delete_file($destdir . '/class/api_mymodule.class.php'); } // Edit PHP files -if (! $error) -{ +if (! $error) { $listofphpfilestoedit = dol_dir_list($destdir, 'files', 1, '\.(php|MD|js|sql|txt|xml|lang)$', '', 'fullname', SORT_ASC, 0, 1); - foreach($listofphpfilestoedit as $phpfileval) - { - //var_dump($phpfileval['fullname']); - $arrayreplacement=array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email?' <'.$user->email.'>':'') - ); + foreach ($listofphpfilestoedit as $phpfileval) { + // var_dump($phpfileval['fullname']); + $arrayreplacement = array('mymodule' => strtolower($modulename),'MyModule' => $modulename,'MYMODULE' => strtoupper($modulename),'My module' => $modulename,'my module' => $modulename,'Mon module' => $modulename,'mon module' => $modulename,'htdocs/modulebuilder/template' => strtolower($modulename),'---Put here your own copyright and developer email---' => dol_print_date($now, '%Y') . ' ' . $user->getFullName($langs) . ($user->email ? ' <' . $user->email . '>' : '')); - - $result=dolReplaceInFile($phpfileval['fullname'], $arrayreplacement); - //var_dump($result); - if ($result < 0) - { - print $langs->trans("ErrorFailToMakeReplacementInto", $phpfileval['fullname'])."\n"; + $result = dolReplaceInFile($phpfileval['fullname'], $arrayreplacement); + // var_dump($result); + if ($result < 0) { + print $langs->trans("ErrorFailToMakeReplacementInto", $phpfileval['fullname']) . "\n"; exit(3); } } } -print 'Module initialized'."\n"; +print 'Module initialized' . "\n"; exit(0); diff --git a/scripts/product/migrate_picture_path.php b/scripts/product/migrate_picture_path.php index a0a17632357..7abbcc59cc5 100755 --- a/scripts/product/migrate_picture_path.php +++ b/scripts/product/migrate_picture_path.php @@ -1,7 +1,8 @@ #!/usr/bin/env php - * Copyright (C) 2015 Jean Heimburger +/* + * Copyright (C) 2007-2016 Laurent Destailleur + * Copyright (C) 2015 Jean Heimburger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -10,7 +11,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -18,86 +19,76 @@ */ /** - * \file scripts/product/migrate_picture_path.php - * \ingroup scripts - * \brief Migrate pictures from old system prior to 3.7 to new path for 3.7+ + * \file scripts/product/migrate_picture_path.php + * \ingroup scripts + * \brief Migrate pictures from old system prior to 3.7 to new path for 3.7+ */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -@set_time_limit(0); // No timeout for this script -define('EVEN_IF_ONLY_LOGIN_ALLOWED', 1); // Set this define to 0 if you want to lock your script when dolibarr setup is "locked to admin user only". +@set_time_limit(0); // No timeout for this script +define('EVEN_IF_ONLY_LOGIN_ALLOWED', 1); // Set this define to 0 if you want to lock your script when dolibarr setup is "locked to admin user only". // Include and load Dolibarr environment variables -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/product/class/product.class.php"; +require_once DOL_DOCUMENT_ROOT . "/core/lib/files.lib.php"; // After this $db, $mysoc, $langs, $conf and $hookmanager are defined (Opened $db handler to database will be closed at end of file). // $user is created but empty. -//$langs->setDefaultLang('en_US'); // To change default language of $langs -$langs->load("main"); // To load language file for default language - +// $langs->setDefaultLang('en_US'); // To change default language of $langs +$langs->load("main"); // To load language file for default language // Global variables -$version=DOL_VERSION; -$error=0; -$forcecommit=0; +$version = DOL_VERSION; +$error = 0; +$forcecommit = 0; - -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); if (! isset($argv[1]) || $argv[1] != 'product') { - print "Usage: $script_file product\n"; - exit(-1); + print "Usage: $script_file product\n"; + exit(- 1); } -print '--- start'."\n"; +print '--- start' . "\n"; // Case to migrate products path -if ($argv[1] == 'product') -{ +if ($argv[1] == 'product') { $product = new Product($db); - $sql = "SELECT rowid as pid from ".MAIN_DB_PREFIX."product"; // Get list of all products + $sql = "SELECT rowid as pid from " . MAIN_DB_PREFIX . "product"; // Get list of all products $resql = $db->query($sql); - if ($resql) - { - while ($obj = $db->fetch_object($resql)) - { + if ($resql) { + while ($obj = $db->fetch_object($resql)) { $product->fetch($obj->pid); - print " migrating product id=".$product->id." ref=".$product->ref."\n"; + print " migrating product id=" . $product->id . " ref=" . $product->ref . "\n"; migrate_product_photospath($product); } - } - else - { - print "\n sql error ".$sql; - exit; + } else { + print "\n sql error " . $sql; + exit(); } } - -$db->close(); // Close $db database opened handler +$db->close(); // Close $db database opened handler exit($error); - - /** * Migrate file from old path to new one for product $product * - * @param Product $product Object product - * @return void + * @param Product $product + * Object product + * @return void */ function migrate_product_photospath($product) { @@ -105,43 +96,34 @@ function migrate_product_photospath($product) $dir = $conf->product->multidir_output[$product->entity]; $conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO = 1; - $origin = $dir .'/'. get_exdir($product->id, 2, 0, 0, $product, 'product') . $product->id ."/photos"; - $destin = $dir.'/'.dol_sanitizeFileName($product->ref); + $origin = $dir . '/' . get_exdir($product->id, 2, 0, 0, $product, 'product') . $product->id . "/photos"; + $destin = $dir . '/' . dol_sanitizeFileName($product->ref); $error = 0; - $origin_osencoded=dol_osencode($origin); - $destin_osencoded=dol_osencode($destin); + $origin_osencoded = dol_osencode($origin); + $destin_osencoded = dol_osencode($destin); dol_mkdir($destin); - if (dol_is_dir($origin)) - { - $handle=opendir($origin_osencoded); - if (is_resource($handle)) - { - while (($file = readdir($handle)) !== false) - { - if ($file != '.' && $file != '..' && is_dir($origin_osencoded.'/'.$file)) - { - $thumbs = opendir($origin_osencoded.'/'.$file); - if (is_resource($thumbs)) - { - dol_mkdir($destin.'/'.$file); - while (($thumb = readdir($thumbs)) !== false) - { - dol_move($origin.'/'.$file.'/'.$thumb, $destin.'/'.$file.'/'.$thumb); - } -// dol_delete_dir($origin.'/'.$file); - } - } - else - { - if (dol_is_file($origin.'/'.$file) ) - { - dol_move($origin.'/'.$file, $destin.'/'.$file); - } - } - } - } + if (dol_is_dir($origin)) { + $handle = opendir($origin_osencoded); + if (is_resource($handle)) { + while (($file = readdir($handle)) !== false) { + if ($file != '.' && $file != '..' && is_dir($origin_osencoded . '/' . $file)) { + $thumbs = opendir($origin_osencoded . '/' . $file); + if (is_resource($thumbs)) { + dol_mkdir($destin . '/' . $file); + while (($thumb = readdir($thumbs)) !== false) { + dol_move($origin . '/' . $file . '/' . $thumb, $destin . '/' . $file . '/' . $thumb); + } + // dol_delete_dir($origin.'/'.$file); + } + } else { + if (dol_is_file($origin . '/' . $file)) { + dol_move($origin . '/' . $file, $destin . '/' . $file); + } + } + } + } } } diff --git a/scripts/product/regenerate_thumbs.php b/scripts/product/regenerate_thumbs.php index 84f30b3950f..d034cec1ec9 100755 --- a/scripts/product/regenerate_thumbs.php +++ b/scripts/product/regenerate_thumbs.php @@ -1,7 +1,8 @@ #!/usr/bin/env php - * Copyright (C) 2015 Jean Heimburger +/* + * Copyright (C) 2007-2016 Laurent Destailleur + * Copyright (C) 2015 Jean Heimburger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -10,7 +11,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -18,90 +19,85 @@ */ /** - * \file scripts/product/migrate_picture_path.php - * \ingroup scripts - * \brief Migrate pictures from old system prior to 3.7 to new path for 3.7+ + * \file scripts/product/migrate_picture_path.php + * \ingroup scripts + * \brief Migrate pictures from old system prior to 3.7 to new path for 3.7+ */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -@set_time_limit(0); // No timeout for this script -define('EVEN_IF_ONLY_LOGIN_ALLOWED', 1); // Set this define to 0 if you want to lock your script when dolibarr setup is "locked to admin user only". +@set_time_limit(0); // No timeout for this script +define('EVEN_IF_ONLY_LOGIN_ALLOWED', 1); // Set this define to 0 if you want to lock your script when dolibarr setup is "locked to admin user only". // Include and load Dolibarr environment variables -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/images.lib.php"; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/product/class/product.class.php"; +require_once DOL_DOCUMENT_ROOT . "/core/lib/files.lib.php"; +require_once DOL_DOCUMENT_ROOT . "/core/lib/images.lib.php"; // After this $db, $mysoc, $langs, $conf and $hookmanager are defined (Opened $db handler to database will be closed at end of file). // $user is created but empty. -//$langs->setDefaultLang('en_US'); // To change default language of $langs -$langs->load("main"); // To load language file for default language - +// $langs->setDefaultLang('en_US'); // To change default language of $langs +$langs->load("main"); // To load language file for default language // Global variables -$version=DOL_VERSION; -$error=0; -$forcecommit=0; +$version = DOL_VERSION; +$error = 0; +$forcecommit = 0; - -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); if (empty($argv[1])) { - print "Usage: $script_file subdirtoscan\n"; - print "Example: $script_file produit\n"; - exit(-1); + print "Usage: $script_file subdirtoscan\n"; + print "Example: $script_file produit\n"; + exit(- 1); } -print '--- start'."\n"; +print '--- start' . "\n"; $dir = DOL_DATA_ROOT; -$subdir=$argv[1]; -if (empty($dir) || empty($subdir)) -{ +$subdir = $argv[1]; +if (empty($dir) || empty($subdir)) { dol_print_error('', 'dir not defined'); exit(1); } -if (! dol_is_dir($dir.'/'.$subdir)) -{ - print 'Directory '.$dir.'/'.$subdir.' not found.'."\n"; +if (! dol_is_dir($dir . '/' . $subdir)) { + print 'Directory ' . $dir . '/' . $subdir . ' not found.' . "\n"; exit(2); } -$filearray=dol_dir_list($dir.'/'.$subdir, "directories", 0, '', 'temp$'); +$filearray = dol_dir_list($dir . '/' . $subdir, "directories", 0, '', 'temp$'); global $maxwidthsmall, $maxheightsmall, $maxwidthmini, $maxheightmini; -foreach($filearray as $keyf => $valf) -{ - $ref=basename($valf['name']); - $filearrayimg=dol_dir_list($valf['fullname'], "files", 0, '(\.gif|\.png|\.jpg|\.jpeg|\.bmp)$', '(\.meta|_preview.*\.png)$'); - foreach($filearrayimg as $keyi => $vali) - { - print 'Process image for ref '.$ref.' : '.$vali['name']."\n"; +foreach ($filearray as $keyf => $valf) { + $ref = basename($valf['name']); + $filearrayimg = dol_dir_list($valf['fullname'], "files", 0, '(\.gif|\.png|\.jpg|\.jpeg|\.bmp)$', '(\.meta|_preview.*\.png)$'); + foreach ($filearrayimg as $keyi => $vali) { + print 'Process image for ref ' . $ref . ' : ' . $vali['name'] . "\n"; // Create small thumbs for image // Used on logon for example $imgThumbSmall = vignette($vali['fullname'], $maxwidthsmall, $maxheightsmall, '_small', 50, "thumbs"); - if (preg_match('/Error/', $imgThumbSmall)) print $imgThumbSmall."\n"; + if (preg_match('/Error/', $imgThumbSmall)) + print $imgThumbSmall . "\n"; // Create mini thumbs for image (Ratio is near 16/9) // Used on menu or for setup page for example $imgThumbMini = vignette($vali['fullname'], $maxwidthmini, $maxheightmini, '_mini', 50, "thumbs"); - if (preg_match('/Error/', $imgThumbMini)) print $imgThumbMini."\n"; + if (preg_match('/Error/', $imgThumbMini)) + print $imgThumbMini . "\n"; } } -$db->close(); // Close $db database opened handler +$db->close(); // Close $db database opened handler exit($error); diff --git a/scripts/user/sync_groups_dolibarr2ldap.php b/scripts/user/sync_groups_dolibarr2ldap.php index 2d6a074d9c2..23ca994799f 100755 --- a/scripts/user/sync_groups_dolibarr2ldap.php +++ b/scripts/user/sync_groups_dolibarr2ldap.php @@ -2,7 +2,7 @@ - * Copyright (C) 2006 Laurent Destailleur + * Copyright (C) 2006 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -11,7 +11,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -19,67 +19,63 @@ */ /** - * \file scripts/user/sync_groups_dolibarr2ldap.php - * \ingroup ldap core - * \brief Script de mise a jour des groupes dans LDAP depuis base Dolibarr + * \file scripts/user/sync_groups_dolibarr2ldap.php + * \ingroup ldap core + * \brief Script de mise a jour des groupes dans LDAP depuis base Dolibarr */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } if (! isset($argv[1]) || ! $argv[1]) { - print "Usage: ".$script_file." now\n"; - exit(-1); + print "Usage: " . $script_file . " now\n"; + exit(- 1); } -$now=$argv[1]; +$now = $argv[1]; -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; -require_once DOL_DOCUMENT_ROOT."/user/class/usergroup.class.php"; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/ldap.class.php"; +require_once DOL_DOCUMENT_ROOT . "/user/class/usergroup.class.php"; // Global variables -$version=DOL_VERSION; -$error=0; - +$version = DOL_VERSION; +$error = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); /* -if (! $conf->global->LDAP_SYNCHRO_ACTIVE) -{ - print $langs->trans("LDAPSynchronizationNotSetupInDolibarr"); - exit(-1); -} -*/ + * if (! $conf->global->LDAP_SYNCHRO_ACTIVE) + * { + * print $langs->trans("LDAPSynchronizationNotSetupInDolibarr"); + * exit(-1); + * } + */ $sql = "SELECT rowid"; -$sql .= " FROM ".MAIN_DB_PREFIX."usergroup"; +$sql .= " FROM " . MAIN_DB_PREFIX . "usergroup"; $resql = $db->query($sql); -if ($resql) -{ +if ($resql) { $num = $db->num_rows($resql); $i = 0; - $ldap=new Ldap(); + $ldap = new Ldap(); $ldap->connect_bind(); - while ($i < $num) - { - $ldap->error=""; + while ($i < $num) { + $ldap->error = ""; $obj = $db->fetch_object($resql); @@ -87,37 +83,32 @@ if ($resql) $fgroup->id = $obj->rowid; $fgroup->fetch($fgroup->id); - print $langs->trans("UpdateGroup")." rowid=".$fgroup->id." ".$fgroup->name; + print $langs->trans("UpdateGroup") . " rowid=" . $fgroup->id . " " . $fgroup->name; - $oldobject=$fgroup; + $oldobject = $fgroup; - $oldinfo=$oldobject->_load_ldap_info(); - $olddn=$oldobject->_load_ldap_dn($oldinfo); + $oldinfo = $oldobject->_load_ldap_info(); + $olddn = $oldobject->_load_ldap_dn($oldinfo); - $info=$fgroup->_load_ldap_info(); - $dn=$fgroup->_load_ldap_dn($info); + $info = $fgroup->_load_ldap_info(); + $dn = $fgroup->_load_ldap_dn($info); - $result=$ldap->add($dn, $info, $user); // Wil fail if already exists - $result=$ldap->update($dn, $info, $user, $olddn); - if ($result > 0) - { - print " - ".$langs->trans("OK"); - } - else - { - $error++; - print " - ".$langs->trans("KO").' - '.$ldap->error; + $result = $ldap->add($dn, $info, $user); // Wil fail if already exists + $result = $ldap->update($dn, $info, $user, $olddn); + if ($result > 0) { + print " - " . $langs->trans("OK"); + } else { + $error ++; + print " - " . $langs->trans("KO") . ' - ' . $ldap->error; } print "\n"; - $i++; + $i ++; } $ldap->unbind(); $ldap->close(); -} -else -{ +} else { dol_print_error($db); } diff --git a/scripts/user/sync_groups_ldap2dolibarr.php b/scripts/user/sync_groups_ldap2dolibarr.php index 8fca8f9df9b..393a866de5e 100755 --- a/scripts/user/sync_groups_ldap2dolibarr.php +++ b/scripts/user/sync_groups_ldap2dolibarr.php @@ -1,9 +1,9 @@ #!/usr/bin/env php - * Copyright (C) 2006-2012 Laurent Destailleur - * Copyright (C) 2013 Maxime Kohlhaas + * Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2006-2012 Laurent Destailleur + * Copyright (C) 2013 Maxime Kohlhaas * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -12,7 +12,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -20,182 +20,166 @@ */ /** - * \file scripts/user/sync_groups_ldap2dolibarr.php - * \ingroup ldap member - * \brief Script to update groups into Dolibarr from LDAP + * \file scripts/user/sync_groups_ldap2dolibarr.php + * \ingroup ldap member + * \brief Script to update groups into Dolibarr from LDAP */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/date.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; -require_once DOL_DOCUMENT_ROOT."/user/class/user.class.php"; -require_once DOL_DOCUMENT_ROOT."/user/class/usergroup.class.php"; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/lib/date.lib.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/ldap.class.php"; +require_once DOL_DOCUMENT_ROOT . "/user/class/user.class.php"; +require_once DOL_DOCUMENT_ROOT . "/user/class/usergroup.class.php"; -$langs->loadLangs(array("main", "errors")); +$langs->loadLangs(array("main","errors")); // Global variables -$version=DOL_VERSION; -$error=0; -$forcecommit=0; -$confirmed=0; - +$version = DOL_VERSION; +$error = 0; +$forcecommit = 0; +$confirmed = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); // List of fields to get from LDAP -$required_fields = array( - $conf->global->LDAP_KEY_GROUPS, - $conf->global->LDAP_GROUP_FIELD_FULLNAME, - $conf->global->LDAP_GROUP_FIELD_DESCRIPTION, - $conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS -); +$required_fields = array($conf->global->LDAP_KEY_GROUPS,$conf->global->LDAP_GROUP_FIELD_FULLNAME,$conf->global->LDAP_GROUP_FIELD_DESCRIPTION,$conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS); // Remove from required_fields all entries not configured in LDAP (empty) and duplicated -$required_fields=array_unique(array_values(array_filter($required_fields, "dolValidElement"))); - +$required_fields = array_unique(array_values(array_filter($required_fields, "dolValidElement"))); if (! isset($argv[1])) { - //print "Usage: $script_file (nocommitiferror|commitiferror) [id_group]\n"; + // print "Usage: $script_file (nocommitiferror|commitiferror) [id_group]\n"; print "Usage: $script_file (nocommitiferror|commitiferror) [--server=ldapserverhost] [--excludeuser=user1,user2...] [-y]\n"; - exit(-1); + exit(- 1); } -foreach($argv as $key => $val) -{ - if ($val == 'commitiferror') $forcecommit=1; - if (preg_match('/--server=([^\s]+)$/', $val, $reg)) $conf->global->LDAP_SERVER_HOST=$reg[1]; - if (preg_match('/--excludeuser=([^\s]+)$/', $val, $reg)) $excludeuser=explode(',', $reg[1]); - if (preg_match('/-y$/', $val, $reg)) $confirmed=1; +foreach ($argv as $key => $val) { + if ($val == 'commitiferror') + $forcecommit = 1; + if (preg_match('/--server=([^\s]+)$/', $val, $reg)) + $conf->global->LDAP_SERVER_HOST = $reg[1]; + if (preg_match('/--excludeuser=([^\s]+)$/', $val, $reg)) + $excludeuser = explode(',', $reg[1]); + if (preg_match('/-y$/', $val, $reg)) + $confirmed = 1; } print "Mails sending disabled (useless in batch mode)\n"; -$conf->global->MAIN_DISABLE_ALL_MAILS=1; // On bloque les mails +$conf->global->MAIN_DISABLE_ALL_MAILS = 1; // On bloque les mails print "\n"; print "----- Synchronize all records from LDAP database:\n"; -print "host=".$conf->global->LDAP_SERVER_HOST."\n"; -print "port=".$conf->global->LDAP_SERVER_PORT."\n"; -print "login=".$conf->global->LDAP_ADMIN_DN."\n"; -print "pass=".preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)."\n"; -print "DN to extract=".$conf->global->LDAP_GROUP_DN."\n"; -print 'Filter=('.$conf->global->LDAP_KEY_GROUPS.'=*)'."\n"; +print "host=" . $conf->global->LDAP_SERVER_HOST . "\n"; +print "port=" . $conf->global->LDAP_SERVER_PORT . "\n"; +print "login=" . $conf->global->LDAP_ADMIN_DN . "\n"; +print "pass=" . preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS) . "\n"; +print "DN to extract=" . $conf->global->LDAP_GROUP_DN . "\n"; +print 'Filter=(' . $conf->global->LDAP_KEY_GROUPS . '=*)' . "\n"; print "----- To Dolibarr database:\n"; -print "type=".$conf->db->type."\n"; -print "host=".$conf->db->host."\n"; -print "port=".$conf->db->port."\n"; -print "login=".$conf->db->user."\n"; -print "database=".$conf->db->name."\n"; +print "type=" . $conf->db->type . "\n"; +print "host=" . $conf->db->host . "\n"; +print "port=" . $conf->db->port . "\n"; +print "login=" . $conf->db->user . "\n"; +print "database=" . $conf->db->name . "\n"; print "----- Options:\n"; -print "commitiferror=".$forcecommit."\n"; -print "Mapped LDAP fields=".join(',', $required_fields)."\n"; +print "commitiferror=" . $forcecommit . "\n"; +print "Mapped LDAP fields=" . join(',', $required_fields) . "\n"; print "\n"; -if (! $confirmed) -{ +if (! $confirmed) { print "Hit Enter to continue or CTRL+C to stop...\n"; $input = trim(fgets(STDIN)); } -if (empty($conf->global->LDAP_GROUP_DN)) -{ - print $langs->trans("Error").': '.$langs->trans("LDAP setup for groups not defined inside Dolibarr"); - exit(-1); +if (empty($conf->global->LDAP_GROUP_DN)) { + print $langs->trans("Error") . ': ' . $langs->trans("LDAP setup for groups not defined inside Dolibarr"); + exit(- 1); } - $ldap = new Ldap(); $result = $ldap->connect_bind(); -if ($result >= 0) -{ - $justthese=array(); - +if ($result >= 0) { + $justthese = array(); // We disable synchro Dolibarr-LDAP - $conf->global->LDAP_SYNCHRO_ACTIVE=0; + $conf->global->LDAP_SYNCHRO_ACTIVE = 0; $ldaprecords = $ldap->getRecords('*', $conf->global->LDAP_GROUP_DN, $conf->global->LDAP_KEY_GROUPS, $required_fields, 0, array($conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS)); - if (is_array($ldaprecords)) - { + if (is_array($ldaprecords)) { $db->begin(); // Warning $ldapuser has a key in lowercase - foreach ($ldaprecords as $key => $ldapgroup) - { + foreach ($ldaprecords as $key => $ldapgroup) { $group = new UserGroup($db); $group->fetch('', $ldapgroup[$conf->global->LDAP_KEY_GROUPS]); $group->name = $ldapgroup[$conf->global->LDAP_GROUP_FIELD_FULLNAME]; - $group->nom = $group->name; // For backward compatibility + $group->nom = $group->name; // For backward compatibility $group->note = $ldapgroup[$conf->global->LDAP_GROUP_FIELD_DESCRIPTION]; $group->entity = $conf->entity; - //print_r($ldapgroup); + // print_r($ldapgroup); - if($group->id > 0) { // Group update - print $langs->transnoentities("GroupUpdate").' # '.$key.': name='.$group->name; - $res=$group->update(); + if ($group->id > 0) { // Group update + print $langs->transnoentities("GroupUpdate") . ' # ' . $key . ': name=' . $group->name; + $res = $group->update(); - if ($res > 0) - { - print ' --> Updated group id='.$group->id.' name='.$group->name; - } - else - { - $error++; - print ' --> '.$res.' '.$group->error; + if ($res > 0) { + print ' --> Updated group id=' . $group->id . ' name=' . $group->name; + } else { + $error ++; + print ' --> ' . $res . ' ' . $group->error; } print "\n"; } else { // Group creation - print $langs->transnoentities("GroupCreate").' # '.$key.': name='.$group->name; - $res=$group->create(); + print $langs->transnoentities("GroupCreate") . ' # ' . $key . ': name=' . $group->name; + $res = $group->create(); - if ($res > 0) - { - print ' --> Created group id='.$group->id.' name='.$group->name; - } - else - { - $error++; - print ' --> '.$res.' '.$group->error; + if ($res > 0) { + print ' --> Created group id=' . $group->id . ' name=' . $group->name; + } else { + $error ++; + print ' --> ' . $res . ' ' . $group->error; } print "\n"; } - //print_r($group); + // print_r($group); // Gestion des utilisateurs associés au groupe // 1 - Association des utilisateurs du groupe LDAP au groupe Dolibarr $userList = array(); $userIdList = array(); - foreach($ldapgroup[$conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS] as $key => $userdn) { - if($key === 'count') continue; - if(empty($userList[$userdn])) { // Récupération de l'utilisateur - // Schéma rfc2307: les membres sont listés dans l'attribut memberUid sous form de login uniquement - if ($conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS === 'memberUid'){ + foreach ($ldapgroup[$conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS] as $key => $userdn) { + if ($key === 'count') + continue; + if (empty($userList[$userdn])) { // Récupération de l'utilisateur + // Schéma rfc2307: les membres sont listés dans l'attribut memberUid sous form de login uniquement + if ($conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS === 'memberUid') { $userKey = array($userdn); } else { // Pour les autres schémas, les membres sont listés sous forme de DN complets $userFilter = explode(',', $userdn); - $userKey = $ldap->getAttributeValues('('.$userFilter[0].')', $conf->global->LDAP_KEY_USERS); + $userKey = $ldap->getAttributeValues('(' . $userFilter[0] . ')', $conf->global->LDAP_KEY_USERS); } - if(!is_array($userKey)) continue; + if (! is_array($userKey)) + continue; $fuser = new User($db); - if($conf->global->LDAP_KEY_USERS == $conf->global->LDAP_FIELD_SID) { + if ($conf->global->LDAP_KEY_USERS == $conf->global->LDAP_FIELD_SID) { $fuser->fetch('', '', $userKey[0]); // Chargement du user concerné par le SID } elseif ($conf->global->LDAP_KEY_USERS == $conf->global->LDAP_FIELD_LOGIN) { $fuser->fetch('', $userKey[0]); // Chargement du user concerné par le login @@ -209,55 +193,49 @@ if ($result >= 0) $userIdList[$userdn] = $fuser->id; // Ajout de l'utilisateur dans le groupe - if(!in_array($fuser->id, array_keys($group->members))) { + if (! in_array($fuser->id, array_keys($group->members))) { $fuser->SetInGroup($group->id, $group->entity); - echo $fuser->login.' added'."\n"; + echo $fuser->login . ' added' . "\n"; } } // 2 - Suppression des utilisateurs du groupe Dolibarr qui ne sont plus dans le groupe LDAP foreach ($group->members as $guser) { - if(!in_array($guser->id, $userIdList)) { + if (! in_array($guser->id, $userIdList)) { $guser->RemoveFromGroup($group->id, $group->entity); - echo $guser->login.' removed'."\n"; + echo $guser->login . ' removed' . "\n"; } } } - if (! $error || $forcecommit) - { - if (! $error) print $langs->transnoentities("NoErrorCommitIsDone")."\n"; - else print $langs->transnoentities("ErrorButCommitIsDone")."\n"; + if (! $error || $forcecommit) { + if (! $error) + print $langs->transnoentities("NoErrorCommitIsDone") . "\n"; + else + print $langs->transnoentities("ErrorButCommitIsDone") . "\n"; $db->commit(); - } - else - { - print $langs->transnoentities("ErrorSomeErrorWereFoundRollbackIsDone", $error)."\n"; + } else { + print $langs->transnoentities("ErrorSomeErrorWereFoundRollbackIsDone", $error) . "\n"; $db->rollback(); } print "\n"; - } - else - { + } else { dol_print_error('', $ldap->error); - $error++; + $error ++; } -} -else -{ +} else { dol_print_error('', $ldap->error); - $error++; + $error ++; } - exit($error); - /** * Function to say if a value is empty or not * - * @param string $element Value to test - * @return boolean True of false + * @param string $element + * Value to test + * @return boolean True of false */ function dolValidElement($element) { diff --git a/scripts/user/sync_users_dolibarr2ldap.php b/scripts/user/sync_users_dolibarr2ldap.php index 64536f24a14..9fb613efd0d 100755 --- a/scripts/user/sync_users_dolibarr2ldap.php +++ b/scripts/user/sync_users_dolibarr2ldap.php @@ -2,7 +2,7 @@ - * Copyright (C) 2006 Laurent Destailleur + * Copyright (C) 2006 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -11,7 +11,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -19,104 +19,95 @@ */ /** - * \file scripts/user/sync_users_dolibarr2ldap.php - * \ingroup ldap core - * \brief Script de mise a jour des users dans LDAP depuis base Dolibarr + * \file scripts/user/sync_users_dolibarr2ldap.php + * \ingroup ldap core + * \brief Script de mise a jour des users dans LDAP depuis base Dolibarr */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } if (! isset($argv[1]) || ! $argv[1]) { - print "Usage: $script_file now\n"; - exit(-1); + print "Usage: $script_file now\n"; + exit(- 1); } -$now=$argv[1]; +$now = $argv[1]; -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; -require_once DOL_DOCUMENT_ROOT."/user/class/user.class.php"; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/ldap.class.php"; +require_once DOL_DOCUMENT_ROOT . "/user/class/user.class.php"; // Global variables -$version=DOL_VERSION; -$error=0; - +$version = DOL_VERSION; +$error = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); /* -if (! $conf->global->LDAP_SYNCHRO_ACTIVE) -{ - print $langs->trans("LDAPSynchronizationNotSetupInDolibarr"); - exit(-1); -} -*/ + * if (! $conf->global->LDAP_SYNCHRO_ACTIVE) + * { + * print $langs->trans("LDAPSynchronizationNotSetupInDolibarr"); + * exit(-1); + * } + */ $sql = "SELECT rowid"; -$sql .= " FROM ".MAIN_DB_PREFIX."user"; +$sql .= " FROM " . MAIN_DB_PREFIX . "user"; $resql = $db->query($sql); -if ($resql) -{ +if ($resql) { $num = $db->num_rows($resql); $i = 0; - $ldap=new Ldap(); + $ldap = new Ldap(); $ldap->connect_bind(); - while ($i < $num) - { - $ldap->error=""; + while ($i < $num) { + $ldap->error = ""; $obj = $db->fetch_object($resql); $fuser = new User($db); $fuser->fetch($obj->rowid); - print $langs->trans("UpdateUser")." rowid=".$fuser->id." ".$fuser->getFullName($langs); + print $langs->trans("UpdateUser") . " rowid=" . $fuser->id . " " . $fuser->getFullName($langs); - $oldobject=$fuser; + $oldobject = $fuser; - $oldinfo=$oldobject->_load_ldap_info(); - $olddn=$oldobject->_load_ldap_dn($oldinfo); + $oldinfo = $oldobject->_load_ldap_info(); + $olddn = $oldobject->_load_ldap_dn($oldinfo); - $info=$fuser->_load_ldap_info(); - $dn=$fuser->_load_ldap_dn($info); + $info = $fuser->_load_ldap_info(); + $dn = $fuser->_load_ldap_dn($info); - $result=$ldap->add($dn, $info, $user); // Wil fail if already exists - $result=$ldap->update($dn, $info, $user, $olddn); - if ($result > 0) - { - print " - ".$langs->trans("OK"); - } - else - { - $error++; - print " - ".$langs->trans("KO").' - '.$ldap->error; + $result = $ldap->add($dn, $info, $user); // Wil fail if already exists + $result = $ldap->update($dn, $info, $user, $olddn); + if ($result > 0) { + print " - " . $langs->trans("OK"); + } else { + $error ++; + print " - " . $langs->trans("KO") . ' - ' . $ldap->error; } print "\n"; - $i++; + $i ++; } $ldap->unbind(); $ldap->close(); -} -else -{ +} else { dol_print_error($db); } diff --git a/scripts/user/sync_users_ldap2dolibarr.php b/scripts/user/sync_users_ldap2dolibarr.php index 5a7f7ad5f53..75925b109bf 100755 --- a/scripts/user/sync_users_ldap2dolibarr.php +++ b/scripts/user/sync_users_ldap2dolibarr.php @@ -1,8 +1,8 @@ #!/usr/bin/env php - * Copyright (C) 2006-2012 Laurent Destailleur + * Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2006-2012 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -11,7 +11,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -19,301 +19,266 @@ */ /** - * \file scripts/user/sync_users_ldap2dolibarr.php - * \ingroup ldap member - * \brief Script to update users into Dolibarr from LDAP + * \file scripts/user/sync_users_ldap2dolibarr.php + * \ingroup ldap member + * \brief Script to update users into Dolibarr from LDAP */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/date.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/ldap.class.php"; -require_once DOL_DOCUMENT_ROOT."/user/class/user.class.php"; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/core/lib/date.lib.php"; +require_once DOL_DOCUMENT_ROOT . "/core/class/ldap.class.php"; +require_once DOL_DOCUMENT_ROOT . "/user/class/user.class.php"; -$langs->loadLangs(array("main", "errors")); +$langs->loadLangs(array("main","errors")); // Global variables -$version=DOL_VERSION; -$error=0; -$forcecommit=0; -$excludeuser=array(); -$confirmed=0; +$version = DOL_VERSION; +$error = 0; +$forcecommit = 0; +$excludeuser = array(); +$confirmed = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); // List of fields to get from LDAP -$required_fields = array( - $conf->global->LDAP_KEY_USERS, - $conf->global->LDAP_FIELD_FULLNAME, - $conf->global->LDAP_FIELD_NAME, - $conf->global->LDAP_FIELD_FIRSTNAME, - $conf->global->LDAP_FIELD_LOGIN, - $conf->global->LDAP_FIELD_LOGIN_SAMBA, - $conf->global->LDAP_FIELD_PASSWORD, - $conf->global->LDAP_FIELD_PASSWORD_CRYPTED, - $conf->global->LDAP_FIELD_PHONE, - $conf->global->LDAP_FIELD_FAX, - $conf->global->LDAP_FIELD_MOBILE, - //$conf->global->LDAP_FIELD_ADDRESS, - //$conf->global->LDAP_FIELD_ZIP, - //$conf->global->LDAP_FIELD_TOWN, - //$conf->global->LDAP_FIELD_COUNTRY, - $conf->global->LDAP_FIELD_MAIL, - $conf->global->LDAP_FIELD_TITLE, - $conf->global->LDAP_FIELD_DESCRIPTION, - $conf->global->LDAP_FIELD_SID -); +$required_fields = array($conf->global->LDAP_KEY_USERS,$conf->global->LDAP_FIELD_FULLNAME,$conf->global->LDAP_FIELD_NAME,$conf->global->LDAP_FIELD_FIRSTNAME,$conf->global->LDAP_FIELD_LOGIN,$conf->global->LDAP_FIELD_LOGIN_SAMBA,$conf->global->LDAP_FIELD_PASSWORD,$conf->global->LDAP_FIELD_PASSWORD_CRYPTED,$conf->global->LDAP_FIELD_PHONE,$conf->global->LDAP_FIELD_FAX,$conf->global->LDAP_FIELD_MOBILE, + // $conf->global->LDAP_FIELD_ADDRESS, + // $conf->global->LDAP_FIELD_ZIP, + // $conf->global->LDAP_FIELD_TOWN, + // $conf->global->LDAP_FIELD_COUNTRY, + $conf->global->LDAP_FIELD_MAIL,$conf->global->LDAP_FIELD_TITLE,$conf->global->LDAP_FIELD_DESCRIPTION,$conf->global->LDAP_FIELD_SID); // Remove from required_fields all entries not configured in LDAP (empty) and duplicated -$required_fields=array_unique(array_values(array_filter($required_fields, "dolValidElement"))); +$required_fields = array_unique(array_values(array_filter($required_fields, "dolValidElement"))); if (! isset($argv[1])) { print "Usage: $script_file (nocommitiferror|commitiferror) [--server=ldapserverhost] [--excludeuser=user1,user2...] [-y]\n"; - exit(-1); + exit(- 1); } -foreach($argv as $key => $val) -{ - if ($val == 'commitiferror') $forcecommit=1; - if (preg_match('/--server=([^\s]+)$/', $val, $reg)) $conf->global->LDAP_SERVER_HOST=$reg[1]; - if (preg_match('/--excludeuser=([^\s]+)$/', $val, $reg)) $excludeuser=explode(',', $reg[1]); - if (preg_match('/-y$/', $val, $reg)) $confirmed=1; +foreach ($argv as $key => $val) { + if ($val == 'commitiferror') + $forcecommit = 1; + if (preg_match('/--server=([^\s]+)$/', $val, $reg)) + $conf->global->LDAP_SERVER_HOST = $reg[1]; + if (preg_match('/--excludeuser=([^\s]+)$/', $val, $reg)) + $excludeuser = explode(',', $reg[1]); + if (preg_match('/-y$/', $val, $reg)) + $confirmed = 1; } print "Mails sending disabled (useless in batch mode)\n"; -$conf->global->MAIN_DISABLE_ALL_MAILS=1; // On bloque les mails +$conf->global->MAIN_DISABLE_ALL_MAILS = 1; // On bloque les mails print "\n"; print "----- Synchronize all records from LDAP database:\n"; -print "host=".$conf->global->LDAP_SERVER_HOST."\n"; -print "port=".$conf->global->LDAP_SERVER_PORT."\n"; -print "login=".$conf->global->LDAP_ADMIN_DN."\n"; -print "pass=".preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS)."\n"; -print "DN to extract=".$conf->global->LDAP_USER_DN."\n"; -if (! empty($conf->global->LDAP_FILTER_CONNECTION)) print 'Filter=('.$conf->global->LDAP_FILTER_CONNECTION.')'."\n"; // Note: filter is defined into function getRecords -else print 'Filter=('.$conf->global->LDAP_KEY_USERS.'=*)'."\n"; +print "host=" . $conf->global->LDAP_SERVER_HOST . "\n"; +print "port=" . $conf->global->LDAP_SERVER_PORT . "\n"; +print "login=" . $conf->global->LDAP_ADMIN_DN . "\n"; +print "pass=" . preg_replace('/./i', '*', $conf->global->LDAP_ADMIN_PASS) . "\n"; +print "DN to extract=" . $conf->global->LDAP_USER_DN . "\n"; +if (! empty($conf->global->LDAP_FILTER_CONNECTION)) + print 'Filter=(' . $conf->global->LDAP_FILTER_CONNECTION . ')' . "\n"; // Note: filter is defined into function getRecords +else + print 'Filter=(' . $conf->global->LDAP_KEY_USERS . '=*)' . "\n"; print "----- To Dolibarr database:\n"; -print "type=".$conf->db->type."\n"; -print "host=".$conf->db->host."\n"; -print "port=".$conf->db->port."\n"; -print "login=".$conf->db->user."\n"; -print "database=".$conf->db->name."\n"; +print "type=" . $conf->db->type . "\n"; +print "host=" . $conf->db->host . "\n"; +print "port=" . $conf->db->port . "\n"; +print "login=" . $conf->db->user . "\n"; +print "database=" . $conf->db->name . "\n"; print "----- Options:\n"; -print "commitiferror=".$forcecommit."\n"; -print "excludeuser=".join(',', $excludeuser)."\n"; -print "Mapped LDAP fields=".join(',', $required_fields)."\n"; +print "commitiferror=" . $forcecommit . "\n"; +print "excludeuser=" . join(',', $excludeuser) . "\n"; +print "Mapped LDAP fields=" . join(',', $required_fields) . "\n"; print "\n"; -if (! $confirmed) -{ +if (! $confirmed) { print "Hit Enter to continue or CTRL+C to stop...\n"; $input = trim(fgets(STDIN)); } -if (empty($conf->global->LDAP_USER_DN)) -{ - print $langs->trans("Error").': '.$langs->trans("LDAP setup for users not defined inside Dolibarr"); - exit(-1); +if (empty($conf->global->LDAP_USER_DN)) { + print $langs->trans("Error") . ': ' . $langs->trans("LDAP setup for users not defined inside Dolibarr"); + exit(- 1); } - // Load table of correspondence of countries -$hashlib2rowid=array(); -$countries=array(); +$hashlib2rowid = array(); +$countries = array(); $sql = "SELECT rowid, code, label, active"; -$sql.= " FROM ".MAIN_DB_PREFIX."c_country"; -$sql.= " WHERE active = 1"; -$sql.= " ORDER BY code ASC"; -$resql=$db->query($sql); -if ($resql) -{ +$sql .= " FROM " . MAIN_DB_PREFIX . "c_country"; +$sql .= " WHERE active = 1"; +$sql .= " ORDER BY code ASC"; +$resql = $db->query($sql); +if ($resql) { $num = $db->num_rows($resql); $i = 0; - if ($num) - { - while ($i < $num) - { + if ($num) { + while ($i < $num) { $obj = $db->fetch_object($resql); - if ($obj) - { - //print 'Load cache for country '.strtolower($obj->label).' rowid='.$obj->rowid."\n"; - $hashlib2rowid[strtolower($obj->label)]=$obj->rowid; - $countries[$obj->rowid]=array('rowid' => $obj->rowid, 'label' => $obj->label, 'code' => $obj->code); + if ($obj) { + // print 'Load cache for country '.strtolower($obj->label).' rowid='.$obj->rowid."\n"; + $hashlib2rowid[strtolower($obj->label)] = $obj->rowid; + $countries[$obj->rowid] = array('rowid' => $obj->rowid,'label' => $obj->label,'code' => $obj->code); } - $i++; + $i ++; } } -} -else -{ +} else { dol_print_error($db); - exit(-1); + exit(- 1); } - - $ldap = new Ldap(); $result = $ldap->connect_bind(); -if ($result >= 0) -{ - $justthese=array(); - +if ($result >= 0) { + $justthese = array(); // We disable synchro Dolibarr-LDAP - $conf->global->LDAP_SYNCHRO_ACTIVE=0; + $conf->global->LDAP_SYNCHRO_ACTIVE = 0; - $ldaprecords = $ldap->getRecords('*', $conf->global->LDAP_USER_DN, $conf->global->LDAP_KEY_USERS, $required_fields, 'user'); // Fiter on 'user' filter param - if (is_array($ldaprecords)) - { + $ldaprecords = $ldap->getRecords('*', $conf->global->LDAP_USER_DN, $conf->global->LDAP_KEY_USERS, $required_fields, 'user'); // Fiter on 'user' filter param + if (is_array($ldaprecords)) { $db->begin(); // Warning $ldapuser has a key in lowercase - foreach ($ldaprecords as $key => $ldapuser) - { + foreach ($ldaprecords as $key => $ldapuser) { // If login into exclude list, we discard record - if (in_array($ldapuser[$conf->global->LDAP_FIELD_LOGIN], $excludeuser)) - { - print $langs->transnoentities("UserDiscarded").' # '.$key.': login='.$ldapuser[$conf->global->LDAP_FIELD_LOGIN].' --> Discarded'."\n"; + if (in_array($ldapuser[$conf->global->LDAP_FIELD_LOGIN], $excludeuser)) { + print $langs->transnoentities("UserDiscarded") . ' # ' . $key . ': login=' . $ldapuser[$conf->global->LDAP_FIELD_LOGIN] . ' --> Discarded' . "\n"; continue; } $fuser = new User($db); - if($conf->global->LDAP_KEY_USERS == $conf->global->LDAP_FIELD_SID) { + if ($conf->global->LDAP_KEY_USERS == $conf->global->LDAP_FIELD_SID) { $fuser->fetch('', '', $ldapuser[$conf->global->LDAP_KEY_USERS]); // Chargement du user concerné par le SID } elseif ($conf->global->LDAP_KEY_USERS == $conf->global->LDAP_FIELD_LOGIN) { $fuser->fetch('', $ldapuser[$conf->global->LDAP_KEY_USERS]); // Chargement du user concerné par le login } // Propriete membre - $fuser->firstname=$ldapuser[$conf->global->LDAP_FIELD_FIRSTNAME]; - $fuser->lastname=$ldapuser[$conf->global->LDAP_FIELD_NAME]; - $fuser->login=$ldapuser[$conf->global->LDAP_FIELD_LOGIN]; - $fuser->pass=$ldapuser[$conf->global->LDAP_FIELD_PASSWORD]; - $fuser->pass_indatabase_crypted=$ldapuser[$conf->global->LDAP_FIELD_PASSWORD_CRYPTED]; + $fuser->firstname = $ldapuser[$conf->global->LDAP_FIELD_FIRSTNAME]; + $fuser->lastname = $ldapuser[$conf->global->LDAP_FIELD_NAME]; + $fuser->login = $ldapuser[$conf->global->LDAP_FIELD_LOGIN]; + $fuser->pass = $ldapuser[$conf->global->LDAP_FIELD_PASSWORD]; + $fuser->pass_indatabase_crypted = $ldapuser[$conf->global->LDAP_FIELD_PASSWORD_CRYPTED]; - //$user->societe; + // $user->societe; /* - $fuser->address=$ldapuser[$conf->global->LDAP_FIELD_ADDRESS]; - $fuser->zip=$ldapuser[$conf->global->LDAP_FIELD_ZIP]; - $fuser->town=$ldapuser[$conf->global->LDAP_FIELD_TOWN]; - $fuser->country=$ldapuser[$conf->global->LDAP_FIELD_COUNTRY]; - $fuser->country_id=$countries[$hashlib2rowid[strtolower($fuser->country)]]['rowid']; - $fuser->country_code=$countries[$hashlib2rowid[strtolower($fuser->country)]]['code']; - */ + * $fuser->address=$ldapuser[$conf->global->LDAP_FIELD_ADDRESS]; + * $fuser->zip=$ldapuser[$conf->global->LDAP_FIELD_ZIP]; + * $fuser->town=$ldapuser[$conf->global->LDAP_FIELD_TOWN]; + * $fuser->country=$ldapuser[$conf->global->LDAP_FIELD_COUNTRY]; + * $fuser->country_id=$countries[$hashlib2rowid[strtolower($fuser->country)]]['rowid']; + * $fuser->country_code=$countries[$hashlib2rowid[strtolower($fuser->country)]]['code']; + */ - $fuser->office_phone=$ldapuser[$conf->global->LDAP_FIELD_PHONE]; - $fuser->user_mobile=$ldapuser[$conf->global->LDAP_FIELD_MOBILE]; - $fuser->office_fax=$ldapuser[$conf->global->LDAP_FIELD_FAX]; - $fuser->email=$ldapuser[$conf->global->LDAP_FIELD_MAIL]; - $fuser->ldap_sid=$ldapuser[$conf->global->LDAP_FIELD_SID]; + $fuser->office_phone = $ldapuser[$conf->global->LDAP_FIELD_PHONE]; + $fuser->user_mobile = $ldapuser[$conf->global->LDAP_FIELD_MOBILE]; + $fuser->office_fax = $ldapuser[$conf->global->LDAP_FIELD_FAX]; + $fuser->email = $ldapuser[$conf->global->LDAP_FIELD_MAIL]; + $fuser->ldap_sid = $ldapuser[$conf->global->LDAP_FIELD_SID]; - $fuser->job=$ldapuser[$conf->global->LDAP_FIELD_TITLE]; - $fuser->note=$ldapuser[$conf->global->LDAP_FIELD_DESCRIPTION]; - $fuser->admin=0; - $fuser->societe_id=0; - $fuser->contact_id=0; - $fuser->fk_member=0; + $fuser->job = $ldapuser[$conf->global->LDAP_FIELD_TITLE]; + $fuser->note = $ldapuser[$conf->global->LDAP_FIELD_DESCRIPTION]; + $fuser->admin = 0; + $fuser->societe_id = 0; + $fuser->contact_id = 0; + $fuser->fk_member = 0; - $fuser->statut=1; + $fuser->statut = 1; // TODO : revoir la gestion du status - /*if (isset($ldapuser[$conf->global->LDAP_FIELD_MEMBER_STATUS])) - { - $fuser->datec=dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE]); - $fuser->datevalid=dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE]); - $fuser->statut=$ldapuser[$conf->global->LDAP_FIELD_MEMBER_STATUS]; - }*/ - //if ($fuser->statut > 1) $fuser->statut=1; + /* + * if (isset($ldapuser[$conf->global->LDAP_FIELD_MEMBER_STATUS])) + * { + * $fuser->datec=dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE]); + * $fuser->datevalid=dol_stringtotime($ldapuser[$conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE]); + * $fuser->statut=$ldapuser[$conf->global->LDAP_FIELD_MEMBER_STATUS]; + * } + */ + // if ($fuser->statut > 1) $fuser->statut=1; - //print_r($ldapuser); + // print_r($ldapuser); - if($fuser->id > 0) { // User update - print $langs->transnoentities("UserUpdate").' # '.$key.': login='.$fuser->login.', fullname='.$fuser->getFullName($langs); - $res=$fuser->update($user); + if ($fuser->id > 0) { // User update + print $langs->transnoentities("UserUpdate") . ' # ' . $key . ': login=' . $fuser->login . ', fullname=' . $fuser->getFullName($langs); + $res = $fuser->update($user); - if ($res < 0) - { - $error++; - print ' --> '.$res.' '.$fuser->error; - } - else - { - print ' --> Updated user id='.$fuser->id.' login='.$fuser->login; + if ($res < 0) { + $error ++; + print ' --> ' . $res . ' ' . $fuser->error; + } else { + print ' --> Updated user id=' . $fuser->id . ' login=' . $fuser->login; } } else { // User creation - print $langs->transnoentities("UserCreate").' # '.$key.': login='.$fuser->login.', fullname='.$fuser->getFullName($langs); - $res=$fuser->create($user); + print $langs->transnoentities("UserCreate") . ' # ' . $key . ': login=' . $fuser->login . ', fullname=' . $fuser->getFullName($langs); + $res = $fuser->create($user); - if ($res > 0) - { - print ' --> Created user id='.$fuser->id.' login='.$fuser->login; - } - else - { - $error++; - print ' --> '.$res.' '.$fuser->error; + if ($res > 0) { + print ' --> Created user id=' . $fuser->id . ' login=' . $fuser->login; + } else { + $error ++; + print ' --> ' . $res . ' ' . $fuser->error; } } print "\n"; - //print_r($fuser); + // print_r($fuser); // Gestion des groupes // TODO : revoir la gestion des groupes (ou script de sync groupes) - /*if(!$error) { - foreach ($ldapuser[$conf->global->LDAP_FIELD_USERGROUPS] as $groupdn) { - $groupdn; - } - }*/ + /* + * if(!$error) { + * foreach ($ldapuser[$conf->global->LDAP_FIELD_USERGROUPS] as $groupdn) { + * $groupdn; + * } + * } + */ } - if (! $error || $forcecommit) - { - if (! $error) print $langs->transnoentities("NoErrorCommitIsDone")."\n"; - else print $langs->transnoentities("ErrorButCommitIsDone")."\n"; + if (! $error || $forcecommit) { + if (! $error) + print $langs->transnoentities("NoErrorCommitIsDone") . "\n"; + else + print $langs->transnoentities("ErrorButCommitIsDone") . "\n"; $db->commit(); - } - else - { - print $langs->transnoentities("ErrorSomeErrorWereFoundRollbackIsDone", $error)."\n"; + } else { + print $langs->transnoentities("ErrorSomeErrorWereFoundRollbackIsDone", $error) . "\n"; $db->rollback(); } print "\n"; - } - else - { + } else { dol_print_error('', $ldap->error); - $error++; + $error ++; } -} -else -{ +} else { dol_print_error('', $ldap->error); - $error++; + $error ++; } - exit($error); - /** * Function to say if a value is empty or not * - * @param string $element Value to test - * @return boolean True of false + * @param string $element + * Value to test + * @return boolean True of false */ function dolValidElement($element) { diff --git a/scripts/withdrawals/build_withdrawal_file.php b/scripts/withdrawals/build_withdrawal_file.php index c834847a272..a83fc7d7b22 100755 --- a/scripts/withdrawals/build_withdrawal_file.php +++ b/scripts/withdrawals/build_withdrawal_file.php @@ -1,8 +1,8 @@ #!/usr/bin/env php - * Copyright (C) 2005-2010 Laurent Destailleur + * Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2005-2010 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -11,7 +11,7 @@ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License @@ -19,39 +19,37 @@ */ /** - * \file scripts/withdrawals/build_withdrawal_file.php - * \ingroup prelevement - * \brief Script de prelevement + * \file scripts/withdrawals/build_withdrawal_file.php + * \ingroup prelevement + * \brief Script de prelevement */ - $sapi_type = php_sapi_name(); $script_file = basename(__FILE__); -$path=dirname(__FILE__).'/'; +$path = __DIR__ . '/'; // Test if batch mode if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); + echo "Error: You are using PHP for CGI. To execute " . $script_file . " from command line, you must use PHP for CLI mode.\n"; + exit(- 1); } -require_once $path."../../htdocs/master.inc.php"; -require_once DOL_DOCUMENT_ROOT."/compta/prelevement/class/bonprelevement.class.php"; -require_once DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php"; -require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php"; -require_once DOL_DOCUMENT_ROOT."/compta/paiement/class/paiement.class.php"; +require_once $path . "../../htdocs/master.inc.php"; +require_once DOL_DOCUMENT_ROOT . "/compta/prelevement/class/bonprelevement.class.php"; +require_once DOL_DOCUMENT_ROOT . "/compta/facture/class/facture.class.php"; +require_once DOL_DOCUMENT_ROOT . "/societe/class/societe.class.php"; +require_once DOL_DOCUMENT_ROOT . "/compta/paiement/class/paiement.class.php"; // Global variables -$version=DOL_VERSION; -$error=0; - +$version = DOL_VERSION; +$error = 0; /* * Main */ @set_time_limit(0); -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -dol_syslog($script_file." launched with arg ".join(',', $argv)); +print "***** " . $script_file . " (" . $version . ") pid=" . dol_getmypid() . " *****\n"; +dol_syslog($script_file . " launched with arg " . join(',', $argv)); $datetimeprev = dol_now(); @@ -61,18 +59,16 @@ $year = strftime("%Y", $datetimeprev); $user = new user($db); $user->fetch($conf->global->PRELEVEMENT_USER); -if (! isset($argv[1])) { // Check parameters - print "This script check invoices with a withdrawal request and\n"; - print "then create payment and build a withdraw file.\n"; - print "Usage: ".$script_file." simu|real\n"; - exit(-1); +if (! isset($argv[1])) { // Check parameters + print "This script check invoices with a withdrawal request and\n"; + print "then create payment and build a withdraw file.\n"; + print "Usage: " . $script_file . " simu|real\n"; + exit(- 1); } - -$withdrawreceipt=new BonPrelevement($db); +$withdrawreceipt = new BonPrelevement($db); // $conf->global->PRELEVEMENT_CODE_BANQUE and $conf->global->PRELEVEMENT_CODE_GUICHET should be empty -$result=$withdrawreceipt->create($conf->global->PRELEVEMENT_CODE_BANQUE, $conf->global->PRELEVEMENT_CODE_GUICHET, $argv[1]); - +$result = $withdrawreceipt->create($conf->global->PRELEVEMENT_CODE_BANQUE, $conf->global->PRELEVEMENT_CODE_GUICHET, $argv[1]); $db->close();