diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php
index 48461c64b02..270430c899f 100644
--- a/htdocs/adherents/card.php
+++ b/htdocs/adherents/card.php
@@ -307,7 +307,7 @@ if (empty($reshook))
$object->phone = trim($_POST["phone"]);
$object->phone_perso = trim($_POST["phone_perso"]);
$object->phone_mobile= trim($_POST["phone_mobile"]);
- $object->email = trim($_POST["email"]);
+ $object->email = trim($_POST["member_email"]);
$object->skype = trim($_POST["skype"]);
$object->birth = $birthdate;
@@ -825,6 +825,16 @@ else
print '
'.$langs->trans("Address").' ';
diff --git a/htdocs/adherents/card.php.bak b/htdocs/adherents/card.php.bak
new file mode 100644
index 00000000000..48461c64b02
--- /dev/null
+++ b/htdocs/adherents/card.php.bak
@@ -0,0 +1,1787 @@
+
+ * Copyright (C) 2002-2003 Jean-Louis Bergamo
+ * Copyright (C) 2004-2012 Laurent Destailleur
+ * Copyright (C) 2005-2012 Regis Houssin
+ * Copyright (C) 2012 Marcos GarcĂa
+ * Copyright (C) 2012-2016 Philippe Grand
+ * Copyright (C) 2015-2016 Alexandre Spangaro
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/**
+ * \file htdocs/adherents/card.php
+ * \ingroup member
+ * \brief Page of member
+ */
+
+require '../main.inc.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/member.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
+require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php';
+require_once DOL_DOCUMENT_ROOT.'/adherents/class/subscription.class.php';
+require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
+require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
+
+$langs->load("companies");
+$langs->load("bills");
+$langs->load("members");
+$langs->load("users");
+$langs->load('other');
+
+$action=GETPOST('action','alpha');
+$cancel=GETPOST('cancel','alpha');
+$backtopage=GETPOST('backtopage','alpha');
+$confirm=GETPOST('confirm','alpha');
+$rowid=GETPOST('rowid','int');
+$id=GETPOST('id')?GETPOST('id','int'):$rowid;
+$typeid=GETPOST('typeid','int');
+$userid=GETPOST('userid','int');
+$socid=GETPOST('socid','int');
+
+if (! empty($conf->mailmanspip->enabled))
+{
+ include_once DOL_DOCUMENT_ROOT.'/mailmanspip/class/mailmanspip.class.php';
+
+ $langs->load('mailmanspip');
+
+ $mailmanspip = new MailmanSpip($db);
+}
+
+$object = new Adherent($db);
+$extrafields = new ExtraFields($db);
+
+// fetch optionals attributes and labels
+$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
+
+// Get object canvas (By default, this is not defined, so standard usage of dolibarr)
+$object->getCanvas($id);
+$canvas = $object->canvas?$object->canvas:GETPOST("canvas");
+$objcanvas=null;
+if (! empty($canvas))
+{
+ require_once DOL_DOCUMENT_ROOT.'/core/class/canvas.class.php';
+ $objcanvas = new Canvas($db, $action);
+ $objcanvas->getCanvas('adherent', 'membercard', $canvas);
+}
+
+// Security check
+$result=restrictedArea($user, 'adherent', $id, '', '', 'fk_soc', 'rowid', $objcanvas);
+
+if ($id > 0)
+{
+ // Load member
+ $result = $object->fetch($id);
+
+ // Define variables to know what current user can do on users
+ $canadduser=($user->admin || $user->rights->user->user->creer);
+ // Define variables to know what current user can do on properties of user linked to edited member
+ if ($object->user_id)
+ {
+ // $ User is the user who edits, $ object->user_id is the id of the related user in the edited member
+ $caneditfielduser=((($user->id == $object->user_id) && $user->rights->user->self->creer)
+ || (($user->id != $object->user_id) && $user->rights->user->user->creer));
+ $caneditpassworduser=((($user->id == $object->user_id) && $user->rights->user->self->password)
+ || (($user->id != $object->user_id) && $user->rights->user->user->password));
+ }
+}
+
+// Define variables to determine what the current user can do on the members
+$canaddmember=$user->rights->adherent->creer;
+// Define variables to determine what the current user can do on the properties of a member
+if ($id)
+{
+ $caneditfieldmember=$user->rights->adherent->creer;
+}
+
+// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
+$hookmanager->initHooks(array('membercard','globalcard'));
+
+
+
+/*
+ * Actions
+ */
+
+if ($cancel) $action='';
+
+$parameters=array('id'=>$id, 'rowid'=>$id, 'objcanvas'=>$objcanvas);
+$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
+if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
+
+if (empty($reshook))
+{
+ if ($action == 'setuserid' && ($user->rights->user->self->creer || $user->rights->user->user->creer))
+ {
+ $error=0;
+ if (empty($user->rights->user->user->creer)) // If can edit only itself user, we can link to itself only
+ {
+ if ($userid != $user->id && $userid != $object->user_id)
+ {
+ $error++;
+ setEventMessages($langs->trans("ErrorUserPermissionAllowsToLinksToItselfOnly"), null, 'errors');
+ }
+ }
+
+ if (! $error)
+ {
+ if ($userid != $object->user_id) // If link differs from currently in database
+ {
+ $result=$object->setUserId($userid);
+ if ($result < 0) dol_print_error($object->db,$object->error);
+ $action='';
+ }
+ }
+ }
+
+ if ($action == 'setsocid')
+ {
+ $error=0;
+ if (! $error)
+ {
+ if ($socid != $object->fk_soc) // If link differs from currently in database
+ {
+ $sql ="SELECT rowid FROM ".MAIN_DB_PREFIX."adherent";
+ $sql.=" WHERE fk_soc = '".$socid."'";
+ $sql.=" AND entity = ".$conf->entity;
+ $resql = $db->query($sql);
+ if ($resql)
+ {
+ $obj = $db->fetch_object($resql);
+ if ($obj && $obj->rowid > 0)
+ {
+ $othermember=new Adherent($db);
+ $othermember->fetch($obj->rowid);
+ $thirdparty=new Societe($db);
+ $thirdparty->fetch($socid);
+ $error++;
+ setEventMessages($langs->trans("ErrorMemberIsAlreadyLinkedToThisThirdParty",$othermember->getFullName($langs),$othermember->login,$thirdparty->name), null, 'errors');
+ }
+ }
+
+ if (! $error)
+ {
+ $result=$object->setThirdPartyId($socid);
+ if ($result < 0) dol_print_error($object->db,$object->error);
+ $action='';
+ }
+ }
+ }
+ }
+
+ // Create user from a member
+ if ($action == 'confirm_create_user' && $confirm == 'yes' && $user->rights->user->user->creer)
+ {
+ if ($result > 0)
+ {
+ // Creation user
+ $nuser = new User($db);
+ $result=$nuser->create_from_member($object,GETPOST('login'));
+
+ if ($result < 0)
+ {
+ $langs->load("errors");
+ setEventMessages($langs->trans($nuser->error), null, 'errors');
+ }
+ }
+ else
+ {
+ setEventMessages($object->errors, $object->error, 'errors');
+ }
+ }
+
+ // Create third party from a member
+ if ($action == 'confirm_create_thirdparty' && $confirm == 'yes' && $user->rights->societe->creer)
+ {
+ if ($result > 0)
+ {
+ // User creation
+ $company = new Societe($db);
+ $result=$company->create_from_member($object,GETPOST('companyname'));
+
+ if ($result < 0)
+ {
+ $langs->load("errors");
+ setEventMessages($langs->trans($company->error), null, 'errors');
+ setEventMessages($company->error, $company->errors, 'errors');
+ }
+ }
+ else
+ {
+ setEventMessages($object->error, $object->errors, 'errors');
+ }
+ }
+
+ if ($action == 'confirm_sendinfo' && $confirm == 'yes')
+ {
+ if ($object->email)
+ {
+ $from=$conf->email_from;
+ if (! empty($conf->global->ADHERENT_MAIL_FROM)) $from=$conf->global->ADHERENT_MAIL_FROM;
+
+ $result=$object->send_an_email($langs->transnoentitiesnoconv("ThisIsContentOfYourCard")."\n\n%INFOS%\n\n",$langs->transnoentitiesnoconv("CardContent"));
+
+ $langs->load("mails");
+ setEventMessages($langs->trans("MailSuccessfulySent", $from, $object->email), null, 'mesgs');
+ }
+ }
+
+ if ($action == 'update' && ! $cancel && $user->rights->adherent->creer)
+ {
+ require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
+
+ $birthdate='';
+ if (isset($_POST["birthday"]) && $_POST["birthday"]
+ && isset($_POST["birthmonth"]) && $_POST["birthmonth"]
+ && isset($_POST["birthyear"]) && $_POST["birthyear"])
+ {
+ $birthdate=dol_mktime(12, 0, 0, $_POST["birthmonth"], $_POST["birthday"], $_POST["birthyear"]);
+ }
+ $lastname=$_POST["lastname"];
+ $firstname=$_POST["firstname"];
+ $societe=$_POST["societe"];
+ $morphy=$_POST["morphy"];
+ $login=$_POST["login"];
+ if ($morphy != 'mor' && empty($lastname)) {
+ $error++;
+ $langs->load("errors");
+ setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Lastname")), null, 'errors');
+ }
+ if ($morphy != 'mor' && (!isset($firstname) || $firstname=='')) {
+ $error++;
+ $langs->load("errors");
+ setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Firstname")), null, 'errors');
+ }
+ if ($morphy == 'mor' && empty($societe)) {
+ $error++;
+ $langs->load("errors");
+ setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Company")), null, 'errors');
+ }
+ // Test si le login existe deja
+ if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
+ {
+ if (empty($login)) {
+ $error++;
+ setEventMessages($langs->trans("ErrorFieldRequired", $langs->trans("Login")), null, 'errors');
+ }
+ }
+ // Create new object
+ if ($result > 0 && ! $error)
+ {
+ $object->oldcopy = clone $object;
+
+ // Change values
+ $object->civility_id = trim($_POST["civility_id"]);
+ $object->firstname = trim($_POST["firstname"]);
+ $object->lastname = trim($_POST["lastname"]);
+ $object->login = trim($_POST["login"]);
+ $object->pass = trim($_POST["pass"]);
+
+ $object->societe = trim($_POST["societe"]);
+ $object->company = trim($_POST["societe"]);
+
+ $object->address = trim($_POST["address"]);
+ $object->zip = trim($_POST["zipcode"]);
+ $object->town = trim($_POST["town"]);
+ $object->state_id = $_POST["state_id"];
+ $object->country_id = $_POST["country_id"];
+
+ $object->phone = trim($_POST["phone"]);
+ $object->phone_perso = trim($_POST["phone_perso"]);
+ $object->phone_mobile= trim($_POST["phone_mobile"]);
+ $object->email = trim($_POST["email"]);
+ $object->skype = trim($_POST["skype"]);
+ $object->birth = $birthdate;
+
+ $object->typeid = $_POST["typeid"];
+ //$object->note = trim($_POST["comment"]);
+ $object->morphy = $_POST["morphy"];
+
+ if (GETPOST('deletephoto')) $object->photo='';
+ elseif (! empty($_FILES['photo']['name'])) $object->photo = dol_sanitizeFileName($_FILES['photo']['name']);
+
+ // Get status and public property
+ $object->statut = $_POST["statut"];
+ $object->public = $_POST["public"];
+
+ // Fill array 'array_options' with data from add form
+ $ret = $extrafields->setOptionalsFromPost($extralabels,$object);
+ if ($ret < 0) $error++;
+
+ // Check if we need to also synchronize user information
+ $nosyncuser=0;
+ if ($object->user_id) // If linked to a user
+ {
+ if ($user->id != $object->user_id && empty($user->rights->user->user->creer)) $nosyncuser=1; // Disable synchronizing
+ }
+
+ // Check if we need to also synchronize password information
+ $nosyncuserpass=0;
+ if ($object->user_id) // If linked to a user
+ {
+ if ($user->id != $object->user_id && empty($user->rights->user->user->password)) $nosyncuserpass=1; // Disable synchronizing
+ }
+
+ $result=$object->update($user,0,$nosyncuser,$nosyncuserpass);
+
+ if ($result >= 0 && ! count($object->errors))
+ {
+ $categories = GETPOST('memcats', 'array');
+ $object->setCategories($categories);
+
+ // Logo/Photo save
+ $dir= $conf->adherent->dir_output . '/' . get_exdir(0,0,0,1,$object,'member').'/photos';
+ $file_OK = is_uploaded_file($_FILES['photo']['tmp_name']);
+ if ($file_OK)
+ {
+ if (GETPOST('deletephoto'))
+ {
+ require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
+ $fileimg=$conf->adherent->dir_output.'/'.get_exdir(0,0,0,1,$object,'member').'/photos/'.$object->photo;
+ $dirthumbs=$conf->adherent->dir_output.'/'.get_exdir(0,0,0,1,$object,'member').'/photos/thumbs';
+ dol_delete_file($fileimg);
+ dol_delete_dir_recursive($dirthumbs);
+ }
+
+ if (image_format_supported($_FILES['photo']['name']) > 0)
+ {
+ dol_mkdir($dir);
+
+ if (@is_dir($dir))
+ {
+ $newfile=$dir.'/'.dol_sanitizeFileName($_FILES['photo']['name']);
+ if (! dol_move_uploaded_file($_FILES['photo']['tmp_name'],$newfile,1,0,$_FILES['photo']['error']) > 0)
+ {
+ setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors');
+ }
+ else
+ {
+ // Create thumbs
+ $object->addThumbs($newfile);
+ }
+ }
+ }
+ else
+ {
+ setEventMessages("ErrorBadImageFormat", null, 'errors');
+ }
+ }
+ else
+ {
+ switch($_FILES['photo']['error'])
+ {
+ case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini
+ case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form
+ $errors[] = "ErrorFileSizeTooLarge";
+ break;
+ case 3: //uploaded file was only partially uploaded
+ $errors[] = "ErrorFilePartiallyUploaded";
+ break;
+ }
+ }
+
+ $rowid=$object->id;
+ $id=$object->id;
+ $action='';
+
+ if (! empty($backtopage))
+ {
+ header("Location: ".$backtopage);
+ exit;
+ }
+ }
+ else
+ {
+ setEventMessages($object->error, $object->errors, 'errors');
+ $action='';
+ }
+ }
+ else
+ {
+ $action='edit';
+ }
+ }
+
+ if ($action == 'add' && $user->rights->adherent->creer)
+ {
+ if ($canvas) $object->canvas=$canvas;
+ $birthdate='';
+ if (isset($_POST["birthday"]) && $_POST["birthday"]
+ && isset($_POST["birthmonth"]) && $_POST["birthmonth"]
+ && isset($_POST["birthyear"]) && $_POST["birthyear"])
+ {
+ $birthdate=dol_mktime(12, 0, 0, $_POST["birthmonth"], $_POST["birthday"], $_POST["birthyear"]);
+ }
+ $datesubscription='';
+ if (isset($_POST["reday"]) && isset($_POST["remonth"]) && isset($_POST["reyear"]))
+ {
+ $datesubscription=dol_mktime(12, 0, 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]);
+ }
+
+ $typeid=$_POST["typeid"];
+ $civility_id=$_POST["civility_id"];
+ $lastname=$_POST["lastname"];
+ $firstname=$_POST["firstname"];
+ $societe=$_POST["societe"];
+ $address=$_POST["address"];
+ $zip=$_POST["zipcode"];
+ $town=$_POST["town"];
+ $state_id=$_POST["state_id"];
+ $country_id=$_POST["country_id"];
+
+ $phone=$_POST["phone"];
+ $phone_perso=$_POST["phone_perso"];
+ $phone_mobile=$_POST["phone_mobile"];
+ $skype=$_POST["member_skype"];
+ $email=$_POST["member_email"];
+ $login=$_POST["member_login"];
+ $pass=$_POST["password"];
+ $photo=$_POST["photo"];
+ //$comment=$_POST["comment"];
+ $morphy=$_POST["morphy"];
+ $subscription=$_POST["subscription"];
+ $public=$_POST["public"];
+
+ $userid=$_POST["userid"];
+ $socid=$_POST["socid"];
+
+ $object->civility_id = $civility_id;
+ $object->firstname = $firstname;
+ $object->lastname = $lastname;
+ $object->societe = $societe;
+ $object->address = $address;
+ $object->zip = $zip;
+ $object->town = $town;
+ $object->state_id = $state_id;
+ $object->country_id = $country_id;
+ $object->phone = $phone;
+ $object->phone_perso = $phone_perso;
+ $object->phone_mobile= $phone_mobile;
+ $object->skype = $skype;
+ $object->email = $email;
+ $object->login = $login;
+ $object->pass = $pass;
+ $object->birth = $birthdate;
+ $object->photo = $photo;
+ $object->typeid = $typeid;
+ //$object->note = $comment;
+ $object->morphy = $morphy;
+ $object->user_id = $userid;
+ $object->fk_soc = $socid;
+ $object->public = $public;
+
+ // Fill array 'array_options' with data from add form
+ $ret = $extrafields->setOptionalsFromPost($extralabels,$object);
+ if ($ret < 0) $error++;
+
+ // Check parameters
+ if (empty($morphy) || $morphy == "-1") {
+ $error++;
+ setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Nature")), null, 'errors');
+ }
+ // Tests if the login already exists
+ if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
+ {
+ if (empty($login)) {
+ $error++;
+ setEventMessages($langs->trans("ErrorFieldRequired", $langs->trans("Login")), null, 'errors');
+ }
+ else {
+ $sql = "SELECT login FROM ".MAIN_DB_PREFIX."adherent WHERE login='".$db->escape($login)."'";
+ $result = $db->query($sql);
+ if ($result) {
+ $num = $db->num_rows($result);
+ }
+ if ($num) {
+ $error++;
+ $langs->load("errors");
+ setEventMessages($langs->trans("ErrorLoginAlreadyExists",$login), null, 'errors');
+ }
+ }
+ if (empty($pass)) {
+ $error++;
+ setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Password")), null, 'errors');
+ }
+ }
+ if ($morphy == 'mor' && empty($societe)) {
+ $error++;
+ $langs->load("errors");
+ setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Company")), null, 'errors');
+ }
+ if ($morphy != 'mor' && empty($lastname)) {
+ $error++;
+ $langs->load("errors");
+ setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Lastname")), null, 'errors');
+ }
+ if ($morphy != 'mor' && (!isset($firstname) || $firstname=='')) {
+ $error++;
+ $langs->load("errors");
+ setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Firstname")), null, 'errors');
+ }
+ if (! ($typeid > 0)) { // Keep () before !
+ $error++;
+ setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), null, 'errors');
+ }
+ if ($conf->global->ADHERENT_MAIL_REQUIRED && ! isValidEMail($email)) {
+ $error++;
+ $langs->load("errors");
+ setEventMessages($langs->trans("ErrorBadEMail",$email), null, 'errors');
+ }
+ $public=0;
+ if (isset($public)) $public=1;
+
+ if (! $error)
+ {
+ $db->begin();
+
+ // Email about right and login does not exist
+ $result=$object->create($user);
+ if ($result > 0)
+ {
+ // Foundation categories
+ $memcats = GETPOST('memcats', 'array');
+ $object->setCategories($memcats);
+
+ $db->commit();
+ $rowid=$object->id;
+ $id=$object->id;
+ $action='';
+ }
+ else
+ {
+ $db->rollback();
+
+ if ($object->error) {
+ setEventMessages($object->error, $object->errors, 'errors');
+ } else {
+ setEventMessages($object->error, $object->errors, 'errors');
+ }
+
+ $action = 'create';
+ }
+ }
+ else {
+ $action = 'create';
+ }
+ }
+
+ if ($user->rights->adherent->supprimer && $action == 'confirm_delete' && $confirm == 'yes')
+ {
+ $result=$object->delete($id);
+ if ($result > 0)
+ {
+ if (! empty($backtopage))
+ {
+ header("Location: ".$backtopage);
+ exit;
+ }
+ else
+ {
+ header("Location: list.php");
+ exit;
+ }
+ }
+ else
+ {
+ $errmesg=$object->error;
+ }
+ }
+
+ if ($user->rights->adherent->creer && $action == 'confirm_valid' && $confirm == 'yes')
+ {
+ $error=0;
+
+ $db->begin();
+
+ $adht = new AdherentType($db);
+ $adht->fetch($object->typeid);
+
+ $result=$object->validate($user);
+
+ if ($result >= 0 && ! count($object->errors))
+ {
+ // Send confirmation email (according to parameters of member type. Otherwise generic)
+ if ($object->email && GETPOST("send_mail"))
+ {
+ $result=$object->send_an_email($adht->getMailOnValid(),$conf->global->ADHERENT_MAIL_VALID_SUBJECT,array(),array(),array(),"","",0,2);
+ if ($result < 0)
+ {
+ $error++;
+ setEventMessages($object->error, $object->errors, 'errors');
+ }
+ }
+ }
+ else
+ {
+ $error++;
+ if ($object->error) {
+ setEventMessages($object->error, $object->errors, 'errors');
+ } else {
+ setEventMessages($object->error, $object->errors, 'errors');
+ }
+ }
+
+ if (! $error)
+ {
+ $db->commit();
+ }
+ else
+ {
+ $db->rollback();
+ }
+ $action='';
+ }
+
+ if ($user->rights->adherent->supprimer && $action == 'confirm_resign')
+ {
+ $error = 0;
+
+ if ($confirm == 'yes')
+ {
+ $adht = new AdherentType($db);
+ $adht->fetch($object->typeid);
+
+ $result=$object->resiliate($user);
+
+ if ($result >= 0 && ! count($object->errors))
+ {
+ if ($object->email && GETPOST("send_mail"))
+ {
+ $result=$object->send_an_email($adht->getMailOnResiliate(),$conf->global->ADHERENT_MAIL_RESIL_SUBJECT,array(),array(),array(),"","",0,-1);
+ }
+ if ($result < 0)
+ {
+ $error++;
+ setEventMessages($object->error, $object->errors, 'errors');
+ }
+ }
+ else
+ {
+ $error++;
+
+ if ($object->error) {
+ setEventMessages($object->error, $object->errors, 'errors');
+ } else {
+ setEventMessages($object->error, $object->errors, 'errors');
+ }
+ $action='';
+ }
+ }
+ if (! empty($backtopage) && ! $error)
+ {
+ header("Location: ".$backtopage);
+ exit;
+ }
+ }
+
+ // SPIP Management
+ if ($user->rights->adherent->supprimer && $action == 'confirm_del_spip' && $confirm == 'yes')
+ {
+ if (! count($object->errors))
+ {
+ if (!$mailmanspip->del_to_spip($object))
+ {
+ setEventMessages($langs->trans('DeleteIntoSpipError').': '.$mailmanspip->error, null, 'errors');
+ }
+ }
+ }
+
+ if ($user->rights->adherent->creer && $action == 'confirm_add_spip' && $confirm == 'yes')
+ {
+ if (! count($object->errors))
+ {
+ if (!$mailmanspip->add_to_spip($object))
+ {
+ setEventMessages($langs->trans('AddIntoSpipError').': '.$mailmanspip->error, null, 'errors');
+ }
+ }
+ }
+
+ // Actions to build doc
+ $upload_dir = $conf->adherent->dir_output;
+ $permissioncreate=$user->rights->adherent->creer;
+ include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php';
+}
+
+
+/*
+ * View
+ */
+
+$form = new Form($db);
+$formfile = new FormFile($db);
+$formcompany = new FormCompany($db);
+
+$title=$langs->trans("Member") . " - " . $langs->trans("Card");
+$help_url='EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros';
+llxHeader('',$title,$help_url);
+
+$countrynotdefined=$langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')';
+
+if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action))
+{
+ // -----------------------------------------
+ // When used with CANVAS
+ // -----------------------------------------
+ if (empty($object->error) && $id)
+ {
+ $object = new Adherent($db);
+ $result=$object->fetch($id);
+ if ($result <= 0) dol_print_error('',$object->error);
+ }
+ $objcanvas->assign_values($action, $object->id, $object->ref); // Set value for templates
+ $objcanvas->display_canvas($action); // Show template
+}
+else
+{
+ // -----------------------------------------
+ // When used in standard mode
+ // -----------------------------------------
+
+ if ($action == 'create')
+ {
+ /* ************************************************************************** */
+ /* */
+ /* Creation mode */
+ /* */
+ /* ************************************************************************** */
+ $object->canvas=$canvas;
+ $object->state_id = GETPOST('state_id', 'int');
+
+ // We set country_id, country_code and country for the selected country
+ $object->country_id=GETPOST('country_id','int')?GETPOST('country_id','int'):$mysoc->country_id;
+ if ($object->country_id)
+ {
+ $tmparray=getCountry($object->country_id,'all');
+ $object->country_code=$tmparray['code'];
+ $object->country=$tmparray['label'];
+ }
+
+ $adht = new AdherentType($db);
+
+ print load_fiche_titre($langs->trans("NewMember"));
+
+ if ($conf->use_javascript_ajax)
+ {
+ print "\n".''."\n";
+ }
+
+ print '\n";
+ }
+
+ if ($action == 'edit')
+ {
+ /********************************************
+ *
+ * Edition mode
+ *
+ ********************************************/
+
+ $res=$object->fetch($id);
+ if ($res < 0) {
+ dol_print_error($db,$object->error); exit;
+ }
+ $res=$object->fetch_optionals($object->id,$extralabels);
+ if ($res < 0) {
+ dol_print_error($db); exit;
+ }
+
+ $adht = new AdherentType($db);
+ $adht->fetch($object->typeid);
+
+ // We set country_id, and country_code, country of the chosen country
+ $country=GETPOST('country','int');
+ if (!empty($country) || $object->country_id)
+ {
+ $sql = "SELECT rowid, code, label from ".MAIN_DB_PREFIX."c_country where rowid = ".(!empty($country)?$country:$object->country_id);
+ $resql=$db->query($sql);
+ if ($resql)
+ {
+ $obj = $db->fetch_object($resql);
+ }
+ else
+ {
+ dol_print_error($db);
+ }
+ $object->country_id=$obj->rowid;
+ $object->country_code=$obj->code;
+ $object->country=$langs->trans("Country".$obj->code)?$langs->trans("Country".$obj->code):$obj->label;
+ }
+
+ $head = member_prepare_head($object);
+
+
+ if ($conf->use_javascript_ajax)
+ {
+ print "\n".''."\n";
+ }
+
+ print '';
+ print ' ';
+ print ' ';
+ print ' ';
+ print ' ';
+ if ($backtopage) print ' ';
+
+ dol_fiche_head($head, 'general', $langs->trans("Member"), 0, 'user');
+
+ print '';
+
+ // Ref
+ print ''.$langs->trans("Ref").' '.$object->id.' ';
+
+ // Login
+ if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
+ {
+ print ''.$langs->trans("Login").' / '.$langs->trans("Id").' login).'"> ';
+ }
+
+ // Morphy
+ $morphys["phy"] = $langs->trans("Physical");
+ $morphys["mor"] = $langs->trans("Morale");
+ print ''.$langs->trans("Nature").' ';
+ print $form->selectarray("morphy", $morphys, isset($_POST["morphy"])?$_POST["morphy"]:$object->morphy);
+ print " ";
+
+ // Type
+ print ''.$langs->trans("Type").' ';
+ if ($user->rights->adherent->creer)
+ {
+ print $form->selectarray("typeid", $adht->liste_array(), (isset($_POST["typeid"])?$_POST["typeid"]:$object->typeid));
+ }
+ else
+ {
+ print $adht->getNomUrl(1);
+ print ' ';
+ }
+ print " ";
+
+ // Company
+ print ''.$langs->trans("Company").' societe).'"> ';
+
+ // Civility
+ print ''.$langs->trans("UserTitle").' ';
+ print $formcompany->select_civility(isset($_POST["civility_id"])?$_POST["civility_id"]:$object->civility_id)."\n";
+ print ' ';
+ print ' ';
+
+ // Lastname
+ print ''.$langs->trans("Lastname").' lastname).'"> ';
+ print ' ';
+
+ // Firstname
+ print ''.$langs->trans("Firstname").' firstname).'"> ';
+ print ' ';
+
+ // Photo
+ print ''.$langs->trans("Photo").' ';
+ print '';
+ print $form->showphoto('memberphoto',$object)."\n";
+ if ($caneditfieldmember)
+ {
+ if ($object->photo) print " \n";
+ print '';
+ }
+ print ' ';
+
+ // EMail
+ print ''.($conf->global->ADHERENT_MAIL_REQUIRED?'':'').$langs->trans("EMail").($conf->global->ADHERENT_MAIL_REQUIRED?' ':'').' email).'"> ';
+
+ // Password
+ if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
+ {
+ print ''.$langs->trans("Password").' pass).'"> ';
+ }
+
+ // Address
+ print ''.$langs->trans("Address").' ';
+ print ''.(isset($_POST["address"])?GETPOST("address",'',2):$object->address).' ';
+ print ' ';
+
+ // Zip / Town
+ print ''.$langs->trans("Zip").' / '.$langs->trans("Town").' ';
+ print $formcompany->select_ziptown((isset($_POST["zipcode"])?GETPOST("zipcode",'',2):$object->zip),'zipcode',array('town','selectcountry_id','state_id'),6);
+ print ' ';
+ print $formcompany->select_ziptown((isset($_POST["town"])?GETPOST("town",'',2):$object->town),'town',array('zipcode','selectcountry_id','state_id'));
+ print ' ';
+
+ // Country
+ //$object->country_id=$object->country_id?$object->country_id:$mysoc->country_id; // In edit mode we don't force to company country if not defined
+ print ''.$langs->trans('Country').' ';
+ print $form->select_country(isset($_POST["country_id"])?$_POST["country_id"]:$object->country_id,'country_id');
+ if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
+ print ' ';
+
+ // State
+ if (empty($conf->global->MEMBER_DISABLE_STATE))
+ {
+ print ''.$langs->trans('State').' ';
+ print $formcompany->select_state($object->state_id,isset($_POST["country_id"])?GETPOST("country_id"):$object->country_id);
+ print ' ';
+ }
+
+ // Pro phone
+ print ''.$langs->trans("PhonePro").' phone).'"> ';
+
+ // Personal phone
+ print ''.$langs->trans("PhonePerso").' phone_perso).'"> ';
+
+ // Mobile phone
+ print ''.$langs->trans("PhoneMobile").' phone_mobile).'"> ';
+
+ // Skype
+ if (! empty($conf->skype->enabled))
+ {
+ print ''.$langs->trans("Skype").' skype).'"> ';
+ }
+
+ // Birthday
+ print "".$langs->trans("Birthday")." \n";
+ $form->select_date(($object->birth ? $object->birth : -1),'birth','','',1,'formsoc');
+ print " \n";
+
+ // Public profil
+ print "".$langs->trans("Public")." \n";
+ print $form->selectyesno("public",(isset($_POST["public"])?GETPOST("public",'',2):$object->public),1);
+ print " \n";
+
+ // Categories
+ if (! empty( $conf->categorie->enabled ) && !empty( $user->rights->categorie->lire ))
+ {
+ print '' . fieldLabel('Categories', 'memcats') . ' ';
+ print '';
+ $cate_arbo = $form->select_all_categories(Categorie::TYPE_MEMBER, null, null, null, null, 1);
+ $c = new Categorie($db);
+ $cats = $c->containing($object->id, Categorie::TYPE_MEMBER);
+ foreach ($cats as $cat) {
+ $arrayselected[] = $cat->id;
+ }
+ print $form->multiselectarray('memcats', $cate_arbo, $arrayselected, '', 0, '', 0, '100%');
+ print " ";
+ }
+
+ // Other attributes
+ $parameters=array("colspan"=>2);
+ $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
+ if (empty($reshook) && ! empty($extrafields->attribute_label))
+ {
+ print $object->showOptionals($extrafields,'edit',$parameters);
+ }
+
+ // Third party Dolibarr
+ if (! empty($conf->societe->enabled))
+ {
+ print ''.$langs->trans("LinkedToDolibarrThirdParty").' ';
+ if ($object->fk_soc)
+ {
+ $company=new Societe($db);
+ $result=$company->fetch($object->fk_soc);
+ print $company->getNomUrl(1);
+ }
+ else
+ {
+ print $langs->trans("NoThirdPartyAssociatedToMember");
+ }
+ print ' ';
+ }
+
+ // Login Dolibarr
+ print ''.$langs->trans("LinkedToDolibarrUser").' ';
+ if ($object->user_id)
+ {
+ $form->form_users($_SERVER['PHP_SELF'].'?rowid='.$object->id,$object->user_id,'none');
+ }
+ else print $langs->trans("NoDolibarrAccess");
+ print ' ';
+
+ print '
';
+
+ dol_fiche_end();
+
+ print '';
+ print ' ';
+ print ' ';
+ print ' ';
+ print '
';
+
+ print ' ';
+
+ }
+
+ if ($id > 0 && $action != 'edit')
+ {
+ /* ************************************************************************** */
+ /* */
+ /* View mode */
+ /* */
+ /* ************************************************************************** */
+
+ $res=$object->fetch($id);
+ if ($res < 0) {
+ dol_print_error($db,$object->error); exit;
+ }
+ $res=$object->fetch_optionals($object->id,$extralabels);
+ if ($res < 0) {
+ dol_print_error($db); exit;
+ }
+
+ $adht = new AdherentType($db);
+ $res=$adht->fetch($object->typeid);
+ if ($res < 0) {
+ dol_print_error($db); exit;
+ }
+
+
+ /*
+ * Show tabs
+ */
+ $head = member_prepare_head($object);
+
+ dol_fiche_head($head, 'general', $langs->trans("Member"), 0, 'user');
+
+ // Confirm create user
+ if ($action == 'create_user')
+ {
+ $login=$object->login;
+ if (empty($login))
+ {
+ // Full firstname and name separated with a dot : firstname.name
+ include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
+ $login=dol_buildlogin($object->lastname,$object->firstname);
+ }
+ if (empty($login)) $login=strtolower(substr($object->firstname, 0, 4)) . strtolower(substr($object->lastname, 0, 4));
+
+ // Create a form array
+ $formquestion=array(
+ array('label' => $langs->trans("LoginToCreate"), 'type' => 'text', 'name' => 'login', 'value' => $login)
+ );
+ $text=$langs->trans("ConfirmCreateLogin").' ';
+ if (! empty($conf->societe->enabled))
+ {
+ if ($object->fk_soc > 0) $text.=$langs->trans("UserWillBeExternalUser");
+ else $text.=$langs->trans("UserWillBeInternalUser");
+ }
+ print $form->formconfirm($_SERVER["PHP_SELF"]."?rowid=".$object->id,$langs->trans("CreateDolibarrLogin"),$text,"confirm_create_user",$formquestion,'yes');
+ }
+
+ // Confirm create third party
+ if ($action == 'create_thirdparty')
+ {
+ $name = $object->getFullName($langs);
+ if (! empty($name))
+ {
+ if ($object->societe) $name.=' ('.$object->societe.')';
+ }
+ else
+ {
+ $name=$object->societe;
+ }
+
+ // Create a form array
+ $formquestion=array( array('label' => $langs->trans("NameToCreate"), 'type' => 'text', 'name' => 'companyname', 'value' => $name));
+
+ print $form->formconfirm($_SERVER["PHP_SELF"]."?rowid=".$object->id,$langs->trans("CreateDolibarrThirdParty"),$langs->trans("ConfirmCreateThirdParty"),"confirm_create_thirdparty",$formquestion,1);
+ }
+
+ // Confirm validate member
+ if ($action == 'valid')
+ {
+ $langs->load("mails");
+
+ $adht = new AdherentType($db);
+ $adht->fetch($object->typeid);
+
+ $subjecttosend=$object->makeSubstitution($conf->global->ADHERENT_MAIL_VALID_SUBJECT);
+ $texttosend=$object->makeSubstitution($adht->getMailOnValid());
+
+ $tmp=$langs->trans("SendAnEMailToMember");
+ $tmp.=' ('.$langs->trans("MailFrom").': '.$conf->global->ADHERENT_MAIL_FROM.' , ';
+ $tmp.=$langs->trans("MailRecipient").': '.$object->email.' )';
+ $helpcontent='';
+ $helpcontent.=''.$langs->trans("MailFrom").' : '.$conf->global->ADHERENT_MAIL_FROM.' '."\n";
+ $helpcontent.=''.$langs->trans("MailRecipient").' : '.$object->email.' '."\n";
+ $helpcontent.=''.$langs->trans("Subject").' : '."\n";
+ $helpcontent.=$subjecttosend."\n";
+ $helpcontent.=" ";
+ $helpcontent.=''.$langs->trans("Content").' : ';
+ $helpcontent.=dol_htmlentitiesbr($texttosend)."\n";
+ $label=$form->textwithpicto($tmp,$helpcontent,1,'help');
+
+ // Create form popup
+ $formquestion=array();
+ if ($object->email) $formquestion[]=array('type' => 'checkbox', 'name' => 'send_mail', 'label' => $label, 'value' => ($conf->global->ADHERENT_DEFAULT_SENDINFOBYMAIL?true:false));
+ if (! empty($conf->mailman->enabled) && ! empty($conf->global->ADHERENT_USE_MAILMAN)) {
+ $formquestion[]=array('type'=>'other','label'=>$langs->transnoentitiesnoconv("SynchroMailManEnabled"),'value'=>'');
+ }
+ if (! empty($conf->mailman->enabled) && ! empty($conf->global->ADHERENT_USE_SPIP)) {
+ $formquestion[]=array('type'=>'other','label'=>$langs->transnoentitiesnoconv("SynchroSpipEnabled"),'value'=>'');
+ }
+ print $form->formconfirm("card.php?rowid=".$id,$langs->trans("ValidateMember"),$langs->trans("ConfirmValidateMember"),"confirm_valid",$formquestion,1,1);
+ }
+
+ // Confirm send card by mail
+ if ($action == 'sendinfo')
+ {
+ print $form->formconfirm("card.php?rowid=".$id,$langs->trans("SendCardByMail"),$langs->trans("ConfirmSendCardByMail",$object->email),"confirm_sendinfo",'',0,1);
+ }
+
+ // Confirm terminate
+ if ($action == 'resign')
+ {
+ $langs->load("mails");
+
+ $adht = new AdherentType($db);
+ $adht->fetch($object->typeid);
+
+ $subjecttosend=$object->makeSubstitution($conf->global->ADHERENT_MAIL_RESIL_SUBJECT);
+ $texttosend=$object->makeSubstitution($adht->getMailOnResiliate());
+
+ $tmp=$langs->trans("SendAnEMailToMember");
+ $tmp.=' ('.$langs->trans("MailFrom").': '.$conf->global->ADHERENT_MAIL_FROM.' , ';
+ $tmp.=$langs->trans("MailRecipient").': '.$object->email.' )';
+ $helpcontent='';
+ $helpcontent.=''.$langs->trans("MailFrom").' : '.$conf->global->ADHERENT_MAIL_FROM.' '."\n";
+ $helpcontent.=''.$langs->trans("MailRecipient").' : '.$object->email.' '."\n";
+ $helpcontent.=''.$langs->trans("Subject").' : '."\n";
+ $helpcontent.=$subjecttosend."\n";
+ $helpcontent.=" ";
+ $helpcontent.=''.$langs->trans("Content").' : ';
+ $helpcontent.=dol_htmlentitiesbr($texttosend)."\n";
+ $label=$form->textwithpicto($tmp,$helpcontent,1,'help');
+
+ // Create an array
+ $formquestion=array();
+ if ($object->email) $formquestion[]=array('type' => 'checkbox', 'name' => 'send_mail', 'label' => $label, 'value' => (! empty($conf->global->ADHERENT_DEFAULT_SENDINFOBYMAIL)?'true':'false'));
+ if ($backtopage) $formquestion[]=array('type' => 'hidden', 'name' => 'backtopage', 'value' => ($backtopage != '1' ? $backtopage : $_SERVER["HTTP_REFERER"]));
+ print $form->formconfirm("card.php?rowid=".$id,$langs->trans("ResiliateMember"),$langs->trans("ConfirmResiliateMember"),"confirm_resign",$formquestion,'no',1);
+ }
+
+ // Confirm remove member
+ if ($action == 'delete')
+ {
+ $formquestion=array();
+ if ($backtopage) $formquestion[]=array('type' => 'hidden', 'name' => 'backtopage', 'value' => ($backtopage != '1' ? $backtopage : $_SERVER["HTTP_REFERER"]));
+ print $form->formconfirm("card.php?rowid=".$id,$langs->trans("DeleteMember"),$langs->trans("ConfirmDeleteMember"),"confirm_delete",$formquestion,0,1);
+ }
+
+ // Confirm add in spip
+ if ($action == 'add_spip')
+ {
+ print $form->formconfirm("card.php?rowid=".$id, $langs->trans('AddIntoSpip'), $langs->trans('AddIntoSpipConfirmation'), 'confirm_add_spip');
+ }
+ // Confirm removed from spip
+ if ($action == 'del_spip')
+ {
+ print $form->formconfirm("card.php?rowid=$id", $langs->trans('DeleteIntoSpip'), $langs->trans('DeleteIntoSpipConfirmation'), 'confirm_del_spip');
+ }
+
+ $rowspan=17;
+ if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) $rowspan++;
+ if (! empty($conf->societe->enabled)) $rowspan++;
+
+ $linkback = ''.$langs->trans("BackToList").' ';
+
+ dol_banner_tab($object, 'rowid', $linkback);
+
+ print '';
+ print '
';
+
+ print '
';
+ print '
';
+
+ // Login
+ if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
+ {
+ print ''.$langs->trans("Login").' / '.$langs->trans("Id").' '.$object->login.' ';
+ }
+
+ // Type
+ print ''.$langs->trans("Type").' '.$adht->getNomUrl(1)." \n";
+
+ // Morphy
+ print ''.$langs->trans("Nature").' '.$object->getmorphylib().' ';
+ print ' ';
+
+ // Company
+ print ''.$langs->trans("Company").' '.$object->societe.' ';
+
+ // Civility
+ print ''.$langs->trans("UserTitle").' '.$object->getCivilityLabel().' ';
+ print ' ';
+
+ // Password
+ if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED))
+ {
+ print ''.$langs->trans("Password").' '.preg_replace('/./i','*',$object->pass);
+ if ($object->pass) print preg_replace('/./i','*',$object->pass);
+ else
+ {
+ if ($user->admin) print $langs->trans("Crypted").': '.$object->pass_indatabase_crypted;
+ else print $langs->trans("Hidden");
+ }
+ if ((! empty($object->pass) || ! empty($object->pass_crypted)) && empty($object->user_id))
+ {
+ $langs->load("errors");
+ $htmltext=$langs->trans("WarningPasswordSetWithNoAccount");
+ print ' '.$form->textwithpicto('', $htmltext,1,'warning');
+ }
+ print ' ';
+ }
+
+ print '
';
+
+ print '
';
+ print '
';
+
+ print '
';
+ print '
';
+
+ // Birthday
+ print ''.$langs->trans("Birthday").' '.dol_print_date($object->birth,'day').' ';
+
+ // Public
+ print ''.$langs->trans("Public").' '.yn($object->public).' ';
+
+ // Categories
+ if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire))
+ {
+ print '' . $langs->trans("Categories") . ' ';
+ print '';
+ print $form->showCategories($object->id, 'member', 1);
+ print ' ';
+ }
+
+ // Other attributes
+ $parameters=array('colspan'=>2);
+ $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
+ if (empty($reshook) && ! empty($extrafields->attribute_label))
+ {
+ print $object->showOptionals($extrafields, 'view', $parameters);
+ }
+
+ // Date end subscription
+ print ''.$langs->trans("SubscriptionEndDate").' ';
+ if ($object->datefin)
+ {
+ print dol_print_date($object->datefin,'day');
+ if ($object->hasDelay()) {
+ print " ".img_warning($langs->trans("Late"));
+ }
+ }
+ else
+ {
+ if (! $adht->subscription)
+ {
+ print $langs->trans("SubscriptionNotRecorded");
+ if ($object->statut > 0) print " ".img_warning($langs->trans("Late")); // displays delay Pictogram only if not a draft and not terminated
+ }
+ else
+ {
+ print $langs->trans("SubscriptionNotReceived");
+ if ($object->statut > 0) print " ".img_warning($langs->trans("Late")); // displays delay Pictogram only if not a draft and not terminated
+ }
+ }
+ print ' ';
+
+ // Third party Dolibarr
+ if (! empty($conf->societe->enabled))
+ {
+ print '';
+ print '';
+ print ' ';
+ if ($action == 'editthirdparty')
+ {
+ $htmlname='socid';
+ print '';
+ print ' ';
+ print ' ';
+ print ' ';
+ print ' ';
+ }
+ else
+ {
+ if ($object->fk_soc)
+ {
+ $company=new Societe($db);
+ $result=$company->fetch($object->fk_soc);
+ print $company->getNomUrl(1);
+ }
+ else
+ {
+ print $langs->trans("NoThirdPartyAssociatedToMember");
+ }
+ }
+ print ' ';
+ }
+
+ // Login Dolibarr
+ print '';
+ print '';
+ print $langs->trans("LinkedToDolibarrUser");
+ print ' ';
+ if ($action != 'editlogin' && $user->rights->adherent->creer)
+ {
+ print '';
+ if ($user->rights->user->user->creer)
+ {
+ print 'id.'">'.img_edit($langs->trans('SetLinkToUser'),1).' ';
+ }
+ print ' ';
+ }
+ print '
';
+ print ' ';
+ if ($action == 'editlogin')
+ {
+ $form->form_users($_SERVER['PHP_SELF'].'?rowid='.$object->id,$object->user_id,'userid','');
+ }
+ else
+ {
+ if ($object->user_id)
+ {
+ $form->form_users($_SERVER['PHP_SELF'].'?rowid='.$object->id,$object->user_id,'none');
+ }
+ else print $langs->trans("NoDolibarrAccess");
+ }
+ print ' ';
+
+ print "
\n";
+
+ print "
\n";
+ print '
';
+
+ dol_fiche_end();
+
+
+ /*
+ * Hotbar
+ */
+
+ print '';
+ $parameters = array();
+ $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been
+ if (empty($reshook)) {
+ if ($action != 'valid' && $action != 'editlogin' && $action != 'editthirdparty')
+ {
+ // Modify
+ if ($user->rights->adherent->creer)
+ {
+ print '
";
+ }
+ else
+ {
+ print '
'.$langs->trans("Modify").'
';
+ }
+
+ // Validate
+ if ($object->statut == -1)
+ {
+ if ($user->rights->adherent->creer)
+ {
+ print '
\n";
+ }
+ else
+ {
+ print '
'.$langs->trans("Validate").'
';
+ }
+ }
+
+ // Reactivate
+ if ($object->statut == 0)
+ {
+ if ($user->rights->adherent->creer)
+ {
+ print '
\n";
+ }
+ else
+ {
+ print '
'.$langs->trans("Reenable")."
";
+ }
+ }
+
+ // Send card by email
+ if ($user->rights->adherent->creer)
+ {
+ if ($object->statut >= 1)
+ {
+ if ($object->email) print '
\n";
+ else print '
\n";
+ }
+ else
+ {
+ print '
'.$langs->trans("SendCardByMail")."
";
+ }
+ }
+ else
+ {
+ print '
'.$langs->trans("SendCardByMail")."
";
+ }
+
+ // Terminate
+ if ($object->statut >= 1)
+ {
+ if ($user->rights->adherent->supprimer)
+ {
+ print '
\n";
+ }
+ else
+ {
+ print '
'.$langs->trans("Resiliate")."
";
+ }
+ }
+
+ // Create third party
+ if (! empty($conf->societe->enabled) && ! $object->fk_soc)
+ {
+ if ($user->rights->societe->creer)
+ {
+ if ($object->statut != -1) print '
';
+ else print '
';
+ }
+ else
+ {
+ print '
'.$langs->trans("CreateDolibarrThirdParty")."
";
+ }
+ }
+
+ // Create user
+ if (! $user->societe_id && ! $object->user_id)
+ {
+ if ($user->rights->user->user->creer)
+ {
+ if ($object->statut != -1) print '
';
+ else print '
';
+ }
+ else
+ {
+ print '
'.$langs->trans("CreateDolibarrLogin")."
";
+ }
+ }
+
+ // Delete
+ if ($user->rights->adherent->supprimer)
+ {
+ print '
\n";
+ }
+ else
+ {
+ print '
'.$langs->trans("Delete")."
";
+ }
+
+ // Action SPIP
+ if (! empty($conf->mailmanspip->enabled) && ! empty($conf->global->ADHERENT_USE_SPIP))
+ {
+ $isinspip = $mailmanspip->is_in_spip($object);
+
+ if ($isinspip == 1)
+ {
+ print '
\n";
+ }
+ if ($isinspip == 0)
+ {
+ print '
\n";
+ }
+ }
+
+ }
+ }
+ print '
';
+
+ if ($isinspip == -1)
+ {
+ print ''.$langs->trans('SPIPConnectionFailed').': '.$mailmanspip->error.' ';
+ }
+
+
+
+ print '';
+ print '
'; // ancre
+
+ // Documents generes
+ $filename = dol_sanitizeFileName($object->ref);
+ //$filename = 'tmp_cards.php';
+ //$filedir = $conf->adherent->dir_output . '/' . get_exdir($object->id, 2, 0, 0, $object, 'member') . dol_sanitizeFileName($object->ref);
+ $filedir = $conf->adherent->dir_output . '/' . get_exdir(0, 0, 0, 0, $object, 'member');
+ $urlsource = $_SERVER['PHP_SELF'] . '?id=' . $object->id;
+ $genallowed = $user->rights->adherent->creer;
+ $delallowed = $user->rights->adherent->supprimer;
+
+ print $formfile->showdocuments('member', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', '', '', $object->default_lang, '', $object);
+ $somethingshown = $formfile->numoffiles;
+
+ // Show links to link elements
+ //$linktoelem = $form->showLinkToObjectBlock($object, null, array('subscription'));
+ //$somethingshown = $form->showLinkedObjectBlock($object, '');
+
+ // Show links to link elements
+ /*$linktoelem = $form->showLinkToObjectBlock($object,array('order'));
+ if ($linktoelem) print ($somethingshown?'':'
').$linktoelem;
+
+ // Link for paypal payment
+ /*
+ if (! empty($conf->paypal->enabled) && $object->statut != 0) {
+ include_once DOL_DOCUMENT_ROOT . '/paypal/lib/paypal.lib.php';
+ print showPaypalPaymentUrl('invoice', $object->ref);
+ }
+ */
+ print '
';
+
+ // List of actions on element
+ /* Already in tab Agenda/Events
+ include_once DOL_DOCUMENT_ROOT . '/core/class/html.formactions.class.php';
+ $formactions = new FormActions($db);
+ $somethingshown = $formactions->showactions($object, 'member', $socid);
+ */
+ print '
';
+
+ }
+}
+
+llxFooter();
+
+$db->close();
diff --git a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php
index 06b188496a5..32be29b082c 100644
--- a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php
+++ b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php
@@ -186,6 +186,25 @@ class doc_generic_project_odt extends ModelePDFProjects
{
global $conf;
+ // adding phone numbers if external
+ $phone_pro = '';
+ $phone_perso = '';
+ $phone_mobile = '';
+
+ $ct = new Contact($this->db);
+ if ($contact['source']=='external') {
+ $ct = new Contact($this->db);
+ $ct->fetch($contact['id']);
+ $phone_pro = $ct->phone_pro;
+ $phone_perso = $ct->phone_perso;
+ $phone_mobile = $ct->phone_mobile;
+ } elseif ($contact['source']=='internal') {
+ $ct = new User($this->db);
+ $ct->fetch($contact['id']);
+ $phone_pro = $ct->office_phone;
+ $phone_mobile = $ct->user_mobile;
+ }
+
return array(
'projcontacts_id'=>$contact['id'],
'projcontacts_rowid'=>$contact['rowid'],
@@ -194,7 +213,10 @@ class doc_generic_project_odt extends ModelePDFProjects
'projcontacts_firstname'=>$contact['firstname'],
'projcontacts_fullcivname'=>$contact['fullname'],
'projcontacts_socname'=>$contact['socname'],
- 'projcontacts_email'=>$contact['email']
+ 'projcontacts_email'=>$contact['email'],
+ 'projcontacts_phone_pro'=>$phone_pro,
+ 'projcontacts_phone_perso'=>$phone_perso,
+ 'projcontacts_phone_mobile'=>$phone_mobile
);
}