function handleEvent($eventName, $data) { $moduleName = $data->getModuleName(); if ($eventName == 'vtiger.entity.aftersave.final' && $moduleName == 'ProjectTask') { $recordId = $data->getId(); if ($data->isNew()) { $recordModel = Vtiger_Module_Model::getInstance('ProjectMilestone'); $recordModel->updateProgressMilestone($data->get('projectmilestoneid')); } else { vimport('include.events.VTEntityDelta'); $vtEntityDelta = new VTEntityDelta(); $delta = $vtEntityDelta->getEntityDelta($moduleName, $recordId, true); foreach ($delta as $name => $value) { if ($name == 'projectmilestoneid' || $name == 'estimated_work_time' || $name == 'projecttaskprogress') { $recordModel = Vtiger_Module_Model::getInstance('ProjectMilestone'); if ($name == 'projectmilestoneid') { $recordModel->updateProgressMilestone($value['currentValue']); $recordModel->updateProgressMilestone($value['oldValue']); } else { $recordModel->updateProgressMilestone($data->get('projectmilestoneid')); } } } } } elseif ($eventName == 'vtiger.entity.afterdelete' && $moduleName == 'ProjectTask') { $recordModel = Vtiger_Module_Model::getInstance('ProjectMilestone'); $recordModel->updateProgressMilestone($data->get('projectmilestoneid')); } elseif ($eventName == 'vtiger.entity.afterrestore' && $moduleName == 'ProjectTask') { $recordModel = Vtiger_Module_Model::getInstance('ProjectMilestone'); $recordModel->updateProgressMilestone($data->get('projectmilestoneid')); } }
function handleEvent($eventName, $entityData) { global $adb, $shared_owners; if ($eventName == 'vtiger.entity.aftersave.final' && $shared_owners == true) { $moduleName = $entityData->getModuleName(); $recordId = $entityData->getId(); $vtEntityDelta = new VTEntityDelta(); $delta = $vtEntityDelta->getEntityDelta($moduleName, $recordId, true); $shownerids = $entityData->get('shownerid'); $inheritsharing = $entityData->get('inheritsharing'); if (array_key_exists("shownerid", $delta)) { $usersUpadated = TRUE; $oldValue = Vtiger_Functions::getArrayFromValue($delta['shownerid']['oldValue']); $currentValue = Vtiger_Functions::getArrayFromValue($delta['shownerid']['currentValue']); $addUsers = $currentValue; $removeUser = array_diff($oldValue, $currentValue); } else { $usersUpadated = FALSE; } $updateRelatedRecords = TRUE; if (array_key_exists("inheritsharing", $delta)) { $inheritsharing = $delta['inheritsharing']['currentValue']; $inheritsharingUpdated = TRUE; if ('0' === $delta['inheritsharing']['currentValue']) { $updateRelatedRecords = FALSE; $removedShared = TRUE; } } else { $inheritsharingUpdated = FALSE; $inheritsharing = $entityData->get('inheritsharing'); if (!$inheritsharing) { $updateRelatedRecords = FALSE; } } if ($usersUpadated || $inheritsharingUpdated) { if ($updateRelatedRecords) { Users_Privileges_Model::setSharedOwnerRecursively($recordId, $addUsers, $removeUser, $moduleName); } if ($removedShared) { Users_Privileges_Model::setSharedOwnerRecursively($recordId, [], $addUsers, $moduleName); } } } if ($eventName == 'vtiger.entity.link.after' && $shared_owners == true && Vtiger_Processes_Model::getConfig('sales', 'popup', 'update_shared_permissions') == 'true') { $destinationModule = array('Products', 'Services'); if ($entityData['sourceModule'] == 'Potentials' && in_array($entityData['destinationModule'], $destinationModule)) { $adb = PearDatabase::getInstance(); $result1 = $adb->pquery('SELECT smownerid, shownerid FROM vtiger_crmentity WHERE crmid = ?;', array($entityData['destinationRecordId'])); $result2 = $adb->pquery('SELECT shownerid FROM vtiger_crmentity WHERE crmid = ?;', array($entityData['sourceRecordId'])); if ($adb->num_rows($result1) == 1 && $adb->num_rows($result2) == 1) { $smownerid = $adb->query_result($result1, 0, 'smownerid') . ',' . $adb->query_result($result1, 0, 'shownerid'); $shownerid = $adb->query_result($result2, 0, 'shownerid') . ',' . trim($smownerid, ','); $adb->pquery("UPDATE vtiger_crmentity SET shownerid = ? WHERE crmid = ?;", [trim($shownerid, ','), $entityData['sourceRecordId']]); } } } }
function handleEvent($eventName, $data) { global $log, $current_module, $adb, $current_user; $moduleName = $data->getModuleName(); $flag = ModTracker::isTrackingEnabledForModule($moduleName); if ($flag) { if ($eventName == 'vtiger.entity.aftersave.final') { $recordId = $data->getId(); $columnFields = $data->getData(); $vtEntityDelta = new VTEntityDelta(); $delta = $vtEntityDelta->getEntityDelta($moduleName, $recordId, true); $newerEntity = $vtEntityDelta->getNewEntity($moduleName, $recordId); $newerColumnFields = $newerEntity->getData(); if (is_array($delta)) { $inserted = false; foreach ($delta as $fieldName => $values) { if ($fieldName != 'modifiedtime') { if (!$inserted) { $checkRecordPresentResult = $adb->pquery('SELECT * FROM vtiger_modtracker_basic WHERE crmid = ?', array($recordId)); if ($adb->num_rows($checkRecordPresentResult)) { $status = ModTracker::$UPDATED; } else { $status = ModTracker::$CREATED; } // get modified time from database in case it has been hidden in GUI $crmrs = $adb->pquery('select modifiedtime from vtiger_crmentity where crmid=?', array($recordId)); $modtime = $adb->query_result($crmrs, 0, 0); $this->id = $adb->getUniqueId('vtiger_modtracker_basic'); $adb->pquery('INSERT INTO vtiger_modtracker_basic(id, crmid, module, whodid, changedon, status) VALUES(?,?,?,?,?,?)', array($this->id, $recordId, $moduleName, $current_user->id, $modtime, $status)); $inserted = true; } $adb->pquery('INSERT INTO vtiger_modtracker_detail(id,fieldname,prevalue,postvalue) VALUES(?,?,?,?)', array($this->id, $fieldName, $values['oldValue'], $values['currentValue'])); } } } } if ($eventName == 'vtiger.entity.beforedelete') { $recordId = $data->getId(); $columnFields = $data->getData(); $id = $adb->getUniqueId('vtiger_modtracker_basic'); $adb->pquery('INSERT INTO vtiger_modtracker_basic(id, crmid, module, whodid, changedon, status) VALUES(?,?,?,?,?,?)', array($id, $recordId, $moduleName, $current_user->id, date('Y-m-d H:i:s', time()), ModTracker::$DELETED)); } if ($eventName == 'vtiger.entity.afterrestore') { $recordId = $data->getId(); $columnFields = $data->getData(); $id = $adb->getUniqueId('vtiger_modtracker_basic'); $adb->pquery('INSERT INTO vtiger_modtracker_basic(id, crmid, module, whodid, changedon, status) VALUES(?,?,?,?,?,?)', array($id, $recordId, $moduleName, $current_user->id, date('Y-m-d H:i:s', time()), ModTracker::$RESTORED)); } } }
function handleEvent($eventName, $entityData) { if ($eventName == 'vtiger.entity.aftersave.final' && vglobal('shared_owners') == true) { $moduleName = $entityData->getModuleName(); $recordId = $entityData->getId(); $vtEntityDelta = new VTEntityDelta(); $delta = $vtEntityDelta->getEntityDelta($moduleName, $recordId, true); if (array_key_exists('assigned_user_id', $delta)) { $usersUpadated = TRUE; $oldValue = Vtiger_Functions::getArrayFromValue($delta['assigned_user_id']['oldValue']); $currentValue = Vtiger_Functions::getArrayFromValue($delta['assigned_user_id']['currentValue']); $addUsers = $currentValue; $removeUser = array_diff($oldValue, $currentValue); Users_Privileges_Model::setSharedOwnerRecursively($recordId, $addUsers, $removeUser, $moduleName); } } }
public static function recalculateTimeOldValues($record_id, $data) { require_once 'include/events/VTEntityDelta.php'; $relatedField = array('accountid', 'contactid', 'ticketid', 'projectid', 'projecttaskid', 'servicecontractsid', 'assetsid'); $vtEntityDelta = new VTEntityDelta(); $delta = $vtEntityDelta->getEntityDelta('OSSTimeControl', $record_id, true); $recalculateOldValue = false; foreach ($relatedField as $key => $val) { if (array_key_exists($val, $delta) && $delta[$val]['oldValue'] != 0 && $delta[$val]['currentValue'] == 0) { $data->set($val, $delta[$val]['oldValue']); $recalculateOldValue = true; } } if ($recalculateOldValue) { OSSTimeControl_Record_Model::recalculateTimeControl($data); } }
function process($data) { $adb = PearDatabase::getInstance(); $html = ''; if ($data['record'] != '') { $vtEntityDelta = new VTEntityDelta(); $delta = $vtEntityDelta->getEntityDelta($data['module'], $data['record']); if (count($delta) == 0) { return ''; } $tabid = getTabid($data['module']); $html = '<ul>'; foreach ($delta as $fieldName => $values) { if ($fieldName != 'modifiedtime' && in_array($fieldName, array('record_id', 'record_module')) == false && strstr($fieldName, 'label') === false) { $result = $adb->pquery("SELECT uitype,fieldlabel FROM vtiger_field WHERE fieldname = ? AND tabid = ?", array($fieldName, $tabid), true); $fieldlabel = $adb->query_result_raw($result, 0, 'fieldlabel'); $uitype = $adb->query_result_raw($result, 0, 'uitype'); $oldValue = $values['oldValue']; if ($oldValue == '') { $oldValue = 'LBL_NULL_VALUE'; } $currentValue = $values['currentValue']; if ($currentValue == '') { $currentValue = 'LBL_NULL_VALUE'; } if ($uitype == 10 && $oldValue != 'LBL_NULL_VALUE' && $currentValue != 'LBL_NULL_VALUE') { $oldValue = Vtiger_Functions::getCRMRecordLabel($oldValue); $currentValue = Vtiger_Functions::getCRMRecordLabel($currentValue); } elseif (in_array($uitype, array('53', '52', '77')) && $oldValue != 'LBL_NULL_VALUE' && $currentValue != 'LBL_NULL_VALUE') { $oldValue = Vtiger_Functions::getOwnerRecordLabel($oldValue); $currentValue = Vtiger_Functions::getOwnerRecordLabel($currentValue); } elseif ($uitype == 56 && $oldValue != 'LBL_NULL_VALUE' && $currentValue != 'LBL_NULL_VALUE') { $oldValue = $oldValue == 1 ? vtranslate('LBL_YES', $data['module']) : vtranslate('LBL_NO', $data['module']); $currentValue = $currentValue == 1 ? vtranslate('LBL_YES', $data['module']) : vtranslate('LBL_NO', $data['module']); } else { $oldValue = vtranslate($oldValue, $data['module']); $currentValue = vtranslate($currentValue, $data['module']); } $html .= '<li>' . vtranslate('LBL_CHANGED', $data['module']) . ' <strong>' . vtranslate($fieldlabel, $data['module']) . '</strong> ' . vtranslate('LBL_FROM') . ' <i>' . $oldValue . '</i> ' . vtranslate('LBL_TO') . ' <i>' . $currentValue . '</i></li>'; } } $html .= '</ul>'; return $html; } }
function handleEvent($eventName, $entityData) { if ($eventName == 'vtiger.entity.aftersave.final') { $adb = PearDatabase::getInstance(); $log = vglobal('log'); $recordId = $entityData->getId(); $moduleName = $entityData->getModuleName(); $isNew = $entityData->isNew(); if (!$isNew && $moduleName == 'Contacts') { $updateRecord = false; $vtEntityDelta = new VTEntityDelta(); $delta = $vtEntityDelta->getEntityDelta($moduleName, $recordId, true); $delta = array_change_key_case($delta, CASE_LOWER); $fields = array('firstname', 'lastname', 'email', 'secondary_email', 'phone', 'mobile'); foreach ($fields as $val) { if (isset($delta[$val])) { $updateRecord = true; break; } } if ($updateRecord) { $adb->pquery('UPDATE vtiger_contactdetails SET dav_status = ? WHERE contactid = ?', array(1, $recordId)); } } if (!$isNew && $moduleName == 'OSSEmployees') { $updateRecord = false; $vtEntityDelta = new VTEntityDelta(); $delta = $vtEntityDelta->getEntityDelta($moduleName, $recordId, true); $delta = array_change_key_case($delta, CASE_LOWER); $fields = array('name', 'last_name', 'business_phone', 'business_mail', 'private_phone', 'private_mail'); foreach ($fields as $val) { if (isset($delta[$val])) { $updateRecord = true; break; } } if ($updateRecord) { $adb->pquery('UPDATE vtiger_ossemployees SET dav_status = ? WHERE ossemployeesid = ?', array(1, $recordId)); } } } }
function handleEvent($eventName, $entityData) { if ($eventName == 'vtiger.entity.aftersave.final' && vglobal('shared_owners') == true) { $moduleName = $entityData->getModuleName(); $recordId = $entityData->getId(); $vtEntityDelta = new VTEntityDelta(); $delta = $vtEntityDelta->getEntityDelta($moduleName, $recordId, true); if (array_key_exists('assigned_user_id', $delta)) { $usersUpadated = TRUE; $oldValue = Vtiger_Functions::getArrayFromValue($delta['assigned_user_id']['oldValue']); $currentValue = Vtiger_Functions::getArrayFromValue($delta['assigned_user_id']['currentValue']); $addUsers = $currentValue; $removeUser = array_diff($oldValue, $currentValue); Users_Privileges_Model::setSharedOwnerRecursively($recordId, $addUsers, $removeUser, $moduleName); } } if ($eventName == 'vtiger.entity.link.after' && vglobal('shared_owners') == true && Vtiger_Processes_Model::getConfig('sales', 'popup', 'update_shared_permissions') == 'true') { $destinationModule = ['Products', 'Services']; if ($entityData['sourceModule'] == 'Potentials' && in_array($entityData['destinationModule'], $destinationModule)) { $db = PearDatabase::getInstance(); $sourceRecordId =& $entityData['sourceRecordId']; $destinationRecordId =& $entityData['destinationRecordId']; $recordMetaData = Vtiger_Functions::getCRMRecordMetadata($sourceRecordId); $shownerIds = Vtiger_SharedOwner_UIType::getSharedOwners($sourceRecordId, $entityData['sourceModule']); $shownerIds[] = $recordMetaData['smownerid']; $shownerIds = array_unique($shownerIds); $usersExist = []; $shownersTable = Vtiger_SharedOwner_UIType::getShownerTable($entityData['destinationModule']); $result = $db->pquery('SELECT crmid, userid FROM ' . $shownersTable . ' WHERE userid IN(' . implode(',', $shownerIds) . ') AND crmid = ?', [$destinationRecordId]); while ($row = $db->getRow($result)) { $usersExist[$row['crmid']][$row['userid']] = true; } foreach ($shownerIds as $userId) { if (!isset($usersExist[$destinationRecordId][$userId])) { $db->insert($shownersTable, ['crmid' => $destinationRecordId, 'userid' => $userId]); } } } } }
function handleEvent($eventName, $data) { global $adb, $shared_owners; if ($eventName == 'vtiger.entity.aftersave.final' && $shared_owners == true) { $moduleName = $data->getModuleName(); $recordId = $data->getId(); if ($data->get('inheritsharing') != NULL && $data->get('inheritsharing') !== 0) { $vtEntityDelta = new VTEntityDelta(); $delta = $vtEntityDelta->getEntityDelta($moduleName, $recordId, true); if (array_key_exists("shownerid", $delta)) { $oldValue = Vtiger_Functions::getArrayFromValue($delta['shownerid']['oldValue']); $currentValue = Vtiger_Functions::getArrayFromValue($delta['shownerid']['currentValue']); if (count($oldValue) == 0) { $addUser = $currentValue; $removeUser = array(); } else { $removeUser = array_diff($oldValue, $currentValue); $addUser = array_diff($currentValue, $oldValue); } Users_Privileges_Model::setSharedOwnerRecursively($recordId, $addUser, $removeUser, $moduleName); } } } if ($eventName == 'vtiger.entity.link.after') { $destinationModule = array('Products', 'Services'); if ($entityData['sourceModule'] == 'Potentials' && in_array($entityData['destinationModule'], $destinationModule)) { global $adb; $result1 = $adb->pquery('SELECT smownerid FROM vtiger_crmentity WHERE crmid = ?;', array($entityData['destinationRecordId'])); $result2 = $adb->pquery('SELECT smownerid,shownerid FROM vtiger_crmentity WHERE crmid = ?;', array($entityData['sourceRecordId'])); if ($adb->num_rows($result1) == 1 && $adb->num_rows($result2) == 1) { $smownerid = $adb->query_result($result1, 0, 'smownerid'); $shownerid = $adb->query_result($result2, 0, 'shownerid') . ',' . $smownerid; if ($smownerid != $adb->query_result($result2, 0, 'smownerid')) { $adb->pquery("UPDATE vtiger_crmentity SET shownerid = ? WHERE crmid = ?;", array(rtrim($shownerid, ','), $entityData['sourceRecordId'])); } } } } }
function handleEvent($eventName, $data) { $adb = PearDatabase::getInstance(); $current_user = vglobal('current_user'); $log = vglobal('log'); $current_module = vglobal('current_module'); if (!is_object($data)) { $extendedData = $data; $data = $extendedData['entityData']; } $moduleName = $data->getModuleName(); $flag = ModTracker::isTrackingEnabledForModule($moduleName); if ($flag) { if ($eventName == 'vtiger.entity.aftersave.final') { $recordId = $data->getId(); $columnFields = $data->getData(); $vtEntityDelta = new VTEntityDelta(); $delta = $vtEntityDelta->getEntityDelta($moduleName, $recordId, true); $newerEntity = $vtEntityDelta->getNewEntity($moduleName, $recordId); $newerColumnFields = $newerEntity->getData(); $newerColumnFields = array_change_key_case($newerColumnFields, CASE_LOWER); $delta = array_change_key_case($delta, CASE_LOWER); if (is_array($delta)) { $inserted = false; foreach ($delta as $fieldName => $values) { if ($fieldName != 'modifiedtime') { if (!$inserted) { $checkRecordPresentResult = $adb->pquery('SELECT * FROM vtiger_modtracker_basic WHERE crmid = ?', array($recordId)); if (!$adb->num_rows($checkRecordPresentResult) && $data->isNew()) { $status = ModTracker::$CREATED; } else { $status = ModTracker::$UPDATED; } $this->id = $adb->getUniqueId('vtiger_modtracker_basic'); $adb->insert('vtiger_modtracker_basic', ['id' => $this->id, 'crmid' => $recordId, 'module' => $moduleName, 'whodid' => $current_user->id, 'changedon' => $newerColumnFields['modifiedtime'], 'status' => $status, 'whodidsu' => Vtiger_Session::get('baseUserId')]); $inserted = true; } $adb->pquery('INSERT INTO vtiger_modtracker_detail(id,fieldname,prevalue,postvalue) VALUES(?,?,?,?)', array($this->id, $fieldName, $values['oldValue'], $values['currentValue'])); } } } $isMyRecord = $adb->pquery('SELECT crmid FROM vtiger_crmentity WHERE smownerid <> ? AND crmid = ?', array($current_user->id, $recordId)); if ($adb->num_rows($isMyRecord) > 0) { $adb->pquery("UPDATE vtiger_crmentity SET was_read = 0 WHERE crmid = ?;", array($recordId)); } } if ($eventName == 'vtiger.entity.beforedelete') { $recordId = $data->getId(); $columnFields = $data->getData(); $id = $adb->getUniqueId('vtiger_modtracker_basic'); $adb->insert('vtiger_modtracker_basic', ['id' => $id, 'crmid' => $recordId, 'module' => $moduleName, 'whodid' => $current_user->id, 'changedon' => date('Y-m-d H:i:s', time()), 'status' => ModTracker::$DELETED, 'whodidsu' => Vtiger_Session::get('baseUserId')]); $isMyRecord = $adb->pquery('SELECT crmid FROM vtiger_crmentity WHERE smownerid <> ? AND crmid = ?', array($current_user->id, $recordId)); if ($adb->num_rows($isMyRecord) > 0) { $adb->pquery("UPDATE vtiger_crmentity SET was_read = 0 WHERE crmid = ?;", array($recordId)); } } if ($eventName == 'vtiger.entity.afterrestore') { $recordId = $data->getId(); $columnFields = $data->getData(); $id = $adb->getUniqueId('vtiger_modtracker_basic'); $adb->insert('vtiger_modtracker_basic', ['id' => $id, 'crmid' => $recordId, 'module' => $moduleName, 'whodid' => $current_user->id, 'changedon' => date('Y-m-d H:i:s', time()), 'status' => ModTracker::$RESTORED, 'whodidsu' => Vtiger_Session::get('baseUserId')]); $isMyRecord = $adb->pquery('SELECT crmid FROM vtiger_crmentity WHERE smownerid <> ? AND crmid = ?', array($current_user->id, $recordId)); if ($adb->num_rows($isMyRecord) > 0) { $adb->pquery("UPDATE vtiger_crmentity SET was_read = 0 WHERE crmid = ?;", array($recordId)); } } if ($eventName == 'vtiger.entity.link.after') { ModTracker::linkRelation($extendedData['sourceModule'], $extendedData['sourceRecordId'], $extendedData['destinationModule'], $extendedData['destinationRecordId']); } if ($eventName == 'vtiger.entity.unlink.after') { ModTracker::unLinkRelation($extendedData['sourceModule'], $extendedData['sourceRecordId'], $extendedData['destinationModule'], $extendedData['destinationRecordId']); } } }
function handleEvent($eventName, $data) { global $log, $current_module, $adb, $current_user; $moduleName = $data->getModuleName(); $flag = ModTracker::isTrackingEnabledForModule($moduleName); if ($flag) { if ($eventName == 'vtiger.entity.aftersave.final') { $recordId = $data->getId(); $columnFields = $data->getData(); $vtEntityDelta = new VTEntityDelta(); $delta = $vtEntityDelta->getEntityDelta($moduleName, $recordId, true); $newerEntity = $vtEntityDelta->getNewEntity($moduleName, $recordId); $newerColumnFields = $newerEntity->getData(); $newerColumnFields = array_change_key_case($newerColumnFields, CASE_LOWER); $delta = array_change_key_case($delta, CASE_LOWER); if (is_array($delta)) { $inserted = false; foreach ($delta as $fieldName => $values) { if ($fieldName != 'modifiedtime') { if (!$inserted) { $checkRecordPresentResult = $adb->pquery('SELECT * FROM vtiger_modtracker_basic WHERE crmid = ?', array($recordId)); if (!$adb->num_rows($checkRecordPresentResult) && $data->isNew()) { $status = ModTracker::$CREATED; } else { $status = ModTracker::$UPDATED; } $this->id = $adb->getUniqueId('vtiger_modtracker_basic'); $adb->pquery('INSERT INTO vtiger_modtracker_basic(id, crmid, module, whodid, changedon, status) VALUES(?,?,?,?,?,?)', array($this->id, $recordId, $moduleName, $current_user->id, $newerColumnFields['modifiedtime'], $status)); $inserted = true; } $adb->pquery('INSERT INTO vtiger_modtracker_detail(id,fieldname,prevalue,postvalue) VALUES(?,?,?,?)', array($this->id, $fieldName, $values['oldValue'], $values['currentValue'])); } } } $isMyRecord = $adb->pquery('SELECT crmid FROM vtiger_crmentity WHERE smownerid <> ? AND crmid = ?', array($current_user->id, $recordId)); if ($adb->num_rows($isMyRecord) > 0) { $adb->pquery("UPDATE vtiger_crmentity SET was_read = 0 WHERE crmid = ?;", array($recordId)); } } if ($eventName == 'vtiger.entity.beforedelete') { $recordId = $data->getId(); $columnFields = $data->getData(); $id = $adb->getUniqueId('vtiger_modtracker_basic'); $adb->pquery('INSERT INTO vtiger_modtracker_basic(id, crmid, module, whodid, changedon, status) VALUES(?,?,?,?,?,?)', array($id, $recordId, $moduleName, $current_user->id, date('Y-m-d H:i:s', time()), ModTracker::$DELETED)); $isMyRecord = $adb->pquery('SELECT crmid FROM vtiger_crmentity WHERE smownerid <> ? AND crmid = ?', array($current_user->id, $recordId)); if ($adb->num_rows($isMyRecord) > 0) { $adb->pquery("UPDATE vtiger_crmentity SET was_read = 0 WHERE crmid = ?;", array($recordId)); } } if ($eventName == 'vtiger.entity.afterrestore') { $recordId = $data->getId(); $columnFields = $data->getData(); $id = $adb->getUniqueId('vtiger_modtracker_basic'); $adb->pquery('INSERT INTO vtiger_modtracker_basic(id, crmid, module, whodid, changedon, status) VALUES(?,?,?,?,?,?)', array($id, $recordId, $moduleName, $current_user->id, date('Y-m-d H:i:s', time()), ModTracker::$RESTORED)); $isMyRecord = $adb->pquery('SELECT crmid FROM vtiger_crmentity WHERE smownerid <> ? AND crmid = ?', array($current_user->id, $recordId)); if ($adb->num_rows($isMyRecord) > 0) { $adb->pquery("UPDATE vtiger_crmentity SET was_read = 0 WHERE crmid = ?;", array($recordId)); } } } }