private function getMailProperties($msg, $i = 0)
 {
     $text = $msg->getTextBody();
     // plain body is already converted to UTF-8 (when mail was saved)
     if (strlen_utf($text) > 150) {
         $text = substr_utf($text, 0, 150) . "...";
     }
     $show_as_conv = user_config_option('show_emails_as_conversations');
     if ($show_as_conv) {
         $conv_total = MailContents::countMailsInConversation($msg);
         $conv_unread = MailContents::countUnreadMailsInConversation($msg);
         $conv_hasatt = MailContents::conversationHasAttachments($msg);
     }
     $properties = array("id" => $msg->getId(), "ix" => $i, "object_id" => $msg->getId(), "type" => 'email', "hasAttachment" => $msg->getHasAttachments(), "accountId" => $msg->getAccountId(), "accountName" => $msg->getAccount() instanceof MailAccount ? $msg->getAccount()->getName() : lang('n/a'), "projectId" => $msg->getWorkspacesIdsCSV(logged_user()->getWorkspacesQuery()), "subject" => $msg->getSubject(), "text" => $text, "date" => $msg->getReceivedDate() instanceof DateTimeValue ? $msg->getReceivedDate()->isToday() ? format_time($msg->getReceivedDate()) : format_datetime($msg->getReceivedDate()) : lang('n/a'), "userId" => $msg->getAccount() instanceof MailAccount && $msg->getAccount()->getOwner() instanceof User ? $msg->getAccount()->getOwner()->getId() : 0, "userName" => $msg->getAccount() instanceof MailAccount && $msg->getAccount()->getOwner() instanceof User ? $msg->getAccount()->getOwner()->getDisplayName() : lang('n/a'), "tags" => implode(", ", $msg->getTagNames()), "isRead" => $show_as_conv ? $conv_unread == 0 : $msg->getIsRead(logged_user()->getId()), "from" => $msg->getFromName() != '' ? $msg->getFromName() : $msg->getFrom(), "from_email" => $msg->getFrom(), "isDraft" => $msg->getIsDraft(), "isSent" => $msg->getIsSent(), "folder" => $msg->getImapFolderName(), "to" => $msg->getTo());
     if ($show_as_conv) {
         $properties["conv_total"] = $conv_total;
         $properties["conv_unread"] = $conv_unread;
         $properties["conv_hasatt"] = $conv_hasatt;
     }
     return $properties;
 }
 private function getMailProperties($msg, $i = 0)
 {
     $text = $msg->getTextBody();
     // plain body is already converted to UTF-8 (when mail was saved)
     if (strlen_utf($text) > 150) {
         $text = substr_utf($text, 0, 150) . "...";
     }
     $show_as_conv = user_config_option('show_emails_as_conversations');
     if ($show_as_conv) {
         $conv_total = MailContents::countMailsInConversation($msg);
         $conv_unread = MailContents::countUnreadMailsInConversation($msg);
         $conv_hasatt = MailContents::conversationHasAttachments($msg);
     }
     //if the variable is not set, make the query and set it.
     //seba
     // Comented by php TODO: Feng 2 context/members
     /*
     		if(!isset($this->user_workspaces_ids)){
     			$sql = logged_user()->getWorkspacesQuery();
     			$rows = DB::executeAll($sql);
     			if (count($rows)== 0) $this->user_workspaces_ids = "0";
     			else{
     				foreach ($rows as $row){
     						if ($this->user_workspaces_ids != "") $this->user_workspaces_ids .= ",";
     						$this->user_workspaces_ids .= $row['project_id'];						
     				}
     			}
     		}*/
     /* @var $msg MailContent */
     $persons_dim = Dimensions::findByCode('feng_persons');
     $persons_dim_id = $persons_dim instanceof Dimension ? $persons_dim->getId() : "0";
     $mail_member_ids = array_flat(DB::executeAll("SELECT om.member_id FROM " . TABLE_PREFIX . "object_members om\r\n\t\t\t\tINNER JOIN " . TABLE_PREFIX . "members m ON m.id=om.member_id \r\n\t\t\t\tWHERE om.object_id = '" . $msg->getId() . "' AND om.is_optimization = 0 AND m.dimension_id<>{$persons_dim_id}"));
     $properties = array("id" => $msg->getId(), "ix" => $i, "object_id" => $msg->getId(), "ot_id" => $msg->getObjectTypeId(), "type" => 'email', "hasAttachment" => $msg->getHasAttachments(), "accountId" => $msg->getAccountId(), "accountName" => $msg->getAccount() instanceof MailAccount ? $msg->getAccount()->getName() : lang('n/a'), "subject" => $msg->getSubject(), "text" => $text, "date" => $msg->getReceivedDate() instanceof DateTimeValue ? $msg->getReceivedDate()->isToday() ? format_time($msg->getReceivedDate()) : format_datetime($msg->getReceivedDate()) : lang('n/a'), "userId" => $msg->getAccount() instanceof MailAccount && $msg->getAccount()->getOwner() instanceof Contact ? $msg->getAccount()->getOwner()->getId() : 0, "userName" => $msg->getAccount() instanceof MailAccount && $msg->getAccount()->getOwner() instanceof Contact ? $msg->getAccount()->getOwner()->getObjectName() : lang('n/a'), "isRead" => $show_as_conv ? $conv_unread == 0 : $msg->getIsRead(logged_user()->getId()), "from" => $msg->getFromName() != '' ? $msg->getFromName() : $msg->getFrom(), "from_email" => $msg->getFrom(), "isDraft" => $msg->getIsDraft(), "isSent" => $msg->getIsSent(), "folder" => $msg->getImapFolderName(), "to" => $msg->getTo(), "memPath" => json_encode($msg->getMembersIdsToDisplayPath()), "memberIds" => implode(",", $mail_member_ids));
     if ($show_as_conv) {
         $properties["conv_total"] = $conv_total;
         $properties["conv_unread"] = $conv_unread;
         $properties["conv_hasatt"] = $conv_hasatt;
     }
     return $properties;
 }