public function process(Vtiger_Request $request) { $recordId = $request->get('record'); $modules = $request->get('modules'); $assignId = $request->get('assigned_user_id'); $currentUser = Users_Record_Model::getCurrentUserModel(); $entityValues = array(); $entityValues['transferRelatedRecordsTo'] = $request->get('transferModule'); $entityValues['assignedTo'] = vtws_getWebserviceEntityId(vtws_getOwnerType($assignId), $assignId); $entityValues['leadId'] = vtws_getWebserviceEntityId($request->getModule(), $recordId); $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $request->getModule()); $convertLeadFields = $recordModel->getConvertLeadFields(); $availableModules = array('Accounts', 'Contacts', 'Potentials'); foreach ($availableModules as $module) { if (vtlib_isModuleActive($module) && in_array($module, $modules)) { $entityValues['entities'][$module]['create'] = true; $entityValues['entities'][$module]['name'] = $module; $entityValues['entities'][$module]['create_always'] = Vtiger_Processes_Model::getConfig('marketing', 'conversion', 'create_always'); foreach ($convertLeadFields[$module] as $fieldModel) { $fieldName = $fieldModel->getName(); $fieldValue = $request->get($fieldName); //Potential Amount Field value converting into DB format if ($fieldModel->getFieldDataType() === 'currency') { $fieldValue = Vtiger_Currency_UIType::convertToDBFormat($fieldValue); } elseif ($fieldModel->getFieldDataType() === 'date') { $fieldValue = DateTimeField::convertToDBFormat($fieldValue); } elseif ($fieldModel->getFieldDataType() === 'reference' && $fieldValue) { $ids = vtws_getIdComponents($fieldValue); if (count($ids) === 1) { $fieldValue = vtws_getWebserviceEntityId(getSalesEntityType($fieldValue), $fieldValue); } } $entityValues['entities'][$module][$fieldName] = $fieldValue; } } } try { $result = vtws_convertlead($entityValues, $currentUser); } catch (Exception $e) { $this->showError($request, $e); exit; } if (!empty($result['Accounts'])) { $accountIdComponents = vtws_getIdComponents($result['Accounts']); $accountId = $accountIdComponents[1]; } if (!empty($result['Contacts'])) { $contactIdComponents = vtws_getIdComponents($result['Contacts']); $contactId = $contactIdComponents[1]; } if (!empty($accountId)) { ModTracker_Record_Model::addConvertToAccountRelation('Accounts', $accountId, $assignId); header("Location: index.php?view=Detail&module=Accounts&record={$accountId}"); } elseif (!empty($contactId)) { header("Location: index.php?view=Detail&module=Contacts&record={$contactId}"); } else { $this->showError($request); exit; } }
/** * Function returns comments and recent activities across CRM * @param <Vtiger_Paging_Model> $pagingModel * @param <String> $type - comments, updates or all * @return <Array> */ public function getHistory($pagingModel, $type = false) { if (empty($type)) { $type = 'all'; } //TODO: need to handle security $comments = array(); if ($type == 'all' || $type == 'comments') { $comments = $this->getComments($pagingModel); if ($type == 'comments') { return $comments; } } $db = PearDatabase::getInstance(); //As getComments api is used to get comment infomation,no need of getting //comment information again,so avoiding from modtracker $result = $db->pquery('SELECT vtiger_modtracker_basic.* FROM vtiger_modtracker_basic INNER JOIN vtiger_crmentity ON vtiger_modtracker_basic.crmid = vtiger_crmentity.crmid AND deleted = 0 AND module != "ModComments" ORDER BY vtiger_modtracker_basic.id DESC LIMIT ?, ?', array($pagingModel->getStartIndex(), $pagingModel->getPageLimit())); $activites = array(); for ($i = 0; $i < $db->num_rows($result); $i++) { $row = $db->query_result_rowdata($result, $i); $moduleName = $row['module']; $recordId = $row['crmid']; if (Users_Privileges_Model::isPermitted($moduleName, 'DetailView', $recordId)) { $modTrackerRecorModel = new ModTracker_Record_Model(); $modTrackerRecorModel->setData($row)->setParent($recordId, $moduleName); $time = $modTrackerRecorModel->get('changedon'); $activites[$time] = $modTrackerRecorModel; } } $history = array_merge($activites, $comments); foreach ($history as $time => $model) { $dateTime[] = $time; } if (!empty($history)) { array_multisort($dateTime, SORT_DESC, SORT_STRING, $history); return $history; } return false; }
public function process(Vtiger_Request $request) { $parentRecordId = $request->get('parent_id'); $pageNumber = $request->get('page'); $limit = $request->get('limit'); $moduleName = $request->getModule(); if (empty($pageNumber)) { $pageNumber = 1; } $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('page', $pageNumber); if (!empty($limit)) { $pagingModel->set('limit', $limit); } $recentActivities = ModTracker_Record_Model::getRecentActivities($parentRecordId, $pagingModel); $pagingModel->calculatePageRange($recentActivities); $viewer = $this->getViewer($request); $viewer->assign('RECENT_ACTIVITIES', $recentActivities); $viewer->assign('MODULE_NAME', $moduleName); $viewer->assign('PAGING_MODEL', $pagingModel); echo $viewer->view('RecentActivities.tpl', $moduleName, 'true'); }
/** * Function returns recent changes made on the record * @param Vtiger_Request $request */ function showRecentActivities(Vtiger_Request $request) { $parentRecordId = $request->get('record'); $pageNumber = $request->get('page'); $limit = $request->get('limit'); $moduleName = $request->getModule(); if (empty($pageNumber)) { $pageNumber = 1; } $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('page', $pageNumber); if (!empty($limit)) { $pagingModel->set('limit', $limit); } $recentActivities = ModTracker_Record_Model::getUpdates($parentRecordId, $pagingModel); $pagingModel->calculatePageRange($recentActivities); if ($pagingModel->getCurrentPage() == ModTracker_Record_Model::getTotalRecordCount($parentRecordId) / $pagingModel->getPageLimit()) { $pagingModel->set('nextPageExists', false); } $viewer = $this->getViewer($request); $viewer->assign('RECENT_ACTIVITIES', $recentActivities); $viewer->assign('MODULE_NAME', $moduleName); $viewer->assign('PAGING_MODEL', $pagingModel); echo $viewer->view('RecentActivities.tpl', $moduleName, 'true'); }
/** * Function returns comments and recent activities across CRM * @param <Vtiger_Paging_Model> $pagingModel * @param <String> $type - comments, updates or all * @return <Array> */ public function getHistory($pagingModel, $type = false) { if (empty($type)) { $type = 'all'; } //TODO: need to handle security $comments = array(); if ($type == 'comments') { $modCommentsModel = Vtiger_Module_Model::getInstance('ModComments'); if ($modCommentsModel->isPermitted('DetailView')) { $comments = $this->getComments($pagingModel); } if ($type == 'comments') { return $comments; } } else { if ($type == 'updates' || $type == 'all') { $db = PearDatabase::getInstance(); $queryforActivity = $this->getActivityQuery($type); $result = $db->pquery('SELECT vtiger_modtracker_basic.* FROM vtiger_modtracker_basic INNER JOIN vtiger_crmentity ON vtiger_modtracker_basic.crmid = vtiger_crmentity.crmid AND deleted = 0 ' . $queryforActivity . ' ORDER BY vtiger_modtracker_basic.id DESC LIMIT ?, ?', array($pagingModel->getStartIndex(), $pagingModel->getPageLimit())); $history = array(); for ($i = 0; $i < $db->num_rows($result); $i++) { $row = $db->query_result_rowdata($result, $i); $moduleName = $row['module']; $recordId = $row['crmid']; if (Users_Privileges_Model::isPermitted($moduleName, 'DetailView', $recordId)) { $modTrackerRecorModel = new ModTracker_Record_Model(); $modTrackerRecorModel->setData($row)->setParent($recordId, $moduleName); $time = $modTrackerRecorModel->get('changedon'); $history[$time] = $modTrackerRecorModel; } } return $history; } } return false; }
public function process(Vtiger_Request $request) { $recordId = $request->get('record'); $modules = $request->get('modules'); $assignId = $request->get('assigned_user_id'); $currentUser = Users_Record_Model::getCurrentUserModel(); $entityValues = array(); $entityValues['transferRelatedRecordsTo'] = $request->get('transferModule'); $entityValues['assignedTo'] = vtws_getWebserviceEntityId(vtws_getOwnerType($assignId), $assignId); $entityValues['leadId'] = vtws_getWebserviceEntityId($request->getModule(), $recordId); $createAlways = Vtiger_Processes_Model::getConfig('marketing', 'conversion', 'create_always'); $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $request->getModule()); $convertLeadFields = $recordModel->getConvertLeadFields(); $availableModules = array('Accounts', 'Contacts', 'Potentials'); foreach ($availableModules as $module) { if (vtlib_isModuleActive($module) && in_array($module, $modules)) { $entityValues['entities'][$module]['create'] = true; $entityValues['entities'][$module]['name'] = $module; foreach ($convertLeadFields[$module] as $fieldModel) { $fieldName = $fieldModel->getName(); $fieldValue = $request->get($fieldName); //Potential Amount Field value converting into DB format if ($fieldModel->getFieldDataType() === 'currency') { $fieldValue = Vtiger_Currency_UIType::convertToDBFormat($fieldValue); } elseif ($fieldModel->getFieldDataType() === 'date') { $fieldValue = DateTimeField::convertToDBFormat($fieldValue); } elseif ($fieldModel->getFieldDataType() === 'reference' && $fieldValue) { $ids = vtws_getIdComponents($fieldValue); if (count($ids) === 1) { $fieldValue = vtws_getWebserviceEntityId(getSalesEntityType($fieldValue), $fieldValue); } } $entityValues['entities'][$module][$fieldName] = $fieldValue; } } } try { $results = true; if ($createAlways === true || $createAlways === 'true') { $leadModel = Vtiger_Module_Model::getCleanInstance($request->getModule()); $results = $leadModel->searchAccountsToConvert($recordModel); $entityValues['entities']['Accounts']['convert_to_id'] = $results; } if (!$results) { $message = vtranslate('LBL_TOO_MANY_ACCOUNTS_TO_CONVERT', $request->getModule(), ''); if ($currentUser->isAdminUser()) { $message = vtranslate('LBL_TOO_MANY_ACCOUNTS_TO_CONVERT', $request->getModule(), '<a href="index.php?module=MarketingProcesses&view=Index&parent=Settings"><span class="glyphicon glyphicon-folder-open"></span></a>'); } $this->showError($request, '', $message); exit; } } catch (Exception $e) { $this->showError($request, $e); exit; } try { $result = vtws_convertlead($entityValues, $currentUser); } catch (Exception $e) { $this->showError($request, $e); exit; } if (!empty($result['Accounts'])) { $accountIdComponents = vtws_getIdComponents($result['Accounts']); $accountId = $accountIdComponents[1]; } if (!empty($result['Contacts'])) { $contactIdComponents = vtws_getIdComponents($result['Contacts']); $contactId = $contactIdComponents[1]; } if (!empty($accountId)) { ModTracker_Record_Model::addConvertToAccountRelation('Accounts', $accountId, $assignId); header("Location: index.php?view=Detail&module=Accounts&record={$accountId}"); } elseif (!empty($contactId)) { header("Location: index.php?view=Detail&module=Contacts&record={$contactId}"); } else { $this->showError($request); exit; } }
/** * Function returns comments and recent activities across module * @param <Vtiger_Paging_Model> $pagingModel * @param <String> $type - comments, updates or all * @return <Array> */ public function getHistory($pagingModel, $type = false) { global $log; $log->debug("Entering ./models/Module.php::getHistory"); if (empty($type)) { $type = 'all'; } //TODO: need to handle security $comments = array(); if ($type == 'all' || $type == 'comments') { $modCommentsModel = Vtiger_Module_Model::getInstance('ModComments'); if ($modCommentsModel->isPermitted('DetailView')) { $comments = $this->getComments($pagingModel); } if ($type == 'comments') { return $comments; } } $db = PearDatabase::getInstance(); $result = $db->pquery('SELECT vtiger_modtracker_basic.* FROM vtiger_modtracker_basic INNER JOIN vtiger_crmentity ON vtiger_modtracker_basic.crmid = vtiger_crmentity.crmid AND deleted = 0 AND module = ? ORDER BY vtiger_modtracker_basic.id DESC LIMIT ?, ?', array($this->getName(), $pagingModel->getStartIndex(), $pagingModel->getPageLimit())); $activites = array(); for ($i = 0; $i < $db->num_rows($result); $i++) { $row = $db->query_result_rowdata($result, $i); if (Users_Privileges_Model::isPermitted($row['module'], 'DetailView', $row['crmid'])) { $modTrackerRecorModel = new ModTracker_Record_Model(); $modTrackerRecorModel->setData($row)->setParent($row['crmid'], $row['module']); $time = $modTrackerRecorModel->get('changedon'); $activites[$time] = $modTrackerRecorModel; } } $history = array_merge($activites, $comments); $dateTime = array(); foreach ($history as $time => $model) { $dateTime[] = $time; } if (!empty($history)) { array_multisort($dateTime, SORT_DESC, SORT_STRING, $history); return $history; } $log->debug("Exiting ./models/Module.php::getHistory"); return false; }
/** * Function returns comments and recent activities across module * @param <Vtiger_Paging_Model> $pagingModel * @param <String> $type - comments, updates or all * @return <Array> */ public function getHistory($pagingModel, $type = false) { if (empty($type)) { $type = 'all'; } //TODO: need to handle security $comments = array(); if ($type == 'all' || $type == 'comments') { $comments = $this->getComments($pagingModel); if ($type == 'comments') { return $comments; } } $nonAdminAccessQuery = Users_Privileges_Model::getNonAdminAccessControlQuery('ModComments'); $db = PearDatabase::getInstance(); $result = $db->pquery('SELECT vtiger_modtracker_basic.* FROM vtiger_modtracker_basic INNER JOIN vtiger_crmentity ON vtiger_modtracker_basic.crmid = vtiger_crmentity.crmid AND deleted = 0 AND module = ? INNER JOIN vtiger_crmentity crmentity2 ON vtiger_modcomments.related_to = crmentity2.crmid AND crmentity2.deleted = 0 INNER JOIN vtiger_crmentity crmentity3 ON vtiger_modcomments.customer = crmentity3.crmid AND crmentity3.deleted = 0 ' . $nonAdminAccessQuery . ' ORDER BY vtiger_modtracker_basic.id DESC LIMIT ?, ?', array($this->getName(), $pagingModel->getStartIndex(), $pagingModel->getPageLimit())); $activites = array(); for ($i = 0; $i < $db->num_rows($result); $i++) { $row = $db->query_result_rowdata($result, $i); if (Users_Privileges_Model::isPermitted($row['module'], 'DetailView', $row['crmid'])) { $modTrackerRecorModel = new ModTracker_Record_Model(); $modTrackerRecorModel->setData($row)->setParent($row['crmid'], $row['module']); $time = $modTrackerRecorModel->get('changedon'); $activites[$time] = $modTrackerRecorModel; } } $history = array_merge($activites, $comments); $dateTime = array(); foreach ($history as $time => $model) { $dateTime[] = $time; } if (!empty($history)) { array_multisort($dateTime, SORT_DESC, SORT_STRING, $history); return $history; } return false; }