예제 #1
0
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $srecord = $request->get('srecord');
     $smodule = $request->get('smodule');
     $type = $request->get('type');
     $mode = $request->get('mode');
     $record = $request->get('record');
     $mailFilter = $request->get('mailFilter');
     $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
     $recordModel_OSSMailScanner = Vtiger_Record_Model::getCleanInstance('OSSMailScanner');
     $config = $recordModel_OSSMailScanner->getConfig('email_list');
     if ($request->has('limit')) {
         $config['widget_limit'] = $request->get('limit');
     }
     $viewer = $this->getViewer($request);
     $viewer->assign('RECOLDLIST', $recordModel->{$mode}($srecord, $smodule, $config, $type, $mailFilter));
     $viewer->assign('SENDURLDDATA', $urldata);
     $viewer->assign('MODULENAME', $moduleName);
     $viewer->assign('SMODULENAME', $smodule);
     $viewer->assign('RECORD', $record);
     $viewer->assign('SRECORD', $srecord);
     $viewer->assign('TYPE', $type);
     $viewer->assign('POPUP', $config['popup']);
     $viewer->view('widgets.tpl', 'OSSMailView');
 }
예제 #2
0
 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);
 }
예제 #3
0
 function postpone(Vtiger_Request $request)
 {
     $recordId = $request->get('record');
     $module = $request->getModule();
     $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $module);
     $recordModel->updateReminderStatus(0);
 }
예제 #4
0
 /**
  * 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;
 }
예제 #5
0
 public function process(Vtiger_Request $request)
 {
     $moduleSettingsName = $request->getModule(false);
     $moduleName = $request->getModule();
     $paymentsIn = array();
     $record = Vtiger_Record_Model::getCleanInstance($moduleName);
     $type = $request->get('type');
     $bank = $request->get('bank');
     $this->saveFile($_FILES);
     $recordParse = $record->getSummary($type, $bank, $_FILES["file"]["name"]);
     // only incomming records (C)
     $i = 0;
     $j = array();
     foreach ($recordParse->operations as $transfers) {
         foreach ($transfers as $key => $value) {
             if ($key == 'indicator' && $value == 'C') {
                 $paymentsIn[] = $transfers;
             }
             if ($key == 'third_letter_currency_code') {
                 $j[] = $i;
             }
         }
         $i++;
     }
     $json = json_encode($paymentsIn);
     $viewer = $this->getViewer($request);
     $viewer->assign('MODULENAME', $moduleName);
     $viewer->assign('PAYMENTSIN', $paymentsIn);
     $viewer->assign('COUNT', count($paymentsIn));
     $viewer->assign('JSON', $json);
     echo $viewer->view('step1.tpl', $moduleSettingsName, true);
 }
예제 #6
0
 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();
 }
예제 #7
0
 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();
 }
예제 #8
0
 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;
 }
예제 #9
0
 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();
 }
예제 #10
0
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 loadRecord($id)
 {
     $recordModel = Vtiger_Record_Model::getInstanceById($id);
     $this->moduleName = $recordModel->getModuleName();
     $this->focus = $recordModel->getEntity();
     $this->buildRecordTemplateModel();
 }
예제 #12
0
 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);
 }
예제 #13
0
 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();
 }
예제 #14
0
function amount_in_words($module, $id, $templateid, $content, $tcpdf)
{
    $db = PearDatabase::getInstance();
    $current_language = Users_Record_Model::getCurrentUserModel()->get('language');
    if (!file_exists("languages/" . $current_language . "/OSSPdf.php")) {
        $current_language = "en_us";
    }
    $mod = $module;
    $module = strtolower($module);
    if ($module == 'quotes') {
        $idcol = "quoteid";
    } else {
        $idcol = $module . "id";
    }
    $sql = "SELECT total FROM vtiger_{$module} WHERE {$idcol} = " . $id;
    $result = $db->query($sql, true);
    $grand_total = $db->query_result($result, 0, 'total');
    $currfield = new CurrencyField($grand_total);
    $grand_total = $currfield->getDBInsertedValue($grand_total);
    require_once 'include/utils/utils.php';
    require_once 'include/utils/CommonUtils.php';
    require_once 'modules/' . $mod . '/' . $mod . '.php';
    $focus = new $mod();
    $focus->retrieve_entity_info($id, $mod);
    $currency_id = $focus->column_fields['currency_id'];
    $pobierz = $db->query("select currency_symbol, currency_code from vtiger_currency_info where id = '{$currency_id}'", true);
    $kod_aktualnej_waluty = $db->query_result($pobierz, 0, "currency_code");
    $recordModel = Vtiger_Record_Model::getCleanInstance('OSSPdf');
    $kwota = $recordModel->slownie($grand_total, $kod_aktualnej_waluty);
    return $kwota;
}
예제 #15
0
 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();
 }
예제 #16
0
파일: Record.php 프로젝트: yunter/crm
 /**
  * Static Function to get the list of records matching the search key
  * @param <String> $searchKey
  * @return <Array> - List of Vtiger_Record_Model or Module Specific Record Model instances
  */
 public static function getSearchResult($searchKey, $module = false)
 {
     $db = PearDatabase::getInstance();
     $deletedCondition = parent::getModule()->getDeletedRecordCondition();
     $query = 'SELECT * FROM vtiger_crmentity
                 INNER JOIN vtiger_leaddetails ON vtiger_leaddetails.leadid = vtiger_crmentity.crmid
                 WHERE label LIKE ? AND ' . $deletedCondition;
     $params = array("%{$searchKey}%");
     $result = $db->pquery($query, $params);
     $noOfRows = $db->num_rows($result);
     $moduleModels = array();
     $matchingRecords = array();
     for ($i = 0; $i < $noOfRows; ++$i) {
         $row = $db->query_result_rowdata($result, $i);
         $row['id'] = $row['crmid'];
         $moduleName = $row['setype'];
         if (!array_key_exists($moduleName, $moduleModels)) {
             $moduleModels[$moduleName] = Vtiger_Module_Model::getInstance($moduleName);
         }
         $moduleModel = $moduleModels[$moduleName];
         $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'Record', $moduleName);
         $recordInstance = new $modelClassName();
         $matchingRecords[$moduleName][$row['id']] = $recordInstance->setData($row)->setModuleFromInstance($moduleModel);
     }
     return $matchingRecords;
 }
예제 #17
0
 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;
     }
 }
예제 #18
0
 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 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();
 }
예제 #20
0
 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]);
 }
예제 #21
0
 public function showFieldLayout(Vtiger_Request $request)
 {
     $sourceModule = $request->get('sourceModule');
     $menuModelsList = Vtiger_Module_Model::getQuickCreateModules();
     if (empty($sourceModule)) {
         //To get the first element
         $firstElement = reset($menuModelsList);
         $sourceModule = array($firstElement->get('name'));
     } else {
         $sourceModule = array($sourceModule);
     }
     $quickCreateContents = array();
     if (in_array('Calendar', $sourceModule)) {
         $sourceModule = array('Calendar', 'Events');
     }
     foreach ($sourceModule as $module) {
         $recordModel = Vtiger_Record_Model::getCleanInstance($module);
         $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($recordModel, Vtiger_RecordStructure_Model::RECORD_STRUCTURE_MODE_QUICKCREATE);
         $quickCreateContents[$module] = $recordStructureInstance->getStructure();
     }
     $qualifiedModule = $request->getModule(false);
     $viewer = $this->getViewer($request);
     $viewer->assign('SELECTED_MODULE_NAME', $sourceModule[0]);
     $viewer->assign('SUPPORTED_MODULES', $menuModelsList);
     $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->assign('RECORDS_STRUCTURE', $quickCreateContents);
     $viewer->assign('QUALIFIED_MODULE', $qualifiedModule);
     $viewer->view('Index.tpl', $qualifiedModule);
 }
예제 #22
0
 public function process(Vtiger_Request $request)
 {
     $recordModel = Vtiger_Record_Model::getCleanInstance('OSSMailScanner');
     $response = new Vtiger_Response();
     $response->setResult($recordModel->executeCron(Users_Record_Model::getCurrentUserModel()->user_name));
     $response->emit();
 }
예제 #23
0
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);
}
예제 #24
0
파일: Save.php 프로젝트: yozhi/YetiForceCRM
 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;
 }
예제 #25
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');
 }
예제 #26
0
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $srecord = $request->get('srecord');
     $smodule = $request->get('smodule');
     $type = $request->get('type');
     $mode = $request->get('mode');
     $record = $request->get('record');
     $module = $request->get('module');
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
     $recordModel_OSSMailScanner = Vtiger_Record_Model::getCleanInstance('OSSMailScanner');
     $Config = $recordModel_OSSMailScanner->getConfig('email_list');
     $emailModuleModel = Vtiger_Module_Model::getInstance('OSSMail');
     $config = $emailModuleModel->getComposeParameters();
     $urldata = $emailModuleModel->getComposeUrl($smodule, $srecord, 'Detail', $config['popup']);
     $viewer = $this->getViewer($request);
     $viewer->assign('RECOLDLIST', $recordModel->{$mode}($srecord, $smodule, $Config, $type));
     $viewer->assign('SENDURLDDATA', $urldata);
     $viewer->assign('MODULENAME', $moduleName);
     $viewer->assign('SMODULENAME', $smodule);
     $viewer->assign('RECORD', $record);
     $viewer->assign('SRECORD', $srecord);
     $viewer->assign('TYPE', $type);
     $viewer->assign('POPUP', $config['popup']);
     $viewer->view('widgets.tpl', 'OSSMailView');
 }
예제 #27
0
 public function requestForgotPassword($request)
 {
     $request = new Vtiger_Request($request);
     $adb = PearDatabase::getInstance();
     $username = vtlib_purify($request->get('user_name'));
     $result = $adb->pquery('select id,email1 from vtiger_users where user_name = ? ', array($username));
     if ($adb->num_rows($result) > 0) {
         $email = $adb->query_result($result, 0, 'email1');
     }
     if (strcasecmp($request->get('emailId'), $email) === 0) {
         $userId = $adb->query_result($result, 0, 'id');
         $time = time();
         $options = array('handler_path' => 'modules/Users/handlers/ForgotPassword.php', 'handler_class' => 'Users_ForgotPassword_Handler', 'handler_function' => 'changePassword', 'handler_data' => array('username' => $username, 'email' => $email, 'time' => $time, 'hash' => md5($username . $time)));
         $trackURL = Vtiger_ShortURL_Helper::generateURL($options);
         $data = ['sysname' => 'UsersForgotPassword', 'to_email' => $email, 'module' => 'Users', 'record' => $userId, 'trackURL' => $trackURL];
         $recordModel = Vtiger_Record_Model::getCleanInstance('OSSMailTemplates');
         $status = $recordModel->sendMailFromTemplate($data);
         $site_URL = vglobal('site_URL') . 'index.php?modules=Users&view=Login';
         if ($status === 1) {
             header('Location:  ' . $site_URL . '&status=1');
         } else {
             header('Location:  ' . $site_URL . '&statusError=1');
         }
     } else {
         $site_URL = vglobal('site_URL') . 'index.php?modules=Users&view=Login';
         header('Location:  ' . $site_URL . '&fpError=1');
     }
 }
예제 #28
0
 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;
     }
 }
예제 #29
0
 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();
 }
예제 #30
0
 /**
  * Function to load record
  * @param <Number> $recordId
  * @return <Vtiger_Record_Model>
  */
 protected function loadRecord($recordId)
 {
     $moduleName = $this->module->getName();
     // Preparation to pull required tool-tip field values.
     $referenceFields = array();
     $fieldNames = array();
     foreach ($this->fields as $fieldModel) {
         $fieldType = $fieldModel->getFieldDataType();
         $fieldName = $fieldModel->get('name');
         $fieldNames[] = $fieldName;
         if ($fieldType == 'reference' || $fieldType == 'owner') {
             $referenceFields[] = $fieldName;
         }
     }
     $wsid = vtws_getWebserviceEntityId($moduleName, $recordId);
     $q = sprintf("SELECT %s FROM %s WHERE id='%s' LIMIT 1;", implode(',', $fieldNames), $moduleName, $wsid);
     // Retrieves only required fields of the record with permission check.
     try {
         $data = array_shift(vtws_query($q, Users_Record_Model::getCurrentUserModel()));
         if ($data) {
             // De-transform the webservice ID to CRM ID.
             foreach ($data as $key => $value) {
                 if (in_array($key, $referenceFields)) {
                     $value = array_pop(explode('x', $value));
                 }
                 $data[$key] = $value;
             }
         }
         $this->record = Vtiger_Record_Model::getCleanInstance($moduleName);
         $this->record->setData($data);
     } catch (WebServiceException $wex) {
         // Error retrieving information !
     }
     return $this;
 }