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');
 }
Example #2
0
            $params['environment'] = $environment;
            $params['with_modifying_actions'] = false;
            $detail_view = $class_factory->getClass(MAIL_VIEW,$params);
            unset($params);
            $detail_view->setFormalData($formal_data);
            $page->add($detail_view);

         } // ~email->send()

         else { // Mail could not be send: display error message.
            $params = array();
            $params['environment'] = $environment;
            $params['with_modifying_actions'] = true;
            $errorbox = $class_factory->getClass(ERRORBOX_VIEW,$params);
            unset($params);
            $error_array = $email->getErrorArray();
            if ( !empty($error_array) ) {
               $error_string = $translator->getMessage('ERROR_SEND_EMAIL_TO');
               foreach ($error_array as $error) {
                  $error = htmlentities($error, ENT_NOQUOTES, 'UTF-8');
                  $error = str_replace(',',BRLF,$error);
                  $error_string .= BRLF.$error;
               }
            } else {
               $error_string = $translator->getMessage('ERROR_SEND_MAIL');
            }

            $params = array();
            $params['environment'] = $environment;
            $params['with_modifying_actions'] = false;
            $detail_view = $class_factory->getClass(MAIL_VIEW,$params);
 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;
 }