- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/ml/dataprovider/mail.php
- Класс: Bitrix\Crm\Ml\DataProvider\Mail
- Вызов: Mail::getFeatures
public function getFeatures($entityTypeId, $entityId)
{
if(!Loader::includeModule("mail"))
{
return null;
}
$activities = ActivityTable::getList([
"select" => ["ID", "COMPLETED", "START_TIME", "END_TIME", "CREATED", "DIRECTION", "SUBJECT", new ExpressionField("DESCRIPTION", "DESCRIPTION")],
"filter" => [
"=PROVIDER_ID" => \Bitrix\Crm\Activity\Provider\Email::getId(),
"=PROVIDER_TYPE_ID" => 'EMAIL',
"=BINDINGS.OWNER_TYPE_ID" => $entityTypeId,
"=BINDINGS.OWNER_ID" => $entityId,
],
"order" => [
"START_TIME" => "desc"
],
"limit" => static::MAX_MESSAGES
])->fetchAll();
// EMAIL_COUNT_TOTAL
$result["EMAIL_COUNT_TOTAL"] = count($activities);
// EMAIL_COUNT_LAST_WEEK
$weekBefore = clone $this->currentDate;
$weekBefore->add("-1 weeks");
$mailLastWeek = FeatureBuilder::filterActivitiesByDate($activities, $weekBefore, $this->currentDate);
$result["EMAIL_COUNT_LAST_WEEK"] = count($mailLastWeek);
// EMAIL_COUNT_LAST_MONTH
$monthBefore = clone $this->currentDate;
$monthBefore->add("-1 weeks");
$emailLastMonth = FeatureBuilder::filterActivitiesByDate($activities, $monthBefore, $this->currentDate);
$result["EMAIL_COUNT_LAST_MONTH"] = count($emailLastMonth);
// EMAIL_COUNT_OLDER_MONTH
$from = DateTime::createFromTimestamp(0);
$emailOld = FeatureBuilder::filterActivitiesByDate($activities, $from, $monthBefore);
$result["EMAIL_COUNT_OLDER_MONTH"] = count($emailOld);
// EMAIL_OPERATOR_TEXT
$messages = array_filter($activities, function($act){return $act["DIRECTION"] == \CCrmActivityDirection::Outgoing;});
$messages = array_map(
function($act)
{
return FeatureBuilder::clearText($act["SUBJECT"] . " " . $act["DESCRIPTION"], static::MAX_WORDS_IN_MESSAGE);
},
$messages
);
//$result["EMAIL_OPERATOR_TEXT_RAW"] = join(" ", $messages);
$result["EMAIL_OPERATOR_TEXT"] = join(" ", $messages);
// EMAIL_CLIENT_TEXT
$messages = array_filter($activities, function($act){return $act["DIRECTION"] == \CCrmActivityDirection::Incoming;});
$messages = array_map(
function($act)
{
return FeatureBuilder::clearText($act["SUBJECT"] . " " . $act["DESCRIPTION"], static::MAX_WORDS_IN_MESSAGE);
},
$messages
);
//$result["EMAIL_CLIENT_TEXT_RAW"] = join(" ", $messages);
$result["EMAIL_CLIENT_TEXT"] = FeatureBuilder::clearText(join(" ", $messages));
return $result;
}