function performAction($environment, $action_array, $post_array) { global $formal_data; global $mail_success; global $mail_error_array; // Get the translator object $translator = $environment->getTranslationObject(); // perform action $user_manager = $environment->getUserManager(); $admin = $user_manager->getItem($action_array['user_item_id']); if (!isset($admin)) { $admin = $environment->getCurrentUserItem(); } if (isset($post_array['copy']) and !empty($post_array['copy']) and !in_array($action_array['user_item_id'], $action_array['selected_ids']) and count($action_array['selected_ids']) > 1) { $action_array['selected_ids'][] = $action_array['user_item_id']; } foreach ($action_array['selected_ids'] as $user_item_id) { $user = $user_manager->getItem($user_item_id); if (isset($user)) { $last_status = $user->getStatus(); } if ($action_array['action'] == 'USER_ACCOUNT_DELETE') { if ($environment->inPortal() or $environment->inServer()) { $authentication = $environment->getAuthenticationObject(); $authentication->delete($user_item_id); unset($authentication); } else { ################################ # FLAG: group room ################################ if ($environment->inGroupRoom()) { $current_context = $environment->getCurrentContextItem(); $group_item = $current_context->getLinkedGroupItem(); if (isset($group_item) and !empty($group_item)) { $project_room_item = $current_context->getLinkedProjectItem(); if (isset($project_room_item) and !empty($project_room_item)) { $project_room_user_item = $project_room_item->getUserByUserID($user->getUserID(), $user->getAuthSource()); $group_item->removeMember($project_room_user_item); unset($project_room_user_item); } unset($project_room_item); } unset($group_item); unset($current_context); } ################################ # FLAG: group room ################################ $hash_manager = $environment->getHashManager(); $hash_manager->deleteHashesForUser($user->getItemID()); $user->delete(); } $send_to = $user->getEmail(); } elseif ($action_array['action'] == 'USER_ACCOUNT_LOCK') { $hash_manager = $environment->getHashManager(); $hash_manager->deleteHashesForUser($user->getItemID()); $user->reject(); $user->save(); ################################ # FLAG: group room ################################ if ($environment->inGroupRoom()) { $current_context = $environment->getCurrentContextItem(); $group_item = $current_context->getLinkedGroupItem(); if (isset($group_item) and !empty($group_item)) { $project_room_item = $current_context->getLinkedProjectItem(); if (isset($project_room_item) and !empty($project_room_item)) { $project_room_user_item = $project_room_item->getUserByUserID($user->getUserID(), $user->getAuthSource()); $group_item->removeMember($project_room_user_item); unset($group_item); unset($project_room_user_item); } unset($project_room_item); } unset($current_context); } ################################ # FLAG: group room ################################ $send_to = $user->getEmail(); } elseif ($action_array['action'] == 'USER_ACCOUNT_FREE') { // link to group 'ALL' in project rooms if ($environment->inProjectRoom()) { $group_list = $user->getGroupList(); if ($group_list->isEmpty()) { $group_manager = $environment->getLabelManager(); $group_manager->setExactNameLimit('ALL'); $group_manager->setContextLimit($environment->getCurrentContextID()); $group_manager->select(); $group_list = $group_manager->get(); if ($group_list->getCount() == 1) { $group = $group_list->getFirst(); $group->setTitle('ALL'); // needed, but not good (TBD) } // save link to the group ALL if (isset($group)) { $user->setGroupByID($group->getItemID()); $group->setModificatorItem($user); $group->save(); unset($group); } unset($group_list); unset($group_manager); } } // don't change users with status user or Moderator if (!$user->isUser() and !$user->isModerator()) { $user->makeUser(); $user->save(); ################################ # FLAG: group room ################################ if ($environment->inGroupRoom()) { $current_context = $environment->getCurrentContextItem(); $group_item = $current_context->getLinkedGroupItem(); if (isset($group_item) and !empty($group_item)) { $project_room_item = $current_context->getLinkedProjectItem(); if (isset($project_room_item) and !empty($project_room_item)) { $project_room_user_item = $project_room_item->getUserByUserID($user->getUserID(), $user->getAuthSource()); $group_item->addMember($project_room_user_item); unset($group_item); unset($project_room_user_item); } unset($project_room_item); } unset($group_item); unset($current_context); } ################################ # FLAG: group room ################################ } $send_to = $user->getEmail(); } elseif ($action_array['action'] == 'USER_STATUS_USER') { // link to group 'ALL' in project rooms if ($environment->inProjectRoom()) { $group_list = $user->getGroupList(); if ($group_list->isEmpty()) { $group_manager = $environment->getLabelManager(); $group_manager->setExactNameLimit('ALL'); $group_manager->setContextLimit($environment->getCurrentContextID()); $group_manager->select(); $group_list = $group_manager->get(); if ($group_list->getCount() == 1) { $group = $group_list->getFirst(); $group->setTitle('ALL'); // needed, but not good (TBD) } // save link to the group ALL if (isset($group)) { $user->setGroupByID($group->getItemID()); $group->setModificatorItem($user); $group->save(); unset($group); } unset($group_list); unset($group_manager); } } $user->makeUser(); $user->save(); $send_to = $user->getEmail(); ################################ # FLAG: group room ################################ if ($environment->inGroupRoom()) { $current_context = $environment->getCurrentContextItem(); $group_item = $current_context->getLinkedGroupItem(); if (isset($group_item) and !empty($group_item)) { $project_room_item = $current_context->getLinkedProjectItem(); if (isset($project_room_item) and !empty($project_room_item)) { $project_room_user_item = $project_room_item->getUserByUserID($user->getUserID(), $user->getAuthSource()); $group_item->addMember($project_room_user_item); unset($project_room_user_item); unset($group_item); } unset($project_room_item); } unset($current_context); unset($group_item); } ################################ # FLAG: group room ################################ } elseif ($action_array['action'] == 'USER_STATUS_MODERATOR') { // link to group 'ALL' in project rooms if ($environment->inProjectRoom()) { $group_list = $user->getGroupList(); if ($group_list->isEmpty()) { $group_manager = $environment->getLabelManager(); $group_manager->setExactNameLimit('ALL'); $group_manager->setContextLimit($environment->getCurrentContextID()); $group_manager->select(); $group_list = $group_manager->get(); if ($group_list->getCount() == 1) { $group = $group_list->getFirst(); $group->setTitle('ALL'); // needed, but not good (TBD) } unset($group_list); // save link to the group ALL if (isset($group)) { $user->setGroupByID($group->getItemID()); $group->setModificatorItem($user); $group->save(); unset($group); } unset($group_manager); } } $user->makeModerator(); $user->save(); $send_to = $user->getEmail(); ################################ # FLAG: group room ################################ if ($environment->inGroupRoom()) { $current_context = $environment->getCurrentContextItem(); $group_item = $current_context->getLinkedGroupItem(); if (isset($group_item) and !empty($group_item)) { $project_room_item = $current_context->getLinkedProjectItem(); if (isset($project_room_item) and !empty($project_room_item)) { $project_room_user_item = $project_room_item->getUserByUserID($user->getUserID(), $user->getAuthSource()); $group_item->addMember($project_room_user_item); unset($project_room_user_item); unset($group_item); } unset($project_room_item); } unset($current_context); unset($group_item); } ################################ # FLAG: group room ################################ } elseif ($action_array['action'] == 'USER_MAKE_CONTACT_PERSON') { $user->makeContactPerson(); $user->save(); $send_to = $user->getEmail(); } elseif ($action_array['action'] == 'USER_UNMAKE_CONTACT_PERSON') { $user->makeNoContactPerson(); $user->save(); $send_to = $user->getEmail(); } elseif ($action_array['action'] == 'USER_EMAIL_SEND') { $send_to = $user->getEmail(); } elseif ($action_array['action'] == 'USER_EMAIL_ACCOUNT_PASSWORD') { $send_to = $user->getEmail(); } elseif ($action_array['action'] == 'USER_EMAIL_ACCOUNT_MERGE') { $send_to = $user->getEmail(); } if ($user->isEmailVisible()) { $formal_data_send_to[] = $user->getFullName() . " <" . $send_to . ">"; } else { $translator = $environment->getTranslationObject(); $formal_data_send_to[] = $user->getFullName() . " <" . $translator->getMessage('USER_EMAIL_HIDDEN') . ">"; } // change task status if ($action_array['action'] == 'USER_ACCOUNT_DELETE' or $action_array['action'] == 'USER_ACCOUNT_LOCK' or $action_array['action'] == 'USER_ACCOUNT_FREE' or $action_array['action'] == 'USER_STATUS_USER' or $action_array['action'] == 'USER_STATUS_MODERATOR') { $task_manager = $environment->getTaskManager(); $task_list = $task_manager->getTaskListForItem($user); if ($task_list->getCount() > 0) { $task_item = $task_list->getFirst(); while ($task_item) { if ($task_item->getStatus() == 'REQUEST' and ($task_item->getTitle() == 'TASK_USER_REQUEST' or $task_item->getTitle() == 'TASK_PROJECT_ROOM_REQUEST')) { $task_item->setStatus('CLOSED'); $task_item->save(); } $task_item = $task_list->getNext(); } } unset($task_list); unset($task_item); unset($task_manager); } // if commsy user is rejected, reject all accounts in projectrooms and community rooms if ($user->isRejected() and $environment->inPortal()) { $user_list = $user->getRelatedUserList(); $user_item = $user_list->getFirst(); while ($user_item) { $user_item->reject(); $user_item->save(); $user_item = $user_list->getNext(); } unset($user_list); unset($user_item); } // if commsy user is re-opend, re-open own room user if ($environment->inPortal() and isset($last_status) and (empty($last_status) or $last_status == 0)) { $user_own_room = $user->getRelatedPrivateRoomUserItem(); if (isset($user_own_room)) { $user_own_room->makeModerator(); $user_own_room->makeContactPerson(); $user_own_room->save(); } } // send email if (isset($post_array['with_mail']) and $post_array['with_mail'] == '1') { include_once 'classes/cs_mail.php'; $mail = new cs_mail(); $mail->set_from_email($admin->getEmail()); $mail->set_from_name($admin->getFullname()); $mail->set_reply_to_email($admin->getEmail()); $mail->set_reply_to_name($admin->getFullname()); if (!isset($formal_data_from)) { $formal_data_from = array($translator->getMessage('MAIL_FROM'), $admin->getFullname() . " <" . $admin->getEmail() . ">"); $formal_data[] = $formal_data_from; } if (!isset($formal_data_reply)) { $formal_data_reply = array($translator->getMessage('REPLY_TO'), $admin->getFullname() . " <" . $admin->getEmail() . ">"); $formal_data[] = $formal_data_reply; } // subject and body // language $translator = $environment->getTranslationObject(); $room = $environment->getCurrentContextItem(); $url_to_room = LF . LF; $url_to_room .= 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?cid=' . $environment->getCurrentContextID(); $subject = $_POST['subject']; $content = $_POST['content']; $content = str_replace('%1', $user->getFullname(), $content); // now prepare for each action separately if ($action_array['action'] == 'USER_ACCOUNT_DELETE' or $action_array['action'] == 'USER_ACCOUNT_LOCK' or $action_array['action'] == 'USER_ACCOUNT_FREE' or $action_array['action'] == 'USER_STATUS_USER' or $action_array['action'] == 'USER_STATUS_MODERATOR' or $action_array['action'] == 'USER_UNMAKE_CONTACT_PERSON' or $action_array['action'] == 'USER_MAKE_CONTACT_PERSON') { if ($this->_environment->getCurrentPortalItem()->getHideAccountname()) { $userid = $user->getFullName(); } else { $userid = $user->getUserID(); } $content = str_replace('%2', $userid, $content); $content = str_replace('%3', $room->getTitle(), $content); } elseif ($action_array['action'] == 'USER_EMAIL_ACCOUNT_PASSWORD') { $content = str_replace('%2', $room->getTitle(), $content); $content = str_replace('%3', $userid, $content); } elseif ($action_array['action'] == 'USER_EMAIL_ACCOUNT_MERGE') { $account_text = ''; $user_manager->resetLimits(); $user_manager->setContextLimit($environment->getCurrentContextID()); $user_manager->setUserLimit(); $user_manager->setSearchLimit($user->getEmail()); $user_manager->select(); $user_list = $user_manager->get(); if (!$user_list->isEmpty()) { if ($user_list->getCount() > 1) { $first = true; $user_item = $user_list->getFirst(); while ($user_item) { if ($first) { $first = false; } else { $account_text .= LF; } $account_text .= $user_item->getUserID(); $user_item = $user_list->getNext(); } } else { include_once 'functions/error_functions.php'; trigger_error('that is impossible, list must be greater than one', E_USER_WARNING); } } else { include_once 'functions/error_functions.php'; trigger_error('that is impossible, list must be greater than one', E_USER_WARNING); } $content = str_replace('%2', $user->getEmail(), $content); $content = str_replace('%3', $room->getTitle(), $content); $content = str_replace('%4', $account_text, $content); } unset($translator); unset($room); $translator = $environment->getTranslationObject(); if (isset($subject) and !empty($subject)) { $mail->set_subject($subject); if (!isset($formal_data_subject)) { $formal_data_subject = array($translator->getMessage('MAIL_SUBJECT'), $subject); } } if (isset($content) and !empty($content)) { $mail->set_message($content); if (!isset($formal_data_message)) { $formal_data_message = array($translator->getMessage('COMMON_MAIL_CONTENT') . ":", $content); } } $mail->set_to($send_to); #// cc / bcc $cc_string = ''; $bcc_string = ''; $cc_array = array(); $bcc_array = array(); if (isset($post_array['cc']) and $post_array['cc'] == 'cc') { $cc_array[] = $admin->getEmail(); } if (isset($post_array['bcc']) and $post_array['bcc'] == 'bcc') { $bcc_array[] = $admin->getEmail(); } if (isset($post_array['cc_moderator']) and $post_array['cc_moderator'] == 'cc_moderator') { $current_context = $environment->getCurrentContextItem(); $mod_list = $current_context->getModeratorList(); if (!$mod_list->isEmpty()) { $moderator_item = $mod_list->getFirst(); while ($moderator_item) { $email = $moderator_item->getEmail(); if (!empty($email)) { $cc_array[] = $email; } unset($email); $moderator_item = $mod_list->getNext(); } } unset($current_context); } if (isset($post_array['bcc_moderator']) and $post_array['bcc_moderator'] == 'bcc_moderator') { $current_context = $environment->getCurrentContextItem(); $mod_list = $current_context->getModeratorList(); if (!$mod_list->isEmpty()) { $moderator_item = $mod_list->getFirst(); while ($moderator_item) { $email = $moderator_item->getEmail(); if (!empty($email)) { $bcc_array[] = $email; } unset($email); $moderator_item = $mod_list->getNext(); } } unset($current_context); } if (isset($post_array['copy']) and !empty($post_array['copy']) and !in_array($action_array['user_item_id'], $action_array['selected_ids']) and count($action_array['selected_ids']) == 1) { $cc_array[] = $admin->getEmail(); } if (!empty($cc_array)) { $cc_array = array_unique($cc_array); } if (!empty($bcc_array)) { $bcc_array = array_unique($bcc_array); } $cc_string = implode(",", $cc_array); $bcc_string = implode(",", $bcc_array); unset($cc_array); unset($bcc_array); if (!empty($cc_string)) { $mail->set_cc_to($cc_string); } if (!empty($bcc_string)) { $mail->set_bcc_to($bcc_string); } unset($cc_string); unset($bcc_string); $mail_success = $mail->send(); $mail_error_array = $mail->getErrorArray(); unset($mail); } unset($user); } if (isset($formal_data_send_to)) { $formal_data[] = array($translator->getMessage('MAIL_TO'), implode(",", $formal_data_send_to)); } if (isset($formal_data_subject)) { $formal_data[] = $formal_data_subject; } if (isset($formal_data_message)) { $formal_data[] = $formal_data_message; } unset($user_manager); unset($admin); redirect($environment->getCurrentContextID(), $environment->getCurrentModule(), 'index'); }
public function save($form_data, $additional = array()) { if ($this->_popup_controller->checkFormData()) { $groupManager = $this->_environment->getGroupManager(); $currentContext = $this->_environment->getCurrentContextItem(); $translator = $this->_environment->getTranslationObject(); $recipients = array(); $recipientsBCC = array(); $mail = array(); $nameArray = array(); foreach ($form_data["groups"] as $groupId) { $groupItem = $groupManager->getItem($groupId); $userList = $groupItem->getMemberItemList(); $nameArray[] = $groupItem->getTitle(); $userItem = $userList->getFirst(); while ($userItem) { if ($userItem->isUser()) { if ($userItem->isEmailVisible()) { $recipients[] = $userItem->getFullName() . " <" . $userItem->getEmail() . ">"; } else { $recipientsBCC[] = $userItem->getFullName() . " <" . $userItem->getEmail() . ">"; } } $userItem = $userList->getNext(); } } $recipients = array_unique($recipients); $recipientsBCC = array_unique($recipientsBCC); $serverItem = $this->_environment->getServerItem(); $defaultSenderAddress = $serverItem->getDefaultSenderAddress(); $currentUser = $this->_environment->getCurrentUser(); $mail["from_name"] = $currentUser->getFullName(); $mail["from_email"] = $currentUser->getEmail(); $mail["reply_to_name"] = $currentUser->getFullName(); $mail["reply_to_email"] = $currentUser->getEmail(); $mail["to"] = implode(",", $recipients); $mail["subject"] = $form_data["subject"]; $mail["message"] = $form_data["mailcontent"]; $email = new cs_mail(); $email->set_from_name($mail["from_name"]); $email->set_from_email($mail["from_email"]); $email->set_reply_to_name($mail["reply_to_name"]); $email->set_reply_to_email($mail["reply_to_email"]); $email->set_to($mail["to"]); $email->set_subject($mail["subject"]); if ($form_data["copytosender"] === "true") { $email->set_cc_to($currentUser->getEmail()); } if (!empty($recipientsBCC)) { $email->set_bcc_to(implode(",", $recipientsBCC)); } $addMessage = ""; $context_title = str_ireplace('&', '&', $currentContext->getTitle()); if (sizeof($form_data["groups"]) == 1) { $addMessage = $translator->getMessage("RUBRIC_EMAIL_ADDED_BODY_PROJECT_GROUP_S", $context_title, $nameArray[0]); } else { $addMessage = $translator->getMessage("RUBRIC_EMAIL_ADDED_BODY_PROJECT_GROUP_PL", $context_title, implode("," . LF, $nameArray)); } if (!empty($addMessage)) { $addMessage = LF . LF . "---" . LF . $addMessage; } $email->set_message($mail["message"] . $addMessage); if ($email->send()) { $this->_popup_controller->setSuccessfullDataReturn(array()); } else { $this->_popup_controller->setErrorReturn("113", "error processing mails", $email->getErrorArray()); } } }
public function actionSendMail() { $user_manager = $this->_environment->getUserManager(); $translator = $this->_environment->getTranslationObject(); $ids = $this->_data["ids"]; $sendMail = $this->_data["sendMail"]; $modCC = $this->_data["modCC"]; $modBCC = $this->_data["modBCC"]; $authCC = $this->_data["authCC"]; $authBCC = $this->_data["authBCC"]; $subject = $this->_data["subject"]; $action = $this->_data["action"]; $admin = $this->_environment->getCurrentUser(); $response_array = array(); include_once "classes/cs_mail.php"; foreach ($ids as $id) { $user = $user_manager->getItem($id); $sendTo = $user->getEmail(); $description = $this->_data["description"]; $formal_data_send_to = array(); if ($user->isEmailVisible()) { $formal_data_send_to[] = $user->getFullName() . " <" . $sendTo . ">"; } else { $formal_data_send_to[] = $user->getFullName() . " <" . $translator->getMessage("USER_EMAIL_HIDDEN") . ">"; } // prepare mail $mail = new cs_mail(); $mail->set_from_email($admin->getEmail()); $mail->set_from_name($admin->getFullname()); $mail->set_reply_to_email($admin->getEmail()); $mail->set_reply_to_name($admin->getFullname()); if (!isset($formal_data_from)) { $formal_data_from = array($translator->getMessage("MAIL_FROM"), $admin->getFullname() . " <" . $admin->getEmail() . ">"); $formal_data[] = $form_data_from; } if (!isset($formal_data_reply)) { $form_data_reply = array($translator->getMessage("REPLY_TO"), $admin->getFullname() . " <" . $admin->getEmail() . ">"); $formal_data[] = $form_data_reply; } // subject and body $room = $this->_environment->getCurrentContextItem(); $url_to_room = LF . LF; $url_to_room .= "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"] . "?cid=" . $this->_environment->getCurrentContextID(); if ($action !== "email") { $description = str_replace("%1", $user->getFullname(), $description); $description = str_replace("%2", $user->getUserID(), $description); $description = str_replace("%3", $room->getTitle(), $description); } if (isset($subject) && !empty($subject)) { $mail->set_subject($subject); if (!isset($formal_data_subject)) { $formal_data_subject = array($translator->getMessage("MAIL_SUBJECT"), $subject); } } if (isset($description) && !empty($description)) { $mail->set_message($description); if (!isset($formal_data_message)) { $formal_data_message = array($translator->getMessage("COMMON_MAIL_CONTENT") . ":", $description); } } // reciever if (isset($sendMail) && $sendMail == "true" || $action == "mail") { $mail->set_to($sendTo); } // Datenschutz if ($this->_environment->getCurrentPortalItem()->getHideAccountname()) { $mail_user = $mail; $user_description = str_replace('XXX ' . $translator->getMessage('COMMON_DATASECURITY_NAME', $user->getFullname()), $user->getUserID(), $description); $mail_user->set_message($user_description); $mail_success = $mail_user->send(); // $mail->set_to($admin->getEmail()); $mail->set_message($description); } // cc / bcc $cc_array = array(); $bcc_array = array(); if (isset($authCC) && $authCC == "true") { $cc_array[] = $admin->getEmail(); } if (isset($authBCC) && authBCC == "true") { $bcc_array[] = $admin->getEmail(); } if (isset($modCC) && $modCC == "true") { $current_context = $this->_environment->getCurrentContextItem(); $mod_list = $current_context->getModeratorList(); if (!$mod_list->isEmpty()) { $moderator_item = $mod_list->getFirst(); while ($moderator_item) { $email = $moderator_item->getEmail(); if (!empty($email)) { $cc_array[] = $email; } unset($email); $moderator_item = $mod_list->getNext(); } } } if (isset($modBCC) && $modBCC == "true") { $current_context = $this->_environment->getCurrentContextItem(); $mod_list = $current_context->getModeratorList(); if (!$mod_list->isEmpty()) { $moderator_item = $mod_list->getFirst(); while ($moderator_item) { $email = $moderator_item->getEmail(); if (!empty($email)) { $bcc_array[] = $email; } unset($email); $moderator_item = $mod_list->getNext(); } } } // make unique if (!empty($cc_array)) { $cc_array = array_unique($cc_array); } if (!empty($bcc_array)) { $bcc_array = array_unique($bcc_array); } // build strings $cc_string = implode(",", $cc_array); $bcc_string = implode(",", $bcc_array); if (!empty($cc_string)) { $mail->set_cc_to($cc_string); } if (!empty($bcc_string)) { $mail->set_bcc_to($bcc_string); } if ($this->_environment->getCurrentPortalItem()->getHideAccountname()) { if (!empty($cc_string) or !empty($bcc_string)) { $mail->set_to(''); $mail_success = $mail->send(); } } else { $mail_success = $mail->send(); } unset($cc_string); unset($bcc_string); // send mail $response_array[] = array($mail_success, $mail_error_array = $mail->getErrorArray()); } // setup successfull reponse array - but it can also contains errors $this->setSuccessfullDataReturn($response_array); echo $this->_return; }
$mail['to'] = implode(",",$recipients); $mail['subject'] = $_POST['subject']; $mail['message'] = $_POST['mailcontent']; $email = new cs_mail(); $email->set_from_name($mail['from_name']); $email->set_from_email($mail['from_email']); $email->set_reply_to_name($mail['reply_to_name']); $email->set_reply_to_email($mail['reply_to_email']); $email->set_to($mail['to']); $email->set_subject($mail['subject']); if ($translator->getMessage('COMMON_YES') == $_POST['copytosender']) { $email->set_cc_to($current_user->getEmail()); } if ( !empty($recipients_bcc) ) { $email->set_bcc_to(implode(",",$recipients_bcc)); } $add_message = ''; $current_context = $environment->getCurrentContextItem(); $context_title = str_ireplace('&', '&', $current_context->getTitle()); if ($counter == 1) { $add_message = $translator->getMessage('RUBRIC_EMAIL_ADDED_BODY_PROJECT_GROUP_S',$context_title,$name_array[0]); } elseif ($counter > 1) { $add_message = $translator->getMessage('RUBRIC_EMAIL_ADDED_BODY_PROJECT_GROUP_PL',$context_title,implode(','.LF,$name_array)); } if (!empty($add_message)) { $add_message = LF.LF.'---'.LF.$add_message; } $email->set_message($mail['message'].$add_message);
public function actionSend() { $manager = $this->_environment->getItemManager(); $translator = $this->_environment->getTranslationObject(); $iid = $this->_data['itemId']; $rubric_item = $manager->getItem($iid); if ($rubric_item && $this->_data['subject']) { $module = $rubric_item->getItemType(); $user_manager = $this->_environment->getUserManager(); $user_manager->resetLimits(); $user_manager->setUserLimit(); $recipients = array(); $recipients_display = array(); $recipients_bcc = array(); $recipients_display_bcc = array(); $label_manager = $this->_environment->getLabelManager(); $topic_list = new cs_list(); if (isset($this->_data["allMembers"])) { //send to all members of a community room, if no institutions and topics are availlable if ($this->_data["allMembers"] == '1') { $cid = $this->_environment->getCurrentContextId(); $user_manager->setContextLimit($cid); $user_manager->select(); $user_list = $user_manager->get(); $user_item = $user_list->getFirst(); while ($user_item) { if ($user_item->isEmailVisible()) { $recipients[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">"; $recipients_display[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">"; } else { $recipients_bcc[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">"; $recipients_display_bcc[] = $user_item->getFullName() . " <" . $translator->getMessage('USER_EMAIL_HIDDEN') . ">"; } $user_item = $user_list->getNext(); } } } if ($module == CS_TOPIC_TYPE) { $topic_list = $label_manager->getItemList($_POST[CS_TOPIC_TYPE]); } $topic_item = $topic_list->getFirst(); while ($topic_item) { // get selected rubrics for inclusion in recipient list $user_manager->setTopicLimit($topic_item->getItemID()); $user_manager->select(); $user_list = $user_manager->get(); $user_item = $user_list->getFirst(); while ($user_item) { if ($user_item->isEmailVisible()) { $recipients[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">"; $recipients_display[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">"; } else { $recipients_bcc[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">"; $recipients_display_bcc[] = $user_item->getFullName() . " <" . $translator->getMessage('USER_EMAIL_HIDDEN') . ">"; } $user_item = $user_list->getNext(); } $topic_item = $topic_list->getNext(); } if (isset($this->_data["copyToAttendees"]) && $this->_data["copyToAttendees"] == "true") { if ($module == CS_DATE_TYPE) { $date_manager = $this->_environment->getDateManager(); $date_item = $date_manager->getItem($rubric_item->getItemID()); $attendees_list = $date_item->getParticipantsItemList(); $attendee_item = $attendees_list->getFirst(); while ($attendee_item) { if ($attendee_item->isEmailVisible()) { $recipients[] = $attendee_item->getFullName() . " <" . $attendee_item->getEmail() . ">"; $recipients_display[] = $attendee_item->getFullName() . " <" . $attendee_item->getEmail() . ">"; } else { $recipients_bcc[] = $attendee_item->getFullName() . " <" . $attendee_item->getEmail() . ">"; $recipients_display_bcc[] = $attendee_item->getFullName() . " <" . $translator->getMessage('USER_EMAIL_HIDDEN') . ">"; } $attendee_item = $attendees_list->getNext(); } } elseif ($module == CS_TOPIC_TYPE) { $todo_manager = $this->_environment->getToDoManager(); $todo_item = $todo_manager->getItem($rubric_item->getItemID()); $attendees_list = $todo_item->getProcessorItemList(); $attendee_item = $attendees_list->getFirst(); while ($attendee_item) { if ($attendee_item->isEmailVisible()) { $recipients[] = $attendee_item->getFullName() . " <" . $attendee_item->getEmail() . ">"; $recipients_display[] = $attendee_item->getFullName() . " <" . $attendee_item->getEmail() . ">"; } else { $recipients_bcc[] = $attendee_item->getFullName() . " <" . $attendee_item->getEmail() . ">"; $recipients_display_bcc[] = $attendee_item->getFullName() . " <" . $translator->getMessage('USER_EMAIL_HIDDEN') . ">"; } $attendee_item = $attendees_list->getNext(); } } } $user_manager->resetLimits(); $user_manager->setUserLimit(); $label_manager = $this->_environment->getLabelManager(); $group_list = new cs_list(); // build group id array $groupIdArray = array(); foreach ($this->_data as $key => $value) { if (mb_stristr($key, "group_") && $value == true) { $groupIdArray[] = mb_substr($key, 6); } } if (!empty($groupIdArray)) { $group_list = $label_manager->getItemList($groupIdArray); } $group_item = $group_list->getFirst(); while ($group_item) { // get selected rubrics for inclusion in recipient list $user_manager->setGroupLimit($group_item->getItemID()); $user_manager->select(); $user_list = $user_manager->get(); $user_item = $user_list->getFirst(); while ($user_item) { if ($user_item->isEmailVisible()) { $recipients[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">"; $recipients_display[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">"; } else { $recipients_bcc[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">"; $recipients_display_bcc[] = $user_item->getFullName() . " <" . $translator->getMessage('USER_EMAIL_HIDDEN') . ">"; } $user_item = $user_list->getNext(); } $group_item = $group_list->getNext(); } $user_manager->resetLimits(); $user_manager->setUserLimit(); $label_manager = $this->_environment->getLabelManager(); $institution_list = new cs_list(); // build institution id array $institutionIdArray = array(); foreach ($this->_data as $key => $value) { if (mb_stristr($key, "institution_") && $value == true) { $institutionIdArray[] = mb_substr($key, 12); } } if (!empty($institutionIdArray)) { $institution_list = $label_manager->getItemList($institutionIdArray); } $institution_item = $institution_list->getFirst(); while ($institution_item) { // get selected rubrics for inclusion in recipient list $user_manager->setInstitutionLimit($institution_item->getItemID()); $user_manager->select(); $user_list = $user_manager->get(); $user_item = $user_list->getFirst(); while ($user_item) { if ($user_item->isEmailVisible()) { $recipients[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">"; $recipients_display[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">"; } else { $recipients_bcc[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">"; $recipients_display_bcc[] = $user_item->getFullName() . " <" . $translator->getMessage('USER_EMAIL_HIDDEN') . ">"; } $user_item = $user_list->getNext(); } $institution_item = $institution_list->getNext(); } // additional recipients $additionalRecipientsArray = array(); foreach ($this->_data as $key => $value) { if (mb_substr($key, 0, 10) == "additional") { $shortKey = mb_substr($key, 10); list($field, $index) = explode('_', $shortKey); $additionalRecipientsArray[$index - 1][$field] = $value; } } foreach ($additionalRecipientsArray as $additionalRecipient) { $recipients[] = $additionalRecipient['FirstName'] . ' ' . $additionalRecipient['LastName'] . " <" . $additionalRecipient['Mail'] . ">"; $recipients_display[] = $additionalRecipient['FirstName'] . ' ' . $additionalRecipient['LastName'] . " <" . $additionalRecipient['Mail'] . ">"; } $recipients = array_unique($recipients); $recipients_display = array_unique($recipients_display); if ($this->_environment->inGroupRoom() and empty($recipients_display)) { $cid = $this->_environment->getCurrentContextId(); $user_manager->setContextLimit($cid); $count = $user_manager->getCountAll(); unset($user_manager); if ($count == 1) { $text = $translator->getMessage('COMMON_MAIL_ALL_ONE_IN_ROOM', $count); } else { $text = $translator->getMessage('COMMON_MAIL_ALL_IN_ROOM', $count); } $recipients_display[] = $text; } $recipients_bcc = array_unique($recipients_bcc); $recipients_display_bcc = array_unique($recipients_display_bcc); $current_user = $this->_environment->getCurrentUser(); $mail['from_name'] = $current_user->getFullName(); $mail['from_email'] = $current_user->getEmail(); $mail['to'] = implode(", ", $recipients); $mail['subject'] = $this->_data["subject"]; $mail['message'] = $this->_data["body"]; $email = new cs_mail(); $email->set_from_email($mail['from_email']); $email->set_from_name($mail['from_name']); $email->set_to($mail['to']); $email->set_subject($mail['subject']); $email->set_message($mail['message']); if (isset($this->_data["copyToSender"]) && $this->_data["copyToSender"] == 'true') { $email->set_cc_to($current_user->getEmail()); } if (!empty($recipients_bcc)) { $email->set_bcc_to(implode(",", $recipients_bcc)); } if ($email->send()) { // prepare data for confirm popup $confirmPopupData = array("from" => $mail['from_email'], "to" => $recipients, "reply" => $mail['from_email'], "copyToSender" => isset($this->_data["copyToSender"]) && $this->_data["copyToSender"] == 'true', "recipientsBcc" => $recipients_bcc, "subject" => $this->_data["subject"], "body" => nl2br($this->_data["body"])); $this->setSuccessfullDataReturn(array($confirmPopupData)); echo $this->_return; } else { // Mail could not be send $this->setErrorReturn("110", "mail could not be delivered", array()); echo $this->_return; exit; } } else { $this->setErrorReturn("111", "missing mandatory field", array()); echo $this->_return; exit; } }