35require
'../main.inc.php';
44require_once DOL_DOCUMENT_ROOT.
'/core/lib/member.lib.php';
45require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
46require_once DOL_DOCUMENT_ROOT.
'/core/lib/images.lib.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
48require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
49require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
50require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent_type.class.php';
51require_once DOL_DOCUMENT_ROOT.
'/adherents/class/subscription.class.php';
52require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
53require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
54require_once DOL_DOCUMENT_ROOT.
'/core/class/extrafields.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';
102 $objcanvas =
new Canvas($db, $action);
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 = ".$conf->entity;
210 $resql = $db->query($sql);
212 $obj = $db->fetch_object($resql);
213 if ($obj && $obj->rowid > 0) {
215 $othermember->fetch($obj->rowid);
216 $thirdparty =
new Societe($db);
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')) {
238 $nuser =
new User($db);
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'));
344 if (GETPOSTISSET(
'pass')) {
360 $object->email = preg_replace(
'/\s+/',
'',
GETPOST(
"member_email",
'alpha'));
362 $object->socialnetworks = array();
363 foreach ($socialnetworks as $key => $value) {
364 if (GETPOSTISSET($key) &&
GETPOST($key,
'alphanohtml') !=
'') {
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')) {
405 if (GETPOSTISSET(
'pass')) {
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')) {
511 if (GETPOSTISSET(
"birthday") &&
GETPOST(
"birthday") && GETPOSTISSET(
"birthmonth") &&
GETPOST(
"birthmonth") && GETPOSTISSET(
"birthyear") &&
GETPOST(
"birthyear")) {
514 $datesubscription =
'';
515 if (GETPOSTISSET(
"reday") && GETPOSTISSET(
"remonth") && GETPOSTISSET(
"reyear")) {
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) {
563 if (GETPOSTISSET($key) &&
GETPOST($key,
'alphanohtml') !=
'') {
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';
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) {
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">';
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>';
1196 print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td>';
1197 print $formcompany->select_civility(GETPOSTISSET(
'civility_code') ?
GETPOST(
'civility_code') :
$object->civility_code,
'civility_code',
'maxwidth150', 1).
'</td>';
1201 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>';
1205 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>';
1209 print
'<tr><td>'.$langs->trans(
"Gender").
'</td>';
1211 $arraygender = array(
'man' => $langs->trans(
"Genderman"),
'woman' => $langs->trans(
"Genderwoman"),
'other' => $langs->trans(
"Genderother"));
1212 print $form->selectarray(
'gender', $arraygender,
GETPOST(
'gender',
'alphanohtml'), 1, 0, 0,
'', 0, 0, 0,
'',
'minwidth100', 1);
1216 print
'<tr><td>'.(getDolGlobalString(
'ADHERENT_MAIL_REQUIRED') ?
'<span class="fieldrequired">' :
'').$langs->trans(
"EMail").(getDolGlobalString(
'ADHERENT_MAIL_REQUIRED') ?
'</span>' :
'').
'</td>';
1217 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>';
1220 print
'<tr><td>'.$form->editfieldkey(
'Web',
'member_url',
GETPOST(
'member_url',
'alpha'), $object, 0).
'</td>';
1221 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>';
1224 print
'<tr><td class="tdtop">'.$langs->trans(
"Address").
'</td><td>';
1225 print
'<textarea name="address" wrap="soft" class="quatrevingtpercent" rows="2">'.(GETPOSTISSET(
'address') ?
GETPOST(
'address',
'alphanohtml') : $soc->
address).
'</textarea>';
1229 print
'<tr><td>'.$langs->trans(
"Zip").
' / '.$langs->trans(
"Town").
'</td><td>';
1230 print $formcompany->select_ziptown((GETPOSTISSET(
'zipcode') ?
GETPOST(
'zipcode',
'alphanohtml') : $soc->zip),
'zipcode', array(
'town',
'selectcountry_id',
'state_id'), 6);
1232 print $formcompany->select_ziptown((GETPOSTISSET(
'town') ?
GETPOST(
'town',
'alphanohtml') : $soc->town),
'town', array(
'zipcode',
'selectcountry_id',
'state_id'));
1236 if (empty($soc->country_id)) {
1237 $soc->country_id =
$mysoc->country_id;
1238 $soc->country_code =
$mysoc->country_code;
1239 $soc->state_id =
$mysoc->state_id;
1241 print
'<tr><td>'.$langs->trans(
'Country').
'</td><td>';
1242 print
img_picto(
'',
'country',
'class="pictofixedwidth"');
1243 print $form->select_country(GETPOSTISSET(
'country_id') ?
GETPOST(
'country_id',
'alpha') : $soc->country_id,
'country_id');
1245 print
info_admin($langs->trans(
"YouCanChangeValuesForThisListFromDictionarySetup"), 1);
1251 print
'<tr><td>'.$langs->trans(
'State').
'</td><td>';
1252 if ($soc->country_id || GETPOSTISSET(
'country_id')) {
1253 print
img_picto(
'',
'state',
'class="pictofixedwidth"');
1254 print $formcompany->select_state(GETPOSTISSET(
'state_id') ?
GETPOSTINT(
'state_id') : $soc->state_id, GETPOSTISSET(
'country_id') ?
GETPOSTINT(
'country_id') : $soc->country_code);
1256 print $countrynotdefined;
1262 print
'<tr><td>'.$langs->trans(
"PhonePro").
'</td>';
1263 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>';
1266 print
'<tr><td>'.$langs->trans(
"PhonePerso").
'</td>';
1267 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>';
1270 print
'<tr><td>'.$langs->trans(
"PhoneMobile").
'</td>';
1271 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>';
1274 foreach ($socialnetworks as $key => $value) {
1275 if (!$value[
'active']) {
1278 $val = (GETPOSTISSET(
'member_'.$key) ?
GETPOST(
'member_'.$key,
'alpha') : (empty(
$object->socialnetworks[$key]) ?
'' :
$object->socialnetworks[$key]));
1279 print
'<tr><td>'.$langs->trans($value[
'label']).
'</td><td><input type="text" name="member_'.$key.
'" size="40" value="'.$val.
'"></td></tr>';
1284 print
"<tr><td>".$langs->trans(
"DateOfBirth").
"</td><td>\n";
1285 print
img_picto(
'',
'object_calendar',
'class="pictofixedwidth"').$form->selectDate((
$object->birth ?
$object->birth : -1),
'birth', 0, 0, 1,
'formsoc');
1286 print
"</td></tr>\n";
1290 $htmltext = $langs->trans(
"Public",
getDolGlobalString(
'MAIN_INFO_SOCIETE_NOM'), $linkofpubliclist);
1291 print $form->textwithpicto($langs->trans(
"MembershipPublic"), $htmltext, 1,
'help',
'', 0, 3,
'membershippublic');
1292 print
"</td><td>\n";
1293 print $form->selectyesno(
"public",
$object->public, 1,
false, 0, 1);
1294 print
"</td></tr>\n";
1297 if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
1298 print
'<tr><td>'.$form->editfieldkey(
"Categories",
'memcats',
'', $object, 0).
'</td><td>';
1299 print $form->selectCategories(Categorie::TYPE_MEMBER,
'memcats', $object);
1304 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_add.tpl.php';
1311 print $form->buttonsSaveCancel(
"AddMember");
1317 if ($action ==
'edit') {
1323 $res =
$object->fetch_optionals();
1330 $adht->fetch(
$object->typeid);
1334 if (!empty($country) ||
$object->country_id) {
1335 $sql =
"SELECT rowid, code, label from ".MAIN_DB_PREFIX.
"c_country";
1336 $sql .=
" WHERE rowid = ".(int) (!empty($country) ? $country :
$object->country_id);
1337 $resql = $db->query($sql);
1339 $obj = $db->fetch_object($resql);
1344 if (is_object($obj)) {
1345 $object->country_id = $obj->rowid;
1346 $object->country_code = $obj->code;
1347 $object->country = $langs->trans(
"Country".$obj->code) ? $langs->trans(
"Country".$obj->code) : $obj->label;
1354 if ($conf->use_javascript_ajax) {
1355 print
"\n".
'<script type="text/javascript">';
1356 print
'jQuery(document).ready(function () {
1357 jQuery("#selectcountry_id").change(function() {
1358 document.formsoc.action.value="edit";
1359 document.formsoc.submit();
1361 function initfieldrequired() {
1362 jQuery("#tdcompany").removeClass("fieldrequired");
1363 jQuery("#tdlastname").removeClass("fieldrequired");
1364 jQuery("#tdfirstname").removeClass("fieldrequired");
1365 if (jQuery(\'input[name="morphy"]:checked\').val() == \'mor\') {
1366 jQuery("#tdcompany").addClass("fieldrequired");
1368 if (jQuery(\'input[name="morphy"]:checked\').val() == \'phy\') {
1369 jQuery("#tdlastname").addClass("fieldrequired");
1370 jQuery("#tdfirstname").addClass("fieldrequired");
1373 jQuery(\'input[name="morphy"]\').change(function() {
1374 initfieldrequired();
1376 initfieldrequired();
1378 print
'</script>'.
"\n";
1381 print
'<form name="formsoc" action="'.$_SERVER[
"PHP_SELF"].
'" method="post" enctype="multipart/form-data">';
1382 print
'<input type="hidden" name="token" value="'.newToken().
'" />';
1383 print
'<input type="hidden" name="action" value="update" />';
1384 print
'<input type="hidden" name="rowid" value="'.$id.
'" />';
1385 print
'<input type="hidden" name="statut" value="'.$object->status.
'" />';
1387 print
'<input type="hidden" name="backtopage" value="'.($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]).
'">';
1392 print
'<table class="border centpercent">';
1395 print
'<tr><td class="titlefieldcreate">'.$langs->trans(
"Ref").
'</td><td class="valeur">'.
$object->ref.
'</td></tr>';
1399 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>';
1404 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>';
1408 print
'<tr><td class="fieldrequired">'.$langs->trans(
"Type").
'</td><td>';
1409 if ($user->hasRight(
'adherent',
'creer')) {
1410 print $form->selectarray(
"typeid", $adht->liste_array(), (GETPOSTISSET(
"typeid") ?
GETPOSTINT(
"typeid") :
$object->typeid), 0, 0, 0,
'', 0, 0, 0,
'',
'minwidth200', 1);
1412 print $adht->getNomUrl(1);
1413 print
'<input type="hidden" name="typeid" value="'.$object->typeid.
'">';
1418 $morphys[
"phy"] = $langs->trans(
"Physical");
1419 $morphys[
"mor"] = $langs->trans(
"Moral");
1420 $checkednature = (GETPOSTISSET(
"morphy") ?
GETPOST(
"morphy",
'alpha') :
$object->morphy);
1421 print
'<tr><td><span class="fieldrequired">'.$langs->trans(
"MemberNature").
'</span></td><td>';
1422 print
'<span id="spannature1" class="member-individual-back spannature paddinglarge marginrightonly"><label for="phisicalinput" class="valignmiddle">'.$morphys[
"phy"].
'<input id="phisicalinput" class="flat checkforselect marginleftonly valignmiddle" type="radio" name="morphy" value="phy"'.($checkednature ==
"phy" ?
' checked="checked"' :
'').
'></label></span>';
1423 print
'<span id="spannature1" class="member-company-back spannature paddinglarge marginrightonly"><label for="moralinput" class="valignmiddle">'.$morphys[
"mor"].
'<input id="moralinput" class="flat checkforselect marginleftonly valignmiddle" type="radio" name="morphy" value="mor"'.($checkednature ==
"mor" ?
' checked="checked"' :
'').
'></label></span>';
1427 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>';
1430 print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td>';
1431 print $formcompany->select_civility(GETPOSTISSET(
"civility_code") ?
GETPOST(
"civility_code",
'alpha') :
$object->civility_code,
'civility_code',
'maxwidth150', 1);
1436 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>';
1440 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>';
1444 print
'<tr><td>'.$langs->trans(
"Gender").
'</td>';
1446 $arraygender = array(
'man' => $langs->trans(
"Genderman"),
'woman' => $langs->trans(
"Genderwoman"),
'other' => $langs->trans(
"Genderother"));
1447 print $form->selectarray(
'gender', $arraygender, GETPOSTISSET(
'gender') ?
GETPOST(
'gender',
'alphanohtml') :
$object->gender, 1, 0, 0,
'', 0, 0, 0,
'',
'minwidth100', 1);
1451 print
'<tr><td>'.$langs->trans(
"Photo").
'</td>';
1452 print
'<td class="hideonsmartphone" valign="middle">';
1453 print $form->showphoto(
'memberphoto', $object).
"\n";
1454 if ($caneditfieldmember) {
1458 print
'<table class="nobordernopadding">';
1460 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>';
1464 $maxmin = $maxfilesizearray[
'maxmin'];
1466 print
'<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).
'">';
1468 print
'<input type="file" class="flat" name="photo" id="photoinput">';
1475 print
'<tr><td>'.(getDolGlobalString(
"ADHERENT_MAIL_REQUIRED") ?
'<span class="fieldrequired">' :
'').$langs->trans(
"EMail").(getDolGlobalString(
"ADHERENT_MAIL_REQUIRED") ?
'</span>' :
'').
'</td>';
1476 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>';
1479 print
'<tr><td>'.$form->editfieldkey(
'Web',
'member_url',
GETPOST(
'member_url',
'alpha'), $object, 0).
'</td>';
1480 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>';
1483 print
'<tr><td>'.$langs->trans(
"Address").
'</td><td>';
1484 print
'<textarea name="address" wrap="soft" class="quatrevingtpercent" rows="'.ROWS_2.
'">'.(GETPOSTISSET(
"address") ?
GETPOST(
"address",
'alphanohtml', 2) :
$object->
address).
'</textarea>';
1488 print
'<tr><td>'.$langs->trans(
"Zip").
' / '.$langs->trans(
"Town").
'</td><td>';
1489 print $formcompany->select_ziptown((GETPOSTISSET(
"zipcode") ?
GETPOST(
"zipcode",
'alphanohtml', 2) :
$object->zip),
'zipcode', array(
'town',
'selectcountry_id',
'state_id'), 6);
1491 print $formcompany->select_ziptown((GETPOSTISSET(
"town") ?
GETPOST(
"town",
'alphanohtml', 2) :
$object->town),
'town', array(
'zipcode',
'selectcountry_id',
'state_id'));
1496 print
'<tr><td>'.$langs->trans(
'Country').
'</td><td>';
1497 print
img_picto(
'',
'country',
'class="pictofixedwidth"');
1498 print $form->select_country(GETPOSTISSET(
"country_id") ?
GETPOST(
"country_id",
"alpha") :
$object->country_id,
'country_id');
1500 print
info_admin($langs->trans(
"YouCanChangeValuesForThisListFromDictionarySetup"), 1);
1506 print
'<tr><td>'.$langs->trans(
'State').
'</td><td>';
1507 print
img_picto(
'',
'state',
'class="pictofixedwidth"');
1508 print $formcompany->select_state(
$object->state_id, GETPOSTISSET(
"country_id") ?
GETPOST(
"country_id",
"alpha") :
$object->country_id);
1513 print
'<tr><td>'.$langs->trans(
"PhonePro").
'</td>';
1514 print
'<td>'.img_picto(
'',
'object_phoning',
'class="pictofixedwidth"').
'<input type="text" name="phone" value="'.(GETPOSTISSET(
"phone") ?
GETPOST(
"phone") :
$object->phone).
'"></td></tr>';
1517 print
'<tr><td>'.$langs->trans(
"PhonePerso").
'</td>';
1518 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>';
1521 print
'<tr><td>'.$langs->trans(
"PhoneMobile").
'</td>';
1522 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>';
1525 foreach ($socialnetworks as $key => $value) {
1526 if (!$value[
'active']) {
1529 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>';
1534 print
"<tr><td>".$langs->trans(
"DateOfBirth").
"</td><td>\n";
1535 print
img_picto(
'',
'object_calendar',
'class="pictofixedwidth"').$form->selectDate((
$object->birth ?
$object->birth : -1),
'birth', 0, 0, 1,
'formsoc');
1536 print
"</td></tr>\n";
1540 print
'<tr><td>'.$form->editfieldkey(
'DefaultLang',
'default_lang',
'', $object, 0).
'</td><td colspan="3">'.
"\n";
1541 print
img_picto(
'',
'language',
'class="pictofixedwidth"').$formadmin->select_language(
$object->default_lang,
'default_lang', 0, array(), 1);
1548 $htmltext = $langs->trans(
"Public",
getDolGlobalString(
'MAIN_INFO_SOCIETE_NOM'), $linkofpubliclist);
1549 print $form->textwithpicto($langs->trans(
"MembershipPublic"), $htmltext, 1,
'help',
'', 0, 3,
'membershippublic');
1550 print
"</td><td>\n";
1551 print $form->selectyesno(
"public", (GETPOSTISSET(
"public") ?
GETPOST(
"public",
'alphanohtml', 2) :
$object->public), 1, false, 0, 1);
1552 print
"</td></tr>\n";
1555 if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
1556 print
'<tr><td>'.$form->editfieldkey(
"Categories",
'memcats',
'', $object, 0).
'</td>';
1558 print $form->selectCategories(Categorie::TYPE_MEMBER,
'memcats', $object);
1564 print
'<tr><td>'.$langs->trans(
"LinkedToDolibarrThirdParty").
'</td><td colspan="2" class="valeur">';
1567 $result = $company->fetch(
$object->socid);
1568 print $company->getNomUrl(1);
1570 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1576 print
'<tr><td>'.$langs->trans(
"LinkedToDolibarrUser").
'</td><td colspan="2" class="valeur">';
1578 $form->form_users($_SERVER[
'PHP_SELF'].
'?rowid='.
$object->id, (
string)
$object->user_id,
'none');
1580 print $langs->trans(
"NoDolibarrAccess");
1585 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_edit.tpl.php';
1590 print $form->buttonsSaveCancel(
"Save",
'Cancel');
1596 if ($id > 0 && $action !=
'edit') {
1602 $res =
$object->fetch_optionals();
1609 $res = $adht->fetch(
$object->typeid);
1621 print
dol_get_fiche_head($head,
'general', $langs->trans(
"Member"), -1,
'user', 0,
'',
'', 0,
'', 1);
1624 if ($action ==
'create_user') {
1625 $login = (GETPOSTISSET(
'login') ?
GETPOST(
'login',
'alphanohtml') :
$object->login);
1626 if (empty($login)) {
1628 include_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
1631 if (empty($login)) {
1632 $login = strtolower(substr(
$object->firstname, 0, 4)).strtolower(substr(
$object->lastname, 0, 4));
1636 $formquestion = array(
1637 array(
'label' => $langs->trans(
"LoginToCreate"),
'type' =>
'text',
'name' =>
'login',
'value' => $login)
1641 $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")));
1645 $text .= $langs->trans(
"UserWillBeInternalUser").
'<br>';
1647 $text .= $langs->trans(
"ConfirmCreateLogin");
1648 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?rowid=".
$object->id, $langs->trans(
"CreateDolibarrLogin"), $text,
"confirm_create_user", $formquestion,
'yes');
1652 if ($action ==
'create_thirdparty') {
1654 $fullname =
$object->getFullName($langs);
1656 if (
$object->morphy ==
'mor') {
1657 $companyname = (string)
$object->company;
1658 if (!empty($fullname)) {
1659 $companyalias = (string) $fullname;
1662 $companyname = $fullname;
1663 if (!empty(
$object->company)) {
1664 $companyalias = (string)
$object->company;
1669 $formquestion = array(
1670 array(
'label' => $langs->trans(
"NameToCreate"),
'type' =>
'text',
'name' =>
'companyname',
'value' => $companyname,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"'),
1671 array(
'label' => $langs->trans(
"AliasNames"),
'type' =>
'text',
'name' =>
'companyalias',
'value' => $companyalias,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"')
1674 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?rowid=".
$object->id, $langs->trans(
"CreateDolibarrThirdParty"), $langs->trans(
"ConfirmCreateThirdParty"),
"confirm_create_thirdparty", $formquestion,
'yes');
1678 if ($action ==
'valid') {
1679 $langs->load(
"mails");
1682 $adht->fetch(
$object->typeid);
1688 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1691 $outputlangs =
new Translate(
'', $conf);
1692 $outputlangs->setDefaultLang(!empty(
$object->default_lang) ?
$object->default_lang : (empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang));
1694 $outputlangs->loadLangs(array(
"main",
"members",
"companies",
"install",
"other"));
1696 $arraydefaultmessage =
null;
1699 if (!empty($labeltouse)) {
1700 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1703 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1704 $subject = (string) $arraydefaultmessage->topic;
1705 $msg = (string) $arraydefaultmessage->content;
1708 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
1713 $tmp = $langs->trans(
"SendingAnEMailToMember");
1714 $tmp .=
'<br>'.$langs->trans(
"MailFrom").
': <b>'.
getDolGlobalString(
'ADHERENT_MAIL_FROM', $conf->email_from).
'</b>, ';
1715 $tmp .=
'<br>'.$langs->trans(
"MailRecipient").
': <b>'.
$object->email.
'</b>';
1717 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM', $conf->email_from).
'<br>'.
"\n";
1718 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1719 $helpcontent .=
'<b>'.$langs->trans(
"Subject").
'</b>:<br>'.
"\n";
1720 $helpcontent .= $subjecttosend.
"\n";
1721 $helpcontent .=
"<br>";
1722 $helpcontent .=
'<b>'.$langs->trans(
"Content").
'</b>:<br>';
1725 $label = $form->textwithpicto($tmp, $helpcontent, 1,
'help');
1728 $formquestion = array();
1730 $formquestion[] = array(
'type' =>
'checkbox',
'name' =>
'send_mail',
'label' => $label,
'value' => (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
true : false));
1733 $formquestion[] = array(
'type' =>
'other',
'label' => $langs->transnoentitiesnoconv(
"SynchroMailManEnabled"),
'value' =>
'');
1736 $formquestion[] = array(
'type' =>
'other',
'label' => $langs->transnoentitiesnoconv(
"SynchroSpipEnabled"),
'value' =>
'');
1738 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
"ValidateMember"), $langs->trans(
"ConfirmValidateMember"),
"confirm_valid", $formquestion,
'yes', 1, 250);
1742 if ($action ==
'resiliate') {
1743 $langs->load(
"mails");
1746 $adht->fetch(
$object->typeid);
1752 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1755 $outputlangs =
new Translate(
'', $conf);
1756 $outputlangs->setDefaultLang(!empty(
$object->default_lang) ?
$object->default_lang : (empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang));
1758 $outputlangs->loadLangs(array(
"main",
"members"));
1760 $arraydefaultmessage =
null;
1763 if (!empty($labeltouse)) {
1764 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1767 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1768 $subject = (string) $arraydefaultmessage->topic;
1769 $msg = (string) $arraydefaultmessage->content;
1772 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
1777 $tmp = $langs->trans(
"SendingAnEMailToMember");
1778 $tmp .=
'<br>('.$langs->trans(
"MailFrom").
': <b>'.
getDolGlobalString(
'ADHERENT_MAIL_FROM', $conf->email_from).
'</b>, ';
1779 $tmp .= $langs->trans(
"MailRecipient").
': <b>'.
$object->email.
'</b>)';
1781 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM', $conf->email_from).
'<br>'.
"\n";
1782 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1783 $helpcontent .=
'<b>'.$langs->trans(
"Subject").
'</b>:<br>'.
"\n";
1784 $helpcontent .= $subjecttosend.
"\n";
1785 $helpcontent .=
"<br>";
1786 $helpcontent .=
'<b>'.$langs->trans(
"Content").
'</b>:<br>';
1789 $label = $form->textwithpicto($tmp, $helpcontent, 1,
'help');
1792 $formquestion = array();
1794 $formquestion[] = array(
'type' =>
'checkbox',
'name' =>
'send_mail',
'label' => $label,
'value' => (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
'true' :
'false'));
1797 $formquestion[] = array(
'type' =>
'hidden',
'name' =>
'backtopage',
'value' => ($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]));
1799 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
"ResiliateMember"), $langs->trans(
"ConfirmResiliateMember"),
"confirm_resiliate", $formquestion,
'no', 1, 240);
1803 if ($action ==
'exclude') {
1804 $langs->load(
"mails");
1807 $adht->fetch(
$object->typeid);
1813 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1816 $outputlangs =
new Translate(
'', $conf);
1817 $outputlangs->setDefaultLang(!empty(
$object->default_lang) ?
$object->default_lang : (empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang));
1819 $outputlangs->loadLangs(array(
"main",
"members"));
1821 $arraydefaultmessage =
null;
1824 if (!empty($labeltouse)) {
1825 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1828 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1829 $subject = (string) $arraydefaultmessage->topic;
1830 $msg = (string) $arraydefaultmessage->content;
1833 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
1838 $tmp = $langs->trans(
"SendingAnEMailToMember");
1839 $tmp .=
'<br>('.$langs->trans(
"MailFrom").
': <b>'.
getDolGlobalString(
'ADHERENT_MAIL_FROM', $conf->email_from).
'</b>, ';
1840 $tmp .= $langs->trans(
"MailRecipient").
': <b>'.
$object->email.
'</b>)';
1842 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM', $conf->email_from).
'<br>'.
"\n";
1843 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1844 $helpcontent .=
'<b>'.$langs->trans(
"Subject").
'</b>:<br>'.
"\n";
1845 $helpcontent .= $subjecttosend.
"\n";
1846 $helpcontent .=
"<br>";
1847 $helpcontent .=
'<b>'.$langs->trans(
"Content").
'</b>:<br>';
1850 $label = $form->textwithpicto($tmp, $helpcontent, 1,
'help');
1853 $formquestion = array();
1855 $formquestion[] = array(
'type' =>
'checkbox',
'name' =>
'send_mail',
'label' => $label,
'value' => (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
'true' :
'false'));
1858 $formquestion[] = array(
'type' =>
'hidden',
'name' =>
'backtopage',
'value' => ($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]));
1860 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
"ExcludeMember"), $langs->trans(
"ConfirmExcludeMember"),
"confirm_exclude", $formquestion,
'no', 1, 240);
1864 if ($action ==
'delete') {
1865 $formquestion = array();
1867 $formquestion[] = array(
'type' =>
'hidden',
'name' =>
'backtopage',
'value' => ($backtopage !=
'1' ? $backtopage : $_SERVER[
"HTTP_REFERER"]));
1869 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
"DeleteMember"), $langs->trans(
"ConfirmDeleteMember"),
"confirm_delete", $formquestion,
'no', 1);
1873 if ($action ==
'add_spip') {
1874 print $form->formconfirm(
"card.php?rowid=".$id, $langs->trans(
'AddIntoSpip'), $langs->trans(
'AddIntoSpipConfirmation'),
'confirm_add_spip');
1878 if ($action ==
'merge') {
1879 $formquestion = array(
1881 'name' =>
'member_origin',
1882 'label' => $langs->trans(
'MergeOriginMember'),
1884 'value' => $form->selectMembers(
'',
'member_origin',
'', 0, 1,
'', 0, array(), 0,
'SelectMember', 0,
'minwidth200', array(), 1, array(
$object->id))
1888 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?id=".
$object->id, $langs->trans(
"MergeMembers"), $langs->trans(
"ConfirmMergeMembers"),
"confirm_merge", $formquestion,
'no', 1, 300);
1892 if ($action ==
'del_spip') {
1893 print $form->formconfirm(
"card.php?rowid=$id", $langs->trans(
'DeleteIntoSpip'), $langs->trans(
'DeleteIntoSpipConfirmation'),
'confirm_del_spip');
1904 $linkback =
'<a href="'.dolBuildUrl(DOL_URL_ROOT.
'/adherents/list.php', [
'restore_lastsearch_values' => 1]).
'">'.$langs->trans(
"BackToList").
'</a>';
1906 $morehtmlref =
'<a href="'.dolBuildUrl(DOL_URL_ROOT.
'/adherents/vcard.php', [
'id' =>
$object->id]).
'" class="refid valignmiddle">';
1907 $morehtmlref .=
img_picto($langs->trans(
"Download").
' '.$langs->trans(
"VCard"),
'vcard',
'class="valignmiddle marginleftonly paddingrightonly"');
1908 $morehtmlref .=
'</a>';
1911 dol_banner_tab($object,
'rowid', $linkback, 1,
'rowid',
'ref', $morehtmlref);
1913 print
'<div class="fichecenter">';
1914 print
'<div class="fichehalfleft">';
1916 print
'<div class="underbanner clearboth"></div>';
1917 print
'<table class="border tableforfield centpercent">';
1921 print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"Login").
' / '.$langs->trans(
"Id").
'</td><td class="valeur">'.
dol_escape_htmltag(
$object->login).
'</td></tr>';
1925 print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"Type").
'</td>';
1926 print
'<td class="valeur">'.$adht->getNomUrl(1).
"</td></tr>\n";
1929 print
'<tr><td>'.$langs->trans(
"MemberNature").
'</td>';
1930 print
'<td class="valeur">'.$object->getmorphylib(
'', 1).
'</td>';
1937 print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td class="valeur">'.
$object->getCivilityLabel().
'</td>';
1942 print
'<tr><td>'.$langs->trans(
"Password").
'</td><td>';
1944 print preg_replace(
'/./i',
'*',
$object->pass);
1947 print
'<!-- '.$langs->trans(
"Crypted").
': '.
$object->pass_indatabase_crypted.
' -->';
1949 print
'<span class="opacitymedium">'.$langs->trans(
"Hidden").
'</span>';
1951 if (!empty(
$object->pass_indatabase) && empty(
$object->user_id)) {
1952 $langs->load(
"errors");
1953 $htmltext = $langs->trans(
"WarningPasswordSetWithNoAccount");
1954 print
' '.$form->textwithpicto(
'', $htmltext, 1,
'warning');
1960 print
'<tr><td>'.$langs->trans(
"SubscriptionEndDate").
'</td><td class="valeur">';
1964 print
" ".img_warning($langs->trans(
"Late"));
1967 if (
$object->need_subscription == 0) {
1968 print $langs->trans(
"SubscriptionNotNeeded");
1969 } elseif (!$adht->subscription) {
1970 print $langs->trans(
"SubscriptionNotRecorded");
1972 print
" ".img_warning($langs->trans(
"Late"));
1975 print $langs->trans(
"SubscriptionNotReceived");
1977 print
" ".img_warning($langs->trans(
"Late"));
1987 print
'<div class="fichehalfright">';
1988 print
'<div class="underbanner clearboth"></div>';
1990 print
'<table class="border tableforfield centpercent">';
1993 if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
1994 print
'<tr><td>'.$langs->trans(
"Categories").
'</td>';
1996 print $form->showCategories(
$object->id, Categorie::TYPE_MEMBER, 1);
2001 print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"DateOfBirth").
'</td><td class="valeur">'.
dol_print_date(
$object->birth,
'day').
'</td></tr>';
2005 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
2006 print
'<tr><td>'.$langs->trans(
"DefaultLang").
'</td><td>';
2009 $langs->load(
"languages");
2010 $labellang = (
$object->default_lang ? $langs->trans(
'Language_'.
$object->default_lang) :
'');
2018 $htmltext = $langs->trans(
"Public",
getDolGlobalString(
'MAIN_INFO_SOCIETE_NOM'), $linkofpubliclist);
2019 print $form->textwithpicto($langs->trans(
"MembershipPublic"), $htmltext, 1,
'help',
'', 0, 3,
'membershippublic');
2020 print
'</td><td class="valeur">'.yn(
$object->public).
'</td></tr>';
2023 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
2028 $editenable = $user->hasRight(
'adherent',
'creer');
2029 print $form->editfieldkey(
'LinkedToDolibarrThirdParty',
'thirdparty',
'', $object, $editenable);
2030 print
'</td><td colspan="2" class="valeur">';
2031 if ($action ==
'editthirdparty') {
2032 $htmlname =
'socid';
2033 print
'<form method="POST" action="'.$_SERVER[
'PHP_SELF'].
'" name="form'.$htmlname.
'">';
2034 print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
2035 print
'<input type="hidden" name="action" value="set'.$htmlname.
'">';
2036 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2037 print
'<table class="nobordernopadding">';
2039 print $form->select_company(
$object->socid,
'socid',
'', 1);
2041 print
'<td class="left"><input type="submit" class="button button-edit smallpaddingimp" value="'.$langs->trans(
"Modify").
'"></td>';
2042 print
'</tr></table></form>';
2046 $result = $company->fetch(
$object->socid);
2047 print $company->getNomUrl(1);
2050 $tmparray = $company->getOutstandingBills(
'customer');
2051 if (!empty($tmparray[
'refs'])) {
2052 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']).
')';
2057 print
'<span class="opacitymedium">'.$langs->trans(
"NoThirdPartyAssociatedToMember").
'</span>';
2065 $editenable = $user->hasRight(
'adherent',
'creer') && $user->hasRight(
'user',
'user',
'creer');
2066 print $form->editfieldkey(
'LinkedToDolibarrUser',
'login',
'', $object, (
int) $editenable);
2067 print
'</td><td colspan="2" class="valeur">';
2068 if ($action ==
'editlogin') {
2069 $form->form_users($_SERVER[
'PHP_SELF'].
'?rowid='.
$object->id, (
string)
$object->user_id,
'userid', array());
2072 $linkeduser =
new User($db);
2073 $linkeduser->fetch(
$object->user_id);
2074 print $linkeduser->getNomUrl(-1);
2076 print
'<span class="opacitymedium">'.$langs->trans(
"NoDolibarrAccess").
'</span>';
2083 print
"</div></div>\n";
2084 print
'<div class="clearboth"></div>';
2093 print
'<div class="tabsAction">';
2095 $parameters = array();
2096 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
2097 if (empty($reshook)) {
2098 if ($action !=
'editlogin' && $action !=
'editthirdparty') {
2100 if (empty($user->socid)) {
2102 print
dolGetButtonAction(
'', $langs->trans(
'SendMail'),
'email',
dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'presend',
'mode' =>
'init'],
true).
'#formmailbeforetitle',
'');
2121 if ($user->hasRight(
'adherent',
'creer')) {
2122 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'edit'],
true).
'">'.$langs->trans(
"Modify").
'</a>'.
"\n";
2124 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Modify").
'</span>'.
"\n";
2129 if ($user->hasRight(
'adherent',
'creer')) {
2130 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'valid'],
true).
'">'.$langs->trans(
"Validate").
'</a>'.
"\n";
2132 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Validate").
'</span>'.
"\n";
2138 if ($user->hasRight(
'adherent',
'creer')) {
2139 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'valid'],
true).
'">'.$langs->trans(
"Reenable").
"</a>\n";
2141 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Reenable").
'</span>'.
"\n";
2147 if ($user->hasRight(
'adherent',
'supprimer')) {
2148 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'resiliate'],
true).
'">'.$langs->trans(
"Resiliate").
"</a></span>\n";
2150 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Resiliate").
'</span>'.
"\n";
2156 if ($user->hasRight(
'adherent',
'supprimer')) {
2157 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'exclude'],
true).
'">'.$langs->trans(
"Exclude").
"</a></span>\n";
2159 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Exclude").
'</span>'.
"\n";
2165 if ($user->hasRight(
'societe',
'creer')) {
2167 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";
2169 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"ValidateBefore")).
'">'.$langs->trans(
"CreateDolibarrThirdParty").
'</a>'.
"\n";
2172 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"CreateDolibarrThirdParty").
'</span>'.
"\n";
2177 if (!$user->socid && !
$object->user_id) {
2178 if ($user->hasRight(
'user',
'user',
'creer')) {
2180 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";
2182 print
'<a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"ValidateBefore")).
'">'.$langs->trans(
"CreateDolibarrLogin").
'</a>'.
"\n";
2185 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"CreateDolibarrLogin").
'</span>'.
"\n";
2191 $isinspip = $mailmanspip->is_in_spip($object);
2193 if ($isinspip == 1) {
2194 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'del_spip'],
true).
'">'.$langs->trans(
"DeleteIntoSpip").
'</a>'.
"\n";
2196 if ($isinspip == 0) {
2197 print
'<a class="butAction" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'add_spip'],
true).
'">'.$langs->trans(
"AddIntoSpip").
'</a>'.
"\n";
2202 print
dolGetButtonAction($langs->trans(
'MergeMembers'), $langs->trans(
'Merge'),
'danger',
dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'merge'],
true),
'', $user->hasRight(
'adherent',
'supprimer'));
2205 if ($user->hasRight(
'adherent',
'supprimer')) {
2206 print
'<a class="butActionDelete" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], [
'id' =>
$object->id,
'action' =>
'delete'],
true).
'">'.$langs->trans(
"Delete").
'</a>'.
"\n";
2208 print
'<span class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"NotEnoughPermissions")).
'">'.$langs->trans(
"Delete").
'</span>'.
"\n";
2214 if ($isinspip == -1) {
2215 print
'<br><br><span class="error">'.$langs->trans(
'SPIPConnectionFailed').
': '.$mailmanspip->error.
'</span>';
2220 if (
GETPOST(
'modelselected')) {
2221 $action =
'presend';
2224 if ($action !=
'presend') {
2225 print
'<div class="fichecenter"><div class="fichehalfleft">';
2226 print
'<a name="builddoc"></a>';
2230 $filedir = $conf->member->dir_output.
'/'.
get_exdir(0, 0, 0, 1, $object,
'member');
2231 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.
$object->id;
2232 $genallowed = $user->hasRight(
'adherent',
'lire');
2233 $delallowed = $user->hasRight(
'adherent',
'creer');
2235 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);
2236 $somethingshown = $formfile->numoffiles;
2244 include_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
2245 $validpaymentmethod = getValidOnlinePaymentMethods(
'');
2246 $useonlinepayment = count($validpaymentmethod);
2248 if ($useonlinepayment) {
2250 if (empty($amount)) {
2251 $amount = max($adht->amount,
$object->first_subscription_amount,
$object->last_subscription_amount);
2253 if (empty($amount)) {
2256 require_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
2257 print showOnlinePaymentUrl(
'membersubscription',
$object->ref, $amount);
2260 print
'</div><div class="fichehalfright">';
2264 $morehtmlcenter =
'';
2265 $messagingUrl =
dolBuildUrl(DOL_URL_ROOT.
'/adherents/messaging.php', [
'id' =>
$object->id]);
2266 $morehtmlcenter .=
dolGetButtonTitle($langs->trans(
'ShowAsConversation'),
'',
'fa fa-comments imgforviewmode', $messagingUrl,
'', 1);
2270 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formactions.class.php';
2272 $somethingshown = $formactions->showactions($object,
$object->element, $socid, 1,
'listactions', $MAXEVENT,
'', $morehtmlcenter);
2274 print
'</div></div>';
2278 $modelmail =
'member';
2279 $defaulttopic =
'CardContent';
2280 $diroutput = $conf->member->dir_output;
2281 $trackid =
'mem'.$object->id;
2283 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)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dolBuildUrl($url, $params=[], $addtoken=false)
Return path of url.
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.
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.
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.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
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.
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='')
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.
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.
getMaxFileSizeArray()
Return the max allowed for file upload.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.