public function populateTo($request) { $viewer = $this->getViewer($request); $inventoryRecordId = $request->get('record'); $recordModel = Vtiger_Record_Model::getInstanceById($inventoryRecordId, $request->getModule()); $inventoryModule = $recordModel->getModule(); $inventotyfields = $inventoryModule->getFields(); $toEmailConsiderableFields = array('contact_id', 'account_id', 'vendor_id'); $db = PearDatabase::getInstance(); $to = array(); $to_info = array(); $toMailNamesList = array(); foreach ($toEmailConsiderableFields as $fieldName) { if (!array_key_exists($fieldName, $inventotyfields)) { continue; } $fieldModel = $inventotyfields[$fieldName]; if (!$fieldModel->isViewable()) { continue; } $fieldValue = $recordModel->get($fieldName); if (empty($fieldValue)) { continue; } $referenceList = $fieldModel->getReferenceList(); $referenceModule = $referenceList[0]; $fieldLabel = Vtiger_Util_Helper::getLabel($fieldValue); $referenceModuleModel = Vtiger_Module_Model::getInstance($referenceModule); $emailFields = $referenceModuleModel->getFieldsByType('email'); if (count($emailFields) <= 0) { continue; } $current_user = Users_Record_Model::getCurrentUserModel(); $queryGenerator = new QueryGenerator($referenceModule, $current_user); $queryGenerator->setFields(array_keys($emailFields)); $query = $queryGenerator->getQuery(); $query .= ' AND crmid = ' . $fieldValue; $result = $db->pquery($query, array()); $num_rows = $db->num_rows($result); if ($num_rows <= 0) { continue; } foreach ($emailFields as $fieldName => $emailFieldModel) { $emailValue = $db->query_result($result, 0, $fieldName); if (!empty($emailValue)) { $to[] = $emailValue; $to_info[$fieldValue][] = $emailValue; $toMailNamesList[$fieldValue][] = array('label' => $fieldLabel, 'value' => $emailValue); break; } } if (!empty($to)) { break; } } $viewer->assign('TO', $to); $viewer->assign('TOMAIL_NAMES_LIST', $toMailNamesList); $viewer->assign('TOMAIL_INFO', $to_info); }
public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $recordId = $request->get('record'); $recordModel = $this->record; if (!$recordModel) { if (!empty($recordId)) { $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); } else { $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); } $this->record = $recordModel; } $viewer = $this->getViewer($request); $viewer->assign('IMAGE_DETAILS', $recordModel->getImageDetails()); $salutationFieldModel = Vtiger_Field_Model::getInstance('salutationtype', $recordModel->getModule()); // Fix for http://trac.vtiger.com/cgi-bin/trac.cgi/ticket/7851 $salutationType = $request->get('salutationtype'); if (!empty($salutationType)) { $salutationFieldModel->set('fieldvalue', $request->get('salutationtype')); } else { $salutationFieldModel->set('fieldvalue', $recordModel->get('salutationtype')); } $viewer->assign('SALUTATION_FIELD_MODEL', $salutationFieldModel); parent::process($request); }
function postpone(Vtiger_Request $request) { $recordId = $request->get('record'); $module = $request->getModule(); $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $module); $recordModel->updateReminderStatus(0); }
public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $recordId = $request->get('record'); $currencyName = $request->get('currency'); if (!empty($recordId)) { $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); $priceDetails = $recordModel->getPriceDetails(); } else { $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); $priceDetails = $recordModel->getPriceDetails(); foreach ($priceDetails as $key => $currencyDetails) { if ($currencyDetails['curname'] === $currencyName) { $baseCurrencyConversionRate = $currencyDetails['conversionrate']; break; } } foreach ($priceDetails as $key => $currencyDetails) { if ($currencyDetails['curname'] === $currencyName) { $currencyDetails['conversionrate'] = 1; $currencyDetails['is_basecurrency'] = 1; } else { $currencyDetails['conversionrate'] = $currencyDetails['conversionrate'] / $baseCurrencyConversionRate; $currencyDetails['is_basecurrency'] = 0; } $priceDetails[$key] = $currencyDetails; } } $viewer = $this->getViewer($request); $viewer->assign('MODULE', $moduleName); $viewer->assign('PRICE_DETAILS', $priceDetails); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); $viewer->view('MoreCurrenciesList.tpl', 'Products'); }
/** * Function that saves SMS records * @param Vtiger_Request $request */ public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $currentUserModel = Users_Record_Model::getCurrentUserModel(); $recordIds = $this->getRecordsListFromRequest($request); $phoneFieldList = $request->get('fields'); $message = $request->get('message'); foreach ($recordIds as $recordId) { $recordModel = Vtiger_Record_Model::getInstanceById($recordId); $numberSelected = false; foreach ($phoneFieldList as $fieldname) { $fieldValue = $recordModel->get($fieldname); if (!empty($fieldValue)) { $toNumbers[] = $fieldValue; $numberSelected = true; } } if ($numberSelected) { $recordIds[] = $recordId; } } $response = new Vtiger_Response(); if (!empty($toNumbers)) { SMSNotifier_Record_Model::SendSMS($message, $toNumbers, $currentUserModel->getId(), $recordIds, $moduleName); $response->setResult(true); } else { $response->setResult(false); } return $response; }
function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $moduleModel = Vtiger_Module_Model::getInstance($moduleName); $records = $request->get('records'); $primaryRecord = $request->get('primaryRecord'); $primaryRecordModel = Vtiger_Record_Model::getInstanceById($primaryRecord, $moduleName); $fields = $moduleModel->getFields(); foreach ($fields as $field) { $fieldValue = $request->get($field->getName()); if ($field->isEditable()) { $primaryRecordModel->set($field->getName(), $fieldValue); } } $primaryRecordModel->set('mode', 'edit'); $primaryRecordModel->save(); $deleteRecords = array_diff($records, array($primaryRecord)); foreach ($deleteRecords as $deleteRecord) { $recordPermission = Users_Privileges_Model::isPermitted($moduleName, 'Delete', $deleteRecord); if ($recordPermission) { $primaryRecordModel->transferRelationInfoOfRecords(array($deleteRecord)); $record = Vtiger_Record_Model::getInstanceById($deleteRecord); $record->delete(); } } $response = new Vtiger_Response(); $response->setResult(true); $response->emit(); }
/** * Function to get the record model based on the request parameters * @param Vtiger_Request $request * @return Vtiger_Record_Model or Module specific Record Model instance */ public function getRecordModelFromRequest(Vtiger_Request $request) { $moduleName = $request->getModule(); $recordId = $request->get('record'); if (!empty($recordId)) { $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); $recordModel->set('id', $recordId); $recordModel->set('mode', 'edit'); $fieldModelList = $recordModel->getModule()->getFields(); foreach ($fieldModelList as $fieldName => $fieldModel) { //For not converting craetedtime and modified time to user format $uiType = $fieldModel->get('uitype'); if ($uiType == 70) { $fieldValue = $recordModel->get($fieldName); } elseif (in_array($uiType, [71, 72])) { // currency ui types $fieldValue = $recordModel->get($fieldName); } else { $fieldValue = $fieldModel->getUITypeModel()->getUserRequestValue($recordModel->get($fieldName), $recordId); } if ($fieldName === $request->get('field')) { $fieldValue = $request->get('value'); } $fieldDataType = $fieldModel->getFieldDataType(); if ($fieldDataType == 'time') { $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); } if ($fieldValue !== null) { if (!is_array($fieldValue)) { $fieldValue = trim($fieldValue); } $recordModel->set($fieldName, $fieldValue); } $recordModel->set($fieldName, $fieldValue); } } else { $moduleModel = Vtiger_Module_Model::getInstance($moduleName); $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); $recordModel->set('mode', ''); $fieldModelList = $moduleModel->getFields(); foreach ($fieldModelList as $fieldName => $fieldModel) { if ($request->has($fieldName)) { $fieldValue = $request->get($fieldName, null); } else { $fieldValue = $fieldModel->getDefaultFieldValue(); } $fieldDataType = $fieldModel->getFieldDataType(); if ($fieldDataType == 'time') { $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); } if ($fieldValue !== null) { if (!is_array($fieldValue)) { $fieldValue = trim($fieldValue); } $recordModel->set($fieldName, $fieldValue); } } } return $recordModel; }
function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $records = $request->get('records'); $template = $request->get('template'); $targetModuleName = $request->get('target'); $method = $request->get('method'); $success = []; if (!empty($template)) { $templateRecord = Vtiger_MappedFields_Model::getInstanceById($template); foreach ($records as $recordId) { if ($templateRecord->checkFiltersForRecord(intval($recordId))) { if ($method == 0) { $recordModel = Vtiger_Record_Model::getCleanInstance($targetModuleName); $parentRecordModel = Vtiger_Record_Model::getInstanceById($recordId); $recordModel->setRecordFieldValues($parentRecordModel); if ($this->checkMandatoryFields($recordModel)) { continue; } // TODO Add saving fields that exist in advanced module $recordModel->save(); if (isRecordExists($recordModel->getId())) { $success[] = $recordId; } } else { $success[] = $recordId; } } } } $output = ['all' => count($records), 'ok' => $success, 'fail' => array_diff($records, $success)]; $response = new Vtiger_Response(); $response->setResult($output); $response->emit(); }
function process(Vtiger_Request $request) { $currentUserPriviligeModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); $viewer = $this->getViewer($request); $recordId = $request->get('record'); $moduleName = $request->getModule(); $recordModel = Vtiger_Record_Model::getInstanceById($recordId); $moduleModel = $recordModel->getModule(); $viewer->assign('MODULE', $moduleName); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); $viewer->assign('CURRENT_USER_PRIVILEGE', $currentUserPriviligeModel); $viewer->assign('RECORD', $recordModel); $viewer->assign('CONVERT_LEAD_FIELDS', $recordModel->getConvertLeadFields()); $assignedToFieldModel = $moduleModel->getField('assigned_user_id'); $assignedToFieldModel->set('fieldvalue', $recordModel->get('assigned_user_id')); $viewer->assign('ASSIGN_TO', $assignedToFieldModel); $potentialModuleModel = Vtiger_Module_Model::getInstance('Potentials'); $accountField = Vtiger_Field_Model::getInstance('related_to', $potentialModuleModel); $contactField = Vtiger_Field_Model::getInstance('contact_id', $potentialModuleModel); $viewer->assign('ACCOUNT_FIELD_MODEL', $accountField); $viewer->assign('CONTACT_FIELD_MODEL', $contactField); $contactsModuleModel = Vtiger_Module_Model::getInstance('Contacts'); $accountField = Vtiger_Field_Model::getInstance('parent_id', $contactsModuleModel); $viewer->assign('CONTACT_ACCOUNT_FIELD_MODEL', $accountField); $state = Settings_Leads_ConvertToAccount_Model::getState(); $viewer->assign('STATE', $state); $viewer->view('ConvertLead.tpl', $moduleName); }
public function updateEvent(Vtiger_Request $request) { $moduleName = $request->getModule(); $recordId = $request->get('id'); $date_start = date('Y-m-d', strtotime($request->get('start'))); $time_start = date('H:i:s', strtotime($request->get('start'))); $succes = false; if (isPermitted($moduleName, 'EditView', $recordId) === 'no') { $succes = false; } else { if (!empty($recordId)) { try { $delta = $request->get('delta'); $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); $recordData = $recordModel->entity->column_fields; $end = self::changeDateTime($recordData['due_date'] . ' ' . $recordData['time_end'], $delta); $due_date = $end['date']; $time_end = $end['time']; $recordModel->set('id', $recordId); $recordModel->set('mode', 'edit'); $recordModel->set('date_start', $date_start); $recordModel->set('time_start', $time_start); $recordModel->set('due_date', $due_date); $recordModel->set('time_end', $time_end); $recordModel->save(); $succes = true; } catch (Exception $e) { $succes = false; } } } $response = new Vtiger_Response(); $response->setResult($succes); $response->emit(); }
public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $relatedLoad = $request->get('relatedLoad'); $data = ''; if ($relatedLoad) { $postData = $request->get('postData'); $relatedModuleName = $request->get('relatedModuleName'); $selected_ids = json_decode($postData['selected_ids'], true); $OSSMailModel = Vtiger_Record_Model::getCleanInstance('OSSMail'); $data = $OSSMailModel->getEmailsFromModule($selected_ids, $relatedModuleName); } else { $selectedFields = $request->get('selectedFields'); $selected_ids = $request->get('selected_ids'); foreach ($selected_ids as $key => $value) { $recordModel = Vtiger_Record_Model::getInstanceById($value); if ($data == '') { $data = $recordModel->get($selectedFields[$key]); } else { $data .= ',' . $recordModel->get($selectedFields[$key]); } } } $result = array('success' => true, 'data' => $data); $response = new Vtiger_Response(); $response->setResult($result); $response->emit(); }
/** * Creates a new file in the directory * * Data will either be supplied as a stream resource, or in certain cases * as a string. Keep in mind that you may have to support either. * * After successful creation of the file, you may choose to return the ETag * of the new file here. * * The returned ETag must be surrounded by double-quotes (The quotes should * be part of the actual string). * * If you cannot accurately determine the ETag, you should not return it. * If you don't store the file exactly as-is (you're transforming it * somehow) you should also not return an ETag. * * This means that if a subsequent GET to this new file does not exactly * return the same contents of what was submitted here, you are strongly * recommended to omit the ETag. * * @param string $name Name of the file * @param resource|string $data Initial payload * @return null|string */ function createFile($name, $data = null) { include_once 'include/main/WebUI.php'; global $log, $adb, $current_user; $adb = \PearDatabase::getInstance(); $log = \LoggerManager::getLogger('DavToCRM'); $user = new \Users(); $current_user = $user->retrieveCurrentUserInfoFromFile($this->exData->crmUserId); $path = trim($this->path, 'files') . '/' . $name; $hash = sha1($path); $pathParts = pathinfo($path); $localPath = $this->localPath . $name; $stmt = $this->exData->pdo->prepare('SELECT crmid, smownerid, deleted FROM vtiger_files INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_files.filesid WHERE vtiger_files.hash = ?;'); $stmt->execute([$hash]); $rows = $stmt->fetch(\PDO::FETCH_ASSOC); if ($rows != false && ($rows['smownerid'] != $this->exData->crmUserId || $rows['deleted'] == 1)) { throw new DAV\Exception\Conflict('File with name ' . $file . ' could not be located'); } file_put_contents($this->exData->localStorageDir . $localPath, $data); if ($rows) { $rekord = \Vtiger_Record_Model::getInstanceById($rows['crmid'], 'Files'); $rekord->set('mode', 'edit'); } else { $rekord = \Vtiger_Record_Model::getCleanInstance('Files'); $rekord->set('assigned_user_id', $this->exData->crmUserId); } $rekord->set('title', $pathParts['filename']); $rekord->set('name', $pathParts['filename']); $rekord->set('path', $localPath); $rekord->save(); $id = $rekord->getId(); $stmt = $this->exData->pdo->prepare('UPDATE vtiger_files SET dirid=?,extension=?,size=?,hash=?,ctime=? WHERE filesid=?;'); $stmt->execute([$this->dirid, $pathParts['extension'], filesize($this->exData->localStorageDir . $localPath), $hash, date('Y-m-d H:i:s'), $id]); }
public function process(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); if (!empty($record) && $request->get('isDuplicate') == true) { $recordModel = Vtiger_Record_Model::getInstanceById($record, $moduleName); $viewer->assign('MODE', ''); } else { if (!empty($record)) { $recordModel = Vtiger_Record_Model::getInstanceById($record, $moduleName); $viewer->assign('RECORD_ID', $record); $viewer->assign('MODE', 'edit'); } else { $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); $viewer->assign('MODE', ''); $parentId = $request->get('parentId'); $parentModule = $request->get('parentModule'); if ($parentId && $parentModule === 'HelpDesk') { $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentId, $parentModule); $recordModel = Faq_Record_Model::getInstanceFromHelpDesk($parentRecordModel); } } } $moduleModel = $recordModel->getModule(); $fieldList = $moduleModel->getFields(); $requestFieldList = array_intersect_key($request->getAll(), $fieldList); foreach ($requestFieldList as $fieldName => $fieldValue) { $fieldModel = $fieldList[$fieldName]; if ($fieldModel->isEditable()) { $recordModel->set($fieldName, $fieldModel->getDBInsertValue($fieldValue)); } } $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($recordModel, Vtiger_RecordStructure_Model::RECORD_STRUCTURE_MODE_EDIT); $viewMode = $request->get('view_mode'); if (!empty($viewMode)) { $viewer->assign('VIEW_MODE', $viewMode); } $picklistDependencyDatasource = Vtiger_DependencyPicklist::getPicklistDependencyDatasource($moduleName); $viewer->assign('PICKIST_DEPENDENCY_DATASOURCE', Zend_Json::encode($picklistDependencyDatasource)); $mappingRelatedField = $moduleModel->getMappingRelatedField($moduleName); $viewer->assign('MAPPING_RELATED_FIELD', Zend_Json::encode($mappingRelatedField)); $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance); $viewer->assign('RECORD_STRUCTURE', $recordStructureInstance->getStructure()); $viewer->assign('MODULE', $moduleName); $viewer->assign('RECORD', $recordModel); $viewer->assign('BLOCK_LIST', $moduleModel->getBlocks()); $viewer->assign('CURRENTDATE', date('Y-n-j')); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); $isRelationOperation = $request->get('relationOperation'); //if it is relation edit $viewer->assign('IS_RELATION_OPERATION', $isRelationOperation); if ($isRelationOperation) { $viewer->assign('SOURCE_MODULE', $request->get('sourceModule')); $viewer->assign('SOURCE_RECORD', $request->get('sourceRecord')); } $viewer->assign('MAX_UPLOAD_LIMIT_MB', Vtiger_Util_Helper::getMaxUploadSize()); $viewer->assign('MAX_UPLOAD_LIMIT', vglobal('upload_maxsize')); $viewer->view('EditView.tpl', $moduleName); }
/** * Function to get the record model based on the request parameters * @param Vtiger_Request $request * @return Vtiger_Record_Model or Module specific Record Model instance */ public function getRecordModelsFromRequest(Vtiger_Request $request) { $moduleName = $request->getModule(); $moduleModel = Vtiger_Module_Model::getInstance($moduleName); $recordIds = $this->getRecordsListFromRequest($request); $recordModels = array(); $fieldModelList = $moduleModel->getFields(); foreach ($recordIds as $recordId) { $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleModel); $recordModel->set('id', $recordId); $recordModel->set('mode', 'edit'); foreach ($fieldModelList as $fieldName => $fieldModel) { $fieldValue = $request->get($fieldName, null); $fieldDataType = $fieldModel->getFieldDataType(); if ($fieldDataType == 'time') { $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); } else { if ($fieldDataType === 'date') { $fieldValue = $fieldModel->getUITypeModel()->getDBInsertValue($fieldValue); } } if (isset($fieldValue) && $fieldValue != null && !is_array($fieldValue)) { $fieldValue = trim($fieldValue); $recordModel->set($fieldName, $fieldValue); } } $recordModels[$recordId] = $recordModel; } return $recordModels; }
public function markAsHeldCompleted(Vtiger_Request $request) { $moduleName = $request->getModule(); $recordId = $request->get('record'); $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); $recordModel->set('mode', 'edit'); $activityType = $recordModel->get('activitytype'); $response = new Vtiger_Response(); if ($activityType == 'Task') { $status = 'Completed'; $recordModel->set('taskstatus', $status); $result = array("valid" => TRUE, "markedascompleted" => TRUE, "activitytype" => "Task"); } else { //checking if the event can be marked as Held (status validation) $startDateTime[] = $recordModel->get('date_start'); $startDateTime[] = $recordModel->get('time_start'); $startDateTime = implode(' ', $startDateTime); $startDateTime = new DateTime($startDateTime); $currentDateTime = date("Y-m-d H:i:s"); $currentDateTime = new DateTime($currentDateTime); if ($startDateTime > $currentDateTime) { $result = array("valid" => FALSE, "markedascompleted" => FALSE); $response->setResult($result); $response->emit(); return; } $status = 'Held'; $recordModel->set('eventstatus', $status); $result = array("valid" => TRUE, "markedascompleted" => TRUE, "activitytype" => "Event"); } $recordModel->save(); $response->setResult($result); $response->emit(); }
function UpdateInvoice($salesId) { $adb = PearDatabase::getInstance(); $moduleBalance = 'Invoice'; $StatusBalance = 'Paid'; if ($salesId == 0 || $salesId == '' || Vtiger_Functions::getCRMRecordType($salesId) != $moduleBalance) { return false; } $sql = 'SELECT SUM(`paymentsvalue`) as suma FROM `vtiger_paymentsin` WHERE `salesid` = ? AND `paymentsin_status` = ?;'; $result = $adb->pquery($sql, array($salesId, $StatusBalance), false); $paymentsIn = $adb->query_result($result, 0, 'suma'); $sql = 'SELECT SUM(`paymentsvalue`) as suma FROM `vtiger_paymentsout` WHERE `salesid` = ? AND `paymentsout_status` = ?;'; $result = $adb->pquery($sql, array($salesId, $StatusBalance), false); $paymentsOut = $adb->query_result($result, 0, 'suma'); $sum = $paymentsIn - $paymentsOut; $model = Vtiger_Record_Model::getInstanceById($salesId, $moduleBalance); $hdnGrandTotal = $model->get('hdnGrandTotal'); $balance = $hdnGrandTotal - $sum; $sql = 'UPDATE `vtiger_invoice` SET `payment_balance` = ? WHERE `invoiceid` = ? LIMIT 1;'; $params = array($balance, $salesId); $adb->pquery($sql, $params, true); $accountId = $model->get('account_id'); $potentialId = $model->get('potentialid'); UpdateAccounts($accountId); UpdatePotential($potentialId); }
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'); //■権限なぜか、エラーになるので権限を固定するinouchi //$entityValues['assignedTo'] = vtws_getWebserviceEntityId(vtws_getOwnerType($assignId), $assignId); $entityValues['assignedTo'] = vtws_getWebserviceEntityId(vtws_getOwnerType(1), 1); $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; 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)) { 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; } }
public function loadRecord($id) { $recordModel = Vtiger_Record_Model::getInstanceById($id); $this->moduleName = $recordModel->getModuleName(); $this->focus = $recordModel->getEntity(); $this->buildRecordTemplateModel(); }
public function Footer() { if ($_SESSION['footer_enable'] == 'Yes') { $recordModel = Vtiger_Record_Model::getInstanceById($_SESSION['template_to_perfom']); $height_footer = $recordModel->get('height_footer'); $y = -(int) $height_footer; $bMargin = $this->getBreakMargin(); $auto_page_break = $this->AutoPageBreak; $height_header = (int) $recordModel->get('height_header'); if ($_SESSION['enable_numbering'] == 'NumberFormat' || $_SESSION['enable_numbering'] == 'PageXofY') { $y -= 10; $bMargin += 10; } $this->SetFont($this->font, '', 8); $this->SetY($y); $this->SetAutoPageBreak(false, 0); //$this->writeHTML($this->bMargin.' - '.$this->PageBreakTrigger); $this->writeHTML($_REQUEST['footer_content']); $this->SetFont('helvetica', 'I', 8); if ($_SESSION['enable_numbering'] == 'NumberFormat') { $this->writeHTML('<span align="center">' . $this->getAliasNumPage() . '</span>'); } elseif ($_SESSION['enable_numbering'] == 'PageXofY') { $this->writeHTML('<span align="center">' . vtranslate('Page', 'OSSPdf') . ' ' . $this->getAliasNumPage() . ' ' . vtranslate('of', 'OSSPdf') . ' ' . $this->getAliasNbPages() . '</span>'); } $this->SetFont($this->font, '', 12); $this->SetAutoPageBreak($auto_page_break, $bMargin); $this->setPageMark(); //echo '<pre>';print_r($bMargin);echo '</pre>';exit; } }
function getComposeUrlParam($moduleName = false, $record = false, $view = false) { $url = ''; if (!empty($record) && isRecordExists($record)) { $recordModel_OSSMailView = Vtiger_Record_Model::getCleanInstance('OSSMailView'); $email = $recordModel_OSSMailView->findEmail($record, $moduleName); if ($email) { $url = '&to=' . $email; } $recordModel = Vtiger_Record_Model::getInstanceById($record, $moduleName); if ($moduleName == 'HelpDesk') { $urldata = '&subject=' . $recordModel->get('ticket_no') . ' - ' . $recordModel->get('ticket_title'); } elseif ($moduleName == 'SSalesProcesses') { $urldata = '&subject=' . $recordModel->get('ssalesprocesses_no') . ' - ' . $recordModel->get('subject'); } elseif ($moduleName == 'Project') { $urldata = '&subject=' . $recordModel->get('project_no') . ' - ' . $recordModel->get('projectname'); } $url .= $urldata; } if (!empty($moduleName)) { $url .= '&crmmodule=' . $moduleName; } if (!empty($record)) { $url .= '&crmrecord=' . $record; } if (!empty($view)) { $url .= '&crmview=' . $view; } return $url; }
public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $moduleModel = Vtiger_Module_Model::getInstance($moduleName); if ($request->get('selected_ids') == 'all' && $request->get('mode') == 'FindDuplicates') { $recordIds = Vtiger_FindDuplicate_Model::getMassDeleteRecords($request); } else { $recordIds = $this->getRecordsListFromRequest($request); } foreach ($recordIds as $recordId) { if (Users_Privileges_Model::isPermitted($moduleName, 'Delete', $recordId)) { $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleModel); $recordModel->delete(); } else { $permission = 'No'; } } if ($permission === 'No') { throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); } $cvId = $request->get('viewname'); $response = new Vtiger_Response(); $response->setResult(array('viewname' => $cvId, 'module' => $moduleName)); $response->emit(); }
public function updateEvent(Vtiger_Request $request) { $moduleName = $request->getModule(); $recordId = $request->get('id'); $date_start = date('Y-m-d', strtotime($request->get('start'))); $time_start = date('H:i:s', strtotime($request->get('start'))); $due_date = date('Y-m-d', strtotime($request->get('end'))); $time_end = date('H:i:s', strtotime($request->get('end'))); $succes = false; if (!empty($recordId)) { try { $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); $recordModel->set('id', $recordId); $recordModel->set('mode', 'edit'); $recordModel->set('date_start', $date_start); $recordModel->set('time_start', $time_start); $recordModel->set('due_date', $due_date); $recordModel->set('time_end', $time_end); $recordModel->save(); $succes = true; } catch (Exception $e) { $succes = false; } } $response = new Vtiger_Response(); $response->setResult($succes); $response->emit(); }
public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $documentIdsList = $this->getRecordsListFromRequest($request); $folderId = $request->get('folderid'); if (!empty($documentIdsList)) { foreach ($documentIdsList as $documentId) { $documentModel = Vtiger_Record_Model::getInstanceById($documentId, $moduleName); if (Users_Privileges_Model::isPermitted($moduleName, 'EditView', $documentId)) { $documentModel->set('folderid', $folderId); $documentModel->set('mode', 'edit'); $documentModel->save(); } else { $documentsMoveDenied[] = $documentModel->getName(); } } } if (empty($documentsMoveDenied)) { $result = array('success' => true, 'message' => vtranslate('LBL_DOCUMENTS_MOVED_SUCCESSFULLY', $moduleName)); } else { $result = array('success' => false, 'message' => vtranslate('LBL_DENIED_DOCUMENTS', $moduleName), 'LBL_RECORDS_LIST' => $documentsMoveDenied); } $response = new Vtiger_Response(); $response->setResult($result); $response->emit(); }
public function updateDefaultPicklistValues($pickListFieldName, $oldValue, $newValue) { $db = PearDatabase::getInstance(); if ($pickListFieldName == 'activitytype') { $defaultFieldName = 'defaultactivitytype'; } else { $defaultFieldName = 'defaulteventstatus'; } $queryToGetId = 'SELECT id FROM vtiger_users WHERE ' . $defaultFieldName . ' IN ('; if (is_array($oldValue)) { for ($i = 0; $i < count($oldValue); $i++) { $queryToGetId .= '"' . $oldValue[$i] . '"'; if ($i < count($oldValue) - 1) { $queryToGetId .= ','; } } $queryToGetId .= ')'; } else { $queryToGetId .= '"' . $oldValue . '")'; } $result = $db->pquery($queryToGetId, array()); $rowCount = $db->num_rows($result); for ($i = 0; $i < $rowCount; $i++) { $recordId = $db->query_result_rowdata($result, $i); $recordId = $recordId['id']; $record = Vtiger_Record_Model::getInstanceById($recordId, 'Users'); $record->set('mode', 'edit'); $record->set($defaultFieldName, $newValue); $record->save(); } }
function _5_bind_HelpDesk($user_id, $mail_detail, $folder, $return) { $ModuleName = 'HelpDesk'; $table_name = 'vtiger_troubletickets'; $table_col = 'ticket_no'; $ossmailviewTab = 'vtiger_ossmailview_tickets'; $answered_status = 'Answered'; require_once "modules/OSSMailScanner/template_actions/prefix.php"; $ids = bind_prefix($user_id, $mail_detail, $folder, $ModuleName, $table_name, $table_col, $ossmailviewTab); if ($ids) { $conf = OSSMailScanner_Record_Model::getConfig('emailsearch'); $type = OSSMailScanner_Record_Model::getTypeEmail($mail_detail); if ($conf['change_ticket_status'] == 'true' && $type == 1) { foreach ($ids as $id) { $ModelInstance = Vtiger_Record_Model::getInstanceById($id, $ModuleName); $ticketstatus = $ModelInstance->get('ticketstatus'); if ($ticketstatus == 'Wait For Response') { $record = new $ModuleName(); $record->retrieve_entity_info($id, $ModuleName); $record->mode = 'edit'; $record->column_fields['ticketstatus'] = $answered_status; $record->save($ModuleName, $id); } } } } return array('bind_HelpDesk' => $ids); }
public function addRelation($sourcerecordId, $destinationRecordId) { $adb = PearDatabase::getInstance(); $recordModel = Vtiger_Record_Model::getInstanceById($sourcerecordId, 'OSSMailView'); $date = $recordModel->get('date'); $adb->pquery("INSERT INTO vtiger_ossmailview_relation SET ossmailviewid=?, crmid=?, date=?;", [$sourcerecordId, $destinationRecordId, $date]); }
public function initializeListViewContents(Vtiger_Request $request, Vtiger_Viewer $viewer) { $moduleName = $this->getModule($request); $sourceModule = $request->get('src_module'); $sourceRecord = $request->get('src_record'); //list of records is narrowed to contacts related to help desks account, only in Help Desk Contacts relation view if ($moduleName == 'Contacts' && $sourceModule == 'HelpDesk' && isRecordExists($sourceRecord) && strpos($_SERVER['QUERY_STRING'], 'module=Contacts&src_module=HelpDesk') === 0) { $request->set('related_parent_module', 'Accounts'); $helpDeskRecord = Vtiger_Record_Model::getInstanceById($sourceRecord, 'HelpDesk'); $request->set('related_parent_id', $helpDeskRecord->get('parent_id')); $viewer->assign('SWITCH', true); } if ($moduleName == 'Contacts' && $sourceModule == 'SSalesProcesses' && isRecordExists($sourceRecord) && strpos($_SERVER['QUERY_STRING'], 'module=Contacts&src_module=SSalesProcesses') === 0) { $request->set('related_parent_module', 'Accounts'); $moduleRecord = Vtiger_Record_Model::getInstanceById($sourceRecord, 'SSalesProcesses'); $request->set('related_parent_id', $moduleRecord->get('related_to')); $viewer->assign('SWITCH', true); } if ($moduleName == 'Contacts' && $sourceModule == 'Project' && isRecordExists($sourceRecord) && strpos($_SERVER['QUERY_STRING'], 'module=Contacts&src_module=Project') === 0) { $request->set('related_parent_module', 'Accounts'); $moduleRecord = Vtiger_Record_Model::getInstanceById($sourceRecord, 'Project'); $request->set('related_parent_id', $moduleRecord->get('linktoaccountscontacts')); $viewer->assign('SWITCH', true); } parent::initializeListViewContents($request, $viewer); }
protected function getRecordModelFromRequest(Vtiger_Request $request) { $moduleName = $request->getModule(); $recordId = $request->get('record'); $moduleModel = Vtiger_Module_Model::getInstance($moduleName); if (!empty($recordId)) { $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); $modelData = $recordModel->getData(); $recordModel->set('id', $recordId); $recordModel->set('mode', 'edit'); } else { $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); $modelData = $recordModel->getData(); $recordModel->set('mode', ''); } $fieldModelList = $moduleModel->getFields(); foreach ($fieldModelList as $fieldName => $fieldModel) { if (in_array($fieldName, array('header_content', 'content', 'footer_content'))) { $fieldValue = $request->getRaw($fieldName, null); } else { $fieldValue = $request->get($fieldName, null); } $fieldDataType = $fieldModel->getFieldDataType(); if ($fieldDataType == 'time') { $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); } if ($fieldValue !== null) { if (!is_array($fieldValue)) { $fieldValue = trim($fieldValue); } $recordModel->set($fieldName, $fieldValue); } } return $recordModel; }
function addRelation($request) { $sourceModule = $request->getModule(); $sourceRecordId = $request->get('src_record'); $relatedModule = $request->get('related_module'); if (is_numeric($relatedModule)) { $relatedModule = Vtiger_Functions::getModuleName($relatedModule); } $relatedRecordIdList = $request->get('related_record_list'); $sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule); $relatedModuleModel = Vtiger_Module_Model::getInstance($relatedModule); $relationModel = Vtiger_Relation_Model::getInstance($sourceModuleModel, $relatedModuleModel); foreach ($relatedRecordIdList as $relatedRecordId) { $relationModel->addRelation($sourceRecordId, $relatedRecordId, $listPrice); if ($relatedModule == 'PriceBooks') { $recordModel = Vtiger_Record_Model::getInstanceById($relatedRecordId); if ($sourceRecordId && ($sourceModule === 'Products' || $sourceModule === 'Services')) { $parentRecordModel = Vtiger_Record_Model::getInstanceById($sourceRecordId, $sourceModule); $recordModel->updateListPrice($sourceRecordId, $parentRecordModel->get('unit_price')); } } } $response = new Vtiger_Response(); $response->setResult(true); $response->emit(); }
/** * Save Act vith relation to Invoice if it created from it * @param \Vtiger_Request $request */ public function process(Vtiger_Request $request) { /* Parent code - thin may be better will be workflow */ $recordModel = $this->saveRecord($request); if ($request->get('relationOperation')) { $parentModuleName = $request->get('sourceModule'); $parentRecordId = $request->get('sourceRecord'); $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentRecordId, $parentModuleName); $loadUrl = $parentRecordModel->getDetailViewUrl(); } else { if ($request->get('returnToList')) { $loadUrl = $recordModel->getModule()->getListViewUrl(); } else { $loadUrl = $recordModel->getDetailViewUrl(); } } /* If created from Invoice - add reference */ if ($request->get('sourceModule') == 'Invoice' && $request->get('sourceRecord') != NULL) { $invoiceRecord = Invoice_Record_Model::getInstanceById($request->get('sourceRecord'), 'Invoice'); if ($invoiceRecord != null) { $invoiceRecord->set('sp_act_id', $recordModel->getId()); $invoiceRecord->set('mode', 'edit'); $invoiceRecord->save(); $loadUrl = $invoiceRecord->getDetailViewUrl(); } } header("Location: {$loadUrl}"); }