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('&amp;', '&', $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() . " &lt;" . $sendTo . "&gt;";
         } else {
             $formal_data_send_to[] = $user->getFullName() . " &lt;" . $translator->getMessage("USER_EMAIL_HIDDEN") . "&gt;";
         }
         // 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() . " &lt;" . $admin->getEmail() . "&gt;");
             $formal_data[] = $form_data_from;
         }
         if (!isset($formal_data_reply)) {
             $form_data_reply = array($translator->getMessage("REPLY_TO"), $admin->getFullname() . " &lt;" . $admin->getEmail() . "&gt;");
             $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;
 }
Example #4
0
         $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('&amp;', '&', $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() . " &lt;" . $user_item->getEmail() . "&gt;";
                     } else {
                         $recipients_bcc[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">";
                         $recipients_display_bcc[] = $user_item->getFullName() . " &lt;" . $translator->getMessage('USER_EMAIL_HIDDEN') . "&gt;";
                     }
                     $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() . " &lt;" . $user_item->getEmail() . "&gt;";
                 } else {
                     $recipients_bcc[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">";
                     $recipients_display_bcc[] = $user_item->getFullName() . " &lt;" . $translator->getMessage('USER_EMAIL_HIDDEN') . "&gt;";
                 }
                 $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() . " &lt;" . $attendee_item->getEmail() . "&gt;";
                     } else {
                         $recipients_bcc[] = $attendee_item->getFullName() . " <" . $attendee_item->getEmail() . ">";
                         $recipients_display_bcc[] = $attendee_item->getFullName() . " &lt;" . $translator->getMessage('USER_EMAIL_HIDDEN') . "&gt;";
                     }
                     $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() . " &lt;" . $attendee_item->getEmail() . "&gt;";
                     } else {
                         $recipients_bcc[] = $attendee_item->getFullName() . " <" . $attendee_item->getEmail() . ">";
                         $recipients_display_bcc[] = $attendee_item->getFullName() . " &lt;" . $translator->getMessage('USER_EMAIL_HIDDEN') . "&gt;";
                     }
                     $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() . " &lt;" . $user_item->getEmail() . "&gt;";
                 } else {
                     $recipients_bcc[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">";
                     $recipients_display_bcc[] = $user_item->getFullName() . " &lt;" . $translator->getMessage('USER_EMAIL_HIDDEN') . "&gt;";
                 }
                 $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() . " &lt;" . $user_item->getEmail() . "&gt;";
                 } else {
                     $recipients_bcc[] = $user_item->getFullName() . " <" . $user_item->getEmail() . ">";
                     $recipients_display_bcc[] = $user_item->getFullName() . " &lt;" . $translator->getMessage('USER_EMAIL_HIDDEN') . "&gt;";
                 }
                 $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'] . " &lt;" . $additionalRecipient['Mail'] . "&gt;";
         }
         $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;
     }
 }