Files
crm.clientright.ru/modules/ITS4YouMobileApp/components/Dashboard/models/record.php
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

955 lines
31 KiB
PHP

<?php
/* * *******************************************************************************
* Description: ITS4You Mobile App
* All Rights Reserved.
* Contributor: IT-Solutions4You s.r.o - www.its4you.sk
* ****************************************************************************** */
class ApiDashboardRecordModel
{
/**
* @var array
*/
protected $activeWidgets = [];
/**
* @var array
*/
protected $history = [];
/**
* @var array
*/
protected $keyMetrics = [];
/**
* @var array
*/
protected $leads = [];
/**
* @var int
*/
protected $linkId = 0;
/**
* @var string
*/
protected $moduleName = '';
/**
* @var array
*/
protected $modules = [];
/**
* @var string
*/
protected $name = '';
/**
* @var array
*/
protected $openTickets = [];
/**
* @var array
*/
protected $overdueActivities = [];
/**
* @var array
*/
protected $potentials = [];
/**
* @var array
*/
protected $quickCreateModules = [];
/**
* @var array
*/
protected $revenuePerSalesPerson = [];
/**
* @var array
*/
protected $ticketsByStatus = [];
/**
* @var array
*/
protected $topOpportunities = [];
/**
* @var array
*/
protected $totalAmountBySalesStage = [];
/**
* @var array
*/
protected $upcomingActivities = [];
/**
* @var int
*/
protected $userId = 0;
/**
* @var array
*/
protected $users = [];
/**
* @var array
*/
protected $widgets = [];
/**
* @return array
*/
public function getActiveWidgets(): array
{
return $this->activeWidgets;
}
/**
* @return array
*/
public function getHistory(): array
{
return $this->history;
}
/**
* @return array
*/
public function getKeyMetrics(): array
{
return $this->keyMetrics;
}
/**
* @return array
*/
public function getLeads(): array
{
return $this->leads;
}
/**
* @return array
*/
public function getModules(): array
{
return $this->modules;
}
/**
* @return array
*/
public function getOpenTickets(): array
{
return $this->openTickets;
}
/**
* @return array
*/
public function getOverdueActivities(): array
{
return $this->overdueActivities;
}
/**
* @return array
*/
public function getPotentials(): array
{
return $this->potentials;
}
/**
* @return array
*/
public function getQuickCreateModules(): array
{
return $this->quickCreateModules;
}
/**
* @return array
*/
public function getRevenuePerSalesPerson(): array
{
return $this->revenuePerSalesPerson;
}
/**
* @return array
*/
public function getTicketsByStatus(): array
{
return $this->ticketsByStatus;
}
/**
* @return array
*/
public function getTopOpportunities(): array
{
return $this->topOpportunities;
}
/**
* @return array
*/
public function getTotalAmountBySalesStage(): array
{
return $this->totalAmountBySalesStage;
}
/**
* @return array
*/
public function getUpcomingActivities(): array
{
return $this->upcomingActivities;
}
/**
* @return array
*/
public function getUsers(): array
{
return $this->users;
}
/**
* @return array
*/
public function getWidgets(): array
{
return $this->widgets;
}
/**
* @param array $activeWidgets
*/
public function setActiveWidgets(array $activeWidgets): void
{
$this->activeWidgets = $activeWidgets;
}
/**
* @param array $history
*/
public function setHistory(array $history): void
{
$this->history = $history;
}
/**
* @param array $keyMetrics
*/
public function setKeyMetrics(array $keyMetrics): void
{
$this->keyMetrics = $keyMetrics;
}
/**
* @param array $leads
*/
public function setLeads(array $leads): void
{
$this->leads = $leads;
}
/**
* @param int $linkId
*/
public function setLinkId(int $linkId): void
{
$this->linkId = $linkId;
}
/**
* @param string $moduleName
*/
public function setModuleName(string $moduleName): void
{
$this->moduleName = $moduleName;
}
/**
* @param array $modules
*/
public function setModules(array $modules): void
{
$this->modules = $modules;
}
/**
* @param string $name
*/
public function setName(string $name): void
{
$this->name = $name;
}
/**
* @param array $openTickets
*/
public function setOpenTickets(array $openTickets): void
{
$this->openTickets = $openTickets;
}
/**
* @param array $overdueActivities
*/
public function setOverdueActivities(array $overdueActivities): void
{
$this->overdueActivities = $overdueActivities;
}
/**
* @param array $potentials
*/
public function setPotentials(array $potentials): void
{
$this->potentials = $potentials;
}
/**
* @param array $quickCreateModules
*/
public function setQuickCreateModules(array $quickCreateModules): void
{
$this->quickCreateModules = $quickCreateModules;
}
/**
* @param array $revenuePerSalesPerson
*/
public function setRevenuePerSalesPerson(array $revenuePerSalesPerson): void
{
$this->revenuePerSalesPerson = $revenuePerSalesPerson;
}
/**
* @param array $ticketsByStatus
*/
public function setTicketsByStatus(array $ticketsByStatus): void
{
$this->ticketsByStatus = $ticketsByStatus;
}
/**
* @param array $topOpportunities
*/
public function setTopOpportunities(array $topOpportunities): void
{
$this->topOpportunities = $topOpportunities;
}
/**
* @param array $totalAmountBySalesStage
*/
public function setTotalAmountBySalesStage(array $totalAmountBySalesStage): void
{
$this->totalAmountBySalesStage = $totalAmountBySalesStage;
}
/**
* @param array $upcomingActivities
*/
public function setUpcomingActivities(array $upcomingActivities): void
{
$this->upcomingActivities = $upcomingActivities;
}
/**
* @param int $userId
*/
public function setUserId(int $userId): void
{
$this->userId = $userId;
}
/**
* @param array $users
*/
public function setUsers(array $users): void
{
$this->users = $users;
}
/**
* @param array $widgets
*/
public function setWidgets(array $widgets): void
{
$this->widgets = $widgets;
}
public function addWidget()
{
global $current_user;
$widget = new Vtiger_Widget_Model();
$widget->set('linkid', $this->linkId);
$widget->set('userid', $current_user->id);
$widget->set('filterid', NULL);
$dashboardModel = Vtiger_DashBoard_Model::getInstance($this->moduleName);
$defaultTab = $dashboardModel->getUserDefaultTab($current_user->id);
$widget->set('tabid', $defaultTab['id']);
$widget->add();
}
public function loadPotentialsBySalesPerson()
{
$moduleName = 'Potentials';
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$data = $moduleModel->getPotentialsPipelinedAmountPerSalesPerson();
$this->setPotentials($data);
}
public function loadPotentialsBySalesStage()
{
$moduleName = 'Potentials';
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$data = $moduleModel->getPotentialsCountBySalesStage(0 != $this->userId ? $this->userId : 'all', null);
$this->setPotentials($data);
}
public function getPotentialsCountBySalesPerson()
{
$moduleName = 'Potentials';
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$data = $moduleModel->getPotentialsCountBySalesPerson();
$this->setPotentials($data);
}
public function loadHistory()
{
$pagingModel = new Vtiger_Paging_Model();
$pagingModel->set('page', 1);
$pagingModel->set('limit', 50);
$moduleModel = Vtiger_Module_Model::getInstance($this->moduleName);
$history = $moduleModel->getHistory($pagingModel, '', $this->userId);
$updates = [];
foreach ($history as $key => $recentActivity) {
$modelName = get_class($recentActivity);
if ('ModTracker_Record_Model' === $modelName) {
if ($recentActivity->isCreate()) {
$updates[$key]['mode'] = 'create';
$updates[$key]['module'] = $recentActivity->getParent()->getModule()->getName();
$updates[$key]['record'] = decode_html($recentActivity->getParent()->getName());
$updates[$key]['time'] = decode_html(Vtiger_Util_Helper::formatDateDiffInStrings($recentActivity->getParent()->get('createdtime')));
$updates[$key]['translation'] = decode_html(ucfirst(vtranslate('LBL_ADDED')));
$updates[$key]['user'] = decode_html($recentActivity->getModifiedBy()->getName());
} elseif ($recentActivity->isUpdate()) {
$updates[$key]['mode'] = 'update';
$updates[$key]['module'] = $recentActivity->getParent()->getModule()->getName();
$updates[$key]['record'] = decode_html($recentActivity->getParent()->getName());
$updates[$key]['time'] = decode_html(Vtiger_Util_Helper::formatDateDiffInStrings($recentActivity->getActivityTime()));
$updates[$key]['translation'] = decode_html(ucfirst(vtranslate('LBL_UPDATED')));
$updates[$key]['user'] = decode_html($recentActivity->getModifiedBy()->getName());
foreach ($recentActivity->getFieldInstances() as $fieldModelKey => $fieldModel) {
$updates[$key]['fields'][$fieldModelKey]['field'] = vtranslate($fieldModel->getName());
if ($fieldModel && $fieldModel->getFieldInstance() && $fieldModel->getFieldInstance()->isViewable() && '5' !== $fieldModel->getFieldInstance()->getDisplayType()) {
if ('' !== $fieldModel->get('prevalue')
&& '' !== $fieldModel->get('postvalue')
&& !('reference' === $fieldModel->getFieldInstance()->getFieldDataType()
&& ('0' === $fieldModel->get('postvalue')
|| '0' === $fieldModel->get('prevalue')))) {
$updates[$key]['fields'][$fieldModelKey]['translation'] = vtranslate('LBL_CHANGED');
$updates[$key]['fields'][$fieldModelKey]['fromTranslation'] = vtranslate('LBL_FROM');
$updates[$key]['fields'][$fieldModelKey]['preValue'] = Vtiger_Util_Helper::toVtiger6SafeHTML($fieldModel->getDisplayValue(decode_html($fieldModel->get('prevalue'))));
} elseif ('' === $fieldModel->get('postvalue') || ('reference' === $fieldModel->getFieldInstance()->getFieldDataType() && '0' === $fieldModel->get('postvalue'))) {
$updates[$key]['fields'][$fieldModelKey]['translation'] = vtranslate('LBL_IS_REMOVED');
$updates[$key]['fields'][$fieldModelKey]['preValue'] = Vtiger_Util_Helper::toVtiger6SafeHTML($fieldModel->getDisplayValue(decode_html($fieldModel->get('prevalue'))));
} elseif ('' !== $fieldModel->get('postvalue') && !('reference' === $fieldModel->getFieldInstance()->getFieldDataType() && '0' === $fieldModel->get('postvalue'))) {
$updates[$key]['fields'][$fieldModelKey]['translation'] = vtranslate('LBL_UPDATED');
} else {
$updates[$key]['fields'][$fieldModelKey]['translation'] = vtranslate('LBL_CHANGED');
}
if ('' !== $fieldModel->get('postvalue') && !('reference' === $fieldModel->getFieldInstance()->getFieldDataType() && '0' === $fieldModel->get('postvalue'))) {
$updates[$key]['fields'][$fieldModelKey]['toTranslation'] = vtranslate('LBL_TO');
$updates[$key]['fields'][$fieldModelKey]['postValue'] = Vtiger_Util_Helper::toVtiger6SafeHTML($fieldModel->getDisplayValue(decode_html($fieldModel->get('postvalue'))));
}
}
}
} elseif ($recentActivity->isRelationLink() || $recentActivity->isRelationUnLink()) {
$relation = $recentActivity->getRelationInstance();
if (!empty($relation->getLinkedRecord()) && !empty($relation->getLinkedRecord()->getModuleName())) {
$updates[$key]['mode'] = 'relation';
$updates[$key]['forTranslation'] = decode_html(vtranslate('LBL_FOR'));
$updates[$key]['module'] = $recentActivity->getParent()->getModule()->getName();
$updates[$key]['record'] = decode_html($relation->getParent()->getParent()->getName());
$updates[$key]['relatedRecord'] = decode_html($relation->getLinkedRecord()->getName());
$updates[$key]['time'] = decode_html(Vtiger_Util_Helper::formatDateDiffInStrings($relation->get('changedon')));
$updates[$key]['user'] = decode_html($recentActivity->getModifiedBy()->getName());
if ($recentActivity->isRelationLink()) {
$updates[$key]['translation'] = decode_html(ucfirst(vtranslate('LBL_LINKED')));
} else {
$updates[$key]['translation'] = decode_html(ucfirst(vtranslate('LBL_UNLINKED')));
}
}
} elseif ($recentActivity->isRestore()) {
$updates[$key]['mode'] = 'restore';
$updates[$key]['module'] = $recentActivity->getParent()->getModule()->getName();
$updates[$key]['record'] = decode_html($recentActivity->getParent()->getName());
$updates[$key]['time'] = decode_html(Vtiger_Util_Helper::formatDateDiffInStrings($recentActivity->getActivityTime()));
$updates[$key]['translation'] = decode_html(ucfirst(vtranslate('LBL_RESTORED')));
$updates[$key]['user'] = decode_html($recentActivity->getModifiedBy()->getName());
} elseif ($recentActivity->isDelete()) {
$updates[$key]['mode'] = 'delete';
$updates[$key]['module'] = $recentActivity->getParent()->getModule()->getName();
$updates[$key]['record'] = decode_html($recentActivity->getParent()->getName());
$updates[$key]['time'] = decode_html(Vtiger_Util_Helper::formatDateDiffInStrings($recentActivity->getActivityTime()));
$updates[$key]['translation'] = decode_html(ucfirst(vtranslate('LBL_DELETED')));
$updates[$key]['user'] = decode_html($recentActivity->getModifiedBy()->getName());
}
} elseif ('ModComments_Record_Model' === $modelName) {
$updates[$key]['mode'] = 'comment';
$updates[$key]['comment'] = nl2br($recentActivity->get('commentcontent'));
$updates[$key]['onTranslation'] = decode_html(ucfirst(vtranslate('LBL_ON')));
$updates[$key]['record'] = decode_html($recentActivity->getParentRecordModel()->getName());
$updates[$key]['time'] = decode_html(Vtiger_Util_Helper::formatDateDiffInStrings($recentActivity->getCommentedTime()));
$updates[$key]['translation'] = decode_html(ucfirst(vtranslate('LBL_COMMENTED')));
$updates[$key]['user'] = decode_html($recentActivity->getCommentedByName());
}
}
$this->setHistory($updates);
}
public function loadKeyMetrics()
{
global $current_user, $adb;
require_once 'modules/CustomView/ListViewTop.php';
$metricLists = getMetricList();
foreach ($metricLists as $key => $metricList) {
$queryGenerator = new EnhancedQueryGenerator($metricList['module'], $current_user);
$queryGenerator->initForCustomViewById($metricList['id']);
if ('Calendar' === $metricList['module']) {
$queryGenerator->addCondition('activitytype', "Emails", 'n', QueryGenerator::$AND);
}
$metricSQL = $queryGenerator->getQuery();
$result = $adb->query(Vtiger_Functions::mkCountQuery($metricSQL));
if ($result) {
$rowcount = $adb->fetch_array($result);
$metricLists[$key]['count'] = $rowcount['count'];
}
}
$this->setKeyMetrics($metricLists);
}
public function loadLeadsByIndustry()
{
$moduleName = 'Leads';
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$leads = $moduleModel->getLeadsByIndustry($this->userId, null);
$this->setLeads($leads);
}
public function loadLeadsBySource()
{
$moduleName = 'Leads';
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$leads = $moduleModel->getLeadsBySource($this->userId, null);
$this->setLeads($leads);
}
public function loadLeadsByStatus()
{
$moduleName = 'Leads';
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$leads = $moduleModel->getLeadsByStatus($this->userId, null);
$this->setLeads($leads);
}
public function loadModules()
{
$modules = [];
$quickCreateModules = [];
foreach (Vtiger_Module_Model::getEntityModules() as $module) {
$moduleId = $module->getId();
$moduleName = $module->getName();
$modules[$moduleId]['name'] = $moduleName;
$modules[$moduleId]['label'] = vtranslate($module->get('label'), $moduleName);
}
foreach (Vtiger_Module_Model::getAll(array(0, 2)) as $module) {
if ($module->isQuickCreateSupported()) {
$quickCreateModules[] = $module->getName();
}
}
$this->setModules($modules);
$this->setQuickCreateModules($quickCreateModules);
}
public function loadOpenTickets()
{
$moduleName = 'HelpDesk';
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$openTickets = $moduleModel->getOpenTickets();
$this->setOpenTickets($openTickets);
}
public function loadOverdueActivities()
{
$moduleName = 'Calendar';
$listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName);
$pagingModel = new Vtiger_Paging_Model();
$pagingModel->set('page', 1);
$queryGenerator = $listViewModel->get('query_generator');
$queryGenerator->addCondition('due_date', date('Y-m-d'), 'm');
$queryGenerator->addConditionGlue(QueryGenerator::$AND);
$queryGenerator->addCondition('taskstatus', 'Completed', 'n');
$queryGenerator->addConditionGlue(QueryGenerator::$AND);
$queryGenerator->addCondition('eventstatus', 'Held', 'n');
$headers = $listViewModel->getListViewHeaders();
$overdueActivities = [];
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$fieldModels = $moduleModel->getFields();
$entries = $listViewModel->getListViewEntries($pagingModel);
foreach ($entries as $entry) {
if (date('Y-m-d') === date('Y-m-d', strtotime($entry->get('due_date'))) && date('H:i:s') < $entry->get('time_end')) {
continue;
}
$recordId = $entry->getId();
$line = array();
$info = array();
foreach ($headers as $header) {
$fieldDataType = $header->getFieldDataType();
$fieldName = $header->get('name');
$value = $entry->get($fieldName);
if (in_array($fieldDataType, ['email', 'url', 'reference'])) {
$value = trim(strip_tags($value));
}
if ('datetime' === $fieldDataType) {
$value = date('Y-m-d', strtotime($value));
}
$fieldLine = array(
'fieldName' => $fieldName,
'label' => vtranslate($header->get('label'), $moduleName),
'dataType' => $fieldDataType,
'value' => html_entity_decode($value),
'fieldValue' => $entry->get($fieldName),
);
if ($header->isNameField()) {
$line[] = $fieldLine;
} else {
$info[] = $fieldLine;
}
}
$headerFields = [];
foreach ($fieldModels as $fieldModel) {
if ($fieldModel->get('headerfield')) {
$value = $entry->get($fieldModel->get('name'));
if (in_array($fieldModel->get('uitype'), [10, 13, 17])) {
$value = trim(strip_tags(html_entity_decode($fieldModel->getDisplayValue($value))));
}
$headerFields[] = [
'value' => strip_tags($value),
'name' => $fieldModel->get('name'),
'label' => vtranslate($fieldModel->get('label'), $moduleName)
];
}
}
$isPermitted = false;
$recordModel = Vtiger_Record_Model::getInstanceById($recordId);
$recordData = $recordModel->getData();
if (!$this->userId || $recordData['assigned_user_id'] == $this->userId) {
$isPermitted = true;
}
if ($isPermitted) {
$overdueActivities[] = [
'id' => $recordId,
'fields' => $line,
'info' => $info,
'headerFields' => $headerFields,
];
}
}
$this->setOverdueActivities($overdueActivities);
}
public function loadRevenuePerSalesPerson()
{
$moduleName = 'Potentials';
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$data = $moduleModel->getTotalRevenuePerSalesPerson(null);
$this->setRevenuePerSalesPerson($data);
}
public function loadTicketsByStatus()
{
$moduleName = 'HelpDesk';
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$tickets = $moduleModel->getTicketsByStatus($this->userId, null);
$this->setTicketsByStatus($tickets);
}
public function loadTopOpportunities()
{
$moduleName = 'Potentials';
$currentUser = Users_Record_Model::getInstanceById($this->userId, 'Users');
$pagingModel = new Vtiger_Paging_Model();
$pagingModel->set('page', 1);
$userCurrencyInfo = getCurrencySymbolandCRate($currentUser->get('currency_id'));
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$models = $moduleModel->getTopPotentials($pagingModel);
$opportunities = [];
foreach ($models as $key => $model) {
$opportunities[$key]['name'] = decode_html($model->getName());
$opportunities[$key]['amount'] = decode_html(CurrencyField::appendCurrencySymbol($model->getDisplayValue('amount'), $userCurrencyInfo['symbol']));
$opportunities[$key]['relatedTo'] = $model->get('related_to') ? decode_html(Vtiger_Util_Helper::getRecordName($model->get('related_to'))) : '';
}
$this->setTopOpportunities($opportunities);
}
public function loadTotalAmountBySalesStage()
{
$moduleName = 'Potentials';
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$data = $moduleModel->getPotentialTotalAmountBySalesStage();
$this->setTotalAmountBySalesStage($data);
}
public function loadUpcomingActivities()
{
$moduleName = 'Calendar';
$listViewModel = Vtiger_ListView_Model::getInstanceForPopup($moduleName);
$pagingModel = new Vtiger_Paging_Model();
$pagingModel->set('page', 1);
$queryGenerator = $listViewModel->get('query_generator');
$queryGenerator->addCondition('date_start', date('Y-m-d'), 'h');
$queryGenerator->addConditionGlue(QueryGenerator::$AND);
$queryGenerator->addCondition('date_start', date('Y-m-d', strtotime('+1 Month')), 'm');
$queryGenerator->addConditionGlue(QueryGenerator::$AND);
$queryGenerator->addCondition('taskstatus', 'Completed', 'n');
$queryGenerator->addConditionGlue(QueryGenerator::$AND);
$queryGenerator->addCondition('eventstatus', 'Held', 'n');
$listViewModel->set('orderby', 'date_start');
$listViewModel->set('sortorder', 'ASC');
$headers = $listViewModel->getListViewHeaders();
$upcomingActivities = [];
$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
$fieldModels = $moduleModel->getFields();
$entries = $listViewModel->getListViewEntries($pagingModel);
foreach ($entries as $entry) {
if (date('Y-m-d') === date('Y-m-d', strtotime($entry->get('date_start'))) && date('H:i:s') > $entry->get('time_end')) {
continue;
}
$recordId = $entry->getId();
$line = array();
$info = array();
foreach ($headers as $header) {
$fieldDataType = $header->getFieldDataType();
$fieldName = $header->get('name');
$value = $entry->get($fieldName);
if (in_array($fieldDataType, ['email', 'url', 'reference'])) {
$value = trim(strip_tags($value));
}
if ('datetime' === $fieldDataType) {
$value = date('Y-m-d', strtotime($value));
}
$fieldLine = array(
'fieldName' => $fieldName,
'label' => vtranslate($header->get('label'), $moduleName),
'dataType' => $fieldDataType,
'value' => html_entity_decode($value),
'fieldValue' => $entry->get($fieldName),
);
if ($header->isNameField()) {
$line[] = $fieldLine;
} else {
$info[] = $fieldLine;
}
}
$headerFields = [];
foreach ($fieldModels as $fieldModel) {
if ($fieldModel->get('headerfield')) {
$value = $entry->get($fieldModel->get('name'));
if (in_array($fieldModel->get('uitype'), [10, 13, 17])) {
$value = trim(strip_tags(html_entity_decode($fieldModel->getDisplayValue($value))));
}
$headerFields[] = [
'value' => strip_tags($value),
'name' => $fieldModel->get('name'),
'label' => vtranslate($fieldModel->get('label'), $moduleName)
];
}
}
$isPermitted = false;
$recordModel = Vtiger_Record_Model::getInstanceById($recordId);
$recordData = $recordModel->getData();
if (!$this->userId || $recordData['assigned_user_id'] == $this->userId) {
$isPermitted = true;
}
if ($isPermitted) {
$upcomingActivities[] = [
'id' => $recordId,
'fields' => $line,
'info' => $info,
'headerFields' => $headerFields,
];
}
}
$this->setUpcomingActivities($upcomingActivities);
}
public function loadUsers()
{
$moduleName = 'Calendar';
$users = [];
$currentUser = Users_Record_Model::getCurrentUserModel();
if ($currentUser) {
$accessibleUsers = array_keys($currentUser->getAccessibleUsersForModule($moduleName));
$users[] = ['label' => vtranslate('LBL_ALL_USERS', $moduleName), 'value' => 'LBL_SELECT_OPTION'];
foreach (getAllUserName() as $id => $userName) {
if (in_array($id, $accessibleUsers)) {
$users[] = ['label' => vtranslate($userName, $moduleName), 'value' => "$id"];
}
}
}
$this->setUsers($users);
}
public function loadWidgets()
{
$dashBoardModel = Vtiger_DashBoard_Model::getInstance($this->moduleName);
$dashboardTabs = $dashBoardModel->getActiveTabs();
$dashBoardModel->set('tabid', $dashboardTabs[0]['id']);
$activeWidgets = [];
$widgets = [];
foreach ($dashBoardModel->getSelectableDashboard() as $widget) {
if (!in_array($widget->getName(), ['MiniList', 'Notebook'])) {
$widgets[] = [
'name' => $widget->getName(),
'label' => $widget->get('linklabel'),
'linkId' => $widget->get('linkid'),
];
}
}
foreach ($dashBoardModel->getDashboards($this->moduleName) as $widget) {
$activeWidgets[] = [
'label' => $widget->get('linklabel'),
'linkId' => $widget->get('linkid'),
];
}
$this->setWidgets($widgets);
$this->setActiveWidgets($activeWidgets);
}
public function removeWidget()
{
global $current_user;
$widget = Vtiger_Widget_Model::getInstance($this->linkId, $current_user->id);
$widget->remove();
}
}