Permalink
Browse files

Merge pull request #188 from FHenry/develop

Develop
  • Loading branch information...
Regis Houssin
Regis Houssin committed Apr 30, 2012
2 parents 19ce632 + fca02bf commit 79f2781bdb4ca48ab99037e327b9a8a62d84d771
View
@@ -34,6 +34,8 @@
$action = GETPOST('action','alpha');
+
+
/*
* Actions
*/
@@ -45,13 +47,34 @@
$mailfrom = GETPOST('MAILING_EMAIL_FROM','alpha');
$mailerror = GETPOST('MAILING_EMAIL_ERRORSTO','alpha');
$checkread = GETPOST('value','alpha');
+ $checkread_key = GETPOST('MAILING_EMAIL_UNSUBSCRIBE_KEY','alpha');
$res=dolibarr_set_const($db, "MAILING_EMAIL_FROM",$mailfrom,'chaine',0,'',$conf->entity);
if (! $res > 0) $error++;
$res=dolibarr_set_const($db, "MAILING_EMAIL_ERRORSTO",$mailerror,'chaine',0,'',$conf->entity);
if (! $res > 0) $error++;
- //$res=dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE",$checkread,'chaine',0,'',$conf->entity);
- //if (! $res > 0) $error++;
+ if ($checkread=='on')
+ {
+ $res=dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE",1,'chaine',0,'',$conf->entity);
+ if (! $res > 0) $error++;
+ }
+ else if ($checkread=='off')
+ {
+ $res=dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE",0,'chaine',0,'',$conf->entity);
+ if (! $res > 0) $error++;
+ }
+
+ //Create temporary encryption key if nedded
+ if (($conf->global->MAILING_EMAIL_UNSUBSCRIBE==1) && (empty($checkread_key)))
+ {
+ $chars = "abcdef(ghijklmnopqrstuvwxyz;!ABCDEFGH,IJKLMNOPQRSTUVWXYZ01_23456789";
+ mt_srand(10000000*(double)microtime());
+ for ($i = 0, $str = '', $lc = strlen($chars)-1; $i < 30; $i++) {
+ $checkread_key .= $chars[mt_rand(0, $lc)];
+ }
+ }
+ $res=dolibarr_set_const($db, "MAILING_EMAIL_UNSUBSCRIBE_KEY",$checkread_key,'chaine',0,'',$conf->entity);
+ if (! $res > 0) $error++;
if (! $error)
{
@@ -104,24 +127,31 @@
if (!empty($conf->global->MAILING_EMAIL_ERRORSTO) && ! isValidEmail($conf->global->MAILING_EMAIL_ERRORSTO)) print ' '.img_warning($langs->trans("BadEMail"));
print '</td></tr>';
-/*
+
$var=!$var;
print '<tr '.$bc[$var].'><td>';
print $langs->trans("ActivateCheckRead").'</td><td>';
if ($conf->global->MAILING_EMAIL_UNSUBSCRIBE==1)
{
- print '<a href="'.$_SERVER["PHP_SELF"].'?action=setvalue&value=0">';
+ print '<a href="'.$_SERVER["PHP_SELF"].'?action=setvalue&value=off">';
print img_picto($langs->trans("Enabled"),'switch_on');
print '</a>';
+ $readonly='';
}
else
{
- print '<a href="'.$_SERVER["PHP_SELF"].'?action=setvalue&value=1">';
+ print '<a href="'.$_SERVER["PHP_SELF"].'?action=setvalue&value=on">';
print img_picto($langs->trans("Disabled"),'switch_off');
print '</a>';
+ $readonly='disabled="disabled"';
}
print '</td></tr>';
-*/
+
+$var=!$var;
+print '<tr '.$bc[$var].'><td>';
+print $langs->trans("ActivateCheckReadKey").'</td><td>';
+print '<input size="32" type="text" name="MAILING_EMAIL_UNSUBSCRIBE_KEY" '.$readonly.' value="'.$conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY.'">';
+print '</td></tr>';
print '<tr><td colspan="3" align="center"><input type="submit" class="button" value="'.$langs->trans("Modify").'"></td></tr>';
@@ -64,7 +64,7 @@
$substitutionarray,
array(
'__CHECK_READ__' => 'CheckMail',
- '__UNSUSCRIBE__' => 'Unsuscribe'
+ '__UNSUSCRIBE__' => 'Unsubscribe'
)
);
}
@@ -89,7 +89,7 @@
$substitutionarrayfortest,
array(
'__CHECK_READ__' => 'TESTCheckMail',
- '__UNSUSCRIBE__' => 'TESTCheckMail'
+ '__UNSUSCRIBE__' => 'TESTUnsubscribe'
)
);
}
@@ -143,6 +143,8 @@ function update_nb($mailing_id)
*/
function add_to_target($mailing_id, $cibles)
{
+ global $conf;
+
$this->db->begin();
// Insert emailing targest from array into database
@@ -162,7 +164,10 @@ function add_to_target($mailing_id, $cibles)
$sql .= "'".$this->db->escape($cibles[$i]['other'])."',";
$sql .= "'".$this->db->escape($cibles[$i]['source_url'])."',";
$sql .= "'".$this->db->escape($cibles[$i]['source_id'])."',";
- $sql .= "'".$this->db->escape(md5($cibles[$i]['email'].';'.$cibles[$i]['name'].';'.$mailing_id))."',";
+ if ($conf->global->MAILING_EMAIL_UNSUBSCRIBE==1)
+ {
+ $sql .= "'".$this->db->escape(md5($cibles[$i]['email'].';'.$cibles[$i]['name'].';'.$mailing_id.';'.$conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY))."',";
+ }
$sql .= "'".$this->db->escape($cibles[$i]['source_type'])."')";
$result=$this->db->query($sql);
if ($result)
@@ -77,6 +77,7 @@ CheckRead=Read Receipt
YourMailUnsubcribeOK=The email <b>%s</b> is correctly unsubcribe from mailing list
MailtoEMail=Hyper link to email
ActivateCheckRead=Activate Read receipt and unsubcribe tag
+ActivateCheckReadKey=Key use to encrypt URL use for Read Receipt and unsubcribe function
# Libelle des modules de liste de destinataires mailing
MailingModuleDescContactCompanies=Contacts of all third parties (customer, prospect, supplier, ...)
@@ -85,6 +85,10 @@ TaskIsNotAffectedToYou=Task not allocated to you
ErrorTimeSpentIsEmpty=Time spent is empty
ThisWillAlsoRemoveTasks=This action will also delete all tasks of project (<b>%s</b> tasks at the moment) and all inputs of time spent.
IfNeedToUseOhterObjectKeepEmpty=If some objects (invoice, order, ...), belonging to another third party, must be linked to the project to create, keep this empty to have the project being multi third parties.
+CloneProject=Clone project (associated task will be duplicated too)
+ConfirmCloneProject=Are you sure to clone this project ?
+ProjectReportDate=Change task date according project start date
+ErrorShiftTaskDate=Impossible to shift task date according to new project start date
##### Types de contacts #####
TypeContact_project_internal_PROJECTLEADER=Project leader
TypeContact_project_external_PROJECTLEADER=Project leader
@@ -77,6 +77,7 @@ CheckRead=Accusé de lecture
YourMailUnsubcribeOK=L'adresse e-mail <b>%s</b> est bien désincrite de la liste.
MailtoEMail=Ecrire a e-mail (lien)
ActivateCheckRead=Activer les tags d'accusé de lecture et de désincription
+ActivateCheckReadKey=Clef de sécurité utilisée pour l'encryption des URL utilisées dans les fonctions d'accusé de lecture et de désincription
# Libelle des modules de liste de destinataires mailing
MailingModuleDescContactCompanies=Contacts de tiers (prospects, clients, fournisseurs...)
@@ -85,6 +85,10 @@ TaskIsNotAffectedToYou=Tâche qui ne vous est pas affectée
ErrorTimeSpentIsEmpty=Le temps consommé n'est pas renseigné
ThisWillAlsoRemoveTasks=Cette opération détruira également les tâches du projet (<b>%s</b> tâches actuellement) et le suivi des consommés.
IfNeedToUseOhterObjectKeepEmpty=Si des objets (facture, commande, ...), appartenant à un autre tiers que celui choisi, doivent être liés au projet à créer, laisser vide afin de laisser le projet multi-tiers.
+CloneProject=Cloner le projet (les taches associées sont dupliquées également)
+ConfirmCloneProject=Êtes-vous sûr de vouloir cloner ce projet ?
+ProjectReportDate=Reporter les dates des taches en fonction de la date de départ.
+ErrorShiftTaskDate=Une erreur c'est produite dans le report des dates des taches.
##### Types de contacts #####
TypeContact_project_internal_PROJECTLEADER=Chef de projet
TypeContact_project_external_PROJECTLEADER=Chef de projet
@@ -52,7 +52,7 @@ class Project extends CommonObject
/**
* Constructor
*
- * @param DoliDB $db Database handler
+ * @param DoliDB $DB Database handler
*/
function __construct($db)
{
@@ -707,7 +707,7 @@ function initAsSpecimen()
{
global $user, $langs, $conf;
- $now = dol_now();
+ $now = mktime();
// Charge tableau des produits prodids
$prodids = array();
@@ -64,7 +64,7 @@ class Task extends CommonObject
/**
* Constructor
*
- * @param DoliDB $db Database handler
+ * @param DoliDB $DB Database handler
*/
function __construct($db)
{
@@ -305,6 +305,7 @@ function update($user=0, $notrigger=0)
*/
function delete($user, $notrigger=0)
{
+
global $conf, $langs;
$error=0;
@@ -391,7 +392,7 @@ function delete($user, $notrigger=0)
$this->db->commit();
- return 1;
+ return 1;
}
}
View
@@ -246,6 +246,7 @@
}
}
+
if ($action == 'confirm_validate' && GETPOST('confirm') == 'yes')
{
$project = new Project($db);
@@ -315,6 +316,24 @@
}
}
+if ($action == 'confirm_clone' && $user->rights->projet->creer && GETPOST('confirm') == 'yes')
+{
+ $idtoclone=$id;
+ $project = new Project($db);
+ $project->fetch($idtoclone);
+ $result=$project->createFromClone($idtoclone,true,true,true,true);
+ if ($result <= 0)
+ {
+ $mesg='<div class="error">'.$project->error.'</div>';
+ }
+ else
+ {
+ $id=$result;
+ $action='edit';
+ $comefromclone=true;
+ }
+}
+
/*
* View
@@ -353,7 +372,7 @@
{
require_once(DOL_DOCUMENT_ROOT ."/core/modules/project/".$conf->global->PROJECT_ADDON.".php");
$modProject = new $obj;
- $defaultref = $modProject->getNextValue($soc,$project);
+ $defaultref = $modProject->getNextValue($soc,$project);
}
if (is_numeric($defaultref) && $defaultref <= 0) $defaultref='';
@@ -459,6 +478,7 @@
$ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$project->id,$langs->trans("DeleteAProject"),$text,"confirm_delete",'','',1);
if ($ret == 'html') print '<br>';
}
+
// Clone confirmation
if ($action == 'clone')
{
@@ -486,9 +506,7 @@
// Customer
print '<tr><td>'.$langs->trans("Company").'</td><td>';
- $text=$form->select_company($project->societe->id,'socid','',1,1);
- $texthelp=$langs->trans("IfNeedToUseOhterObjectKeepEmpty");
- print $form->textwithtooltip($text.' '.img_help(),$texthelp,1);
+ print $form->select_company($project->societe->id,'socid','',1,1);
print '</td></tr>';
// Visibility
@@ -562,7 +580,7 @@
// Date start
print '<tr><td>'.$langs->trans("DateStart").'</td><td>';
- print dol_print_date($project->date_start,'day');
+ print dol_print_date($project->date_start,'day');
print '</td></tr>';
// Date end
@@ -125,7 +125,6 @@
}
}
-// Find upload dir after retreive is task if necessary
if ($id > 0 || ! empty($ref))
{
if ($object->fetch($id,$ref) > 0)
@@ -141,7 +140,6 @@
dol_print_error($db);
}
}
-
/*
* View
*/
@@ -283,4 +281,4 @@
llxFooter();
$db->close();
-?>
+?>

0 comments on commit 79f2781

Please sign in to comment.