24if (!defined(
'NOLOGIN')) {
27if (!defined(
'NOCSRFCHECK')) {
28 define(
"NOCSRFCHECK", 1);
30if (!defined(
'NOIPCHECK')) {
31 define(
'NOIPCHECK',
'1');
33if (!defined(
'NOBROWSERNOTIF')) {
34 define(
'NOBROWSERNOTIF',
'1');
38require
'../../main.inc.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/lib/security.lib.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/class/vcard.class.php';
44$langs->loadLangs(array(
"companies",
"other",
"recruitment"));
47$action =
GETPOST(
'action',
'aZ09');
49$cancel =
GETPOST(
'cancel',
'alpha');
53$securekey =
GETPOST(
'securekey',
'alpha');
56$object =
new User($db);
57$object->fetch($id,
'',
'', 1);
62$urlwithroot = DOL_MAIN_URL_ROOT;
66$encodedsecurekey =
dol_hash($conf->file->instance_unique_id.
'uservirtualcard'.$object->id.
'-'.$object->login,
'md5');
67if ($encodedsecurekey != $securekey) {
81 if (!empty($backtopage)) {
82 header(
"Location: ".$backtopage);
98$modulepart =
'userphotopublic';
99$dir = $conf->user->dir_output;
105if (!empty($object->photo)) {
108 $logo =
get_exdir(0, 0, 0, 0, $object,
'user').
'photos/'.$object->photo;
116if (!empty($logosmall) && is_readable($dir.
'/'.$logosmall)) {
117 $urllogo = DOL_URL_ROOT.
'/viewimage.php?modulepart='.$modulepart.($conf->entity > 1 ?
'&entity='.$conf->entity :
'').
'&securekey='.urlencode($securekey).
'&file='.urlencode($logosmall);
118 $urllogofull = $dolibarr_main_url_root.
'/viewimage.php?modulepart='.$modulepart.($conf->entity > 1 ?
'&entity='.$conf->entity :
'').
'&securekey='.urlencode($securekey).
'&file='.urlencode($logosmall);
119} elseif (!empty($logo) && is_readable($dir.
'/'.$logo)) {
120 $urllogo = DOL_URL_ROOT.
'/viewimage.php?modulepart='.$modulepart.($conf->entity > 1 ?
'&entity='.$conf->entity :
'').
'&securekey='.urlencode($securekey).
'&file='.urlencode($logo);
121 $urllogofull = $dolibarr_main_url_root.
'/viewimage.php?modulepart='.$modulepart.($conf->entity > 1 ?
'&entity='.$conf->entity :
'').
'&securekey='.urlencode($securekey).
'&file='.urlencode($logo);
131if (
getDolUserInt(
'USER_PUBLIC_HIDE_JOBPOSITION', 0, $object)) {
140if (
getDolUserInt(
'USER_PUBLIC_HIDE_OFFICE_PHONE', 0, $object)) {
141 $object->office_phone =
'';
143if (
getDolUserInt(
'USER_PUBLIC_HIDE_OFFICE_FAX', 0, $object)) {
144 $object->office_fax =
'';
146if (
getDolUserInt(
'USER_PUBLIC_HIDE_USER_MOBILE', 0, $object)) {
147 $object->user_mobile =
'';
152if (
getDolUserInt(
'USER_PUBLIC_HIDE_SOCIALNETWORKS', 0, $object)) {
153 $object->socialnetworks =
'';
156 $object->address =
'';
160 $object->country =
'';
168if ($mode ==
'vcard') {
170 $output = $v->buildVCardString($object, $company, $langs, $urllogofull);
172 $filename = trim(urldecode($v->getFileName()));
178 header(
"Content-Disposition: attachment; filename=\"".$filename.
"\"");
179 header(
"Content-Length: ".
dol_strlen($output));
180 header(
"Connection: close");
190if (!empty($conf->global->MAIN_USER_PROFILE_CSS_URL)) {
191 $head =
'<link rel="stylesheet" type="text/css" href="'.$conf->global->MAIN_USER_PROFILE_CSS_URL.
'?lang='.$langs->defaultlang.
'">'.
"\n";
194$conf->dol_hide_topmenu = 1;
195$conf->dol_hide_leftmenu = 1;
198 $langs->load(
"errors");
199 print
'<div class="error">'.$langs->trans(
'ErrorPublicInterfaceNotEnabled').
'</div>';
205$arrayofcss = array();
207$replacemainarea = (empty($conf->dol_hide_leftmenu) ?
'<div>' :
'').
'<div>';
208llxHeader($head, $object->getFullName($langs).
' - '.$langs->trans(
"PublicVirtualCard"),
'',
'', 0, 0,
'',
'',
'',
'onlinepaymentbody'.(GETPOST(
'mode')==
'preview' ?
' scalepreview cursorpointer virtualcardpreview' :
''), $replacemainarea, 1, 1);
212@media (prefers-color-scheme: dark) {
214 background-color: #CCC !important;
220print
'<span id="dolpaymentspan"></span>'.
"\n";
221print
'<div class="center">'.
"\n";
223print
'<form id="dolpaymentform" class="center" name="paymentform" action="'.$_SERVER[
"PHP_SELF"].
'" method="POST">'.
"\n";
224print
'<input type="hidden" name="token" value="'.newToken().
'">'.
"\n";
225print
'<input type="hidden" name="action" value="dosubmit">'.
"\n";
226print
'<input type="hidden" name="securekey" value="'.$securekey.
'">'.
"\n";
227print
'<input type="hidden" name="entity" value="'.$entity.
'" />';
231print
'<div class="backgreypublicpayment">';
232print
'<div class="logopublicpayment">';
235print
'<div class="double colortext">'.$object->getFullName($langs).
'</div>';
237if ($object->job && !
getDolUserInt(
'USER_PUBLIC_HIDE_JOBPOSITION', 0, $object)) {
238 print
'<div class="">';
243 print
'<div class="bold">';
257if (!empty($conf->global->USER_IMAGE_PUBLIC_INTERFACE)) {
258 print
'<div class="backimagepublicrecruitment">';
259 print
'<img id="idUSER_IMAGE_PUBLIC_INTERFACE" src="'.$conf->global->USER_IMAGE_PUBLIC_INTERFACE.
'">';
263$urlforqrcode = $object->getOnlineVirtualCardUrl(
'vcard');
270$showbarcode =
GETPOST(
'nobarcode') ? 0 : 1;
272 $qrcodecontent = $output = $v->buildVCardString($object, $company, $langs);
275 print
'<div class="floatleft inline-block valignmiddle paddingleft paddingright">';
276 print
'<img style="max-width: 100%" src="'.$dolibarr_main_url_root.
'/viewimage.php?modulepart=barcode&entity='.((int) $conf->entity).
'&generator=tcpdfbarcode&encoding=QRCODE&code='.urlencode($qrcodecontent).
'">';
287if ($object->email && !
getDolUserInt(
'USER_PUBLIC_HIDE_EMAIL', 0, $object)) {
288 $usersection .=
'<div class="flexitemsmall">';
290 $usersection .=
'</div>';
294if ($object->url && !
getDolUserInt(
'USER_PUBLIC_HIDE_URL', 0, $object)) {
295 $usersection .=
'<div class="flexitemsmall">';
296 $usersection .=
img_picto(
'',
'globe',
'class="pictofixedwidth"');
297 $usersection .=
dol_print_url($object->url,
'_blank', 0, 0,
'');
298 $usersection .=
'</div>';
302if ($object->office_phone && !
getDolUserInt(
'USER_PUBLIC_HIDE_OFFICE_PHONE', 0, $object)) {
303 $usersection .=
'<div class="flexitemsmall">';
304 $usersection .=
img_picto(
'',
'phone',
'class="pictofixedwidth"');
305 $usersection .=
dol_print_phone($object->office_phone, $object->country_code, 0, $mysoc->id,
'tel',
' ', 0,
'');
306 $usersection .=
'</div>';
308if ($object->office_fax && !
getDolUserInt(
'USER_PUBLIC_HIDE_OFFICE_FAX', 0, $object)) {
309 $usersection .=
'<div class="flexitemsmall">';
310 $usersection .=
img_picto(
'',
'phoning_fax',
'class="pictofixedwidth"');
311 $usersection .=
dol_print_phone($object->office_fax, $object->country_code, 0, $mysoc->id,
'fax',
' ', 0,
'');
312 $usersection .=
'</div>';
314if ($object->user_mobile && !
getDolUserInt(
'USER_PUBLIC_HIDE_USER_MOBILE', 0, $object)) {
315 $usersection .=
'<div class="flexitemsmall">';
316 $usersection .=
img_picto(
'',
'phone',
'class="pictofixedwidth"');
317 $usersection .=
dol_print_phone($object->user_mobile, $object->country_code, 0, $mysoc->id,
'tel',
' ', 0,
'');
318 $usersection .=
'</div>';
322if (!empty($object->socialnetworks) && is_array($object->socialnetworks) && count($object->socialnetworks) > 0) {
323 if (!
getDolUserInt(
'USER_PUBLIC_HIDE_SOCIALNETWORKS', 0, $object)) {
324 foreach ($object->socialnetworks as $key => $value) {
326 $usersection .=
'<div class="flexitemsmall">'.dol_print_socialnetworks($value, 0, $mysoc->id, $key, $socialnetworksdict).
'</div>';
335 print
'<img class="userphotopublicvcard" id="dolpaymentlogo" src="'.$urllogofull.
'">';
338 print
'<table id="dolpaymenttable" summary="Job position offer" class="center">'.
"\n";
341 print
'<tr><td class="left">';
343 print
'<div class="nowidthimp nopaddingtoponsmartphone" id="tablepublicpayment">';
350 print
'</td></tr>'.
"\n";
352 print
'</table>'.
"\n";
356 print
'<br><center><img class="userphotopublicvcard" style="position: unset !important;" id="dolpaymentlogo" src="'.$urllogofull.
'"></center>';
362 $companysection =
'';
365 $companysection .=
'<div class="flexitemsmall">';
366 $companysection .=
img_picto(
'',
'email',
'class="pictofixedwidth"');
368 $companysection .=
'</div>';
372 $companysection .=
'<div class="flexitemsmall">';
373 $companysection .=
img_picto(
'',
'globe',
'class="pictofixedwidth"');
374 $companysection .=
dol_print_url($mysoc->url,
'_blank', 0, 0,
'');
375 $companysection .=
'</div>';
379 $companysection .=
'<div class="flexitemsmall">';
380 $companysection .=
img_picto(
'',
'phone',
'class="pictofixedwidth"');
381 $companysection .=
dol_print_phone($mysoc->phone, $mysoc->country_code, 0, $mysoc->id,
'tel',
' ', 0,
'');
382 $companysection .=
'</div>';
385 $companysection .=
'<div class="flexitemsmall">';
386 $companysection .=
img_picto(
'',
'phoning_fax',
'class="pictofixedwidth"');
387 $companysection .=
dol_print_phone($mysoc->fax, $mysoc->country_code, 0, $mysoc->id,
'fax',
' ', 0,
'');
388 $companysection .=
'</div>';
392 if (!empty($mysoc->socialnetworks) && is_array($mysoc->socialnetworks) && count($mysoc->socialnetworks) > 0) {
393 foreach ($mysoc->socialnetworks as $key => $value) {
395 $companysection .=
'<div class="flexitemsmall">'.dol_print_socialnetworks($value, 0, $mysoc->id, $key, $socialnetworksdict).
'</div>';
402 $logosmall = $mysoc->logo_squarred_small ? $mysoc->logo_squarred_small : $mysoc->logo_small;
403 $logo = $mysoc->logo_squarred ? $mysoc->logo_squarred : $mysoc->logo;
404 $paramlogo =
'ONLINE_USER_LOGO_'.$suffix;
405 if (!empty($conf->global->$paramlogo)) {
406 $logosmall = $conf->global->$paramlogo;
407 } elseif (!empty($conf->global->ONLINE_USER_LOGO)) {
408 $logosmall = $conf->global->ONLINE_USER_LOGO;
414 if (!empty($logosmall) && is_readable($conf->mycompany->dir_output.
'/logos/thumbs/'.$logosmall)) {
415 $urllogo = DOL_URL_ROOT.
'/viewimage.php?modulepart=mycompany'.($conf->entity > 1 ?
'&entity='.$conf->entity :
'').
'&file='.urlencode(
'logos/thumbs/'.$logosmall);
416 $urllogofull = $dolibarr_main_url_root.
'/viewimage.php?modulepart=mycompany'.($conf->entity > 1 ?
'&entity='.$conf->entity :
'').
'&file='.urlencode(
'logos/thumbs/'.$logosmall);
417 } elseif (!empty($logo) && is_readable($conf->mycompany->dir_output.
'/logos/'.$logo)) {
418 $urllogo = DOL_URL_ROOT.
'/viewimage.php?modulepart=mycompany'.($conf->entity > 1 ?
'&entity='.$conf->entity :
'').
'&file='.urlencode(
'logos/'.$logo);
419 $urllogofull = $dolibarr_main_url_root.
'/viewimage.php?modulepart=mycompany'.($conf->entity > 1 ?
'&entity='.$conf->entity :
'').
'&file='.urlencode(
'logos/'.$logo);
423 print
'<div class="logopublicpayment center">';
424 if (!empty($mysoc->url)) {
425 print
'<a href="'.$mysoc->url.
'" target="_blank" rel="noopener">';
427 print
'<img class="userphotopublicvcard" id="dolpaymentlogo" src="'.$urllogofull.
'">';
428 if (!empty($mysoc->url)) {
433 print
'<table id="dolpaymenttable" summary="Job position offer" class="center">'.
"\n";
436 print
'<tr><td class="left">';
438 print
'<div class="nowidthimp nopaddingtoponsmartphone" id="tablepublicpayment">';
442 print
'<div class="center bold">';
448 print $companysection;
453 print
'</td></tr>'.
"\n";
455 print
'</table>'.
"\n";
469print
'<div class="backgreypublicpayment">';
470print
'<div class="center">';
471print
'<a href="'.$urlforqrcode.
'">';
473print
img_picto($langs->trans(
"Download").
' VCF',
'add').
' ';
474print $langs->trans(
"Download").
' VCF';
481$fullexternaleurltovirtualcard = $object->getOnlineVirtualCardUrl(
'',
'external');
482$fullinternalurltovirtualcard = $object->getOnlineVirtualCardUrl(
'',
'internal');
485print
'jQuery(document).ready(function() {
486 jQuery(".virtualcardpreview").click(function(event) {
487 event.preventDefault();
488 console.log("We click on the card");
489 window.open("'.$fullexternaleurltovirtualcard.
'");
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Class to manage Dolibarr users.
Class to buld vCard files.
getDolUserInt($key, $default=0, $tmpuser=null)
Return Dolibarr user constant int value.
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
getDolUserString($key, $default='', $tmpuser=null)
Return Dolibarr user constant string value.
dol_print_email($email, $cid=0, $socid=0, $addlink=0, $max=64, $showinvalid=1, $withpicto=0)
Show EMail link formatted for HTML output.
dol_print_phone($phone, $countrycode='', $cid=0, $socid=0, $addlink='', $separ=" ", $withpicto='', $titlealt='', $adddivfloat=0)
Format phone numbers according to country.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
getImageFileNameForSize($file, $extName, $extImgTarget='')
Return the filename of file to get the thumbs.
getArrayOfSocialNetworks()
Get array of social network dictionary.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dolIsAllowedForPreview($file)
Return if a file is qualified for preview.
dol_print_url($url, $target='_blank', $max=32, $withpicto=0, $morecss='float')
Show Url link.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
if(!defined( 'NOREQUIREMENU')) if(!empty(GETPOST('seteventmessages', 'alpha'))) if(!function_exists("llxHeader")) top_httphead($contenttype='text/html', $forcenocache=0)
Show HTTP header.
httponly_accessforbidden($message=1, $http_response_code=403, $stringalreadysanitized=0)
Show a message to say access is forbidden and stop program.
dol_hash($chain, $type='0')
Returns a hash (non reversible encryption) of a string.