35require
'../main.inc.php';
45require_once DOL_DOCUMENT_ROOT.
'/core/lib/member.lib.php';
46require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/lib/images.lib.php';
48require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
49require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
50require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
51require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent_type.class.php';
52require_once DOL_DOCUMENT_ROOT.
'/adherents/class/subscription.class.php';
53require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
54require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
55require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formadmin.class.php';
56require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
57require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
60$langs->loadLangs(array(
"companies",
"bills",
"members",
"users",
"other",
"paypal"));
64$action =
GETPOST(
'action',
'aZ09');
65$cancel =
GETPOST(
'cancel',
'alpha');
66$backtopage =
GETPOST(
'backtopage',
'alpha');
67$backtopageforcancel =
GETPOST(
'backtopageforcancel',
'alpha');
68$confirm =
GETPOST(
'confirm',
'alpha');
78 include_once DOL_DOCUMENT_ROOT.
'/mailmanspip/class/mailmanspip.class.php';
80 $langs->load(
'mailmanspip');
92$extrafields->fetch_name_optionals_label(
$object->table_element);
100if (!empty($canvas)) {
101 require_once DOL_DOCUMENT_ROOT.
'/core/class/canvas.class.php';
103 $objcanvas->getCanvas(
'adherent',
'membercard', $canvas);
107$hookmanager->initHooks(array(
'membercard',
'globalcard'));
110if ($id > 0 || !empty($ref)) {
112 $result =
$object->fetch($id, $ref);
115 $canadduser = ($user->admin || $user->hasRight(
'user',
'user',
'creer'));
119 $caneditfielduser = ((($user->id ==
$object->user_id) && $user->hasRight(
'user',
'self',
'creer'))
120 || (($user->id !=
$object->user_id) && $user->hasRight(
'user',
'user',
'creer')));
121 $caneditpassworduser = ((($user->id ==
$object->user_id) && $user->hasRight(
'user',
'self',
'password'))
122 || (($user->id !=
$object->user_id) && $user->hasRight(
'user',
'user',
'password')));
127$canaddmember = $user->hasRight(
'adherent',
'creer');
128$caneditfieldmember =
false;
131 $caneditfieldmember = $user->hasRight(
'adherent',
'creer');
133$permissiontoeditextra = $canaddmember;
134if (
GETPOST(
'attribute',
'aZ09') && isset($extrafields->attributes[
$object->table_element][
'perms'][
GETPOST(
'attribute',
'aZ09')])) {
136 $permissiontoeditextra =
dol_eval((
string) $extrafields->attributes[
$object->table_element][
'perms'][
GETPOST(
'attribute',
'aZ09')]);
142if (!$user->hasRight(
'adherent',
'creer') && $action ==
'edit') {
146$linkofpubliclist = DOL_MAIN_URL_ROOT.
'/public/members/public_list.php'.((
isModEnabled(
'multicompany')) ?
'?entity='.
$conf->entity :
'');
153$parameters = array(
'id' => $id,
'rowid' => $id,
'objcanvas' => $objcanvas,
'confirm' => $confirm);
154$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
159if (empty($reshook)) {
160 $backurlforlist = DOL_URL_ROOT.
'/adherents/list.php';
162 if (empty($backtopage) || ($cancel && empty($id))) {
163 if (empty($backtopage) || ($cancel && strpos($backtopage,
'__ID__'))) {
164 if (empty($id) && (($action !=
'add' && $action !=
'create') || $cancel)) {
165 $backtopage = $backurlforlist;
167 $backtopage = DOL_URL_ROOT.
'/adherents/card.php?id='.((!empty($id) &&
$id > 0) ? $id :
'__ID__');
173 if (!empty($backtopageforcancel)) {
174 header(
"Location: ".$backtopageforcancel);
176 } elseif (!empty($backtopage)) {
177 header(
"Location: ".$backtopage);
183 if ($action ==
'setuserid' && ($user->hasRight(
'user',
'self',
'creer') || $user->hasRight(
'user',
'user',
'creer'))) {
185 if (!$user->hasRight(
'user',
'user',
'creer')) {
186 if ($userid != $user->id && $userid !=
$object->user_id) {
188 setEventMessages($langs->trans(
"ErrorUserPermissionAllowsToLinksToItselfOnly"),
null,
'errors');
193 if ($userid !=
$object->user_id) {
194 $result =
$object->setUserId($userid);
203 if ($action ==
'setsocid' && $caneditfieldmember) {
206 if ($socid !=
$object->socid) {
207 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"adherent";
208 $sql .=
" WHERE socid = ".((int) $socid);
209 $sql .=
" AND entity = ".((int)
$conf->entity);
210 $resql =
$db->query($sql);
212 $obj =
$db->fetch_object($resql);
213 if ($obj && $obj->rowid > 0) {
215 $othermember->fetch($obj->rowid);
217 $thirdparty->fetch($socid);
219 setEventMessages($langs->trans(
"ErrorMemberIsAlreadyLinkedToThisThirdParty", $othermember->getFullName($langs), $othermember->login, $thirdparty->name),
null,
'errors');
224 $result =
$object->setThirdPartyId($socid);
235 if ($action ==
'confirm_create_user' && $confirm ==
'yes' && $user->hasRight(
'user',
'user',
'creer')) {
240 if (
GETPOST(
'internalorexternal',
'aZ09') ==
'internal') {
241 $tmpuser->fk_soc = 0;
245 $result = $nuser->create_from_member($tmpuser,
GETPOST(
'login',
'alphanohtml'));
248 $langs->load(
"errors");
251 setEventMessages($langs->trans(
"NewUserCreated", $nuser->login),
null,
'mesgs');
260 if ($action ==
'confirm_create_thirdparty' && $confirm ==
'yes' && $user->hasRight(
'societe',
'creer')) {
264 $result = $company->create_from_member($object,
GETPOST(
'companyname',
'alpha'),
GETPOST(
'companyalias',
'alpha'));
267 $langs->load(
"errors");
275 if ($action ==
'confirm_merge' && $confirm ==
'yes' && $user->hasRight(
'adherent',
'creer')) {
276 $member_origin_id =
GETPOSTINT(
'member_origin');
279 if ($member_origin_id <= 0) {
280 $langs->load(
'errors');
281 setEventMessages($langs->trans(
'MergeOriginMemberIsMAndatory'),
null,
'errors');
283 if (!$error && $member_origin->fetch($member_origin_id) < 1) {
288 $result =
$object->mergeMembers($member_origin_id);
299 if ($action ==
'update' && !$cancel && $user->hasRight(
'adherent',
'creer')) {
300 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
306 $lastname =
GETPOST(
"lastname",
'alphanohtml');
307 $firstname =
GETPOST(
"firstname",
'alphanohtml');
308 $gender =
GETPOST(
"gender",
'alphanohtml');
309 $societe =
GETPOST(
"societe",
'alphanohtml');
310 $morphy =
GETPOST(
"morphy",
'alphanohtml');
311 $login =
GETPOST(
"login",
'alphanohtml');
312 if ($morphy !=
'mor' && empty($lastname)) {
314 $langs->load(
"errors");
315 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Lastname")),
null,
'errors');
317 if ($morphy !=
'mor' && (!isset($firstname) || $firstname ==
'')) {
319 $langs->load(
"errors");
320 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Firstname")),
null,
'errors');
322 if ($morphy ==
'mor' && empty($societe)) {
324 $langs->load(
"errors");
325 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Company")),
null,
'errors');
331 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Login")),
null,
'errors');
335 if ($result > 0 && !$error) {
339 $object->civility_code = trim(
GETPOST(
"civility_code",
'alphanohtml'));
360 $object->email = preg_replace(
'/\s+/',
'',
GETPOST(
"member_email",
'alpha'));
362 $object->socialnetworks = array();
363 foreach ($socialnetworks as $key => $value) {
365 $object->socialnetworks[$key] = trim(
GETPOST($key,
'alphanohtml'));
375 if (!empty($_FILES[
'photo'][
'name']) && empty($_FILES[
'photo'][
'error'])) {
376 $current_photo =
$object->photo;
380 $current_photo =
$object->photo;
390 $ret = $extrafields->setOptionalsFromPost(
null, $object,
'@GETPOSTISSET');
398 if ($user->id !=
$object->user_id && !$user->hasRight(
'user',
'user',
'creer')) {
408 if ($user->id ==
$object->user_id) {
409 if (!$user->hasRight(
'user',
'self',
'password')) {
413 if (!$user->hasRight(
'user',
'user',
'password')) {
421 $nosyncthirdparty =
getDolGlobalInt(
'MEMBER_NO_SYNC_LINKED_THIRDPARTY');
423 $result =
$object->update($user, 0, $nosyncuser, $nosyncuserpass, $nosyncthirdparty);
425 if ($result >= 0 && !count(
$object->errors)) {
426 $categories =
GETPOST(
'memcats',
'array');
427 $object->setCategories($categories);
430 $dir =
$conf->member->dir_output.
'/'.
get_exdir(0, 0, 0, 1, $object,
'member').
'/photos';
431 $file_OK = is_uploaded_file($_FILES[
'photo'][
'tmp_name']);
432 if (
GETPOST(
'deletephoto') && $current_photo) {
433 $fileimg = $dir.
'/'.$current_photo;
434 $dirthumbs = $dir.
'/thumbs';
440 if ($current_photo !=
$object->photo) {
441 $fileimg = $dir.
'/'.$current_photo;
442 $dirthumbs = $dir.
'/thumbs';
451 $resultupload =
dol_move_uploaded_file($_FILES[
'photo'][
'tmp_name'], $newfile, 1, 0, $_FILES[
'photo'][
'error']);
453 if (!is_numeric($resultupload) || $resultupload <= 0) {
461 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
470 $langs->load(
"errors");
474 switch ($_FILES[
'photo'][
'error']) {
477 $langs->load(
"errors");
490 if (!empty($backtopage)) {
491 header(
"Location: ".$backtopage);
506 if ($action ==
'add' && $user->hasRight(
'adherent',
'creer')) {
514 $datesubscription =
'';
520 $civility_code =
GETPOST(
"civility_code",
'alphanohtml');
521 $lastname =
GETPOST(
"lastname",
'alphanohtml');
522 $firstname =
GETPOST(
"firstname",
'alphanohtml');
523 $gender =
GETPOST(
"gender",
'alphanohtml');
524 $societe =
GETPOST(
"societe",
'alphanohtml');
525 $address =
GETPOST(
"address",
'alphanohtml');
526 $zip =
GETPOST(
"zipcode",
'alphanohtml');
527 $town =
GETPOST(
"town",
'alphanohtml');
531 $phone =
GETPOST(
"phone",
'alpha');
532 $phone_perso =
GETPOST(
"phone_perso",
'alpha');
533 $phone_mobile =
GETPOST(
"phone_mobile",
'alpha');
534 $email = preg_replace(
'/\s+/',
'',
GETPOST(
"member_email",
'aZ09arobase'));
535 $url = trim(
GETPOST(
'url',
'url'));
536 $login =
GETPOST(
"member_login",
'alphanohtml');
537 $pass =
GETPOST(
"password",
'password');
538 $photo =
GETPOST(
"photo",
'alphanohtml');
539 $morphy =
GETPOST(
"morphy",
'alphanohtml');
544 $default_lang =
GETPOST(
'default_lang',
'alpha');
546 $object->civility_code = $civility_code;
547 $object->firstname = $firstname;
556 $object->country_id = $country_id;
558 $object->phone_perso = $phone_perso;
559 $object->phone_mobile = $phone_mobile;
560 $object->socialnetworks = array();
562 foreach ($socialnetworks as $key => $value) {
564 $object->socialnetworks[$key] =
GETPOST(
"member_".$key,
'alphanohtml');
581 $object->default_lang = $default_lang;
583 $ret = $extrafields->setOptionalsFromPost(
null, $object);
589 if (empty($morphy) || $morphy ==
"-1") {
591 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"MemberNature")),
null,
'errors');
597 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Login")),
null,
'errors');
599 $sql =
"SELECT login FROM ".MAIN_DB_PREFIX.
"adherent WHERE login='".
$db->escape($login).
"'";
600 $result =
$db->query($sql);
603 $num =
$db->num_rows($result);
607 $langs->load(
"errors");
608 setEventMessages($langs->trans(
"ErrorLoginAlreadyExists", $login),
null,
'errors');
613 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Password")),
null,
'errors');
616 if ($morphy ==
'mor' && empty($societe)) {
618 $langs->load(
"errors");
619 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Company")),
null,
'errors');
621 if ($morphy !=
'mor' && empty($lastname)) {
623 $langs->load(
"errors");
624 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Lastname")),
null,
'errors');
626 if ($morphy !=
'mor' && (!isset($firstname) || $firstname ==
'')) {
628 $langs->load(
"errors");
629 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Firstname")),
null,
'errors');
631 if (!($typeid > 0)) {
633 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Type")),
null,
'errors');
637 $langs->load(
"errors");
641 $langs->load(
"errors");
649 $result =
$object->create($user);
652 $memcats =
GETPOST(
'memcats',
'array');
653 $object->setCategories($memcats);
660 $backtopage = preg_replace(
'/__ID__/', (
string) $id, $backtopage);
673 $result = $company->create_from_member($object);
675 $langs->load(
"errors");
684 $action = ($result < 0 || !$error) ?
'' :
'create';
686 if (!$error && $backtopage) {
687 header(
"Location: ".$backtopage);
692 if ($user->hasRight(
'adherent',
'supprimer') && $action ==
'confirm_delete' && $confirm ==
'yes') {
693 $result =
$object->delete($user);
696 if (!empty($backtopage) && !preg_match(
'/'.preg_quote($_SERVER[
"PHP_SELF"],
'/').
'/', $backtopage)) {
697 header(
"Location: ".$backtopage);
700 header(
"Location: list.php");
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->default_lang) ?
$object->default_lang : (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->default_lang) ?
$object->default_lang : (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) {
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->default_lang) ?
$object->default_lang : (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) {
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';
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) {
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").
'</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>'.img_picto(
'',
'object_phoning',
'class="pictofixedwidth"').
'<input type="text" name="phone" size="20" value="'.(
GETPOSTISSET(
'phone') ?
GETPOST(
'phone',
'alpha') : $soc->phone).
'"></td></tr>';
1269 print
'<tr><td>'.$langs->trans(
"PhonePerso").
'</td>';
1270 print
'<td>'.img_picto(
'',
'object_phoning',
'class="pictofixedwidth"').
'<input type="text" name="phone_perso" size="20" value="'.(
GETPOSTISSET(
'phone_perso') ?
GETPOST(
'phone_perso',
'alpha') :
$object->phone_perso).
'"></td></tr>';
1273 print
'<tr><td>'.$langs->trans(
"PhoneMobile").
'</td>';
1274 print
'<td>'.img_picto(
'',
'object_phoning_mobile',
'class="pictofixedwidth"').
'<input type="text" name="phone_mobile" size="20" value="'.(
GETPOSTISSET(
'phone_mobile') ?
GETPOST(
'phone_mobile',
'alpha') :
$object->phone_mobile).
'"></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') {
1326 $res =
$object->fetch_optionals();
1333 $adht->fetch(
$object->typeid);
1337 if (!empty($country) ||
$object->country_id) {
1338 $sql =
"SELECT rowid, code, label from ".MAIN_DB_PREFIX.
"c_country";
1339 $sql .=
" WHERE rowid = ".(int) (!empty($country) ? $country :
$object->country_id);
1340 $resql =
$db->query($sql);
1342 $obj =
$db->fetch_object($resql);
1347 if (is_object($obj)) {
1348 $object->country_id = $obj->rowid;
1349 $object->country_code = $obj->code;
1350 $object->country = $langs->trans(
"Country".$obj->code) ? $langs->trans(
"Country".$obj->code) : $obj->label;
1357 if (
$conf->use_javascript_ajax) {
1358 print
"\n".
'<script type="text/javascript">';
1359 print
'jQuery(document).ready(function () {
1360 jQuery("#selectcountry_id").change(function() {
1361 document.formsoc.action.value="edit";
1362 document.formsoc.submit();
1364 function initfieldrequired() {
1365 jQuery("#tdcompany").removeClass("fieldrequired");
1366 jQuery("#tdlastname").removeClass("fieldrequired");
1367 jQuery("#tdfirstname").removeClass("fieldrequired");
1368 if (jQuery(\'input[name="morphy"]:checked\').val() == \'mor\') {
1369 jQuery("#tdcompany").addClass("fieldrequired");
1371 if (jQuery(\'input[name="morphy"]:checked\').val() == \'phy\') {
1372 jQuery("#tdlastname").addClass("fieldrequired");
1373 jQuery("#tdfirstname").addClass("fieldrequired");
1376 jQuery(\'input[name="morphy"]\').change(function() {
1377 initfieldrequired();
1379 initfieldrequired();
1381 print
'</script>'.
"\n";
1384 print
'<form name="formsoc" action="'.$_SERVER[
"PHP_SELF"].
'" method="post" enctype="multipart/form-data">';
1385 print
'<input type="hidden" name="token" value="'.newToken().
'" />';
1386 print
'<input type="hidden" name="action" value="update" />';
1387 print
'<input type="hidden" name="rowid" value="'.$id.
'" />';
1388 print
'<input type="hidden" name="statut" value="'.$object->status.
'" />';
1390 print
'<input type="hidden" name="backtopage" value="'.($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]).
'">';
1395 print
'<table class="border centpercent">';
1398 print
'<tr><td class="titlefieldcreate">'.$langs->trans(
"Ref").
'</td><td class="valeur">'.
$object->ref.
'</td></tr>';
1402 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>';
1407 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>';
1411 print
'<tr><td class="fieldrequired">'.$langs->trans(
"Type").
'</td><td>';
1412 if ($user->hasRight(
'adherent',
'creer')) {
1413 print $form->selectarray(
"typeid", $adht->liste_array(), (
GETPOSTISSET(
"typeid") ?
GETPOSTINT(
"typeid") :
$object->typeid), 0, 0, 0,
'', 0, 0, 0,
'',
'minwidth200', 1);
1415 print $adht->getNomUrl(1);
1416 print
'<input type="hidden" name="typeid" value="'.$object->typeid.
'">';
1421 $morphys[
"phy"] = $langs->trans(
"Physical");
1422 $morphys[
"mor"] = $langs->trans(
"Moral");
1424 print
'<tr><td><span class="fieldrequired">'.$langs->trans(
"MemberNature").
'</span></td><td>';
1425 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>';
1426 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>';
1430 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>';
1434 print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td>';
1435 print $formcompany->select_civility(
GETPOSTISSET(
"civility_code") ?
GETPOST(
"civility_code",
'aZ09') :
$object->civility_code,
'civility_code',
'maxwidth150', 1);
1441 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>';
1445 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>';
1449 print
'<tr><td>'.$langs->trans(
"Gender").
'</td>';
1451 $arraygender = array(
'man' => $langs->trans(
"Genderman"),
'woman' => $langs->trans(
"Genderwoman"),
'other' => $langs->trans(
"Genderother"));
1452 print $form->selectarray(
'gender', $arraygender,
GETPOSTISSET(
'gender') ?
GETPOST(
'gender',
'alphanohtml') :
$object->gender, 1, 0, 0,
'', 0, 0, 0,
'',
'minwidth100', 1);
1456 print
'<tr><td>'.$langs->trans(
"Photo").
'</td>';
1457 print
'<td class="hideonsmartphone" valign="middle">';
1458 print $form->showphoto(
'memberphoto', $object).
"\n";
1459 if ($caneditfieldmember) {
1463 print
'<table class="nobordernopadding">';
1465 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>';
1469 $maxmin = $maxfilesizearray[
'maxmin'];
1471 print
'<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).
'">';
1473 print
'<input type="file" class="flat" name="photo" id="photoinput">';
1480 print
'<tr><td>'.(getDolGlobalString(
"ADHERENT_MAIL_REQUIRED") ?
'<span class="fieldrequired">' :
'').$langs->trans(
"EMail").(getDolGlobalString(
"ADHERENT_MAIL_REQUIRED") ?
'</span>' :
'').
'</td>';
1481 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>';
1484 print
'<tr><td>'.$form->editfieldkey(
'Web',
'member_url',
GETPOST(
'member_url',
'alpha'), $object, 0).
'</td>';
1485 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>';
1488 print
'<tr><td>'.$langs->trans(
"Address").
'</td><td>';
1489 print
'<textarea name="address" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_2.
'">'.(
GETPOSTISSET(
"address") ?
GETPOST(
"address",
'alphanohtml', 2) :
$object->
address).
'</textarea>';
1493 print
'<tr><td>'.$langs->trans(
"Zip").
' / '.$langs->trans(
"Town").
'</td><td>';
1494 print $formcompany->select_ziptown((
GETPOSTISSET(
"zipcode") ?
GETPOST(
"zipcode",
'alphanohtml', 2) :
$object->zip),
'zipcode', array(
'town',
'selectcountry_id',
'state_id'), 6);
1496 print $formcompany->select_ziptown((
GETPOSTISSET(
"town") ?
GETPOST(
"town",
'alphanohtml', 2) :
$object->town),
'town', array(
'zipcode',
'selectcountry_id',
'state_id'));
1501 print
'<tr><td>'.$langs->trans(
'Country').
'</td><td>';
1502 print
img_picto(
'',
'country',
'class="pictofixedwidth"');
1503 print $form->select_country(
GETPOSTISSET(
"country_id") ?
GETPOST(
"country_id",
"alpha") :
$object->country_id,
'country_id');
1505 print
info_admin($langs->trans(
"YouCanChangeValuesForThisListFromDictionarySetup"), 1);
1511 print
'<tr><td>'.$langs->trans(
'State').
'</td><td>';
1512 print
img_picto(
'',
'state',
'class="pictofixedwidth"');
1518 print
'<tr><td>'.$langs->trans(
"PhonePro").
'</td>';
1519 print
'<td>'.img_picto(
'',
'object_phoning',
'class="pictofixedwidth"').
'<input type="text" name="phone" value="'.(
GETPOSTISSET(
"phone") ?
GETPOST(
"phone") :
$object->phone).
'"></td></tr>';
1522 print
'<tr><td>'.$langs->trans(
"PhonePerso").
'</td>';
1523 print
'<td>'.img_picto(
'',
'object_phoning',
'class="pictofixedwidth"').
'<input type="text" name="phone_perso" value="'.(
GETPOSTISSET(
"phone_perso") ?
GETPOST(
"phone_perso") :
$object->phone_perso).
'"></td></tr>';
1526 print
'<tr><td>'.$langs->trans(
"PhoneMobile").
'</td>';
1527 print
'<td>'.img_picto(
'',
'object_phoning_mobile',
'class="pictofixedwidth"').
'<input type="text" name="phone_mobile" value="'.(
GETPOSTISSET(
"phone_mobile") ?
GETPOST(
"phone_mobile") :
$object->phone_mobile).
'"></td></tr>';
1530 foreach ($socialnetworks as $key => $value) {
1531 if (!$value[
'active']) {
1534 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>';
1539 print
"<tr><td>".$langs->trans(
"DateOfBirth").
"</td><td>\n";
1540 print
img_picto(
'',
'object_calendar',
'class="pictofixedwidth"').$form->selectDate((
$object->birth ?
$object->birth : -1),
'birth', 0, 0, 1,
'formsoc');
1541 print
"</td></tr>\n";
1545 print
'<tr><td>'.$form->editfieldkey(
'DefaultLang',
'default_lang',
'', $object, 0).
'</td><td colspan="3">'.
"\n";
1546 print
img_picto(
'',
'language',
'class="pictofixedwidth"').$formadmin->select_language(
$object->default_lang,
'default_lang', 0, array(), 1);
1553 $htmltext = $langs->trans(
"Public",
getDolGlobalString(
'MAIN_INFO_SOCIETE_NOM'), $linkofpubliclist);
1554 print $form->textwithpicto($langs->trans(
"MembershipPublic"), $htmltext, 1,
'help',
'', 0, 3,
'membershippublic');
1555 print
"</td><td>\n";
1556 print $form->selectyesno(
"public", (
GETPOSTISSET(
"public") ?
GETPOST(
"public",
'alphanohtml', 2) :
$object->public), 1, false, 0, 1);
1557 print
"</td></tr>\n";
1560 if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
1561 print
'<tr><td>'.$form->editfieldkey(
"Categories",
'memcats',
'', $object, 0).
'</td>';
1563 print $form->selectCategories(Categorie::TYPE_MEMBER,
'memcats', $object);
1569 print
'<tr><td>'.$langs->trans(
"LinkedToDolibarrThirdParty").
'</td><td colspan="2" class="valeur">';
1572 $result = $company->fetch(
$object->socid);
1573 print $company->getNomUrl(1);
1575 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1581 print
'<tr><td>'.$langs->trans(
"LinkedToDolibarrUser").
'</td><td colspan="2" class="valeur">';
1583 $form->form_users($_SERVER[
'PHP_SELF'].
'?rowid='.
$object->id, (
string)
$object->user_id,
'none');
1585 print $langs->trans(
"NoDolibarrAccess");
1590 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_edit.tpl.php';
1595 print $form->buttonsSaveCancel(
"Save",
'Cancel');
1601 if ($id > 0 && $action !=
'edit') {
1607 $res =
$object->fetch_optionals();
1614 $res = $adht->fetch(
$object->typeid);
1626 print
dol_get_fiche_head($head,
'general', $langs->trans(
"Member"), -1,
'user', 0,
'',
'', 0,
'', 1);
1629 if ($action ==
'create_user') {
1631 if (empty($login)) {
1633 include_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
1636 if (empty($login)) {
1637 $login = strtolower(substr(
$object->firstname, 0, 4)).strtolower(substr(
$object->lastname, 0, 4));
1641 $formquestion = array(
1642 array(
'label' => $langs->trans(
"LoginToCreate"),
'type' =>
'text',
'name' =>
'login',
'value' => $login)
1646 $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")));
1650 $text .= $langs->trans(
"UserWillBeInternalUser").
'<br>';
1652 $text .= $langs->trans(
"ConfirmCreateLogin");
1653 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?rowid=".
$object->id, $langs->trans(
"CreateDolibarrLogin"), $text,
"confirm_create_user", $formquestion,
'yes');
1657 if ($action ==
'create_thirdparty') {
1659 $fullname =
$object->getFullName($langs);
1661 if (
$object->morphy ==
'mor') {
1663 if (!empty($fullname)) {
1664 $companyalias = (
string) $fullname;
1667 $companyname = $fullname;
1668 if (!empty(
$object->company)) {
1674 $formquestion = array(
1675 array(
'label' => $langs->trans(
"NameToCreate"),
'type' =>
'text',
'name' =>
'companyname',
'value' => $companyname,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"'),
1676 array(
'label' => $langs->trans(
"AliasNames"),
'type' =>
'text',
'name' =>
'companyalias',
'value' => $companyalias,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"')
1679 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?rowid=".
$object->id, $langs->trans(
"CreateDolibarrThirdParty"), $langs->trans(
"ConfirmCreateThirdParty"),
"confirm_create_thirdparty", $formquestion,
'yes');
1683 if ($action ==
'valid') {
1684 $langs->load(
"mails");
1687 $adht->fetch(
$object->typeid);
1693 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1697 $outputlangs->setDefaultLang(!empty(
$object->default_lang) ?
$object->default_lang : (empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang));
1699 $outputlangs->loadLangs(array(
"main",
"members",
"companies",
"install",
"other"));
1701 $arraydefaultmessage =
null;
1704 if (!empty($labeltouse)) {
1705 $arraydefaultmessage = $formmail->getEMailTemplate(
$db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1708 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1709 $subject = (
string) $arraydefaultmessage->topic;
1710 $msg = (
string) $arraydefaultmessage->content;
1713 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
1718 $tmp = $langs->trans(
"SendingAnEMailToMember");
1719 $tmp .=
'<br>'.$langs->trans(
"MailFrom").
': <b>'.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'</b>, ';
1720 $tmp .=
'<br>'.$langs->trans(
"MailRecipient").
': <b>'.
$object->email.
'</b>';
1722 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'<br>'.
"\n";
1723 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1724 $helpcontent .=
'<b>'.$langs->trans(
"Subject").
'</b>:<br>'.
"\n";
1725 $helpcontent .= $subjecttosend.
"\n";
1726 $helpcontent .=
"<br>";
1727 $helpcontent .=
'<b>'.$langs->trans(
"Content").
'</b>:<br>';
1730 $label = $form->textwithpicto($tmp, $helpcontent, 1,
'help');
1733 $formquestion = array();
1735 $formquestion[] = array(
'type' =>
'checkbox',
'name' =>
'send_mail',
'label' => $label,
'value' => (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
true : false));
1738 $formquestion[] = array(
'type' =>
'other',
'label' => $langs->transnoentitiesnoconv(
"SynchroMailManEnabled"),
'value' =>
'');
1741 $formquestion[] = array(
'type' =>
'other',
'label' => $langs->transnoentitiesnoconv(
"SynchroSpipEnabled"),
'value' =>
'');
1743 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
"ValidateMember"), $langs->trans(
"ConfirmValidateMember"),
"confirm_valid", $formquestion,
'yes', 1, 0);
1747 if ($action ==
'resiliate') {
1748 $langs->load(
"mails");
1751 $adht->fetch(
$object->typeid);
1757 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1761 $outputlangs->setDefaultLang(!empty(
$object->default_lang) ?
$object->default_lang : (empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang));
1763 $outputlangs->loadLangs(array(
"main",
"members"));
1765 $arraydefaultmessage =
null;
1768 if (!empty($labeltouse)) {
1769 $arraydefaultmessage = $formmail->getEMailTemplate(
$db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1772 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1773 $subject = (
string) $arraydefaultmessage->topic;
1774 $msg = (
string) $arraydefaultmessage->content;
1777 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
1782 $tmp = $langs->trans(
"SendingAnEMailToMember");
1783 $tmp .=
'<br>('.$langs->trans(
"MailFrom").
': <b>'.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'</b>, ';
1784 $tmp .= $langs->trans(
"MailRecipient").
': <b>'.
$object->email.
'</b>)';
1786 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'<br>'.
"\n";
1787 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1788 $helpcontent .=
'<b>'.$langs->trans(
"Subject").
'</b>:<br>'.
"\n";
1789 $helpcontent .= $subjecttosend.
"\n";
1790 $helpcontent .=
"<br>";
1791 $helpcontent .=
'<b>'.$langs->trans(
"Content").
'</b>:<br>';
1794 $label = $form->textwithpicto($tmp, $helpcontent, 1,
'help');
1797 $formquestion = array();
1799 $formquestion[] = array(
'type' =>
'checkbox',
'name' =>
'send_mail',
'label' => $label,
'value' => (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
'true' :
'false'));
1802 $formquestion[] = array(
'type' =>
'hidden',
'name' =>
'backtopage',
'value' => ($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]));
1804 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
"ResiliateMember"), $langs->trans(
"ConfirmResiliateMember"),
"confirm_resiliate", $formquestion,
'no', 1, 240);
1808 if ($action ==
'exclude') {
1809 $langs->load(
"mails");
1812 $adht->fetch(
$object->typeid);
1818 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1822 $outputlangs->setDefaultLang(!empty(
$object->default_lang) ?
$object->default_lang : (empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang));
1824 $outputlangs->loadLangs(array(
"main",
"members"));
1826 $arraydefaultmessage =
null;
1829 if (!empty($labeltouse)) {
1830 $arraydefaultmessage = $formmail->getEMailTemplate(
$db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1833 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1834 $subject = (
string) $arraydefaultmessage->topic;
1835 $msg = (
string) $arraydefaultmessage->content;
1838 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
1843 $tmp = $langs->trans(
"SendingAnEMailToMember");
1844 $tmp .=
'<br>('.$langs->trans(
"MailFrom").
': <b>'.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'</b>, ';
1845 $tmp .= $langs->trans(
"MailRecipient").
': <b>'.
$object->email.
'</b>)';
1847 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'<br>'.
"\n";
1848 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1849 $helpcontent .=
'<b>'.$langs->trans(
"Subject").
'</b>:<br>'.
"\n";
1850 $helpcontent .= $subjecttosend.
"\n";
1851 $helpcontent .=
"<br>";
1852 $helpcontent .=
'<b>'.$langs->trans(
"Content").
'</b>:<br>';
1855 $label = $form->textwithpicto($tmp, $helpcontent, 1,
'help');
1858 $formquestion = array();
1860 $formquestion[] = array(
'type' =>
'checkbox',
'name' =>
'send_mail',
'label' => $label,
'value' => (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
'true' :
'false'));
1863 $formquestion[] = array(
'type' =>
'hidden',
'name' =>
'backtopage',
'value' => ($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]));
1865 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
"ExcludeMember"), $langs->trans(
"ConfirmExcludeMember"),
"confirm_exclude", $formquestion,
'no', 1, 240);
1869 if ($action ==
'delete') {
1870 $formquestion = array();
1872 $formquestion[] = array(
'type' =>
'hidden',
'name' =>
'backtopage',
'value' => ($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]));
1874 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
"DeleteMember"), $langs->trans(
"ConfirmDeleteMember"),
"confirm_delete", $formquestion,
'no', 1);
1878 if ($action ==
'add_spip') {
1879 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
'AddIntoSpip'), $langs->trans(
'AddIntoSpipConfirmation'),
'confirm_add_spip');
1883 if ($action ==
'merge') {
1884 $formquestion = array(
1886 'name' =>
'member_origin',
1887 'label' => $langs->trans(
'MergeOriginMember'),
1889 'value' => $form->selectMembers(
'',
'member_origin',
'', 0, 1,
'', 0, array(), 0,
'SelectMember', 0,
'minwidth200', array(), 1, array(
$object->id))
1893 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?id=".
$object->id, $langs->trans(
"MergeMembers"), $langs->trans(
"ConfirmMergeMembers"),
"confirm_merge", $formquestion,
'no', 1, 300);
1897 if ($action ==
'del_spip') {
1898 print $form->formconfirm(
"card.php?rowid=$id", $langs->trans(
'DeleteIntoSpip'), $langs->trans(
'DeleteIntoSpipConfirmation'),
'confirm_del_spip');
1909 $linkback =
'<a href="'.dolBuildUrl(DOL_URL_ROOT.
'/adherents/list.php', [
'restore_lastsearch_values' => 1]).
'">'.$langs->trans(
"BackToList").
'</a>';
1911 $morehtmlref =
'<a href="'.dolBuildUrl(DOL_URL_ROOT.
'/adherents/vcard.php', [
'id' =>
$object->id]).
'" class="refid valignmiddle">';
1912 $morehtmlref .=
img_picto($langs->trans(
"Download").
' '.$langs->trans(
"VCard"),
'vcard',
'class="valignmiddle marginleftonly paddingrightonly"');
1913 $morehtmlref .=
'</a>';
1916 dol_banner_tab($object,
'rowid', $linkback, 1,
'rowid',
'ref', $morehtmlref);
1918 print
'<div class="fichecenter">';
1919 print
'<div class="fichehalfleft">';
1921 print
'<div class="underbanner clearboth"></div>';
1922 print
'<table class="border tableforfield centpercent">';
1926 print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"Login").
' / '.$langs->trans(
"Id").
'</td><td class="valeur">'.
dol_escape_htmltag(
$object->login).
'</td></tr>';
1930 print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"Type").
'</td>';
1931 print
'<td class="valeur">'.$adht->getNomUrl(1).
"</td></tr>\n";
1934 print
'<tr><td>'.$langs->trans(
"MemberNature").
'</td>';
1935 print
'<td class="valeur">'.$object->getmorphylib(
'', 1).
'</td>';
1942 print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td class="valeur">'.
$object->getCivilityLabel().
'</td>';
1947 print
'<tr><td>'.$langs->trans(
"Password").
'</td><td>';
1949 print preg_replace(
'/./i',
'*',
$object->pass);
1952 print
'<!-- '.$langs->trans(
"Crypted").
': '.
$object->pass_indatabase_crypted.
' -->';
1954 print
'<span class="opacitymedium">'.$langs->trans(
"Hidden").
'</span>';
1956 if (!empty(
$object->pass_indatabase) && empty(
$object->user_id)) {
1957 $langs->load(
"errors");
1958 $htmltext = $langs->trans(
"WarningPasswordSetWithNoAccount");
1959 print
' '.$form->textwithpicto(
'', $htmltext, 1,
'warning');
1965 print
'<tr><td>'.$langs->trans(
"SubscriptionEndDate").
'</td><td class="valeur">';
1969 print
" ".img_warning($langs->trans(
"Late"));
1972 if (
$object->need_subscription == 0) {
1973 print $langs->trans(
"SubscriptionNotNeeded");
1974 } elseif (!$adht->subscription) {
1975 print $langs->trans(
"SubscriptionNotRecorded");
1977 print
" ".img_warning($langs->trans(
"Late"));
1980 print $langs->trans(
"SubscriptionNotReceived");
1982 print
" ".img_warning($langs->trans(
"Late"));
1992 print
'<div class="fichehalfright">';
1993 print
'<div class="underbanner clearboth"></div>';
1995 print
'<table class="border tableforfield centpercent">';
1998 if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
1999 print
'<tr><td>'.$langs->trans(
"Categories").
'</td>';
2001 print $form->showCategories(
$object->id, Categorie::TYPE_MEMBER, 1);
2006 print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"DateOfBirth").
'</td><td class="valeur">'.
dol_print_date(
$object->birth,
'day').
'</td></tr>';
2010 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
2011 print
'<tr><td>'.$langs->trans(
"DefaultLang").
'</td><td>';
2014 $langs->load(
"languages");
2015 $labellang = (
$object->default_lang ? $langs->trans(
'Language_'.
$object->default_lang) :
'');
2023 $htmltext = $langs->trans(
"Public",
getDolGlobalString(
'MAIN_INFO_SOCIETE_NOM'), $linkofpubliclist);
2024 print $form->textwithpicto($langs->trans(
"MembershipPublic"), $htmltext, 1,
'help',
'', 0, 3,
'membershippublic');
2025 print
'</td><td class="valeur">'.yn(
$object->public).
'</td></tr>';
2028 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
2033 $editenable = $user->hasRight(
'adherent',
'creer');
2034 print $form->editfieldkey(
'LinkedToDolibarrThirdParty',
'thirdparty',
'', $object, $editenable);
2035 print
'</td><td colspan="2" class="valeur">';
2036 if ($action ==
'editthirdparty') {
2037 $htmlname =
'socid';
2038 print
'<form method="POST" action="'.$_SERVER[
'PHP_SELF'].
'" name="form'.$htmlname.
'">';
2039 print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
2040 print
'<input type="hidden" name="action" value="set'.$htmlname.
'">';
2041 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2042 print
'<table class="nobordernopadding">';
2044 print $form->select_company(
$object->socid,
'socid',
'', 1);
2046 print
'<td class="left"><input type="submit" class="button button-edit smallpaddingimp" value="'.$langs->trans(
"Modify").
'"></td>';
2047 print
'</tr></table></form>';
2051 $result = $company->fetch(
$object->socid);
2052 print $company->getNomUrl(1);
2055 $tmparray = $company->getOutstandingBills(
'customer');
2056 if (!empty($tmparray[
'refs'])) {
2057 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']).
')';
2062 print
'<span class="opacitymedium">'.$langs->trans(
"NoThirdPartyAssociatedToMember").
'</span>';
2070 $editenable = $user->hasRight(
'adherent',
'creer') && $user->hasRight(
'user',
'user',
'creer');
2071 print $form->editfieldkey(
'LinkedToDolibarrUser',
'login',
'', $object, (
int) $editenable);
2072 print
'</td><td colspan="2" class="valeur">';
2073 if ($action ==
'editlogin') {
2074 $form->form_users($_SERVER[
'PHP_SELF'].
'?rowid='.
$object->id, (
string)
$object->user_id,
'userid', array());
2078 $linkeduser->fetch(
$object->user_id);
2079 print $linkeduser->getNomUrl(-1);
2081 print
'<span class="opacitymedium">'.$langs->trans(
"NoDolibarrAccess").
'</span>';
2088 print
"</div></div>\n";
2089 print
'<div class="clearboth"></div>';
2098 print
'<div class="tabsAction">';
2100 $parameters = array();
2101 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
2102 if (empty($reshook)) {
2103 if ($action !=
'editlogin' && $action !=
'editthirdparty') {
2105 if (empty($user->socid)) {
2107 print
dolGetButtonAction(
'', $langs->trans(
'SendMail'),
'email',
dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'presend',
'mode' =>
'init'],
true).
'#formmailbeforetitle',
'');
2126 if ($user->hasRight(
'adherent',
'creer')) {
2127 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'edit'],
true).
'">'.$langs->trans(
"Modify").
'</a>'.
"\n";
2129 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Modify").
'</span>'.
"\n";
2134 if ($user->hasRight(
'adherent',
'creer')) {
2135 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'valid'],
true).
'">'.$langs->trans(
"Validate").
'</a>'.
"\n";
2137 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Validate").
'</span>'.
"\n";
2143 if ($user->hasRight(
'adherent',
'creer')) {
2144 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'valid'],
true).
'">'.$langs->trans(
"Reenable").
"</a>\n";
2146 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Reenable").
'</span>'.
"\n";
2152 if ($user->hasRight(
'adherent',
'supprimer')) {
2153 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'resiliate'],
true).
'">'.$langs->trans(
"Resiliate").
"</a></span>\n";
2155 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Resiliate").
'</span>'.
"\n";
2161 if ($user->hasRight(
'adherent',
'supprimer')) {
2162 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'exclude'],
true).
'">'.$langs->trans(
"Exclude").
"</a></span>\n";
2164 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Exclude").
'</span>'.
"\n";
2170 if ($user->hasRight(
'societe',
'creer')) {
2172 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";
2174 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"ValidateBefore")).
'">'.$langs->trans(
"CreateDolibarrThirdParty").
'</a>'.
"\n";
2177 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"CreateDolibarrThirdParty").
'</span>'.
"\n";
2182 if (!$user->socid && !
$object->user_id) {
2183 if ($user->hasRight(
'user',
'user',
'creer')) {
2185 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";
2187 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"ValidateBefore")).
'">'.$langs->trans(
"CreateDolibarrLogin").
'</a>'.
"\n";
2190 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"CreateDolibarrLogin").
'</span>'.
"\n";
2196 $isinspip = $mailmanspip->is_in_spip($object);
2198 if ($isinspip == 1) {
2199 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'del_spip'],
true).
'">'.$langs->trans(
"DeleteIntoSpip").
'</a>'.
"\n";
2201 if ($isinspip == 0) {
2202 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'add_spip'],
true).
'">'.$langs->trans(
"AddIntoSpip").
'</a>'.
"\n";
2207 print
dolGetButtonAction($langs->trans(
'MergeMembers'), $langs->trans(
'Merge'),
'danger',
dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'merge'],
true),
'', $user->hasRight(
'adherent',
'supprimer'));
2210 if ($user->hasRight(
'adherent',
'supprimer')) {
2211 print
'<a class="butActionDelete" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'delete'],
true).
'">'.$langs->trans(
"Delete").
'</a>'.
"\n";
2213 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Delete").
'</span>'.
"\n";
2219 if ($isinspip == -1) {
2220 print
'<br><br><span class="error">'.$langs->trans(
'SPIPConnectionFailed').
': '.$mailmanspip->error.
'</span>';
2225 if (
GETPOST(
'modelselected')) {
2226 $action =
'presend';
2229 if ($action !=
'presend') {
2230 print
'<div class="fichecenter"><div class="fichehalfleft">';
2231 print
'<a name="builddoc"></a>';
2235 $filedir =
$conf->member->dir_output.
'/'.
get_exdir(0, 0, 0, 1, $object,
'member');
2236 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.
$object->id;
2237 $genallowed = $user->hasRight(
'adherent',
'lire');
2238 $delallowed = $user->hasRight(
'adherent',
'creer');
2240 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);
2241 $somethingshown = $formfile->numoffiles;
2249 include_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
2250 $validpaymentmethod = getValidOnlinePaymentMethods(
'');
2251 $useonlinepayment = count($validpaymentmethod);
2253 if ($useonlinepayment) {
2256 $amount = max($adht->amount,
$object->first_subscription_amount,
$object->last_subscription_amount);
2257 if (!empty($adht->caneditamount)) {
2258 $amount = max($amount, $adht->minimumamount);
2260 if (empty($amount)) {
2263 require_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
2264 print showOnlinePaymentUrl(
'membersubscription',
$object->ref, $amount);
2267 print
'</div><div class="fichehalfright">';
2271 $morehtmlcenter =
'';
2272 $messagingUrl =
dolBuildUrl(DOL_URL_ROOT.
'/adherents/messaging.php', [
'id' =>
$object->id]);
2273 $morehtmlcenter .=
dolGetButtonTitle($langs->trans(
'ShowAsConversation'),
'',
'fa fa-comments imgforviewmode', $messagingUrl,
'', 1);
2277 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formactions.class.php';
2279 $somethingshown = $formactions->showactions($object,
$object->element, $socid, 1,
'listactions', $MAXEVENT,
'', $morehtmlcenter);
2281 print
'</div></div>';
2285 $modelmail =
'member';
2286 $defaulttopic =
'CardContent';
2287 $diroutput =
$conf->member->dir_output;
2288 $trackid =
'mem'.$object->id;
2290 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].
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...
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
picto_from_langcode($codelang, $moreatt='', $notitlealt=0)
Return img flag of country for a language code or country code.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $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.
dolBuildUrl($url, $params=[], $addtoken=false, $anchor='')
Return path of url.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
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.
dolGetButtonAction($label, $text='', $actionType='default', $url='', $id='', $userRight=1, $params=array())
Function dolGetButtonAction.
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).
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='', $morecssonpicto='widthpictotitle')
Load a title with picto.
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.
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.
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)
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...
div refaddress div address
image_format_supported($file, $acceptsvg=0)
Return if a filename is file name of a supported image format.
print $langs trans("Show") . '< td style="' . $timeColor . '" align="center"> s</td > badge status0 badge status4 badge status3 Error badge status8< td align="center">< span class="badge ' . $badge . '"></span ></td >< td align="center">< a href="#" class="button button-small" onclick="openLogModal(this)" data-req="' . dol_escape_htmltag($reqSafe) . '" data-res="' . dol_escape_htmltag($resSafe) . '" data-err="' . dol_escape_htmltag($errSafe) . '">< span class="fa fa-search-plus"></span ></a ></td ></tr >< tr >< td colspan="' . $colspan . '" class="opacitymedium"></td ></tr ></table ></div ></form > logModal none logModal none s a JSON string
buildzip.php
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.