mirror of
https://github.com/VTECRM/vtenext.git
synced 2026-02-26 16:18:47 +00:00
136 lines
6.1 KiB
PHP
136 lines
6.1 KiB
PHP
<?php
|
|
/*************************************
|
|
* SPDX-FileCopyrightText: 2009-2020 Vtenext S.r.l. <info@vtenext.com>
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
************************************/
|
|
//crmv@start
|
|
function getFollowImg($record,$type='') {
|
|
global $current_user;
|
|
$focus = CRMEntity::getInstance('ModNotifications');
|
|
if (in_array($record,$focus->getFollowedRecords($current_user->id,$type))) {
|
|
return 'modules/ModNotifications/img/follow_on.png';
|
|
} else {
|
|
return 'modules/ModNotifications/img/follow_off.png';
|
|
}
|
|
}
|
|
function getFollowCls($record,$type='') {
|
|
global $current_user;
|
|
$focus = CRMEntity::getInstance('ModNotifications');
|
|
if (in_array($record,$focus->getFollowedRecords($current_user->id,$type))) {
|
|
return 'notifications_on';
|
|
} else {
|
|
return 'notifications_none';
|
|
}
|
|
}
|
|
function getNotificationsModuleSettings($record) {
|
|
$focus = CRMEntity::getInstance('ModNotifications');
|
|
return $focus->getModuleSettings($record);
|
|
}
|
|
function getPortalAvatar() {
|
|
return resourcever('portal_avatar.png');
|
|
}
|
|
function checkListNotificationCount($list_query_count,$userid,$viewid,$new_count) {
|
|
global $adb, $current_user,$table_prefix;
|
|
$result = $adb->pquery('SELECT vte_modnot_follow_cv.cvid, vte_modnot_follow_cv.userid, vte_modnot_follow_cv.count, vte_modnot_follow_cv.modifiedtime, '.$table_prefix.'_customview.entitytype FROM vte_modnot_follow_cv INNER JOIN '.$table_prefix.'_customview ON '.$table_prefix.'_customview.cvid = vte_modnot_follow_cv.cvid WHERE vte_modnot_follow_cv.cvid = ? AND vte_modnot_follow_cv.userid = ?',array($viewid,$userid));
|
|
if ($result && $adb->num_rows($result) > 0) {
|
|
$count = $adb->query_result($result,0,'count');
|
|
$modifiedtime = $adb->query_result($result,0,'modifiedtime');
|
|
$module = $adb->query_result($result,0,'entitytype');
|
|
if(VteSession::get('lv_user_id_'.$module) == "all" || VteSession::get('lv_user_id_'.$module) == "") { // crmv@107328
|
|
// use session query
|
|
} else {
|
|
// ricreo la query perche' ha dei controlli anche sull'assegnatario
|
|
$current_user_tmp = $current_user;
|
|
|
|
$current_user = CRMEntity::getInstance('Users');
|
|
$current_user->retrieve_entity_info($userid,'Users');
|
|
$queryGenerator = QueryGenerator::getInstance($module, $current_user);
|
|
$queryGenerator->initForCustomViewById($viewid);
|
|
$list_query_count = $adb->querySlave('ModNotificationsCount',$queryGenerator->getQuery()); // crmv@185894
|
|
$new_count = $adb->num_rows($list_query_count);
|
|
$list_query_count = $list_query_count->sql; //crmv@OPER5904
|
|
|
|
$current_user = $current_user_tmp;
|
|
}
|
|
return updateListNotificationCount($list_query_count,$userid,$viewid,$new_count,$count,$modifiedtime); //crmv@OPER5904
|
|
}
|
|
return false;
|
|
}
|
|
|
|
//crmv@98778
|
|
function checkAllListNotificationCount() {
|
|
global $adb, $table_prefix, $current_user;
|
|
$current_user_tmp = $current_user; // preserve current user
|
|
$limit_q = 10000;
|
|
$result = $adb->limitquery('select vte_modnot_follow_cv.cvid, vte_modnot_follow_cv.userid, vte_modnot_follow_cv.count, vte_modnot_follow_cv.modifiedtime, '.$table_prefix.'_customview.entitytype from vte_modnot_follow_cv inner join '.$table_prefix.'_customview on '.$table_prefix.'_customview.cvid = vte_modnot_follow_cv.cvid order by last_processed asc, vte_modnot_follow_cv.userid, vte_modnot_follow_cv.cvid',0,$limit_q);
|
|
if ($result && $adb->num_rows($result) > 0) {
|
|
$cached_users = Array();
|
|
$cached_qgen = Array();
|
|
while($row=$adb->fetchByAssoc($result)) {
|
|
$viewid = $row['cvid'];
|
|
$userid = $row['userid'];
|
|
$module = $row['entitytype'];
|
|
$count = $row['count'];
|
|
$modifiedtime = $row['modifiedtime'];
|
|
if (!isset($cached_users[$userid])){
|
|
$current_user_temp = CRMEntity::getInstance('Users');
|
|
$current_user_temp->retrieve_entity_info($userid,'Users');
|
|
$cached_users[$userid] = $current_user_temp;
|
|
}
|
|
$current_user = $cached_users[$userid];
|
|
if (!isset($cached_qgen[$module][$userid])){ //crmv@174508
|
|
$cached_qgen[$module][$userid] = QueryGenerator::getInstance($row['entitytype'], $current_user); //crmv@174508
|
|
}
|
|
$queryGenerator = $cached_qgen[$module][$userid]; //crmv@174508
|
|
$queryGenerator->resetAll();
|
|
$queryGenerator->initForCustomViewById($viewid);
|
|
$list_query_count = $adb->querySlave('ModNotificationsCount',replaceSelectQuery($queryGenerator->getQuery(),"count(*) as count")); // crmv@185894
|
|
if ($list_query_count) {
|
|
$new_count = $adb->query_result_no_html($list_query_count,0,'count');
|
|
updateListNotificationCount($list_query_count->sql,$userid,$viewid,$new_count,$count,$modifiedtime);
|
|
}
|
|
}
|
|
}
|
|
$current_user = $current_user_tmp; // restore current user
|
|
}
|
|
|
|
function updateListNotificationCount($list_query_count,$userid,$viewid,$new_count,$count,$modifiedtime) {
|
|
global $adb,$table_prefix;
|
|
$now = date('Y-m-d H:i:s');
|
|
if ($new_count > $count) {
|
|
$adb->pquery('update vte_modnot_follow_cv set count = ?, modifiedtime = ?,last_processed = ? where cvid = ? and userid= ?',array($new_count,$now,$now,$viewid,$userid));
|
|
if ($count != -1) {
|
|
if (stripos($list_query_count,'order by') !== false) {
|
|
$list_query_count = substr($list_query_count,0,stripos($list_query_count,'order by'));
|
|
}
|
|
$list_query_count .= " and ".$table_prefix."_crmentity.modifiedtime > '$modifiedtime'";
|
|
$res = $adb->querySlave('ModNotificationsCount',replaceSelectQuery($list_query_count,$table_prefix.'_crmentity.crmid')); // crmv@185894
|
|
$ids = array();
|
|
if ($res && $adb->num_rows($res) > 0) {
|
|
while($row=$adb->fetchByAssoc($res)) {
|
|
$ids[] = $row['crmid'];
|
|
}
|
|
}
|
|
if (!empty($ids)) {
|
|
$obj = CRMEntity::getInstance('ModNotifications');
|
|
$obj->saveFastNotification(
|
|
array(
|
|
'assigned_user_id' => $userid,
|
|
'createdtime' => $now,
|
|
'mod_not_type' => 'ListView changed',
|
|
'related_to' => $viewid,
|
|
'description' => implode(',',$ids),
|
|
),false
|
|
);
|
|
return true;
|
|
}
|
|
}
|
|
} elseif ($new_count < $count) {
|
|
$adb->pquery('update vte_modnot_follow_cv set count = ?, modifiedtime = ?,last_processed = ? where cvid = ? and userid= ?',array($new_count,$now,$now,$viewid,$userid));
|
|
}
|
|
else{
|
|
$adb->pquery('update vte_modnot_follow_cv set last_processed = ? where cvid = ? and userid= ?',array($now,$viewid,$userid));
|
|
}
|
|
return false;
|
|
}
|
|
//crmv@98778e
|