36require
'../main.inc.php';
46require_once DOL_DOCUMENT_ROOT.
'/core/lib/member.lib.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
48require_once DOL_DOCUMENT_ROOT.
'/core/lib/images.lib.php';
49require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
50require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
51require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
52require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent_type.class.php';
53require_once DOL_DOCUMENT_ROOT.
'/adherents/class/subscription.class.php';
54require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
55require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
56require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formadmin.class.php';
57require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
58require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
61$langs->loadLangs(array(
"companies",
"bills",
"members",
"users",
"other",
"paypal"));
65$action =
GETPOST(
'action',
'aZ09');
66$cancel =
GETPOST(
'cancel',
'alpha');
67$backtopage =
GETPOST(
'backtopage',
'alpha');
68$backtopageforcancel =
GETPOST(
'backtopageforcancel',
'alpha');
69$confirm =
GETPOST(
'confirm',
'alpha');
79 include_once DOL_DOCUMENT_ROOT.
'/mailmanspip/class/mailmanspip.class.php';
81 $langs->load(
'mailmanspip');
93$extrafields->fetch_name_optionals_label(
$object->table_element);
101if (!empty($canvas)) {
102 require_once DOL_DOCUMENT_ROOT.
'/core/class/canvas.class.php';
103 $objcanvas =
new Canvas($db, $action);
104 $objcanvas->getCanvas(
'adherent',
'membercard', $canvas);
108$hookmanager->initHooks(array(
'membercard',
'globalcard'));
111if ($id > 0 || !empty($ref)) {
113 $result =
$object->fetch($id, $ref);
116 $canadduser = ($user->admin || $user->hasRight(
'user',
'user',
'creer'));
120 $caneditfielduser = ((($user->id ==
$object->user_id) && $user->hasRight(
'user',
'self',
'creer'))
121 || (($user->id !=
$object->user_id) && $user->hasRight(
'user',
'user',
'creer')));
122 $caneditpassworduser = ((($user->id ==
$object->user_id) && $user->hasRight(
'user',
'self',
'password'))
123 || (($user->id !=
$object->user_id) && $user->hasRight(
'user',
'user',
'password')));
128$canaddmember = $user->hasRight(
'adherent',
'creer');
129$caneditfieldmember =
false;
132 $caneditfieldmember = $user->hasRight(
'adherent',
'creer');
134$permissiontoeditextra = $canaddmember;
135if (
GETPOST(
'attribute',
'aZ09') && isset($extrafields->attributes[
$object->table_element][
'perms'][
GETPOST(
'attribute',
'aZ09')])) {
137 $permissiontoeditextra =
dol_eval((
string) $extrafields->attributes[
$object->table_element][
'perms'][
GETPOST(
'attribute',
'aZ09')]);
143if (!$user->hasRight(
'adherent',
'creer') && $action ==
'edit') {
147$linkofpubliclist = DOL_MAIN_URL_ROOT.
'/public/members/public_list.php'.((
isModEnabled(
'multicompany')) ?
'?entity='.
$conf->entity :
'');
154$parameters = array(
'id' => $id,
'rowid' => $id,
'objcanvas' => $objcanvas,
'confirm' => $confirm);
155$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
157 setEventMessages($hookmanager->error, $hookmanager->errors,
'errors');
160if (empty($reshook)) {
161 $backurlforlist = DOL_URL_ROOT.
'/adherents/list.php';
163 if (empty($backtopage) || ($cancel && empty($id))) {
164 if (empty($backtopage) || ($cancel && strpos($backtopage,
'__ID__'))) {
165 if (empty($id) && (($action !=
'add' && $action !=
'create') || $cancel)) {
166 $backtopage = $backurlforlist;
168 $backtopage = DOL_URL_ROOT.
'/adherents/card.php?id='.((!empty($id) &&
$id > 0) ? $id :
'__ID__');
174 if (!empty($backtopageforcancel)) {
175 header(
"Location: ".$backtopageforcancel);
177 } elseif (!empty($backtopage)) {
178 header(
"Location: ".$backtopage);
184 if ($action ==
'setuserid' && ($user->hasRight(
'user',
'self',
'creer') || $user->hasRight(
'user',
'user',
'creer'))) {
186 if (!$user->hasRight(
'user',
'user',
'creer')) {
187 if ($userid != $user->id && $userid !=
$object->user_id) {
189 setEventMessages($langs->trans(
"ErrorUserPermissionAllowsToLinksToItselfOnly"),
null,
'errors');
194 if ($userid !=
$object->user_id) {
195 $result =
$object->setUserId($userid);
204 if ($action ==
'setsocid' && $caneditfieldmember) {
207 if ($socid !=
$object->socid) {
208 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"adherent";
209 $sql .=
" WHERE socid = ".((int) $socid);
210 $sql .=
" AND entity = ".((int)
$conf->entity);
211 $resql = $db->query($sql);
213 $obj = $db->fetch_object($resql);
214 if ($obj && $obj->rowid > 0) {
216 $othermember->fetch($obj->rowid);
217 $thirdparty =
new Societe($db);
218 $thirdparty->fetch($socid);
220 setEventMessages($langs->trans(
"ErrorMemberIsAlreadyLinkedToThisThirdParty", $othermember->getFullName($langs), $othermember->login, $thirdparty->name),
null,
'errors');
225 $result =
$object->setThirdPartyId($socid);
236 if ($action ==
'confirm_create_user' && $confirm ==
'yes' && $user->hasRight(
'user',
'user',
'creer')) {
239 $nuser =
new User($db);
241 if (
GETPOST(
'internalorexternal',
'aZ09') ==
'internal') {
242 $tmpuser->fk_soc = 0;
246 $result = $nuser->create_from_member($tmpuser,
GETPOST(
'login',
'alphanohtml'));
249 $langs->load(
"errors");
250 setEventMessages($langs->trans($nuser->error),
null,
'errors');
252 setEventMessages($langs->trans(
"NewUserCreated", $nuser->login),
null,
'mesgs');
261 if ($action ==
'confirm_create_thirdparty' && $confirm ==
'yes' && $user->hasRight(
'societe',
'creer')) {
265 $result = $company->create_from_member($object,
GETPOST(
'companyname',
'alpha'),
GETPOST(
'companyalias',
'alpha'));
268 $langs->load(
"errors");
269 setEventMessages($langs->trans($company->error),
null,
'errors');
270 setEventMessages($company->error, $company->errors,
'errors');
276 if ($action ==
'confirm_merge' && $confirm ==
'yes' && $user->hasRight(
'adherent',
'creer')) {
277 $member_origin_id =
GETPOSTINT(
'member_origin');
280 if ($member_origin_id <= 0) {
281 $langs->load(
'errors');
282 setEventMessages($langs->trans(
'MergeOriginMemberIsMAndatory'),
null,
'errors');
284 if (!$error && $member_origin->fetch($member_origin_id) < 1) {
285 setEventMessages($langs->trans(
'ErrorRecordNotFound'),
null,
'errors');
289 $result =
$object->mergeMembers($member_origin_id);
294 setEventMessages($langs->trans(
'MemberMergeSuccess'),
null,
'mesgs');
300 if ($action ==
'update' && !$cancel && $user->hasRight(
'adherent',
'creer')) {
301 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
307 $lastname =
GETPOST(
"lastname",
'alphanohtml');
308 $firstname =
GETPOST(
"firstname",
'alphanohtml');
309 $gender =
GETPOST(
"gender",
'alphanohtml');
310 $societe =
GETPOST(
"societe",
'alphanohtml');
311 $morphy =
GETPOST(
"morphy",
'alphanohtml');
312 $login =
GETPOST(
"login",
'alphanohtml');
313 if ($morphy !=
'mor' && empty($lastname)) {
315 $langs->load(
"errors");
316 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Lastname")),
null,
'errors');
318 if ($morphy !=
'mor' && (!isset($firstname) || $firstname ==
'')) {
320 $langs->load(
"errors");
321 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Firstname")),
null,
'errors');
323 if ($morphy ==
'mor' && empty($societe)) {
325 $langs->load(
"errors");
326 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Company")),
null,
'errors');
332 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Login")),
null,
'errors');
336 if ($result > 0 && !$error) {
340 $object->civility_code = trim(
GETPOST(
"civility_code",
'alphanohtml'));
361 $object->email = preg_replace(
'/\s+/',
'',
GETPOST(
"member_email",
'alpha'));
363 $object->socialnetworks = array();
364 foreach ($socialnetworks as $key => $value) {
366 $object->socialnetworks[$key] = trim(
GETPOST($key,
'alphanohtml'));
376 if (!empty($_FILES[
'photo'][
'name'])) {
377 $current_photo =
$object->photo;
381 $current_photo =
$object->photo;
391 $ret = $extrafields->setOptionalsFromPost(
null, $object,
'@GETPOSTISSET');
399 if ($user->id !=
$object->user_id && !$user->hasRight(
'user',
'user',
'creer')) {
409 if ($user->id ==
$object->user_id) {
410 if (!$user->hasRight(
'user',
'self',
'password')) {
414 if (!$user->hasRight(
'user',
'user',
'password')) {
422 $nosyncthirdparty =
getDolGlobalInt(
'MEMBER_NO_SYNC_LINKED_THIRDPARTY');
424 $result =
$object->update($user, 0, $nosyncuser, $nosyncuserpass, $nosyncthirdparty);
426 if ($result >= 0 && !count(
$object->errors)) {
427 $categories =
GETPOST(
'memcats',
'array');
428 $object->setCategories($categories);
431 $dir =
$conf->member->dir_output.
'/'.
get_exdir(0, 0, 0, 1, $object,
'member').
'/photos';
432 $file_OK = is_uploaded_file($_FILES[
'photo'][
'tmp_name']);
433 if (
GETPOST(
'deletephoto') && $current_photo) {
434 $fileimg = $dir.
'/'.$current_photo;
435 $dirthumbs = $dir.
'/thumbs';
441 if ($current_photo !=
$object->photo) {
442 $fileimg = $dir.
'/'.$current_photo;
443 $dirthumbs = $dir.
'/thumbs';
452 $resultupload =
dol_move_uploaded_file($_FILES[
'photo'][
'tmp_name'], $newfile, 1, 0, $_FILES[
'photo'][
'error']);
454 if (!is_numeric($resultupload) || $resultupload <= 0) {
455 setEventMessages($langs->trans(
"ErrorFailedToSaveFile"),
null,
'errors');
462 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
471 setEventMessages(
"ErrorBadImageFormat",
null,
'errors');
474 switch ($_FILES[
'photo'][
'error']) {
477 $errors[] =
"ErrorFileSizeTooLarge";
480 $errors[] =
"ErrorFilePartiallyUploaded";
489 if (!empty($backtopage)) {
490 header(
"Location: ".$backtopage);
505 if ($action ==
'add' && $user->hasRight(
'adherent',
'creer')) {
513 $datesubscription =
'';
519 $civility_code =
GETPOST(
"civility_code",
'alphanohtml');
520 $lastname =
GETPOST(
"lastname",
'alphanohtml');
521 $firstname =
GETPOST(
"firstname",
'alphanohtml');
522 $gender =
GETPOST(
"gender",
'alphanohtml');
523 $societe =
GETPOST(
"societe",
'alphanohtml');
524 $address =
GETPOST(
"address",
'alphanohtml');
525 $zip =
GETPOST(
"zipcode",
'alphanohtml');
526 $town =
GETPOST(
"town",
'alphanohtml');
530 $phone =
GETPOST(
"phone",
'alpha');
531 $phone_perso =
GETPOST(
"phone_perso",
'alpha');
532 $phone_mobile =
GETPOST(
"phone_mobile",
'alpha');
533 $email = preg_replace(
'/\s+/',
'',
GETPOST(
"member_email",
'aZ09arobase'));
534 $url = trim(
GETPOST(
'url',
'url'));
535 $login =
GETPOST(
"member_login",
'alphanohtml');
536 $pass =
GETPOST(
"password",
'password');
537 $photo =
GETPOST(
"photo",
'alphanohtml');
538 $morphy =
GETPOST(
"morphy",
'alphanohtml');
543 $default_lang =
GETPOST(
'default_lang',
'alpha');
545 $object->civility_code = $civility_code;
546 $object->firstname = $firstname;
555 $object->country_id = $country_id;
557 $object->phone_perso = $phone_perso;
558 $object->phone_mobile = $phone_mobile;
559 $object->socialnetworks = array();
561 foreach ($socialnetworks as $key => $value) {
563 $object->socialnetworks[$key] =
GETPOST(
"member_".$key,
'alphanohtml');
580 $object->default_lang = $default_lang;
582 $ret = $extrafields->setOptionalsFromPost(
null, $object);
588 if (empty($morphy) || $morphy ==
"-1") {
590 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"MemberNature")),
null,
'errors');
596 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Login")),
null,
'errors');
598 $sql =
"SELECT login FROM ".MAIN_DB_PREFIX.
"adherent WHERE login='".$db->escape($login).
"'";
599 $result = $db->query($sql);
602 $num = $db->num_rows($result);
606 $langs->load(
"errors");
607 setEventMessages($langs->trans(
"ErrorLoginAlreadyExists", $login),
null,
'errors');
612 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Password")),
null,
'errors');
615 if ($morphy ==
'mor' && empty($societe)) {
617 $langs->load(
"errors");
618 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Company")),
null,
'errors');
620 if ($morphy !=
'mor' && empty($lastname)) {
622 $langs->load(
"errors");
623 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Lastname")),
null,
'errors');
625 if ($morphy !=
'mor' && (!isset($firstname) || $firstname ==
'')) {
627 $langs->load(
"errors");
628 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Firstname")),
null,
'errors');
630 if (!($typeid > 0)) {
632 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Type")),
null,
'errors');
636 $langs->load(
"errors");
637 setEventMessages($langs->trans(
"ErrorBadEMail", $email),
null,
'errors');
640 $langs->load(
"errors");
641 setEventMessages($langs->trans(
"ErrorBadUrl",
$object->url),
null,
'errors');
648 $result =
$object->create($user);
651 $memcats =
GETPOST(
'memcats',
'array');
652 $object->setCategories($memcats);
659 $backtopage = preg_replace(
'/__ID__/', (
string) $id, $backtopage);
672 $result = $company->create_from_member($object);
674 $langs->load(
"errors");
675 setEventMessages($langs->trans($company->error),
null,
'errors');
676 setEventMessages($company->error, $company->errors,
'errors');
683 $action = ($result < 0 || !$error) ?
'' :
'create';
685 if (!$error && $backtopage) {
686 header(
"Location: ".$backtopage);
691 if ($user->hasRight(
'adherent',
'supprimer') && $action ==
'confirm_delete' && $confirm ==
'yes') {
693 $result =
$object->delete($user);
695 setEventMessages($langs->trans(
"RecordDeleted"),
null,
'mesgs');
696 if (!empty($backtopage) && !preg_match(
'/'.preg_quote($_SERVER[
"PHP_SELF"],
'/').
'/', $backtopage)) {
697 header(
"Location: ".$backtopage);
700 header(
"Location: list.php");
704 setEventMessages(
$object->error,
null,
'errors');
708 if ($user->hasRight(
'adherent',
'creer') && $action ==
'confirm_valid' && $confirm ==
'yes') {
716 $result =
$object->validate($user);
718 if ($result >= 0 && !count(
$object->errors)) {
725 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
729 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang);
731 $outputlangs->loadLangs(array(
"main",
"members",
"companies",
"install",
"other"));
733 $arraydefaultmessage =
null;
736 if (!empty($labeltouse)) {
737 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
740 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
741 $subject = (string) $arraydefaultmessage->topic;
742 $msg = (string) $arraydefaultmessage->content;
745 if (empty($labeltouse) || (
int) $labeltouse === -1) {
747 $langs->load(
"errors");
748 setEventMessages(
'<a href="'.DOL_URL_ROOT.
'/adherents/admin/member_emails.php">'.$langs->trans(
'WarningMandatorySetupNotComplete').
'</a>',
null,
'errors');
751 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
756 $moreinheader =
'X-Dolibarr-Info: send_an_email by adherents/card.php'.
"\r\n";
758 $result =
$object->sendEmail($texttosend, $subjecttosend, array(), array(), array(),
"",
"", 0, -1,
'', $moreinheader);
778 if ($user->hasRight(
'adherent',
'supprimer') && $action ==
'confirm_resiliate') {
781 if ($confirm ==
'yes') {
785 $result =
$object->resiliate($user);
787 if ($result >= 0 && !count(
$object->errors)) {
793 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
797 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang);
799 $outputlangs->loadLangs(array(
"main",
"members",
"companies",
"install",
"other"));
801 $arraydefaultmessage =
null;
804 if (!empty($labeltouse)) {
805 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
808 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
809 $subject = (string) $arraydefaultmessage->topic;
810 $msg = (string) $arraydefaultmessage->content;
813 if (empty($labeltouse) || (
int) $labeltouse === -1) {
815 setEventMessages(
'WarningMandatorySetupNotComplete',
null,
'errors');
818 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
823 $moreinheader =
'X-Dolibarr-Info: send_an_email by adherents/card.php'.
"\r\n";
825 $result =
$object->sendEmail($texttosend, $subjecttosend, array(), array(), array(),
"",
"", 0, -1,
'', $moreinheader);
839 if (!empty($backtopage) && !$error) {
840 header(
"Location: ".$backtopage);
845 if ($user->hasRight(
'adherent',
'supprimer') && $action ==
'confirm_exclude') {
848 if ($confirm ==
'yes') {
852 $result =
$object->exclude($user);
854 if ($result >= 0 && !count(
$object->errors)) {
860 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
864 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang);
866 $outputlangs->loadLangs(array(
"main",
"members",
"companies",
"install",
"other"));
868 $arraydefaultmessage =
null;
871 if (!empty($labeltouse)) {
872 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
875 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
876 $subject = (string) $arraydefaultmessage->topic;
877 $msg = (string) $arraydefaultmessage->content;
880 if (empty($labeltouse) || (
int) $labeltouse === -1) {
882 setEventMessages(
'WarningMandatorySetupNotComplete',
null,
'errors');
885 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
890 $moreinheader =
'X-Dolibarr-Info: send_an_email by adherents/card.php'.
"\r\n";
892 $result =
$object->sendEmail($texttosend, $subjecttosend, array(), array(), array(),
"",
"", 0, -1,
'', $moreinheader);
906 if (!empty($backtopage) && !$error) {
907 header(
"Location: ".$backtopage);
912 if ($action ==
'update_extras' && $permissiontoeditextra) {
914 $attribute_name =
GETPOST(
'attribute',
'aZ09');
917 $ret = $extrafields->setOptionalsFromPost(
null, $object, $attribute_name);
922 $result =
$object->updateExtraField($attribute_name,
'MEMBER_MODIFY');
929 $action =
'edit_extras';
934 if (is_object($mailmanspip)) {
935 if ($user->hasRight(
'adherent',
'supprimer') && $action ==
'confirm_del_spip' && $confirm ==
'yes') {
937 if (!$mailmanspip->del_to_spip($object)) {
938 setEventMessages($langs->trans(
'DeleteIntoSpipError').
': '.$mailmanspip->error,
null,
'errors');
943 if ($user->hasRight(
'adherent',
'creer') && $action ==
'confirm_add_spip' && $confirm ==
'yes') {
945 if (!$mailmanspip->add_to_spip($object)) {
946 setEventMessages($langs->trans(
'AddIntoSpipError').
': '.$mailmanspip->error,
null,
'errors');
953 include DOL_DOCUMENT_ROOT.
'/core/actions_printing.inc.php';
956 $upload_dir =
$conf->member->dir_output;
957 $permissiontoadd = $user->hasRight(
'adherent',
'creer');
958 include DOL_DOCUMENT_ROOT.
'/core/actions_builddoc.inc.php';
961 $triggersendname =
'MEMBER_SENTBYMAIL';
963 $mode =
'emailfrommember';
964 $trackid =
'mem'.$object->id;
965 include DOL_DOCUMENT_ROOT.
'/core/actions_sendmails.inc.php';
973$form =
new Form($db);
978$title = $langs->trans(
"Member").
" - ".$langs->trans(
"Card");
979$help_url =
'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros|DE:Modul_Mitglieder';
981llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'mod-member page-card');
983$countrynotdefined = $langs->trans(
"ErrorSetACountryFirst").
' ('.$langs->trans(
"SeeAbove").
')';
985if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
989 if (empty(
$object->error) && $id) {
993 dol_print_error(
null,
$object->error);
997 $objcanvas->display_canvas($action);
1004 if ($action ==
'create') {
1012 $object->country_code = $tmparray[
'code'];
1013 $object->country = $tmparray[
'label'];
1017 if (!empty($socid)) {
1019 $soc->fetch($socid);
1022 if (!($soc->id > 0)) {
1023 $langs->load(
"errors");
1024 print($langs->trans(
'ErrorRecordNotFound'));
1033 if (
$conf->use_javascript_ajax) {
1034 print
"\n".
'<script type="text/javascript">'.
"\n";
1035 print
'jQuery(document).ready(function () {
1036 jQuery("#selectcountry_id").change(function() {
1037 document.formsoc.action.value="create";
1038 document.formsoc.submit();
1040 function initfieldrequired() {
1041 jQuery("#tdcompany").removeClass("fieldrequired");
1042 jQuery("#tdlastname").removeClass("fieldrequired");
1043 jQuery("#tdfirstname").removeClass("fieldrequired");
1044 if (jQuery(\'input[name="morphy"]:checked\').val() == \'mor\') {
1045 jQuery("#tdcompany").addClass("fieldrequired");
1047 if (jQuery(\'input[name="morphy"]:checked\').val() == \'phy\') {
1048 jQuery("#tdlastname").addClass("fieldrequired");
1049 jQuery("#tdfirstname").addClass("fieldrequired");
1052 jQuery(\'input[name="morphy"]\').change(function() {
1053 initfieldrequired();
1055 initfieldrequired();
1057 print
'</script>'.
"\n";
1060 print
'<form name="formsoc" action="'.$_SERVER[
"PHP_SELF"].
'" method="post" enctype="multipart/form-data" spellcheck="false">';
1061 print
'<input type="hidden" name="token" value="'.newToken().
'">';
1062 print
'<input type="hidden" name="action" value="add">';
1063 print
'<input type="hidden" name="socid" value="'.$socid.
'">';
1065 print
'<input type="hidden" name="backtopage" value="'.($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]).
'">';
1070 print
'<table class="border centpercent">';
1075 print
'<tr><td><span class="fieldrequired">'.$langs->trans(
"Login").
' / '.$langs->trans(
"Id").
'</span></td><td><input type="text" name="member_login" class="minwidth300" maxlength="50" value="'.(
GETPOSTISSET(
"member_login") ?
GETPOST(
"member_login",
'alphanohtml', 2) :
$object->login).
'" autofocus="autofocus"></td></tr>';
1080 require_once DOL_DOCUMENT_ROOT.
'/core/lib/security2.lib.php';
1082 print
'<tr><td><span class="fieldrequired">'.$langs->trans(
"Password").
'</span></td><td>';
1083 print
'<input type="password" class="minwidth300" maxlength="50" name="password" value="'.dol_escape_htmltag(
GETPOST(
'password') ?
GETPOST(
'password') : $generated_password).
'">';
1088 print
'<tr><td class="fieldrequired">'.$langs->trans(
"MemberType").
'</td><td>';
1089 $listetype = $adht->liste_array(1);
1090 print img_picto(
'', $adht->picto,
'class="pictofixedwidth"');
1091 if (count($listetype)) {
1092 print $form->selectarray(
"typeid", $listetype, (
GETPOSTINT(
'typeid') ?
GETPOSTINT(
'typeid') : $typeid), (count($listetype) > 1 ? 1 : 0), 0, 0,
'', 0, 0, 0,
'',
'minwidth200', 1);
1094 print
'<span class="error">'.$langs->trans(
"NoTypeDefinedGoToSetup", $langs->transnoentitiesnoconv(
"MembersTypes")).
'</span>';
1096 if ($user->hasRight(
'member',
'configurer')) {
1097 print
' <a href="'.dolBuildUrl(DOL_URL_ROOT.
'/adherents/type.php', [
'action' =>
'create',
'backtopage' =>
dolBuildUrl($_SERVER[
"PHP_SELF"], [
'action' =>
'create',
'typeid' =>
'--IDFORBACKTOPAGE--'])]).
'"><span class="fa fa-plus-circle valignmiddle paddingleft" title="'.$langs->trans(
"NewMemberType").
'"></span></a>';
1103 "phy" => $langs->trans(
"Physical"),
1104 "mor" => $langs->trans(
"Moral"),
1106 $checkednature =
GETPOST(
"morphy",
'alpha');
1107 $listetype_natures = $adht->morphyByType(1);
1108 $listetype_natures_json = json_encode($listetype_natures);
1110 print
'<tr><td class="fieldrequired">'.$langs->trans(
"MemberNature").
"</td><td>\n";
1111 print
'<span id="spannature1" class="nonature-back spannature paddinglarge marginrightonly"><label for="phisicalinput" class="spanlabel">'.$morphys[
"phy"].
'</label><input id="phisicalinput" class="flat checkforselect marginleftonly valignmiddle" type="radio" name="morphy" value="phy"'.($checkednature ==
"phy" ?
' checked="checked"' :
'').
'></span>';
1112 print
'<span id="spannature2" class="nonature-back spannature paddinglarge marginrightonly"><label for="moralinput" class="spanlabel">'.$morphys[
"mor"].
'</label><input id="moralinput" class="flat checkforselect marginleftonly valignmiddle" type="radio" name="morphy" value="mor"'.($checkednature ==
"mor" ?
' checked="checked"' :
'').
'></span>';
1115 if (
$conf->use_javascript_ajax) {
1117 var listetype_natures = $listetype_natures_json;
1120 jQuery(function($) {
1121 function refreshNatureCss() {
1122 $(".spannature").each(function(index) {
1123 let $span = $("#spannature" + (index + 1));
1124 let checked = $span.find(".checkforselect").is(":checked");
1128 $span.addClass("member-individual-back").removeClass("nonature-back member-company-back");
1129 } else if (index === 1) {
1130 $span.addClass("member-company-back").removeClass("nonature-back member-individual-back");
1133 $span.removeClass("member-individual-back member-company-back")
1134 .addClass("nonature-back");
1139 $(".spannature").on("click", function() {
1140 console.log("Nature clicked");
1144 $("#typeid").on("change", function() {
1145 let morphy = listetype_natures[$(this).val()];
1147 let $phyInput = $("#phisicalinput");
1148 let $morInput = $("#moralinput");
1149 let $tdLast = $("#tdlastname");
1150 let $tdFirst = $("#tdfirstname");
1151 let $tdCompany = $("#tdcompany");
1152 let $span1 = $("#spannature1");
1153 let $span2 = $("#spannature2");
1157 $phyInput.prop({disabled: false, checked: true});
1158 $morInput.prop({disabled: true, checked: false});
1159 $span1.addClass("member-individual-back").removeClass("nonature-back");
1160 $span2.removeClass("member-company-back").addClass("nonature-back");
1161 $tdLast.addClass("fieldrequired");
1162 $tdFirst.addClass("fieldrequired");
1163 $tdCompany.removeClass("fieldrequired");
1167 $phyInput.prop({disabled: true, checked: false});
1168 $morInput.prop({disabled: false, checked: true});
1169 $span2.addClass("member-company-back").removeClass("nonature-back");
1170 $span1.removeClass("member-individual-back").addClass("nonature-back");
1171 $tdCompany.addClass("fieldrequired");
1172 $tdLast.removeClass("fieldrequired");
1173 $tdFirst.removeClass("fieldrequired");
1177 $phyInput.prop({disabled: false, checked: false});
1178 $morInput.prop({disabled: false, checked: false});
1179 $span1.removeClass("member-individual-back").addClass("nonature-back");
1180 $span2.removeClass("member-company-back").addClass("nonature-back");
1193 print
'<tr><td id="tdcompany">'.$langs->trans(
"Company").
' / '.$langs->trans(
"Organization").
'</td><td>'.img_picto(
'',
'company',
'class="pictofixedwidth"').
'<input type="text" name="societe" class="minwidth300" maxlength="128" value="'.(
GETPOSTISSET(
'societe') ?
GETPOST(
'societe',
'alphanohtml') : $soc->
name).
'"></td></tr>';
1197 print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td>';
1198 print $formcompany->select_civility(
GETPOSTISSET(
'civility_code') ?
GETPOST(
'civility_code',
"aZ09") :
$object->civility_code,
'civility_code',
'maxwidth150', 1);
1204 print
'<tr><td id="tdlastname">'.$langs->trans(
"Lastname").
'</td><td><input type="text" name="lastname" class="minwidth300" maxlength="50" value="'.(
GETPOSTISSET(
'lastname') ?
GETPOST(
'lastname',
'alphanohtml') :
$object->lastname).
'"></td>';
1208 print
'<tr><td id="tdfirstname">'.$langs->trans(
"Firstname").
'</td><td><input type="text" name="firstname" class="minwidth300" maxlength="50" value="'.(
GETPOSTISSET(
'firstname') ?
GETPOST(
'firstname',
'alphanohtml') :
$object->firstname).
'"></td>';
1212 print
'<tr><td>'.$langs->trans(
"Gender").
'</td>';
1214 $arraygender = array(
'man' => $langs->trans(
"Genderman"),
'woman' => $langs->trans(
"Genderwoman"),
'other' => $langs->trans(
"Genderother"));
1215 print $form->selectarray(
'gender', $arraygender,
GETPOST(
'gender',
'alphanohtml'), 1, 0, 0,
'', 0, 0, 0,
'',
'minwidth100', 1);
1219 print
'<tr><td>'.(getDolGlobalString(
'ADHERENT_MAIL_REQUIRED') ?
'<span class="fieldrequired">' :
'').$langs->trans(
"EMail").(getDolGlobalString(
'ADHERENT_MAIL_REQUIRED') ?
'</span>' :
'').
'</td>';
1220 print
'<td>'.img_picto(
'',
'object_email',
'class="pictofixedwidth"').
' <input type="text" name="member_email" class="minwidth300" maxlength="255" value="'.(
GETPOSTISSET(
'member_email') ?
GETPOST(
'member_email',
'alpha') : $soc->
email).
'"></td></tr>';
1223 print
'<tr><td>'.$form->editfieldkey(
'Web',
'member_url',
GETPOST(
'member_url',
'alpha'), $object, 0).
'</td>';
1224 print
'<td>'.img_picto(
'',
'globe',
'class="pictofixedwidth"').
' <input type="text" class="maxwidth500 widthcentpercentminusx" name="member_url" id="member_url" value="'.(
GETPOSTISSET(
'member_url') ?
GETPOST(
'member_url',
'alpha') :
$object->url).
'"></td></tr>';
1227 print
'<tr><td class="tdtop">'.$langs->trans(
"Address").
'</td><td>';
1228 print
'<textarea name="address" wrap="soft" class="quatrevingtpercent" rows="2">'.(GETPOSTISSET(
'address') ?
GETPOST(
'address',
'alphanohtml') : $soc->
address).
'</textarea>';
1232 print
'<tr><td>'.$langs->trans(
"Zip").
' / '.$langs->trans(
"Town").
'</td><td>';
1233 print $formcompany->select_ziptown((
GETPOSTISSET(
'zipcode') ?
GETPOST(
'zipcode',
'alphanohtml') : $soc->zip),
'zipcode', array(
'town',
'selectcountry_id',
'state_id'), 6);
1235 print $formcompany->select_ziptown((
GETPOSTISSET(
'town') ?
GETPOST(
'town',
'alphanohtml') : $soc->town),
'town', array(
'zipcode',
'selectcountry_id',
'state_id'));
1239 if (empty($soc->country_id)) {
1240 $soc->country_id =
$mysoc->country_id;
1241 $soc->country_code =
$mysoc->country_code;
1242 $soc->state_id =
$mysoc->state_id;
1244 print
'<tr><td>'.$langs->trans(
'Country').
'</td><td>';
1245 print img_picto(
'',
'country',
'class="pictofixedwidth"');
1246 print $form->select_country(
GETPOSTISSET(
'country_id') ?
GETPOST(
'country_id',
'alpha') : $soc->country_id,
'country_id');
1248 print
info_admin($langs->trans(
"YouCanChangeValuesForThisListFromDictionarySetup"), 1);
1254 print
'<tr><td>'.$langs->trans(
'State').
'</td><td>';
1256 print img_picto(
'',
'state',
'class="pictofixedwidth"');
1259 print $countrynotdefined;
1265 print
'<tr><td>'.$langs->trans(
"PhonePro").
'</td>';
1266 print
'<td>'.$form->showPhoneInput($soc->phone,
'phone', $soc->country_id,
'object_phoning',
'maxwidth150 widthcentpercentminusx').
'</td></tr>';
1269 print
'<tr><td>'.$langs->trans(
"PhonePerso").
'</td>';
1270 print
'<td>'.$form->showPhoneInput(
$object->phone_perso,
'phone_perso', $soc->country_id,
'object_phoning',
'maxwidth150 widthcentpercentminusx').
'</td></tr>';
1273 print
'<tr><td>'.$langs->trans(
"PhoneMobile").
'</td>';
1274 print
'<td>'.$form->showPhoneInput(
$object->phone_mobile,
'phone_mobile', $soc->country_id,
'object_phoning_mobile',
'maxwidth150 widthcentpercentminusx').
'</td></tr>';
1277 foreach ($socialnetworks as $key => $value) {
1278 if (!$value[
'active']) {
1282 print
'<tr><td>'.$langs->trans($value[
'label']).
'</td><td><input type="text" name="member_'.$key.
'" size="40" value="'.$val.
'"></td></tr>';
1287 print
"<tr><td>".$langs->trans(
"DateOfBirth").
"</td><td>\n";
1288 print img_picto(
'',
'object_calendar',
'class="pictofixedwidth"').$form->selectDate((
$object->birth ?
$object->birth : -1),
'birth', 0, 0, 1,
'formsoc');
1289 print
"</td></tr>\n";
1293 $htmltext = $langs->trans(
"Public",
getDolGlobalString(
'MAIN_INFO_SOCIETE_NOM'), $linkofpubliclist);
1294 print $form->textwithpicto($langs->trans(
"MembershipPublic"), $htmltext, 1,
'help',
'', 0, 3,
'membershippublic');
1295 print
"</td><td>\n";
1296 print $form->selectyesno(
"public",
$object->public, 1,
false, 0, 1);
1297 print
"</td></tr>\n";
1300 if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
1301 print
'<tr><td>'.$form->editfieldkey(
"Categories",
'memcats',
'', $object, 0).
'</td><td>';
1302 print $form->selectCategories(Categorie::TYPE_MEMBER,
'memcats', $object);
1307 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_add.tpl.php';
1314 print $form->buttonsSaveCancel(
"AddMember");
1320 if ($action ==
'edit') {
1325 $res =
$object->fetch_optionals();
1327 dol_print_error($db);
1332 $adht->fetch(
$object->typeid);
1336 if (!empty($country) ||
$object->country_id) {
1337 $sql =
"SELECT rowid, code, label from ".MAIN_DB_PREFIX.
"c_country";
1338 $sql .=
" WHERE rowid = ".(int) (!empty($country) ? $country :
$object->country_id);
1339 $resql = $db->query($sql);
1341 $obj = $db->fetch_object($resql);
1343 dol_print_error($db);
1346 if (is_object($obj)) {
1347 $object->country_id = $obj->rowid;
1348 $object->country_code = $obj->code;
1349 $object->country = $langs->trans(
"Country".$obj->code) ? $langs->trans(
"Country".$obj->code) : $obj->label;
1356 if (
$conf->use_javascript_ajax) {
1357 print
"\n".
'<script type="text/javascript">';
1358 print
'jQuery(document).ready(function () {
1359 jQuery("#selectcountry_id").change(function() {
1360 document.formsoc.action.value="edit";
1361 document.formsoc.submit();
1363 function initfieldrequired() {
1364 jQuery("#tdcompany").removeClass("fieldrequired");
1365 jQuery("#tdlastname").removeClass("fieldrequired");
1366 jQuery("#tdfirstname").removeClass("fieldrequired");
1367 if (jQuery(\'input[name="morphy"]:checked\').val() == \'mor\') {
1368 jQuery("#tdcompany").addClass("fieldrequired");
1370 if (jQuery(\'input[name="morphy"]:checked\').val() == \'phy\') {
1371 jQuery("#tdlastname").addClass("fieldrequired");
1372 jQuery("#tdfirstname").addClass("fieldrequired");
1375 jQuery(\'input[name="morphy"]\').change(function() {
1376 initfieldrequired();
1378 initfieldrequired();
1380 print
'</script>'.
"\n";
1383 print
'<form name="formsoc" action="'.$_SERVER[
"PHP_SELF"].
'" method="post" enctype="multipart/form-data">';
1384 print
'<input type="hidden" name="token" value="'.newToken().
'" />';
1385 print
'<input type="hidden" name="action" value="update" />';
1386 print
'<input type="hidden" name="rowid" value="'.$id.
'" />';
1387 print
'<input type="hidden" name="statut" value="'.$object->status.
'" />';
1389 print
'<input type="hidden" name="backtopage" value="'.($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]).
'">';
1394 print
'<table class="border centpercent">';
1397 print
'<tr><td class="titlefieldcreate">'.$langs->trans(
"Ref").
'</td><td class="valeur">'.
$object->ref.
'</td></tr>';
1401 print
'<tr><td><span class="fieldrequired">'.$langs->trans(
"Login").
' / '.$langs->trans(
"Id").
'</span></td><td><input type="text" name="login" class="minwidth300" maxlength="50" value="'.(
GETPOSTISSET(
"login") ?
GETPOST(
"login",
'alphanohtml', 2) :
$object->login).
'"></td></tr>';
1406 print
'<tr><td class="fieldrequired">'.$langs->trans(
"Password").
'</td><td><input type="password" name="pass" class="minwidth300" maxlength="50" value="'.
dol_escape_htmltag(
GETPOSTISSET(
"pass") ?
GETPOST(
"pass",
'password', 2) :
'').
'"></td></tr>';
1410 print
'<tr><td class="fieldrequired">'.$langs->trans(
"Type").
'</td><td>';
1411 if ($user->hasRight(
'adherent',
'creer')) {
1412 print $form->selectarray(
"typeid", $adht->liste_array(), (
GETPOSTISSET(
"typeid") ?
GETPOSTINT(
"typeid") :
$object->typeid), 0, 0, 0,
'', 0, 0, 0,
'',
'minwidth200', 1);
1414 print $adht->getNomUrl(1);
1415 print
'<input type="hidden" name="typeid" value="'.$object->typeid.
'">';
1420 $morphys[
"phy"] = $langs->trans(
"Physical");
1421 $morphys[
"mor"] = $langs->trans(
"Moral");
1423 print
'<tr><td><span class="fieldrequired">'.$langs->trans(
"MemberNature").
'</span></td><td>';
1424 print
'<span id="spannature1" class="member-individual-back spannature paddinglarge marginrightonly"><label for="phisicalinput" class="">'.$morphys[
"phy"].
'<input id="phisicalinput" class="flat checkforselect marginleftonly valignmiddle" type="radio" name="morphy" value="phy"'.($checkednature ==
"phy" ?
' checked="checked"' :
'').
'></label></span>';
1425 print
'<span id="spannature1" class="member-company-back spannature paddinglarge marginrightonly"><label for="moralinput" class="">'.$morphys[
"mor"].
'<input id="moralinput" class="flat checkforselect marginleftonly valignmiddle" type="radio" name="morphy" value="mor"'.($checkednature ==
"mor" ?
' checked="checked"' :
'').
'></label></span>';
1429 print
'<tr><td id="tdcompany">'.$langs->trans(
"Company").
'</td><td>'.img_picto(
'',
'company',
'class="pictofixedwidth"').
'<input type="text" name="societe" class="minwidth300" maxlength="128" value="'.(
GETPOSTISSET(
"societe") ?
GETPOST(
"societe",
'alphanohtml', 2) :
$object->company).
'"></td></tr>';
1433 print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td>';
1434 print $formcompany->select_civility(
GETPOSTISSET(
"civility_code") ?
GETPOST(
"civility_code",
'aZ09') :
$object->civility_code,
'civility_code',
'maxwidth150', 1);
1440 print
'<tr><td id="tdlastname">'.$langs->trans(
"Lastname").
'</td><td><input type="text" name="lastname" class="minwidth300" maxlength="50" value="'.(
GETPOSTISSET(
"lastname") ?
GETPOST(
"lastname",
'alphanohtml', 2) :
$object->lastname).
'"></td>';
1444 print
'<tr><td id="tdfirstname">'.$langs->trans(
"Firstname").
'</td><td><input type="text" name="firstname" class="minwidth300" maxlength="50" value="'.(
GETPOSTISSET(
"firstname") ?
GETPOST(
"firstname",
'alphanohtml', 3) :
$object->firstname).
'"></td>';
1448 print
'<tr><td>'.$langs->trans(
"Gender").
'</td>';
1450 $arraygender = array(
'man' => $langs->trans(
"Genderman"),
'woman' => $langs->trans(
"Genderwoman"),
'other' => $langs->trans(
"Genderother"));
1451 print $form->selectarray(
'gender', $arraygender,
GETPOSTISSET(
'gender') ?
GETPOST(
'gender',
'alphanohtml') :
$object->gender, 1, 0, 0,
'', 0, 0, 0,
'',
'minwidth100', 1);
1455 print
'<tr><td>'.$langs->trans(
"Photo").
'</td>';
1456 print
'<td class="hideonsmartphone" valign="middle">';
1457 print $form->showphoto(
'memberphoto', $object).
"\n";
1458 if ($caneditfieldmember) {
1462 print
'<table class="nobordernopadding">';
1464 print
'<tr><td><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"><label for="photodelete" class="paddingleft">'.$langs->trans(
"Delete").
'</label><br></td></tr>';
1468 $maxmin = $maxfilesizearray[
'maxmin'];
1470 print
'<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).
'">';
1472 print
'<input type="file" class="flat" name="photo" id="photoinput">';
1479 print
'<tr><td>'.(getDolGlobalString(
"ADHERENT_MAIL_REQUIRED") ?
'<span class="fieldrequired">' :
'').$langs->trans(
"EMail").(getDolGlobalString(
"ADHERENT_MAIL_REQUIRED") ?
'</span>' :
'').
'</td>';
1480 print
'<td>'.img_picto(
'',
'object_email',
'class="pictofixedwidth"').
'<input type="text" name="member_email" class="minwidth300" maxlength="255" value="'.(
GETPOSTISSET(
"member_email") ?
GETPOST(
"member_email",
'alphanohtml', 2) :
$object->
email).
'"></td></tr>';
1483 print
'<tr><td>'.$form->editfieldkey(
'Web',
'member_url',
GETPOST(
'member_url',
'alpha'), $object, 0).
'</td>';
1484 print
'<td>'.img_picto(
'',
'globe',
'class="pictofixedwidth"').
'<input type="text" name="member_url" id="member_url" class="maxwidth200onsmartphone maxwidth500 widthcentpercentminusx " value="'.(
GETPOSTISSET(
'member_url') ?
GETPOST(
'member_url',
'alpha') :
$object->url).
'"></td></tr>';
1487 print
'<tr><td>'.$langs->trans(
"Address").
'</td><td>';
1488 print
'<textarea name="address" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_2.
'">'.(
GETPOSTISSET(
"address") ?
GETPOST(
"address",
'alphanohtml', 2) :
$object->
address).
'</textarea>';
1492 print
'<tr><td>'.$langs->trans(
"Zip").
' / '.$langs->trans(
"Town").
'</td><td>';
1493 print $formcompany->select_ziptown((
GETPOSTISSET(
"zipcode") ?
GETPOST(
"zipcode",
'alphanohtml', 2) :
$object->zip),
'zipcode', array(
'town',
'selectcountry_id',
'state_id'), 6);
1495 print $formcompany->select_ziptown((
GETPOSTISSET(
"town") ?
GETPOST(
"town",
'alphanohtml', 2) :
$object->town),
'town', array(
'zipcode',
'selectcountry_id',
'state_id'));
1500 print
'<tr><td>'.$langs->trans(
'Country').
'</td><td>';
1501 print img_picto(
'',
'country',
'class="pictofixedwidth"');
1502 print $form->select_country(
GETPOSTISSET(
"country_id") ?
GETPOST(
"country_id",
"alpha") :
$object->country_id,
'country_id');
1504 print
info_admin($langs->trans(
"YouCanChangeValuesForThisListFromDictionarySetup"), 1);
1510 print
'<tr><td>'.$langs->trans(
'State').
'</td><td>';
1511 print img_picto(
'',
'state',
'class="pictofixedwidth"');
1517 print
'<tr><td>'.$langs->trans(
"PhonePro").
'</td>';
1518 print
'<td>'.$form->showPhoneInput(
$object->phone,
'phone',
$object->country_id,
'object_phoning',
'maxwidth150 widthcentpercentminusx').
'</td></tr>';
1521 print
'<tr><td>'.$langs->trans(
"PhonePerso").
'</td>';
1522 print
'<td>'.$form->showPhoneInput(
$object->phone_perso,
'phone_perso',
$object->country_id,
'object_phoning',
'maxwidth150 widthcentpercentminusx').
'</td></tr>';
1525 print
'<tr><td>'.$langs->trans(
"PhoneMobile").
'</td>';
1526 print
'<td>'.$form->showPhoneInput(
$object->phone_mobile,
'phone_mobile',
$object->country_id,
'object_phoning_mobile',
'maxwidth150 widthcentpercentminusx').
'</td></tr>';
1529 foreach ($socialnetworks as $key => $value) {
1530 if (!$value[
'active']) {
1533 print
'<tr><td>'.$langs->trans($value[
'label']).
'</td><td><input type="text" name="'.$key.
'" class="minwidth100" value="'.(
GETPOSTISSET($key) ?
GETPOST($key,
'alphanohtml') : (isset(
$object->socialnetworks[$key]) ?
$object->socialnetworks[$key] : null)).
'"></td></tr>';
1538 print
"<tr><td>".$langs->trans(
"DateOfBirth").
"</td><td>\n";
1539 print img_picto(
'',
'object_calendar',
'class="pictofixedwidth"').$form->selectDate((
$object->birth ?
$object->birth : -1),
'birth', 0, 0, 1,
'formsoc');
1540 print
"</td></tr>\n";
1544 print
'<tr><td>'.$form->editfieldkey(
'DefaultLang',
'default_lang',
'', $object, 0).
'</td><td colspan="3">'.
"\n";
1545 print img_picto(
'',
'language',
'class="pictofixedwidth"').$formadmin->select_language(
$object->default_lang,
'default_lang', 0, array(), 1);
1552 $htmltext = $langs->trans(
"Public",
getDolGlobalString(
'MAIN_INFO_SOCIETE_NOM'), $linkofpubliclist);
1553 print $form->textwithpicto($langs->trans(
"MembershipPublic"), $htmltext, 1,
'help',
'', 0, 3,
'membershippublic');
1554 print
"</td><td>\n";
1555 print $form->selectyesno(
"public", (
GETPOSTISSET(
"public") ?
GETPOST(
"public",
'alphanohtml', 2) :
$object->public), 1, false, 0, 1);
1556 print
"</td></tr>\n";
1559 if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
1560 print
'<tr><td>'.$form->editfieldkey(
"Categories",
'memcats',
'', $object, 0).
'</td>';
1562 print $form->selectCategories(Categorie::TYPE_MEMBER,
'memcats', $object);
1568 print
'<tr><td>'.$langs->trans(
"LinkedToDolibarrThirdParty").
'</td><td colspan="2" class="valeur">';
1571 $result = $company->fetch(
$object->socid);
1572 print $company->getNomUrl(1);
1574 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1580 print
'<tr><td>'.$langs->trans(
"LinkedToDolibarrUser").
'</td><td colspan="2" class="valeur">';
1582 $form->form_users($_SERVER[
'PHP_SELF'].
'?rowid='.
$object->id, (
string)
$object->user_id,
'none');
1584 print $langs->trans(
"NoDolibarrAccess");
1589 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_edit.tpl.php';
1594 print $form->buttonsSaveCancel(
"Save",
'Cancel');
1600 if ($id > 0 && $action !=
'edit') {
1605 $res =
$object->fetch_optionals();
1607 dol_print_error($db);
1612 $res = $adht->fetch(
$object->typeid);
1614 dol_print_error($db);
1624 print
dol_get_fiche_head($head,
'general', $langs->trans(
"Member"), -1,
'user', 0,
'',
'', 0,
'', 1);
1627 if ($action ==
'create_user') {
1629 if (empty($login)) {
1631 include_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
1634 if (empty($login)) {
1635 $login = strtolower(substr(
$object->firstname, 0, 4)).strtolower(substr(
$object->lastname, 0, 4));
1639 $formquestion = array(
1640 array(
'label' => $langs->trans(
"LoginToCreate"),
'type' =>
'text',
'name' =>
'login',
'value' => $login)
1644 $formquestion[] = array(
'label' => $langs->trans(
"UserWillBe"),
'type' =>
'radio',
'name' =>
'internalorexternal',
'default' =>
'external',
'values' => array(
'external' => $langs->trans(
"External").
' - '.$langs->trans(
"LinkedToDolibarrThirdParty").
' '.
$object->thirdparty->getNomUrl(1,
'', 0, 1),
'internal' => $langs->trans(
"Internal")));
1648 $text .= $langs->trans(
"UserWillBeInternalUser").
'<br>';
1650 $text .= $langs->trans(
"ConfirmCreateLogin");
1651 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?rowid=".
$object->id, $langs->trans(
"CreateDolibarrLogin"), $text,
"confirm_create_user", $formquestion,
'yes');
1655 if ($action ==
'create_thirdparty') {
1657 $fullname =
$object->getFullName($langs);
1659 if (
$object->morphy ==
'mor') {
1660 $companyname = (string)
$object->company;
1661 if (!empty($fullname)) {
1662 $companyalias = (string) $fullname;
1665 $companyname = $fullname;
1666 if (!empty(
$object->company)) {
1667 $companyalias = (string)
$object->company;
1672 $formquestion = array(
1673 array(
'label' => $langs->trans(
"NameToCreate"),
'type' =>
'text',
'name' =>
'companyname',
'value' => $companyname,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"'),
1674 array(
'label' => $langs->trans(
"AliasNames"),
'type' =>
'text',
'name' =>
'companyalias',
'value' => $companyalias,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"')
1677 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?rowid=".
$object->id, $langs->trans(
"CreateDolibarrThirdParty"), $langs->trans(
"ConfirmCreateThirdParty"),
"confirm_create_thirdparty", $formquestion,
'yes');
1681 if ($action ==
'valid') {
1682 $langs->load(
"mails");
1685 $adht->fetch(
$object->typeid);
1691 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1695 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang);
1697 $outputlangs->loadLangs(array(
"main",
"members",
"companies",
"install",
"other"));
1699 $arraydefaultmessage =
null;
1702 if (!empty($labeltouse)) {
1703 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1706 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1707 $subject = (string) $arraydefaultmessage->topic;
1708 $msg = (string) $arraydefaultmessage->content;
1711 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
1716 $tmp = $langs->trans(
"SendingAnEMailToMember");
1717 $tmp .=
'<br>'.$langs->trans(
"MailFrom").
': <b>'.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'</b>, ';
1718 $tmp .=
'<br>'.$langs->trans(
"MailRecipient").
': <b>'.
$object->email.
'</b>';
1720 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'<br>'.
"\n";
1721 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1722 $helpcontent .=
'<b>'.$langs->trans(
"Subject").
'</b>:<br>'.
"\n";
1723 $helpcontent .= $subjecttosend.
"\n";
1724 $helpcontent .=
"<br>";
1725 $helpcontent .=
'<b>'.$langs->trans(
"Content").
'</b>:<br>';
1728 $label = $form->textwithpicto($tmp, $helpcontent, 1,
'help');
1731 $formquestion = array();
1733 $formquestion[] = array(
'type' =>
'checkbox',
'name' =>
'send_mail',
'label' => $label,
'value' => (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
true : false));
1736 $formquestion[] = array(
'type' =>
'other',
'label' => $langs->transnoentitiesnoconv(
"SynchroMailManEnabled"),
'value' =>
'');
1739 $formquestion[] = array(
'type' =>
'other',
'label' => $langs->transnoentitiesnoconv(
"SynchroSpipEnabled"),
'value' =>
'');
1741 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
"ValidateMember"), $langs->trans(
"ConfirmValidateMember"),
"confirm_valid", $formquestion,
'yes', 1, 0);
1745 if ($action ==
'resiliate') {
1746 $langs->load(
"mails");
1749 $adht->fetch(
$object->typeid);
1755 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1759 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang);
1761 $outputlangs->loadLangs(array(
"main",
"members"));
1763 $arraydefaultmessage =
null;
1766 if (!empty($labeltouse)) {
1767 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1770 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1771 $subject = (string) $arraydefaultmessage->topic;
1772 $msg = (string) $arraydefaultmessage->content;
1775 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
1780 $tmp = $langs->trans(
"SendingAnEMailToMember");
1781 $tmp .=
'<br>('.$langs->trans(
"MailFrom").
': <b>'.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'</b>, ';
1782 $tmp .= $langs->trans(
"MailRecipient").
': <b>'.
$object->email.
'</b>)';
1784 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'<br>'.
"\n";
1785 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1786 $helpcontent .=
'<b>'.$langs->trans(
"Subject").
'</b>:<br>'.
"\n";
1787 $helpcontent .= $subjecttosend.
"\n";
1788 $helpcontent .=
"<br>";
1789 $helpcontent .=
'<b>'.$langs->trans(
"Content").
'</b>:<br>';
1792 $label = $form->textwithpicto($tmp, $helpcontent, 1,
'help');
1795 $formquestion = array();
1797 $formquestion[] = array(
'type' =>
'checkbox',
'name' =>
'send_mail',
'label' => $label,
'value' => (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
'true' :
'false'));
1800 $formquestion[] = array(
'type' =>
'hidden',
'name' =>
'backtopage',
'value' => ($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]));
1802 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
"ResiliateMember"), $langs->trans(
"ConfirmResiliateMember"),
"confirm_resiliate", $formquestion,
'no', 1, 240);
1806 if ($action ==
'exclude') {
1807 $langs->load(
"mails");
1810 $adht->fetch(
$object->typeid);
1816 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1820 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang);
1822 $outputlangs->loadLangs(array(
"main",
"members"));
1824 $arraydefaultmessage =
null;
1827 if (!empty($labeltouse)) {
1828 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1831 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1832 $subject = (string) $arraydefaultmessage->topic;
1833 $msg = (string) $arraydefaultmessage->content;
1836 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
1841 $tmp = $langs->trans(
"SendingAnEMailToMember");
1842 $tmp .=
'<br>('.$langs->trans(
"MailFrom").
': <b>'.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'</b>, ';
1843 $tmp .= $langs->trans(
"MailRecipient").
': <b>'.
$object->email.
'</b>)';
1845 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'<br>'.
"\n";
1846 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1847 $helpcontent .=
'<b>'.$langs->trans(
"Subject").
'</b>:<br>'.
"\n";
1848 $helpcontent .= $subjecttosend.
"\n";
1849 $helpcontent .=
"<br>";
1850 $helpcontent .=
'<b>'.$langs->trans(
"Content").
'</b>:<br>';
1853 $label = $form->textwithpicto($tmp, $helpcontent, 1,
'help');
1856 $formquestion = array();
1858 $formquestion[] = array(
'type' =>
'checkbox',
'name' =>
'send_mail',
'label' => $label,
'value' => (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
'true' :
'false'));
1861 $formquestion[] = array(
'type' =>
'hidden',
'name' =>
'backtopage',
'value' => ($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]));
1863 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
"ExcludeMember"), $langs->trans(
"ConfirmExcludeMember"),
"confirm_exclude", $formquestion,
'no', 1, 240);
1867 if ($action ==
'delete') {
1868 $formquestion = array();
1870 $formquestion[] = array(
'type' =>
'hidden',
'name' =>
'backtopage',
'value' => ($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]));
1872 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
"DeleteMember"), $langs->trans(
"ConfirmDeleteMember"),
"confirm_delete", $formquestion,
'no', 1);
1876 if ($action ==
'add_spip') {
1877 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
'AddIntoSpip'), $langs->trans(
'AddIntoSpipConfirmation'),
'confirm_add_spip');
1881 if ($action ==
'merge') {
1882 $formquestion = array(
1884 'name' =>
'member_origin',
1885 'label' => $langs->trans(
'MergeOriginMember'),
1887 'value' => $form->selectMembers(
'',
'member_origin',
'', 0, 1,
'', 0, array(), 0,
'SelectMember', 0,
'minwidth200', array(), 1, array(
$object->id))
1891 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?id=".
$object->id, $langs->trans(
"MergeMembers"), $langs->trans(
"ConfirmMergeMembers"),
"confirm_merge", $formquestion,
'no', 1, 300);
1895 if ($action ==
'del_spip') {
1896 print $form->formconfirm(
"card.php?rowid=$id", $langs->trans(
'DeleteIntoSpip'), $langs->trans(
'DeleteIntoSpipConfirmation'),
'confirm_del_spip');
1907 $linkback =
'<a href="'.dolBuildUrl(DOL_URL_ROOT.
'/adherents/list.php', [
'restore_lastsearch_values' => 1]).
'">'.$langs->trans(
"BackToList").
'</a>';
1909 $morehtmlref =
'<a href="'.dolBuildUrl(DOL_URL_ROOT.
'/adherents/vcard.php', [
'id' =>
$object->id]).
'" class="refid valignmiddle">';
1910 $morehtmlref .= img_picto($langs->trans(
"Download").
' '.$langs->trans(
"VCard"),
'vcard',
'class="valignmiddle marginleftonly paddingrightonly"');
1911 $morehtmlref .=
'</a>';
1914 dol_banner_tab($object,
'rowid', $linkback, 1,
'rowid',
'ref', $morehtmlref);
1916 print
'<div class="fichecenter">';
1917 print
'<div class="fichehalfleft">';
1919 print
'<div class="underbanner clearboth"></div>';
1920 print
'<table class="border tableforfield centpercent">';
1924 print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"Login").
' / '.$langs->trans(
"Id").
'</td><td class="valeur">'.
dol_escape_htmltag(
$object->login).
'</td></tr>';
1928 print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"Type").
'</td>';
1929 print
'<td class="valeur">'.$adht->getNomUrl(1).
"</td></tr>\n";
1932 print
'<tr><td>'.$langs->trans(
"MemberNature").
'</td>';
1933 print
'<td class="valeur">'.$object->getmorphylib(
'', 1).
'</td>';
1940 print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td class="valeur">'.
$object->getCivilityLabel().
'</td>';
1945 print
'<tr><td>'.$langs->trans(
"Password").
'</td><td>';
1947 print preg_replace(
'/./i',
'*',
$object->pass);
1950 print
'<!-- '.$langs->trans(
"Crypted").
': '.
$object->pass_indatabase_crypted.
' -->';
1952 print
'<span class="opacitymedium">'.$langs->trans(
"Hidden").
'</span>';
1954 if (!empty(
$object->pass_indatabase) && empty(
$object->user_id)) {
1955 $langs->load(
"errors");
1956 $htmltext = $langs->trans(
"WarningPasswordSetWithNoAccount");
1957 print
' '.$form->textwithpicto(
'', $htmltext, 1,
'warning');
1963 print
'<tr><td>'.$langs->trans(
"SubscriptionEndDate").
'</td><td class="valeur">';
1967 print
" ".img_warning($langs->trans(
"Late"));
1970 if (
$object->need_subscription == 0) {
1971 print $langs->trans(
"SubscriptionNotNeeded");
1972 } elseif (!$adht->subscription) {
1973 print $langs->trans(
"SubscriptionNotRecorded");
1975 print
" ".img_warning($langs->trans(
"Late"));
1978 print $langs->trans(
"SubscriptionNotReceived");
1980 print
" ".img_warning($langs->trans(
"Late"));
1990 print
'<div class="fichehalfright">';
1991 print
'<div class="underbanner clearboth"></div>';
1993 print
'<table class="border tableforfield centpercent">';
1996 if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
1997 print
'<tr><td>'.$langs->trans(
"Categories").
'</td>';
1999 print $form->showCategories(
$object->id, Categorie::TYPE_MEMBER, 1);
2004 print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"DateOfBirth").
'</td><td class="valeur">'.
dol_print_date(
$object->birth,
'day').
'</td></tr>';
2008 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
2009 print
'<tr><td>'.$langs->trans(
"DefaultLang").
'</td><td>';
2012 $langs->load(
"languages");
2013 $labellang = (
$object->default_lang ? $langs->trans(
'Language_'.
$object->default_lang) :
'');
2021 $htmltext = $langs->trans(
"Public",
getDolGlobalString(
'MAIN_INFO_SOCIETE_NOM'), $linkofpubliclist);
2022 print $form->textwithpicto($langs->trans(
"MembershipPublic"), $htmltext, 1,
'help',
'', 0, 3,
'membershippublic');
2023 print
'</td><td class="valeur">'.yn(
$object->public).
'</td></tr>';
2026 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
2031 $editenable = $user->hasRight(
'adherent',
'creer');
2032 print $form->editfieldkey(
'LinkedToDolibarrThirdParty',
'thirdparty',
'', $object, $editenable);
2033 print
'</td><td colspan="2" class="valeur">';
2034 if ($action ==
'editthirdparty') {
2035 $htmlname =
'socid';
2036 print
'<form method="POST" action="'.$_SERVER[
'PHP_SELF'].
'" name="form'.$htmlname.
'">';
2037 print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
2038 print
'<input type="hidden" name="action" value="set'.$htmlname.
'">';
2039 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2040 print
'<table class="nobordernopadding">';
2042 print $form->select_company(
$object->socid,
'socid',
'', 1);
2044 print
'<td class="left"><input type="submit" class="button button-edit smallpaddingimp" value="'.$langs->trans(
"Modify").
'"></td>';
2045 print
'</tr></table></form>';
2049 $result = $company->fetch(
$object->socid);
2050 print $company->getNomUrl(1);
2053 $tmparray = $company->getOutstandingBills(
'customer');
2054 if (!empty($tmparray[
'refs'])) {
2055 print
' - '.img_picto($langs->trans(
"Invoices"),
'bill',
'class="paddingright"').
'<a href="'.DOL_URL_ROOT.
'/compta/facture/list.php?socid='.
$object->socid.
'">'.$langs->trans(
"Invoices").
' ('.count($tmparray[
'refs']).
')';
2060 print
'<span class="opacitymedium">'.$langs->trans(
"NoThirdPartyAssociatedToMember").
'</span>';
2068 $editenable = $user->hasRight(
'adherent',
'creer') && $user->hasRight(
'user',
'user',
'creer');
2069 print $form->editfieldkey(
'LinkedToDolibarrUser',
'login',
'', $object, (
int) $editenable);
2070 print
'</td><td colspan="2" class="valeur">';
2071 if ($action ==
'editlogin') {
2072 $form->form_users($_SERVER[
'PHP_SELF'].
'?rowid='.
$object->id, (
string)
$object->user_id,
'userid', array());
2075 $linkeduser =
new User($db);
2076 $linkeduser->fetch(
$object->user_id);
2077 print $linkeduser->getNomUrl(-1);
2079 print
'<span class="opacitymedium">'.$langs->trans(
"NoDolibarrAccess").
'</span>';
2086 print
"</div></div>\n";
2087 print
'<div class="clearboth"></div>';
2096 print
'<div class="tabsAction">';
2098 $parameters = array();
2099 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
2100 if (empty($reshook)) {
2101 if ($action !=
'editlogin' && $action !=
'editthirdparty') {
2103 if (empty($user->socid)) {
2105 print dolGetButtonAction(
'', $langs->trans(
'SendMail'),
'email',
dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'presend',
'mode' =>
'init'],
true).
'#formmailbeforetitle',
'');
2124 if ($user->hasRight(
'adherent',
'creer')) {
2125 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'edit'],
true).
'">'.$langs->trans(
"Modify").
'</a>'.
"\n";
2127 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Modify").
'</span>'.
"\n";
2132 if ($user->hasRight(
'adherent',
'creer')) {
2133 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'valid'],
true).
'">'.$langs->trans(
"Validate").
'</a>'.
"\n";
2135 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Validate").
'</span>'.
"\n";
2141 if ($user->hasRight(
'adherent',
'creer')) {
2142 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'valid'],
true).
'">'.$langs->trans(
"Reenable").
"</a>\n";
2144 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Reenable").
'</span>'.
"\n";
2150 if ($user->hasRight(
'adherent',
'supprimer')) {
2151 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'resiliate'],
true).
'">'.$langs->trans(
"Resiliate").
"</a></span>\n";
2153 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Resiliate").
'</span>'.
"\n";
2159 if ($user->hasRight(
'adherent',
'supprimer')) {
2160 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'exclude'],
true).
'">'.$langs->trans(
"Exclude").
"</a></span>\n";
2162 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Exclude").
'</span>'.
"\n";
2168 if ($user->hasRight(
'societe',
'creer')) {
2170 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'create_thirdparty'],
true).
'" title="'.
dol_escape_htmltag($langs->trans(
"CreateDolibarrThirdPartyDesc")).
'">'.$langs->trans(
"CreateDolibarrThirdParty").
'</a>'.
"\n";
2172 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"ValidateBefore")).
'">'.$langs->trans(
"CreateDolibarrThirdParty").
'</a>'.
"\n";
2175 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"CreateDolibarrThirdParty").
'</span>'.
"\n";
2180 if (!$user->socid && !
$object->user_id) {
2181 if ($user->hasRight(
'user',
'user',
'creer')) {
2183 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'create_user'],
true).
'" title="'.
dol_escape_htmltag($langs->trans(
"CreateDolibarrLoginDesc")).
'">'.$langs->trans(
"CreateDolibarrLogin").
'</a>'.
"\n";
2185 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"ValidateBefore")).
'">'.$langs->trans(
"CreateDolibarrLogin").
'</a>'.
"\n";
2188 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"CreateDolibarrLogin").
'</span>'.
"\n";
2194 $isinspip = $mailmanspip->is_in_spip($object);
2196 if ($isinspip == 1) {
2197 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'del_spip'],
true).
'">'.$langs->trans(
"DeleteIntoSpip").
'</a>'.
"\n";
2199 if ($isinspip == 0) {
2200 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'add_spip'],
true).
'">'.$langs->trans(
"AddIntoSpip").
'</a>'.
"\n";
2205 print dolGetButtonAction($langs->trans(
'MergeMembers'), $langs->trans(
'Merge'),
'danger',
dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'merge'],
true),
'', $user->hasRight(
'adherent',
'supprimer'), array(
'attr' => array(
'classOverride' =>
'butAction butActionDanger'))).
"\n";
2208 if ($user->hasRight(
'adherent',
'supprimer')) {
2209 print dolGetButtonAction($langs->trans(
"Delete"), $langs->trans(
"Delete"),
'delete',
dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'delete'],
true),
'',
true, array(
'attr' => array(
'class' =>
'reposition'))).
"\n";
2211 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Delete").
'</span>'.
"\n";
2217 if ($isinspip == -1) {
2218 print
'<br><br><span class="error">'.$langs->trans(
'SPIPConnectionFailed').
': '.$mailmanspip->error.
'</span>';
2223 if (
GETPOST(
'modelselected')) {
2224 $action =
'presend';
2227 if ($action !=
'presend') {
2228 print
'<div class="fichecenter"><div class="fichehalfleft">';
2229 print
'<a name="builddoc"></a>';
2233 $filedir =
$conf->member->dir_output.
'/'.
get_exdir(0, 0, 0, 1, $object,
'member');
2234 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.
$object->id;
2235 $genallowed = $user->hasRight(
'adherent',
'lire');
2236 $delallowed = $user->hasRight(
'adherent',
'creer');
2238 print $formfile->showdocuments(
'member', $filename, $filedir, $urlsource, $genallowed, $delallowed,
$object->model_pdf, 1, 0, 0, 28, 0,
'',
'',
'', (empty(
$object->default_lang) ?
'' :
$object->default_lang),
'',
$object);
2239 $somethingshown = $formfile->numoffiles;
2247 include_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
2248 $validpaymentmethod = getValidOnlinePaymentMethods(
'');
2249 $useonlinepayment = count($validpaymentmethod);
2251 if ($useonlinepayment) {
2253 if (empty($amount)) {
2254 $amount = max($adht->amount,
$object->first_subscription_amount,
$object->last_subscription_amount);
2256 if (empty($amount)) {
2259 require_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
2260 print showOnlinePaymentUrl(
'membersubscription',
$object->ref, $amount);
2263 print
'</div><div class="fichehalfright">';
2267 $morehtmlcenter =
'';
2268 $messagingUrl =
dolBuildUrl(DOL_URL_ROOT.
'/adherents/messaging.php', [
'id' =>
$object->id]);
2269 $morehtmlcenter .=
dolGetButtonTitle($langs->trans(
'ShowAsConversation'),
'',
'fa fa-comments imgforviewmode', $messagingUrl,
'', 1);
2273 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formactions.class.php';
2275 $somethingshown = $formactions->showactions($object,
$object->element, $socid, 1,
'listactions', $MAXEVENT,
'', $morehtmlcenter);
2277 print
'</div></div>';
2281 $modelmail =
'member';
2282 $defaulttopic =
'CardContent';
2283 $diroutput =
$conf->member->dir_output;
2284 $trackid =
'mem'.$object->id;
2286 include DOL_DOCUMENT_ROOT.
'/core/tpl/card_presend.tpl.php';
$id
Support class for third parties, contacts, members, users or resources.
if(! $sortfield) if(! $sortorder) $object
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage members of a foundation.
const STATUS_EXCLUDED
Excluded.
const STATUS_DRAFT
Draft status.
const STATUS_RESILIATED
Resiliated (membership end and was not renew)
const STATUS_VALIDATED
Validated status.
Class to manage members type.
Class to manage mailman and spip.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage translations.
Class to manage Dolibarr users.
getCountry($searchkey, $withcode='', $dbtouse=null, $outputlangs=null, $entconv=1, $searchlabel='')
Return country label, code or id from an id, code or label.
print $script_file $mode $langs defaultlang(is_numeric($duration_value) ? " delay=". $duration_value :"").(is_numeric($duration_value2) ? " after cd cd cd description as p label as s rowid as s nom as s email
Sender: Who sends the email ("Sender" has sent emails on behalf of "From").
dol_delete_file($file, $disableglob=0, $nophperrors=0, $nohook=0, $object=null, $allowdotdot=false, $indexdatabase=1, $nolog=0)
Remove a file or several files with a mask.
addFileIntoDatabaseIndex($dir, $file, $fullpathorig='', $mode='uploaded', $setsharekey=0, $object=null, $forceFullTextIndexation='')
Add a file into database index.
dol_delete_dir_recursive($dir, $count=0, $nophperrors=0, $onlysub=0, &$countdeleted=0, $indexdatabase=1, $nolog=0, $level=0)
Remove a directory $dir and its subdirectories (or only files and subdirectories)
dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disablevirusscan=0, $uploaderrorcode=0, $nohook=0, $keyforsourcefile='addedfile', $upload_dir='', $mode=0)
Check validity of a file upload from an GUI page, and move it to its final destination.
deleteFilesIntoDatabaseIndex($dir, $file, $mode='uploaded', $object=null)
Delete files into database index using search criteria.
dol_buildlogin($lastname, $firstname)
Build a login from lastname, firstname.
isValidUrl($url, $http=0, $pass=0, $port=0, $path=0, $query=0, $anchor=0)
Url string validation <http[s]> :// [user[:pass]@] hostname [port] [/path] [?getquery] [anchor].
recordNotFound($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Displays an error page when a record is not found.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
dolBuildUrl($url, $params=[], $addtoken=false, $anchor='')
Return path of url.
dol_eval($s, $returnvalue=1, $hideerrors=1, $onlysimplestring='1')
Replace eval function to add more security.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0, $allowdash=0)
Clean a string to use it as a file name.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0, $nodefault=0)
Return value of a param into GET or POST supervariable.
dol_concatdesc($text1, $text2, $forxml=false, $invert=false)
Concat 2 descriptions with a new line between them (second operand after first one with appropriate n...
complete_substitutions_array(&$substitutionarray, $outputlangs, $object=null, $parameters=null, $callfunc="completesubstitutionarray")
Complete the $substitutionarray with more entries coming from external module that had set the "subst...
make_substitutions($text, $substitutionarray, $outputlangs=null, $converttextinhtmlifnecessary=0)
Make substitution into a text string, replacing keys with vals from $substitutionarray (oldval=>newva...
getArrayOfSocialNetworks()
Get array of social network dictionary.
GETPOSTINT($paramname, $method=0, $nodefault=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_clone($srcobject, $native=2)
Create a clone of instance of object (new instance with same value for each properties) With native =...
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false, $decorate=0)
Output date in a string format according to outputlangs (or langs if not defined).
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
dol_htmlentitiesbr($stringtoencode, $nl2brmode=0, $pagecodefrom='UTF-8', $removelasteolbr=1)
This function is called to encode a string into a HTML string but differs from htmlentities because a...
isValidEmail($address, $acceptsupervisorkey=0, $acceptuserkey=0)
Return true if email syntax is ok.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
dol_mkdir($dir, $dataroot='', $newmask='')
Creation of a directory (this can create recursive subdir)
div refaddress div address
picto_from_langcode($codelang, $moreatt='', $notitlealt=0)
Return img flag of country for a language code or country code.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $morecssdiv='')
Show tabs of a record.
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='', $morecssonpicto='widthpictotitle')
Load a title with picto.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='', $picto='', $textonpictotooltip='', $cssfordropdown='info_admin')
Show information in HTML for admin users or standard users.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
image_format_supported($file, $acceptsvg=0)
Return if a filename is file name of a supported image format.
member_prepare_head(Adherent $object)
Return array head with list of tabs to view object information.
$conf db name
Only used if Module[ID]Name translation string is not found.
getRandomPassword($generic=false, $replaceambiguouschars=null, $length=32)
Return a generated password using default module.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $nodie=0, $mode='')
Check permissions of a user to show a page and an object.
getMaxFileSizeArray()
Return the max allowed for file upload.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.