/**
  * A custom method within the Plugin to generate the content
  * 
  * @return string : HTML
  * @see class/UserSettings.class.php
  * @see class/DiscussionEmailSetting.class.php
  */
 function generateAddTaskBlock()
 {
     $output = '';
     $idproject = $_SESSION["do_project"]->idproject;
     if (!is_object($_SESSION['UserSettings'])) {
         $do_user_settings = new UserSettings();
         $do_user_settings->sessionPersistent("UserSettings", "logout.php", OFUZ_TTL);
     }
     $data = $_SESSION['UserSettings']->getSettingValue("task_discussion_alert");
     $global_discussion_email_on = 'Yes';
     if (!$data) {
         $global_discussion_email_on = 'Yes';
     } else {
         if (is_array($data)) {
             if ($data["setting_value"] == 'Yes') {
                 $global_discussion_email_on = 'Yes';
             } else {
                 $global_discussion_email_on = 'No';
             }
         }
     }
     $_SESSION['UserSettings']->global_task_discussion_alert = $global_discussion_email_on;
     if ($global_discussion_email_on == 'Yes') {
         $DiscussionEmailSetting = new DiscussionEmailSetting();
         $data = $DiscussionEmailSetting->isDiscussionAlertSet($idproject, 'Project');
         if ($data && is_array($data)) {
             $output .= _('You have turned off email alert for this project.<br /> If you want to get email alerts for this project please turn it on. <br />');
             $set_email_alert_on = new Event("DiscussionEmailSetting->eventSetOnDiscussionAlert");
             $set_email_alert_on->addParam("setting_level", "Project");
             $set_email_alert_on->addParam("id", $data["iddiscussion_email_setting"]);
             $output .= '<br />';
             $output .= $set_email_alert_on->getLink('Turn On');
         } else {
             $output .= _('Your email alert for the project discussion is set on by default. You can turn off if you do not want to receive emails for this project discussion.<br />');
             $set_email_alert_off = new Event("DiscussionEmailSetting->eventSetOffDiscussionAlert");
             $set_email_alert_off->addParam("id", $idproject);
             $set_email_alert_off->addParam("setting_level", "Project");
             $output .= '<br />';
             $output .= $set_email_alert_off->getLink('Turn Off');
         }
     }
     return $output;
 }
Exemplo n.º 2
0
 /** 
  * eventSendDiscussMessageByEmail
  * This will send an email to all the project participant 
  * Using Radria_Emailer and an email template stored in the emailtemplate table.
  * This method uses the currently open project persistant object. 
  * @param Eventcontroler
  */
 function eventSendDiscussMessageByEmail(EventControler $event_controler)
 {
     $this->setLog("\n eventSendDiscussMessageByEmail: starting (" . date("Y/m/d H:i:s"));
     try {
         $co_workers = $_SESSION["do_project"]->getProjectCoWorkers();
         // print_r($co_workers);exit;
         if ($co_workers !== false) {
             $email_template = new EmailTemplate("ofuz_project_discussion");
             $email_nudge = new EmailTemplate("ofuz_project_discussion_nudge");
             $project_task_url = $GLOBALS['cfg_ofuz_site_http_base'] . 'Task/' . $_SESSION['do_project_task']->idproject_task;
             $project_link = $GLOBALS['cfg_ofuz_site_http_base'] . 'Project/' . $_SESSION['do_project']->idproject;
             if ($event_controler->fields['document'] != '') {
                 // If a file is attached
                 $doc_link = $GLOBALS['cfg_ofuz_site_http_base'] . 'files/' . $event_controler->fields['document'];
                 $doc_text = '<br />' . _('Attachment') . ': <a href="' . $doc_link . '"> ' . $event_controler->fields['document'] . '</a>';
             } else {
                 $doc_text = '';
             }
             $message_html = nl2br(stripslashes($event_controler->fields['discuss'] . $doc_text));
             $message_txt = stripslashes($event_controler->fields['discuss'] . $doc_text);
             $email_data = array('project-name' => $_SESSION['do_project']->name, 'project-link' => $project_link, 'discussion-owner' => $_SESSION['do_User']->getFullName(), 'task_name' => $_SESSION['do_project_task']->task_description, 'task_category' => $_SESSION['do_project_task']->task_category, 'message_txt' => $message_txt, 'message_html' => $message_html, 'project-task-link' => $project_task_url);
             $do_discussion_email_setting = new DiscussionEmailSetting();
             if ($_SESSION['do_project_task']->drop_box_code < 10 || count($co_workers) > 19) {
                 foreach ($co_workers as $co_worker) {
                     $global_email_alert = $_SESSION['UserSettings']->getSettingValue('task_discussion_alert', $co_worker['idcoworker']);
                     $global_email_alert_on = true;
                     if (!$global_email_alert) {
                         $global_email_alert_on = true;
                         // means user has not set on/off in the settings and on by default
                     } else {
                         if (is_array($global_email_alert)) {
                             if ($global_email_alert["setting_value"] == 'Yes') {
                                 $global_email_alert_on = true;
                             } else {
                                 $global_email_alert_on = false;
                             }
                         }
                     }
                     //if($_SESSION['UserSettings']->global_task_discussion_alert  != 'No' && !$do_discussion_email_setting->isDiscussionAlertSet($_SESSION['do_project_task']->idproject,'Project',$co_worker['idcoworker']) ){
                     if ($global_email_alert_on && !$do_discussion_email_setting->isDiscussionAlertSet($_SESSION['do_project_task']->idproject_task, 'Project', $co_worker['idcoworker'])) {
                         $emailer = new Radria_Emailer('UTF-8');
                         $emailer->setEmailTemplate($email_template);
                         //$emailer->cleanup();
                         //$emailer->setFrom('*****@*****.**' , 'Ofuz.net');
                         $email_data['firstname'] = $co_worker['firstname'];
                         $emailer->mergeArray($email_data);
                         $this->setLog("\n Sending email to:" . $co_worker['email']);
                         $emailer->addTo($co_worker['email']);
                         $emailer->send();
                     }
                 }
             } else {
                 $co_workers_nudged = array();
                 $co_workers_nudged_emails = array();
                 foreach ($co_workers as $co_worker) {
                     if (preg_match("/@" . $co_worker['firstname'] . "/i", $event_controler->fields['discuss']) || preg_match("/@" . $co_worker['lastname'] . "/i", $event_controler->fields['discuss'])) {
                         //$co_workers_nudged[] = $co_worker;
                         $co_workers_nudged_emails[] = $co_worker['email'];
                         $this->setLog("\n Is nudged:" . $co_worker['firstname'] . " " . $co_worker['lastname'] . " " . $co_worker['email']);
                     }
                 }
                 $emailer = new Radria_Emailer('UTF-8');
                 $email_template->setSenderName($_SESSION['do_User']->getFullName());
                 $email_template->setSenderEmail($_SESSION['do_User']->email);
                 $emailer->setEmailTemplate($email_template);
                 $emailer->addCc($_SESSION['do_project_task']->getDropBoxEmail());
                 $emailer->addHeader("X-ofuz-emailer", $_SESSION['do_User']->iduser);
                 $emailer->mergeArray($email_data);
                 $this->setLog("\n Sending email to:" . $co_workers[0]['email']);
                 $someone_note_nudged = false;
                 foreach ($co_workers as $to_worker) {
                     /*
                         Check if the Co-Worker is supposed to get the email
                     */
                     $global_email_alert = $_SESSION['UserSettings']->getSettingValue('task_discussion_alert', $to_worker['idcoworker']);
                     $global_email_alert_on = true;
                     if (!$global_email_alert) {
                         $global_email_alert_on = true;
                         //means user has not set on/off in the settings and on by default
                     } else {
                         if (is_array($global_email_alert)) {
                             if ($global_email_alert["setting_value"] == 'Yes') {
                                 $global_email_alert_on = true;
                             } else {
                                 $global_email_alert_on = false;
                             }
                         }
                     }
                     /* if($_SESSION['UserSettings']->global_task_discussion_alert  != 'No' 
                        && !$do_discussion_email_setting->isDiscussionAlertSet($_SESSION['do_project_task']->idproject_task,$to_worker['idcoworker']) 
                        && !in_array($to_worker['email'], $co_workers_nudged_emails)){*/
                     if ($global_email_alert_on && !$do_discussion_email_setting->isDiscussionAlertSet($_SESSION['do_project_task']->idproject, 'Project', $to_worker['idcoworker']) && !in_array($to_worker['email'], $co_workers_nudged_emails)) {
                         $email_to = $to_worker['email'];
                         $emailer->addTo($email_to);
                         $someone_note_nudged = true;
                         break;
                     }
                 }
                 //$emailer->addTo($co_workers[0]['email']);
                 foreach ($co_workers as $cc_worker) {
                     /*
                     Check if the Co-Worker is supposed to get the email
                     */
                     $global_email_alert_on = true;
                     $global_email_alert = $_SESSION['UserSettings']->getSettingValue('task_discussion_alert', $cc_worker['idcoworker']);
                     if (!$global_email_alert) {
                         $global_email_alert_on = true;
                         //means user has not set on/off in the settings and on by default
                     } else {
                         if (is_array($global_email_alert)) {
                             if ($global_email_alert["setting_value"] == 'Yes') {
                                 $global_email_alert_on = true;
                             } else {
                                 $global_email_alert_on = false;
                             }
                         }
                     }
                     if ($email_to != $cc_worker['email']) {
                         /*  if($_SESSION['UserSettings']->global_task_discussion_alert  != 'No' 
                             && !$do_discussion_email_setting->isDiscussionAlertSet($_SESSION['do_project_task']->idproject_task,$cc_worker['idcoworker']) 
                             && !in_array($cc_worker['email'], $co_workers_nudged_emails)){*/
                         if ($global_email_alert_on && !$do_discussion_email_setting->isDiscussionAlertSet($_SESSION['do_project_task']->idproject, 'Project', $cc_worker['idcoworker']) && !in_array($cc_worker['email'], $co_workers_nudged_emails)) {
                             $emailer->addCc($cc_worker['email']);
                             $someone_note_nudged = true;
                         }
                     }
                 }
                 if ($someone_note_nudged) {
                     $emailer->send();
                 }
                 if (count($co_workers_nudged_emails) > 0) {
                     $email_nudge->setSenderName($_SESSION['do_User']->getFullName());
                     $email_nudge->setSenderEmail($_SESSION['do_User']->email);
                     $emailer_nudge = new Radria_Emailer();
                     $emailer_nudge->setEmailTemplate($email_nudge);
                     $emailer_nudge->addCc($_SESSION['do_project_task']->getDropBoxEmail());
                     $emailer_nudge->addHeader("X-ofuz-emailer", $_SESSION['do_User']->iduser);
                     $emailer_nudge->mergeArray($email_data);
                     $emailer_nudge->addTo($co_workers_nudged_emails[0]);
                     $this->setLog("\n Sending Nudge to:" . $co_workers_nudged_emails[0]);
                     for ($i = 1; $i < count($co_workers_nudged_emails); $i++) {
                         $this->setLog("\n Sending Nudge to:" . $co_workers_nudged_emails[$i]);
                         $emailer_nudge->addCc($co_workers_nudged_emails[$i]);
                     }
                     $emailer_nudge->send();
                     $emailer_nudge->cleanup();
                 }
                 $emailer->cleanup();
             }
         }
     } catch (Exception $e) {
         $this->setError('ProjectDiscuss Could not send email: ' . $e->getMessage());
     }
     $this->setLog("\n eventSendDiscussMessageByEmail: ending (" . date("Y/m/d H:i:s"));
 }