/**
  * Send multiple emails using this simple tool
  *
  * @param void
  * @return null
  */
 function tool_mass_mailer()
 {
     $tool = AdministrationTools::getByName('mass_mailer');
     if (!$tool instanceof AdministrationTool) {
         flash_error(lang('administration tool dnx', 'test_mail_settings'));
         $this->redirectTo('administration', 'tools');
     }
     // if
     $massmailer_data = array_var($_POST, 'massmailer');
     tpl_assign('tool', $tool);
     tpl_assign('grouped_users', Users::getGroupedByCompany());
     tpl_assign('massmailer_data', $massmailer_data);
     if (is_array($massmailer_data)) {
         try {
             $subject = trim(array_var($massmailer_data, 'subject'));
             $message = trim(array_var($massmailer_data, 'message'));
             $errors = array();
             if ($subject == '') {
                 $errors[] = lang('massmailer subject required');
             }
             // if
             if ($message == '') {
                 $errors[] = lang('massmailer message required');
             }
             // if
             $users = Users::getAll();
             $recipients = array();
             if (is_array($users)) {
                 foreach ($users as $user) {
                     if (array_var($massmailer_data, 'user_' . $user->getId()) == 'checked') {
                         $recipients[] = Notifier::prepareEmailAddress($user->getEmail(), $user->getDisplayName());
                     }
                     // if
                 }
                 // foreach
             }
             // if
             if (!count($recipients)) {
                 $errors[] = lang('massmailer select recipients');
             }
             // if
             if (count($errors)) {
                 throw new FormSubmissionErrors($errors);
             }
             // if
             if (Notifier::sendEmail($recipients, Notifier::prepareEmailAddress(logged_user()->getEmail(), logged_user()->getDisplayName()), $subject, $message)) {
                 flash_success(lang('success massmail'));
             } else {
                 flash_error(lang('error massmail'));
             }
             // if
             $this->redirectToUrl($tool->getToolUrl());
         } catch (Exception $e) {
             tpl_assign('error', $e);
         }
         // try
     }
     // if
 }
 /**
  * Render and execute test mailer form
  *
  * @param void
  * @return null
  */
 function tool_test_email()
 {
     set_time_limit(0);
     if (!can_manage_configuration(logged_user())) {
         flash_error(lang('no access permissions'));
         ajx_current("empty");
         return;
     }
     // if
     $tool = AdministrationTools::getByName('test_mail_settings');
     if (!$tool instanceof AdministrationTool) {
         flash_error(lang('administration tool dnx', 'test_mail_settings'));
         $this->redirectTo('administration', 'tools');
     }
     // if
     $test_mail_data = array_var($_POST, 'test_mail');
     tpl_assign('tool', $tool);
     tpl_assign('test_mail_data', $test_mail_data);
     if (is_array($test_mail_data)) {
         try {
             $recepient = trim(array_var($test_mail_data, 'recepient'));
             $message = trim(array_var($test_mail_data, 'message'));
             $errors = array();
             if ($recepient == '') {
                 $errors[] = lang('test mail recipient required');
             } else {
                 if (!is_valid_email($recepient)) {
                     $errors[] = lang('test mail recipient invalid format');
                 }
                 // if
             }
             // if
             if ($message == '') {
                 $errors[] = lang('test mail message required');
             }
             // if
             if (count($errors)) {
                 throw new FormSubmissionErrors($errors);
             }
             // if
             $to = array($recepient);
             $success = Notifier::sendEmail($to, logged_user()->getEmailAddress(), lang('test mail message subject'), $message);
             if ($success) {
                 flash_success(lang('success test mail settings'));
             } else {
                 flash_error(lang('error test mail settings'));
             }
             // if
             ajx_current("back");
         } catch (Exception $e) {
             flash_error($e->getMessage());
             ajx_current("empty");
         }
         // try
     }
     // if
 }
 function send_reports()
 {
     $company = Companies::findById(1);
     $lTime = time() + 60 * 60 * $company->getTimezone();
     $dayOfWeek = date("l", $lTime);
     $footer = '<a href="' . externalUrl(ROOT_URL) . '">' . externalUrl(ROOT_URL) . "</a>";
     $people = Reminders::findAll(array('conditions' => 'reports_enabled = 1 and report_day = "' . $dayOfWeek . '"'));
     if (is_array($people) && count($people)) {
         foreach ($people as $person) {
             tpl_assign('settings', $person);
             $user = Users::findById($person->getUserId());
             tpl_assign('user', $user);
             $offset = 60 * 60 * $user->getTimezone();
             tpl_assign('offset', $offset);
             $allProjects = $user->getProjects();
             $emailBody = '';
             $recipient = Notifier::prepareEmailAddress($user->getEmail(), $user->getDisplayName());
             foreach ($allProjects as $project) {
                 if ($project->isActive() || $project->getCompletedOn()->getLeftInDays() > -7) {
                     tpl_assign('project', $project);
                     $condition = 'project_id = ' . $project->getId();
                     $condition .= " and is_private = 0 and is_silent = 0";
                     if (!$person->getReportsIncludeEveryone()) {
                         $condition .= ' and taken_by_id = ' . $user->getId();
                     }
                     $logs = array();
                     if ($person->getReportsIncludeActivity()) {
                         $condition .= " and created_on > Interval -7 day + now()";
                         $logs = ApplicationLogs::findAll(array('conditions' => $condition));
                     }
                     tpl_assign('logs', $logs);
                     $taskLists = $project->getAllTaskLists();
                     $emailTaskLists = array();
                     if (is_array($taskLists) && count($taskLists)) {
                         foreach ($taskLists as $taskList) {
                             $condition = 'task_list_id = ' . $taskList->getId();
                             if (!$person->getReportsIncludeEveryone()) {
                                 $condition .= " and assigned_to_user_id = " . $user->getId();
                             }
                             $condition .= " and completed_on > Interval -7 day + now()";
                             $tasks = ProjectTasks::findAll(array('conditions' => $condition));
                             if (is_array($tasks) && count($tasks)) {
                                 $emailTaskLists[] = $taskList;
                             }
                         }
                     }
                     if (count($emailTaskLists) || count($logs)) {
                         tpl_assign('taskLists', $emailTaskLists);
                         $emailBody .= tpl_fetch(get_template_path('report_per_project', 'reminders'));
                         if ($person->getReportsSummarizedBy()) {
                             try {
                                 Notifier::sendEmail($recipient, $recipient, "[ProjectPier] - Project Report - " . $project->getObjectName(), $emailBody . $footer, 'text/html');
                                 // send
                                 $emailBody = '';
                             } catch (Exception $e) {
                                 echo $e;
                             }
                         }
                     }
                 }
             }
             if (strlen($emailBody) && !$person->getReportsSummarizedBy()) {
                 $time = time() + 60 * 60 * $user->getTimezone();
                 try {
                     Notifier::sendEmail($recipient, $recipient, "[ProjectPier] - Activity Report - " . gmdate('Y/m/d', $time), $emailBody . $footer, 'text/html');
                     // send
                     $emailBody = '';
                 } catch (Exception $e) {
                     echo $e;
                 }
             }
         }
     }
 }