| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <?php
- /**
- * Copyright (C) 2013 Marcos García <marcosgdf@gmail.com>
- *
- * 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
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * 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
- * 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 <https://www.gnu.org/licenses/>.
- * or see https://www.gnu.org/
- */
- /**
- * Return string with full online Url to accept and sign a quote
- *
- * @param string $type Type of URL ('proposal', ...)
- * @param string $ref Ref of object
- * @return string Url string
- */
- function showOnlineSignatureUrl($type, $ref)
- {
- global $conf, $langs;
- // Load translation files required by the page
- $langs->loadLangs(array("payment", "paybox"));
- $servicename = 'Online';
- $out = img_picto('', 'globe').' <span class="opacitymedium">'.$langs->trans("ToOfferALinkForOnlineSignature", $servicename).'</span><br>';
- $url = getOnlineSignatureUrl(0, $type, $ref);
- $out .= '<div class="urllink">';
- if ($url == $langs->trans("FeatureOnlineSignDisabled")) {
- $out .= $url;
- } else {
- $out .= '<input type="text" id="onlinesignatureurl" class="quatrevingtpercentminusx" value="'.$url.'">';
- }
- $out .= '<a class="" href="'.$url.'" target="_blank" rel="noopener noreferrer">'.img_picto('', 'globe', 'class="paddingleft"').'</a>';
- $out .= '</div>';
- $out .= ajax_autoselect("onlinesignatureurl", 0);
- return $out;
- }
- /**
- * Return string with full Url
- *
- * @param int $mode 0=True url, 1=Url formated with colors
- * @param string $type Type of URL ('proposal', ...)
- * @param string $ref Ref of object
- * @param string $localorexternal 0=Url for browser, 1=Url for external access
- * @return string Url string
- */
- function getOnlineSignatureUrl($mode, $type, $ref = '', $localorexternal = 1)
- {
- global $conf, $object, $dolibarr_main_url_root;
- $ref = str_replace(' ', '', $ref);
- $out = '';
- // Define $urlwithroot
- $urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root));
- $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
- //$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
- $urltouse = DOL_MAIN_URL_ROOT;
- if ($localorexternal) {
- $urltouse = $urlwithroot;
- }
- $securekeyseed = '';
- if ($type == 'proposal') {
- $securekeyseed = isset($conf->global->PROPOSAL_ONLINE_SIGNATURE_SECURITY_TOKEN) ? $conf->global->PROPOSAL_ONLINE_SIGNATURE_SECURITY_TOKEN : '';
- $out = $urltouse.'/public/onlinesign/newonlinesign.php?source=proposal&ref='.($mode ? '<span style="color: #666666">' : '');
- if ($mode == 1) {
- $out .= 'proposal_ref';
- }
- if ($mode == 0) {
- $out .= urlencode($ref);
- }
- $out .= ($mode ? '</span>' : '');
- if ($mode == 1) {
- $out .= "hash('".$securekeyseed."' + '".$type."' + proposal_ref)";
- } else {
- $out .= '&securekey='.dol_hash($securekeyseed.$type.$ref.(!isModEnabled('multicompany') ? '' : $object->entity), '0');
- }
- /*
- if ($mode == 1) {
- $out .= '&hashp=<span style="color: #666666">hash_of_file</span>';
- } else {
- include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
- $propaltmp = new Propal($db);
- $res = $propaltmp->fetch(0, $ref);
- if ($res <= 0) {
- return 'FailedToGetProposal';
- }
- include_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmfiles.class.php';
- $ecmfile = new EcmFiles($db);
- $ecmfile->fetch(0, '', $propaltmp->last_main_doc);
- $hashp = $ecmfile->share;
- if (empty($hashp)) {
- $out = $langs->trans("FeatureOnlineSignDisabled");
- return $out;
- } else {
- $out .= '&hashp='.$hashp;
- }
- }*/
- } elseif ($type == 'contract') {
- $securekeyseed = isset($conf->global->CONTRACT_ONLINE_SIGNATURE_SECURITY_TOKEN) ? $conf->global->CONTRACT_ONLINE_SIGNATURE_SECURITY_TOKEN : '';
- $out = $urltouse.'/public/onlinesign/newonlinesign.php?source=contract&ref='.($mode ? '<span style="color: #666666">' : '');
- if ($mode == 1) {
- $out .= 'contract_ref';
- }
- if ($mode == 0) {
- $out .= urlencode($ref);
- }
- $out .= ($mode ? '</span>' : '');
- if ($mode == 1) {
- $out .= "hash('".$securekeyseed."' + '".$type."' + contract_ref)";
- } else {
- $out .= '&securekey='.dol_hash($securekeyseed.$type.$ref.(!isModEnabled('multicompany') ? '' : $object->entity), '0');
- }
- } elseif ($type == 'fichinter') {
- $securekeyseed = isset($conf->global->FICHINTER_ONLINE_SIGNATURE_SECURITY_TOKEN) ? $conf->global->FICHINTER_ONLINE_SIGNATURE_SECURITY_TOKEN : '';
- $out = $urltouse.'/public/onlinesign/newonlinesign.php?source=fichinter&ref='.($mode ? '<span style="color: #666666">' : '');
- if ($mode == 1) {
- $out .= 'fichinter_ref';
- }
- if ($mode == 0) {
- $out .= urlencode($ref);
- }
- $out .= ($mode ? '</span>' : '');
- if ($mode == 1) {
- $out .= "hash('".$securekeyseed."' + '".$type."' + fichinter_ref)";
- } else {
- $out .= '&securekey='.dol_hash($securekeyseed.$type.$ref.(!isModEnabled('multicompany') ? '' : $object->entity), '0');
- }
- }
- // For multicompany
- if (!empty($out) && isModEnabled('multicompany')) {
- $out .= "&entity=".$object->entity; // Check the entity because we may have the same reference in several entities
- }
- return $out;
- }
|