/** * Function deletes report * @param Reports_Record_Model $reportModel */ function deleteRecord(Reports_Record_Model $reportModel) { $currentUser = Users_Record_Model::getCurrentUserModel(); $subOrdinateUsers = $currentUser->getSubordinateUsers(); $subOrdinates = array(); foreach ($subOrdinateUsers as $id => $name) { $subOrdinates[] = $id; } $owner = $reportModel->get('owner'); if ($currentUser->isAdminUser() || in_array($owner, $subOrdinates) || $owner == $currentUser->getId()) { $reportId = $reportModel->getId(); $db = PearDatabase::getInstance(); $db->pquery('DELETE FROM vtiger_selectquery WHERE queryid = ?', array($reportId)); $db->pquery('DELETE FROM vtiger_report WHERE reportid = ?', array($reportId)); $db->pquery('DELETE FROM vtiger_scheduled_reports WHERE reportid = ?', array($reportId)); $result = $db->pquery('SELECT * FROM vtiger_homereportchart WHERE reportid = ?', array($reportId)); $numOfRows = $db->num_rows($result); for ($i = 0; $i < $numOfRows; $i++) { $homePageChartIdsList[] = $adb->query_result($result, $i, 'stuffid'); } if ($homePageChartIdsList) { $deleteQuery = 'DELETE FROM vtiger_homestuff WHERE stuffid IN (' . implode(",", $homePageChartIdsList) . ')'; $db->pquery($deleteQuery, array()); } return true; } return false; }
public function process(Vtiger_Request $request) { $mode = $request->getMode(); $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $reportModel->set('advancedFilter', $request->get('advanced_filter')); $page = $request->get('page'); $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('page', $page); $pagingModel->set('limit', Reports_Detail_View::REPORT_LIMIT); if ($mode === 'save') { $reportModel->saveAdvancedFilters(); $reportData = $reportModel->getReportData($pagingModel); $data = $reportData['data']; } else { if ($mode === 'generate') { $reportData = $reportModel->generateData($pagingModel); $data = $reportData['data']; } } $calculation = $reportModel->generateCalculationData(); $viewer->assign('PRIMARY_MODULE', $reportModel->getPrimaryModule()); $viewer->assign('CALCULATION_FIELDS', $calculation); $viewer->assign('DATA', $data); $viewer->assign('RECORD_ID', $record); $viewer->assign('PAGING_MODEL', $pagingModel); $viewer->assign('MODULE', $moduleName); $viewer->assign('NEW_COUNT', $reportData['count']); $viewer->assign('REPORT_RUN_INSTANCE', ReportRun::getInstance($record)); $viewer->view('ReportContents.tpl', $moduleName); }
public function process(Vtiger_Request $request) { $mode = $request->getMode(); $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $reportModel->set('advancedFilter', $request->get('advanced_filter')); $secondaryModules = $reportModel->getSecondaryModules(); if (empty($secondaryModules)) { $viewer->assign('CLICK_THROUGH', true); } $dataFields = $request->get('datafields', 'count(*)'); if (is_string($dataFields)) { $dataFields = array($dataFields); } $reportModel->set('reporttypedata', Zend_Json::encode(array('type' => $request->get('charttype', 'pieChart'), 'groupbyfield' => $request->get('groupbyfield'), 'datafields' => $dataFields))); $reportModel->set('reporttype', 'chart'); $reportModel->save(); $reportChartModel = Reports_Chart_Model::getInstanceById($reportModel); $data = $reportChartModel->getData(); $viewer->assign('CHART_TYPE', $reportChartModel->getChartType()); $viewer->assign('DATA', json_encode($data, JSON_HEX_APOS)); $viewer->assign('MODULE', $moduleName); $viewer->view('ChartReportContents.tpl', $moduleName); }
/** * Function to get the instance * @param <String> $moduleName - module name * @param <String> $recordId - record id * @return <Vtiger_DetailView_Model> */ public static function getInstance($moduleName, $recordId) { $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'DetailView', $moduleName); $instance = new $modelClassName(); $moduleModel = Vtiger_Module_Model::getInstance($moduleName); $recordModel = Reports_Record_Model::getCleanInstance($recordId, $moduleName); return $instance->setModule($moduleModel)->setRecord($recordModel); }
public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $recordId = $request->get('record'); $response = new Vtiger_Response(); $recordModel = Reports_Record_Model::getInstanceById($recordId, $moduleName); if (!$recordModel->isDefault() && $recordModel->isEditable()) { $recordModel->delete(); $response->setResult(array(vtranslate('LBL_REPORTS_DELETED_SUCCESSFULLY', $parentModule))); } else { $response->setError(vtranslate('LBL_REPORT_DELETE_DENIED', $moduleName)); } $response->emit(); }
/** * Function to get related Records count from this relation * @param <Vtiger_Request> $request * @return <Number> Number of record from this relation */ public function getRecordsCount(Vtiger_Request $request) { $record = $request->get('record'); $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $reportModel->set('advancedFilter', $request->get('advanced_filter')); $advFilterSql = $reportModel->getAdvancedFilterSQL(); $query = $reportModel->getReportSQL($advFilterSql, 'PDF'); $countQuery = $reportModel->generateCountQuery($query); $count = $reportModel->getReportsCount($countQuery); $response = new Vtiger_Response(); $response->setResult($count); $response->emit(); }
/** * Function displays the report in printable format * @param Vtiger_Request $request */ function GetPrintReport(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $recordId = $request->get('record'); $reportModel = Reports_Record_Model::getInstanceById($recordId); $printData = $reportModel->getReportPrint(); $viewer->assign('REPORT_NAME', $reportModel->getName()); $viewer->assign('PRINT_DATA', $printData['data'][0]); $viewer->assign('TOTAL', $printData['total']); $viewer->assign('MODULE', $moduleName); $viewer->assign('ROW', $printData['data'][1]); $viewer->view('PrintReport.tpl', $moduleName); }
public function process(Vtiger_Request $request) { $mode = $request->getMode(); $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $reportModel->set('advancedFilter', $request->get('advanced_filter')); $page = $request->get('page'); $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('page', $page); $pagingModel->set('limit', Reports_Detail_View::REPORT_LIMIT); if ($mode === 'save') { $reportModel->saveAdvancedFilters(); $reportData = $reportModel->getReportData($pagingModel); $data = $reportData['data']; } else { if ($mode === 'generate') { $reportData = $reportModel->generateData($pagingModel); $data = $reportData['data']; } } $calculation = $reportModel->generateCalculationData(); /*убираем ненужные столбцы*/ $columns = array('SUM' => false, 'AVG' => false, 'MIN' => false, 'MAX' => false); foreach ($calculation as $metriks) { foreach ($metriks as $index => $metrik) { $postfix = substr($index, -3, 3); if ($columns[$postfix]) { continue; } if (!empty($metrik)) { $columns[$postfix] = true; } } } $viewer->assign('COLUMNS', $columns); /*end*/ $viewer->assign('PRIMARY_MODULE', $reportModel->getPrimaryModule()); $viewer->assign('CALCULATION_FIELDS', $calculation); $viewer->assign('DATA', $data); $viewer->assign('RECORD_ID', $record); $viewer->assign('PAGING_MODEL', $pagingModel); $viewer->assign('MODULE', $moduleName); $viewer->assign('NEW_COUNT', $reportData['count']); $viewer->assign('REPORT_RUN_INSTANCE', ReportRun::getInstance($record)); $viewer->view('ReportContents.tpl', $moduleName); }
public function process(Vtiger_Request $request) { $primaryModule = $request->get('primodule'); $secondaryModules = $request->get('secmodule'); $record = $request->get('record'); $reportModel = Reports_Record_Model::getCleanInstance($record); /*if (!empty($record)) { $viewer->assign('SELECTED_STANDARD_FILTER_FIELDS', $reportModel->getSelectedStandardFilter()); $viewer->assign('SELECTED_ADVANCED_FILTER_FIELDS', $reportModel->transformToNewAdvancedFilter()); }*/ $reportModel->setPrimaryModule($primaryModule); if (!empty($secondaryModules)) { $reportModel->setSecondaryModule($secondaryModules); } $viewer = $this->getViewer($request); $viewer->assign('SELECTED_ADVANCED_FILTER_FIELDS', $reportModel->transformToNewAdvancedFilter()); $viewer->assign('PRIMARY_MODULE', $primaryModule); $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($reportModel); $primaryModuleRecordStructure = $recordStructureInstance->getPrimaryModuleRecordStructure(); $secondaryModuleRecordStructures = $recordStructureInstance->getSecondaryModuleRecordStructure(); $viewer->assign('PRIMARY_MODULE_RECORD_STRUCTURE', $primaryModuleRecordStructure); $viewer->assign('SECONDARY_MODULE_RECORD_STRUCTURES', $secondaryModuleRecordStructures); //$viewer->assign('PRIMARY_MODULE_RECORD_STRUCTURE', $reportModel->getPrimaryModuleRecordStructure()); //$viewer->assign('SECONDARY_MODULE_RECORD_STRUCTURES', $reportModel->getSecondaryModuleRecordStructure()); $viewer->assign('ADVANCED_FILTER_OPTIONS', Vtiger_Field_Model::getAdvancedFilterOptions()); $viewer->assign('ADVANCED_FILTER_OPTIONS_BY_TYPE', Vtiger_Field_Model::getAdvancedFilterOpsByFieldType()); $dateFilters = Vtiger_Field_Model::getDateFilterTypes(); foreach ($dateFilters as $comparatorKey => $comparatorInfo) { $comparatorInfo['startdate'] = DateTimeField::convertToUserFormat($comparatorInfo['startdate']); $comparatorInfo['enddate'] = DateTimeField::convertToUserFormat($comparatorInfo['enddate']); $comparatorInfo['label'] = vtranslate($comparatorInfo['label'], $module); $dateFilters[$comparatorKey] = $comparatorInfo; } $viewer->assign('DATE_FILTERS', $dateFilters); echo $viewer->view('BlockFilters.tpl', 'PDFMaker', true); /* $content = $viewer->view('BlockFilters.tpl', 'PDFMaker',true); echo "aaaaaaaaa"; /* $response = new Vtiger_Response(); $response->setResult($content); $response->emit(); */ }
public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = Reports_Record_Model::getCleanInstance(); $reportModel->setModule('Reports'); if (!empty($record) && !$request->get('isDuplicate')) { $reportModel->setId($record); } $reporttype = $request->get('reporttype'); if (empty($reporttype)) { $reporttype = 'tabular'; } $reportModel->set('reportname', $request->get('reportname')); $reportModel->set('folderid', $request->get('folderid')); $reportModel->set('description', $request->get('reports_description')); $reportModel->set('reporttype', $reporttype); $reportModel->setPrimaryModule($request->get('primary_module')); $secondaryModules = $request->get('secondary_modules'); $secondaryModules = implode(':', $secondaryModules); $reportModel->setSecondaryModule($secondaryModules); $reportModel->set('selectedFields', $request->get('selected_fields')); $reportModel->set('sortFields', $request->get('selected_sort_fields')); $reportModel->set('calculationFields', $request->get('selected_calculation_fields')); $reportModel->set('standardFilter', $request->get('standard_fiter')); $reportModel->set('advancedFilter', $request->get('advanced_filter')); $reportModel->set('advancedGroupFilterConditions', $request->get('advanced_group_condition')); $reportModel->save(); //Scheduled Reports $scheduleReportModel = new Reports_ScheduleReports_Model(); $scheduleReportModel->set('scheduleid', $request->get('schtypeid')); $scheduleReportModel->set('schtime', $request->get('schtime')); $scheduleReportModel->set('schdate', $request->get('schdate')); $scheduleReportModel->set('schdayoftheweek', $request->get('schdayoftheweek')); $scheduleReportModel->set('schdayofthemonth', $request->get('schdayofthemonth')); $scheduleReportModel->set('schannualdates', $request->get('schannualdates')); $scheduleReportModel->set('reportid', $reportModel->getId()); $scheduleReportModel->set('recipients', $request->get('recipients')); $scheduleReportModel->set('isReportScheduled', $request->get('enable_schedule')); $scheduleReportModel->set('specificemails', $request->get('specificemails')); $scheduleReportModel->saveScheduleReport(); //END $loadUrl = $reportModel->getDetailViewUrl(); header("Location: {$loadUrl}"); }
public function process(Vtiger_Request $request) { $parentModule = 'Reports'; $reportIdsList = Reports_Record_Model::getRecordsListFromRequest($request); $folderId = $request->get('folderid'); if (!empty($reportIdsList)) { foreach ($reportIdsList as $reportId) { $reportModel = Reports_Record_Model::getInstanceById($reportId); if (!$reportModel->isDefault() && $reportModel->isEditable()) { $reportModel->move($folderId); } else { $reportsMoveDenied[] = vtranslate($reportModel->getName(), $parentModule); } } } $response = new Vtiger_Response(); if (empty($reportsMoveDenied)) { $response->setResult(array(vtranslate('LBL_REPORTS_MOVED_SUCCESSFULLY', $parentModule))); } else { $response->setError($reportsMoveDenied, vtranslate('LBL_DENIED_REPORTS', $parentModule)); } $response->emit(); }
public function process(Vtiger_Request $request) { $parentModule = 'Reports'; $recordIds = Reports_Record_Model::getRecordsListFromRequest($request); $reportsDeleteDenied = array(); foreach ($recordIds as $recordId) { $recordModel = Reports_Record_Model::getInstanceById($recordId); if (!$recordModel->isDefault() && $recordModel->isEditable()) { $success = $recordModel->delete(); if (!$success) { $reportsDeleteDenied[] = vtranslate($recordModel->getName(), $parentModule); } } else { $reportsDeleteDenied[] = vtranslate($recordModel->getName(), $parentModule); } } $response = new Vtiger_Response(); if (empty($reportsDeleteDenied)) { $response->setResult(array(vtranslate('LBL_REPORTS_DELETED_SUCCESSFULLY', $parentModule))); } else { $response->setError($reportsDeleteDenied, vtranslate('LBL_DENIED_REPORTS', $parentModule)); } $response->emit(); }
public function process(Vtiger_Request $request) { PDFMaker_Debugger_Model::GetInstance()->Init(); $adb = PearDatabase::getInstance(); $current_user = Users_Record_Model::getCurrentUserModel(); $viewer = $this->getViewer($request); global $current_language; $step = $request->get('step'); if ($step == "") { $step = "1"; } $mode = $request->get('mode'); $record = $request->get('record'); if (isset($mode) && $mode == "Delete") { $sql1 = "SELECT module FROM vtiger_pdfmaker_relblocks WHERE relblockid = ?"; $rel_module = $adb->query_result($adb->pquery($sql1, array($record)), 0, "module"); $sql2 = "DELETE FROM vtiger_pdfmaker_relblocks WHERE relblockid = ?"; $result = $adb->pquery($sql2, array($record)); header("Location:index.php?module=PDFMaker&action=PDFMakerAjax&file=ListRelatedBlocks&parenttab=Tools&pdfmodule=" . $rel_module); exit; } if (isset($mode) && $mode == "add") { $sql = "SELECT * FROM vtiger_pdfmaker_relblocks WHERE relblockid = ?"; $result = $adb->pquery($sql, array($record)); $Blockdata = $adb->fetchByAssoc($result, 0); $body = $Blockdata["block"]; $body = str_replace("RELBLOCK_START", "RELBLOCK" . $record . "_START", $body); $body = str_replace("RELBLOCK_END", "RELBLOCK" . $record . "_END", $body); //echo $body; exit; echo "<div id='block' style='display:none;'>" . $body . "</div>"; echo "<script> \n\t\tvar oEditor = window.opener.CKEDITOR.instances.body; \n\t\t\n\t\tcontent = document.getElementById('block').innerHTML;\n\t\t\n\t\toEditor.insertHtml(content); \n\t\tself.close();\n\t\t</script>"; exit; } $viewer->assign("PARENTTAB", getParentTab()); $viewer->assign("DATEFORMAT", $current_user->get('date_format')); $viewer->assign("JS_DATEFORMAT", parse_calendardate(vtranslate('NTC_DATE_FORMAT'))); $RelatedBlock = new PDFMaker_RelatedBlock_Model(); $columns1 = ""; if ($record) { $sql = "SELECT * FROM vtiger_pdfmaker_relblocks WHERE relblockid = ?"; $result = $adb->pquery($sql, array($record)); $Blockdata = $adb->fetchByAssoc($result, 0); $rel_module = $Blockdata["module"]; $sec_module = $Blockdata["secmodule"]; $blockname = $Blockdata["name"]; $block = $Blockdata["block"]; $sql2 = "SELECT * FROM vtiger_pdfmaker_relblockdatefilter WHERE datefilterid = ?"; $result2 = $adb->pquery($sql2, array($record)); $num_rows2 = $adb->num_rows($result2); if ($num_rows2 > 0) { $datecolumnname = $adb->query_result($result2, 0, "datecolumnname"); $stdselectedfilter = $adb->query_result($result2, 0, "datefilter"); $startdate = $adb->query_result($result2, 0, "startdate"); $enddate = $adb->query_result($result2, 0, "enddate"); if ($startdate != "" && $startdate != "0000-00-00") { $viewer->assign("STARTDATE_STD", getValidDisplayDate($startdate)); } if ($enddate != "" && $startdate != "0000-00-00") { $viewer->assign("ENDDATE_STD", getValidDisplayDate($enddate)); } } $module_list = $RelatedBlock->getModuleList($sec_module); $options1 = $RelatedBlock->getStdCriteriaByModule($sec_module, $module_list, $current_user); if (count($options1) > 0) { foreach ($options1 as $value => $label) { if ($value == $datecolumnname) { $sel = "selected"; } else { $sel = ""; } $columns1 .= "<option value='" . $value . "' " . $sel . ">" . $label . "</option>"; } } $columns2 = ""; foreach ($module_list as $blockid => $optgroup) { $options2 = $RelatedBlock->getColumnsListbyBlock($sec_module, $blockid, $rel_module, $current_user); if (count($options2) > 0) { $columns2 .= "<optgroup label='" . $optgroup . "'>"; foreach ($options2 as $value => $label) { $columns2 .= "<option value='" . $value . "'>" . $label . "</option>"; } $columns2 .= "</optgroup>"; } } $selected_columns = $this->getSelectedColumnsList($rel_module, $sec_module, $record, $current_user); list($sortCols, $sortOrder) = $this->getSortColumns($record, $selected_columns); $step = 3; $mode = 'edit'; $RelatedBlock->setId($record); $reportModel = Reports_Record_Model::getCleanInstance(''); $reportModel->setPrimaryModule($rel_module); $RelatedBlock->setPrimaryModule($rel_module); if (!empty($sec_module)) { $RelatedBlock->setSecondaryModule($sec_module); $reportModel->setSecondaryModule($sec_module); } $viewer->assign('SELECTED_ADVANCED_FILTER_FIELDS', $RelatedBlock->transformToNewAdvancedFilter()); $viewer->assign('PRIMARY_MODULE', $primaryModule); $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($reportModel); $primaryModuleRecordStructure = $recordStructureInstance->getPrimaryModuleRecordStructure(); $secondaryModuleRecordStructures = $recordStructureInstance->getSecondaryModuleRecordStructure(); $viewer->assign('PRIMARY_MODULE_RECORD_STRUCTURE', $primaryModuleRecordStructure); $viewer->assign('SECONDARY_MODULE_RECORD_STRUCTURES', $secondaryModuleRecordStructures); $viewer->assign('ADVANCED_FILTER_OPTIONS', Vtiger_Field_Model::getAdvancedFilterOptions()); $viewer->assign('ADVANCED_FILTER_OPTIONS_BY_TYPE', Vtiger_Field_Model::getAdvancedFilterOpsByFieldType()); $dateFilters = Vtiger_Field_Model::getDateFilterTypes(); foreach ($dateFilters as $comparatorKey => $comparatorInfo) { $comparatorInfo['startdate'] = DateTimeField::convertToUserFormat($comparatorInfo['startdate']); $comparatorInfo['enddate'] = DateTimeField::convertToUserFormat($comparatorInfo['enddate']); $comparatorInfo['label'] = vtranslate($comparatorInfo['label'], $module); $dateFilters[$comparatorKey] = $comparatorInfo; } $viewer->assign('DATE_FILTERS', $dateFilters); $viewer->assign('PRIMARY_MODULE_FIELDS', $reportModel->getPrimaryModuleFields()); $viewer->assign('SECONDARY_MODULE_FIELDS', $reportModel->getSecondaryModuleFields()); $viewer->assign('SELECTED_SORT_FIELDS', $RelatedBlock->getSelectedSortFields()); } else { $primaryModule = $request->get('primarymodule'); $secondaryModules = $request->get('secondarymodule'); $rel_module = $_REQUEST["pdfmodule"]; $block = ""; $record = ""; $blockname = ""; $columns = ""; $columns2 = ""; $selected_columns = ""; $sortCols = ""; $sortOrder = ""; $stdselectedfilter = ""; $mode = 'create'; } $viewer->assign("MODE", $mode); $viewer->assign("RECORD", $record); $viewer->assign("BLOCKNAME", $blockname); $Related_Modules = PDFMaker_RelatedBlock_Model::getRelatedModulesList($rel_module); if ($record == "") { $sec_module = $Related_Modules[0]; } $viewer->assign("SEC_MODULE", $sec_module); $viewer->assign("RELATED_MODULES", $Related_Modules); $version = PDFMaker_Version_Helper::$version; $viewer->assign("VERSION", $version); $viewer->assign("REL_MODULE", $rel_module); $viewer->assign("RELATEDBLOCK", $block); $viewer->assign("STEP", $step); $viewer->view('EditRelatedBlock.tpl', 'PDFMaker'); }
function step3(Vtiger_request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = Reports_Record_Model::getCleanInstance($record); if (!empty($record)) { $viewer->assign('SELECTED_STANDARD_FILTER_FIELDS', $reportModel->getSelectedStandardFilter()); $viewer->assign('SELECTED_ADVANCED_FILTER_FIELDS', $reportModel->transformToNewAdvancedFilter()); } $data = $request->getAll(); foreach ($data as $name => $value) { $reportModel->set($name, $value); } $primaryModule = $request->get('primary_module'); $secondaryModules = $request->get('secondary_modules'); $reportModel->setPrimaryModule($primaryModule); if (!empty($secondaryModules)) { $secondaryModules = implode(':', $secondaryModules); $reportModel->setSecondaryModule($secondaryModules); $secondaryModules = explode(':', $secondaryModules); } else { $secondaryModules = array(); } $chartModel = Reports_Chart_Model::getInstanceById($reportModel); $viewer->assign('CHART_MODEL', $chartModel); $viewer->assign('ADVANCED_FILTERS', $request->get('advanced_filter')); $viewer->assign('PRIMARY_MODULE_FIELDS', $reportModel->getPrimaryModuleFieldsForAdvancedReporting()); $viewer->assign('SECONDARY_MODULE_FIELDS', $reportModel->getSecondaryModuleFieldsForAdvancedReporting()); $viewer->assign('CALCULATION_FIELDS', $reportModel->getModuleCalculationFieldsForReport()); if ($request->get('isDuplicate')) { $viewer->assign('IS_DUPLICATE', true); } $viewer->assign('RECORD_ID', $record); $viewer->assign('REPORT_MODEL', $reportModel); $viewer->assign('PRIMARY_MODULE', $primaryModule); $viewer->assign('SECONDARY_MODULES', $secondaryModules); $viewer->assign('MODULE', $moduleName); $viewer->view('ChartEditStep3.tpl', $moduleName); }
public function deleteRaports() { global $log, $adb; $log->debug("Entering VT620_to_YT::deleteRaports() method ..."); $restrictedRaports = array('Contacts by Accounts', 'Contacts without Accounts', 'Contacts by Potentials', 'Lead by Source', 'Lead Status Report', 'Potential Pipeline', 'Closed Potentials', 'Last Month Activities', 'This Month Activities', 'Tickets by Products', 'Tickets by Priority', 'Open Tickets', 'Product Details', 'Products by Contacts', 'Open Quotes', 'Quotes Detailed Report', 'PurchaseOrder by Contacts', 'PurchaseOrder Detailed Report', 'Invoice Detailed Report', 'SalesOrder Detailed Report', 'Campaign Expectations and Actuals', 'Contacts Email Report', 'Accounts Email Report', 'Leads Email Report', 'Vendors Email Report'); $sql = "SELECT * FROM `vtiger_report` WHERE reportname IN (" . generateQuestionMarks($restrictedRaports) . ")"; $result = $adb->pquery($sql, $restrictedRaports); $num = $adb->num_rows($result); $moduleModel = Vtiger_Module_Model::getInstance('Reports'); for ($i = 0; $i < $num; $i++) { $reportId = $adb->query_result($result, $i, "reportid"); $recordModel = Reports_Record_Model::getInstanceById($reportId, 'Reports'); $recordModel->delete(); } $log->debug("Exiting VT620_to_YT::deleteRaports() method ..."); }
public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = new Reports_Record_Model(); $reportModel->setModule('Reports'); if (!empty($record) && !$request->get('isDuplicate')) { $reportModel->setId($record); } $reportModel->set('reportname', $request->get('reportname')); $reportModel->set('folderid', $request->get('folderid')); $reportModel->set('description', $request->get('reports_description')); $reportModel->setPrimaryModule($request->get('primary_module')); $secondaryModules = $request->get('secondary_modules'); $secondaryModules = implode(':', $secondaryModules); $reportModel->setSecondaryModule($secondaryModules); $reportModel->set('advancedFilter', $request->get('advanced_filter')); $reportModel->set('reporttype', 'chart'); $dataFields = $request->get('datafields', 'count(*)'); if (is_string($dataFields)) { $dataFields = array($dataFields); } $reportModel->set('reporttypedata', Zend_Json::encode(array('type' => $request->get('charttype', 'pieChart'), 'groupbyfield' => $request->get('groupbyfield'), 'datafields' => $dataFields))); $reportModel->save(); $loadUrl = $reportModel->getDetailViewUrl(); header("Location: {$loadUrl}"); }
function getReport(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $page = $request->get('page'); $data = $this->reportData; $calculation = $this->calculationFields; if (empty($data)) { $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $reportType = $reportModel->get('reporttype'); $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('page', $page); $pagingModel->set('limit', self::REPORT_LIMIT + 1); $reportData = $reportModel->getReportData($pagingModel); $data = $reportData['data']; $calculation = $reportModel->getReportCalulationData(); $advFilterSql = $reportModel->getAdvancedFilterSQL(); $query = $reportModel->getReportSQL($advFilterSql, 'PDF'); $countQuery = $reportModel->generateCountQuery($query); $this->count = $reportModel->getReportsCount($countQuery); } $viewer->assign('CALCULATION_FIELDS', $calculation); $viewer->assign('DATA', $data); $viewer->assign('RECORD_ID', $record); $viewer->assign('PAGING_MODEL', $pagingModel); $viewer->assign('COUNT', $this->count); $viewer->assign('MODULE', $moduleName); $viewer->assign('REPORT_RUN_INSTANCE', ReportRun::getInstance($record)); if (count($data) > self::REPORT_LIMIT) { $viewer->assign('LIMIT_EXCEEDED', true); } $viewer->view('ReportContents.tpl', $moduleName); }
function step3(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = Reports_Record_Model::getCleanInstance($record); if (!empty($record)) { $viewer->assign('SELECTED_STANDARD_FILTER_FIELDS', $reportModel->getSelectedStandardFilter()); $viewer->assign('SELECTED_ADVANCED_FILTER_FIELDS', $reportModel->transformToNewAdvancedFilter()); } $data = $request->getAll(); foreach ($data as $name => $value) { if ($name == 'schdayoftheweek' || $name == 'schdayofthemonth' || $name == 'schannualdates' || $name == 'recipients') { $value = Zend_Json::decode($value); if (!is_array($value)) { // need to save these as json data $value = array($value); } } $reportModel->set($name, $value); } $primaryModule = $request->get('primary_module'); $secondaryModules = $request->get('secondary_modules'); $reportModel->setPrimaryModule($primaryModule); if (!empty($secondaryModules)) { $secondaryModules = implode(':', $secondaryModules); $reportModel->setSecondaryModule($secondaryModules); $secondaryModules = explode(':', $secondaryModules); } else { $secondaryModules = array(); } $viewer->assign('RECORD_ID', $record); $viewer->assign('REPORT_MODEL', $reportModel); $viewer->assign('PRIMARY_MODULE', $primaryModule); $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($reportModel); $primaryModuleRecordStructure = $recordStructureInstance->getPrimaryModuleRecordStructure(); $secondaryModuleRecordStructures = $recordStructureInstance->getSecondaryModuleRecordStructure(); //TODO : We need to remove "update_log" field from "HelpDesk" module in New Look // after removing old look we need to remove this field from crm if ($primaryModule == 'HelpDesk') { foreach ($primaryModuleRecordStructure as $blockLabel => $blockFields) { foreach ($blockFields as $field => $object) { if ($field == 'update_log') { unset($primaryModuleRecordStructure[$blockLabel][$field]); } } } } if (!empty($secondaryModuleRecordStructures)) { foreach ($secondaryModuleRecordStructures as $module => $structure) { if ($module == 'HelpDesk') { foreach ($structure as $blockLabel => $blockFields) { foreach ($blockFields as $field => $object) { if ($field == 'update_log') { unset($secondaryModuleRecordStructures[$module][$blockLabel][$field]); } } } } } } // End $viewer->assign('SECONDARY_MODULES', $secondaryModules); $viewer->assign('PRIMARY_MODULE_RECORD_STRUCTURE', $primaryModuleRecordStructure); $viewer->assign('SECONDARY_MODULE_RECORD_STRUCTURES', $secondaryModuleRecordStructures); $dateFilters = Vtiger_Field_Model::getDateFilterTypes(); foreach ($dateFilters as $comparatorKey => $comparatorInfo) { $comparatorInfo['startdate'] = DateTimeField::convertToUserFormat($comparatorInfo['startdate']); $comparatorInfo['enddate'] = DateTimeField::convertToUserFormat($comparatorInfo['enddate']); $comparatorInfo['label'] = vtranslate($comparatorInfo['label'], $moduleName); $dateFilters[$comparatorKey] = $comparatorInfo; } $viewer->assign('DATE_FILTERS', $dateFilters); if ($primaryModule == 'Calendar' || in_array('Calendar', $secondaryModules)) { $advanceFilterOpsByFieldType = Calendar_Field_Model::getAdvancedFilterOpsByFieldType(); } else { $advanceFilterOpsByFieldType = Vtiger_Field_Model::getAdvancedFilterOpsByFieldType(); } $viewer->assign('ADVANCED_FILTER_OPTIONS', Vtiger_Field_Model::getAdvancedFilterOptions()); $viewer->assign('ADVANCED_FILTER_OPTIONS_BY_TYPE', $advanceFilterOpsByFieldType); $viewer->assign('MODULE', $moduleName); $calculationFields = $reportModel->get('calculation_fields'); if ($calculationFields) { $calculationFields = Zend_Json::decode($calculationFields); $viewer->assign('LINEITEM_FIELD_IN_CALCULATION', $reportModel->showLineItemFieldsInFilter($calculationFields)); } if ($request->get('isDuplicate')) { $viewer->assign('IS_DUPLICATE', true); } $viewer->view('step3.tpl', $moduleName); }
/** * Get report-templates models for transmittrd module * * @param string $moduleName * @return Reports_Record_Model[] */ public static function getTemplatesReportModels($moduleName) { $db = PearDatabase::getInstance(); $reportResult = $db->pquery('SELECT vtiger_report.* FROM vtiger_report ' . 'INNER JOIN vtiger_reportfolder ON vtiger_reportfolder.folderid=vtiger_report.folderid ' . 'INNER JOIN vtiger_reportmodules ON vtiger_reportmodules.reportmodulesid=vtiger_report.reportid ' . 'WHERE vtiger_reportfolder.foldername=? AND vtiger_reportmodules.primarymodule=?', array('Templates', $moduleName)); $reportsModelsList = array(); while ($values = $db->fetchByAssoc($reportResult)) { $reportModel = Reports_Record_Model::getCleanInstance(); $reportModel->setData($values)->setId($values['reportid'])->setModuleFromInstance(Vtiger_Module_Model::getInstance('Reports')); $reportModel->initialize(); $reportsModelsList[] = $reportModel; } return $reportsModelsList; }
function getReport(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $page = $request->get('page'); $data = $this->reportData; $calculation = $this->calculationFields; if (empty($data)) { $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('page', $page); $pagingModel->set('limit', self::REPORT_LIMIT + 1); $data = $reportModel->getReportData($pagingModel); $calculation = $reportModel->getReportCalulationData(); } $viewer->assign('CALCULATION_FIELDS', $calculation); $viewer->assign('DATA', $data); $viewer->assign('RECORD_ID', $record); $viewer->assign('PAGING_MODEL', $pagingModel); $viewer->assign('MODULE', $moduleName); if (count($data) > self::REPORT_LIMIT) { $viewer->assign('LIMIT_EXCEEDED', true); } $viewer->view('ReportContents.tpl', $moduleName); }
public function sendEmail() { require_once 'vtlib/Vtiger/Mailer.php'; $vtigerMailer = new Vtiger_Mailer(); $recipientEmails = $this->getRecipientEmails(); Vtiger_Utils::ModuleLog('ScheduleReprots', $recipientEmails); foreach ($recipientEmails as $name => $email) { $vtigerMailer->AddAddress($email, $name); } vimport('~modules/Report/models/Record.php'); $reportRecordModel = Reports_Record_Model::getInstanceById($this->get('reportid')); $currentTime = date('Y-m-d.H.i.s'); Vtiger_Utils::ModuleLog('ScheduleReprots Send Mail Start ::', $currentTime); $reportname = decode_html($reportRecordModel->getName()); $subject = $reportname; Vtiger_Utils::ModuleLog('ScheduleReprot Name ::', $reportname); $vtigerMailer->Subject = $subject; $vtigerMailer->Body = $this->getEmailContent($reportRecordModel); $vtigerMailer->IsHTML(); $baseFileName = $reportname . '__' . $currentTime; $oReportRun = ReportRun::getInstance($this->get('reportid')); $reportFormat = $this->scheduledFormat; $attachments = array(); if ($reportFormat == 'CSV') { $fileName = $baseFileName . '.csv'; $filePath = 'storage/' . $fileName; $attachments[$fileName] = $filePath; $oReportRun->writeReportToCSVFile($filePath); } foreach ($attachments as $attachmentName => $path) { $vtigerMailer->AddAttachment($path, decode_html($attachmentName)); } //Added cc to account owner $accountOwnerId = Users::getActiveAdminId(); $vtigerMailer->AddCC(getUserEmail($accountOwnerId), getUserFullName($accountOwnerId)); $status = $vtigerMailer->Send(true); foreach ($attachments as $attachmentName => $path) { unlink($path); } return $status; }
public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = new Reports_Record_Model(); $reportModel->setModule('Reports'); if (!empty($record) && !$request->get('isDuplicate')) { $reportModel->setId($record); } $reportModel->set('reportname', $request->get('reportname')); $reportModel->set('folderid', $request->get('folderid')); $reportModel->set('description', $request->get('reports_description')); $reportModel->setPrimaryModule($request->get('primary_module')); $secondaryModules = $request->get('secondary_modules'); $secondaryModules = implode(':', $secondaryModules); $reportModel->setSecondaryModule($secondaryModules); $reportModel->set('selectedFields', $request->get('selected_fields')); $reportModel->set('sortFields', $request->get('selected_sort_fields')); $reportModel->set('calculationFields', $request->get('selected_calculation_fields')); $reportModel->set('standardFilter', $request->get('standard_fiter')); $reportModel->set('advancedFilter', $request->get('advanced_filter')); $reportModel->set('advancedGroupFilterConditions', $request->get('advanced_group_condition')); $reportModel->save(); $loadUrl = $reportModel->getDetailViewUrl(); header("Location: {$loadUrl}"); }
function getReport(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $page = $request->get('page'); //$data = $this->reportData; //TODO $calculation = $this->calculationFields; //if(empty($data)){ $reportModel = Reports_Record_Model::getInstanceById($record); $reportModel->setModule('Reports'); $reportType = $reportModel->get('reporttype'); $pagingModel = new Vtiger_Paging_Model(); $pagingModel->set('page', $page); $pagingModel->set('limit', self::REPORT_LIMIT + 1); $reportData = $reportModel->getReportData($pagingModel); $data = $reportData['data']; $dataRaw = $reportData['data_raw']; $calculation = $reportModel->getReportCalulationData(); $advFilterSql = $reportModel->getAdvancedFilterSQL(); $query = $reportModel->getReportSQL($advFilterSql, 'PDF'); $countQuery = $reportModel->generateCountQuery($query); $this->count = $reportModel->getReportsCount($countQuery); //} /*готовим данные в нужный нам формат для новой таблицы*/ /*получим поле для группировки*/ global $adb; $reportRun = ReportRun::getInstance($record); $fieldRawArr = $reportRun->getGroupingList(); foreach ($fieldRawArr as $value) { $fieldRaw = explode('_', $value, 2); break; } $groupModule = str_replace('`', '', $fieldRaw[0]); $groupLabel = explode(' ', $fieldRaw[1], 2); $groupLabel = str_replace('`', '', $groupLabel[0]); //это системное имя, нужен перевод $fieldInfo = getFieldByReportLabel($groupModule, $groupLabel); $fieldType = null; if (!empty($fieldInfo)) { $field = WebserviceField::fromArray($adb, $fieldInfo); $fieldType = $field->getFieldDataType(); } if (!empty($fieldInfo)) { $translatedLabel = getTranslatedString($field->getFieldLabelKey(), $groupModule); } else { $translatedLabel = getTranslatedString($groupLabel, $groupModule); $translatedLabel = str_replace("_", " ", $translatedLabel); } $groupLabel = $translatedLabel; /*STRING TRANSLATION starts TODO*/ /*$moduleLabel =''; if(in_array($module,$modules_selected)) $moduleLabel = getTranslatedString($module,$module); if(empty($translatedLabel)) { $translatedLabel = getTranslatedString(str_replace('_', " ", $fld->name), $module); }*/ /*if(!empty($this->secondarymodule)) { if($moduleLabel != '') { $headerLabel = $moduleLabel." ". $translatedLabel; } }*/ /*формируем нужный массив*/ $dataGrouped = array(); foreach ($data as $index => $row) { $groupIndex = $row[$groupLabel]; if (!isset($dataGrouped[$groupIndex])) { $dataGrouped[$groupIndex] = array('rows' => array(), 'summary' => array()); } $dataGrouped[$groupIndex]['rows'][] = $row; foreach ($row as $reportField => $value) { $dataRawVal = explode('::', $dataRaw[$index][$reportField]); $dataRawType = empty($dataRawVal[1]) ? 'undefined' : $dataRawVal[1]; $dataRawVal = $dataRawVal[0]; if (!isset($dataGrouped[$groupIndex]['summary'][$reportField])) { if ($dataRawType == 'currency') { $dataRawVal = $dataRawVal + 0; } if (empty($dataRawType)) { $dataRawVal = (string) $dataRawVal; } $dataGrouped[$groupIndex]['summary'][$reportField] = $dataRawVal; } elseif ($dataRawType == 'currency') { /*можно позже добавить другие типы данных*/ $summed = $dataGrouped[$groupIndex]['summary'][$reportField] + $dataRawVal; $dataGrouped[$groupIndex]['summary'][$reportField] = $summed; /*todo переделать в пользовательский формат*/ } } } /*end*/ /*убираем ненужные столбцы*/ $columns = array('SUM' => false, 'AVG' => false, 'MIN' => false, 'MAX' => false); foreach ($calculation as $metriks) { foreach ($metriks as $index => $metrik) { $postfix = substr($index, -3, 3); if ($columns[$postfix]) { continue; } if (!empty($metrik)) { $columns[$postfix] = true; } } } $viewer->assign('COLUMNS', $columns); /*end*/ $viewer->assign('CALCULATION_FIELDS', $calculation); $viewer->assign('DATA', $data); $viewer->assign('DATAGROUPED', $dataGrouped); $viewer->assign('RECORD_ID', $record); $viewer->assign('PAGING_MODEL', $pagingModel); $viewer->assign('COUNT', $this->count); $viewer->assign('MODULE', $moduleName); $viewer->assign('REPORT_RUN_INSTANCE', ReportRun::getInstance($record)); if (count($data) > self::REPORT_LIMIT) { $viewer->assign('LIMIT_EXCEEDED', true); } $viewer->view('ReportContents.tpl', $moduleName); }
function step3(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = Reports_Record_Model::getCleanInstance($record); if (!empty($record)) { $viewer->assign('SELECTED_STANDARD_FILTER_FIELDS', $reportModel->getSelectedStandardFilter()); $viewer->assign('SELECTED_ADVANCED_FILTER_FIELDS', $reportModel->transformToNewAdvancedFilter()); } $data = $request->getAll(); foreach ($data as $name => $value) { $reportModel->set($name, $value); } $primaryModule = $request->get('primary_module'); $secondaryModules = $request->get('secondary_modules'); $reportModel->setPrimaryModule($primaryModule); if (!empty($secondaryModules)) { $secondaryModules = implode(':', $secondaryModules); $reportModel->setSecondaryModule($secondaryModules); $secondaryModules = explode(':', $secondaryModules); } else { $secondaryModules = array(); } $viewer->assign('RECORD_ID', $record); $viewer->assign('REPORT_MODEL', $reportModel); $viewer->assign('PRIMARY_MODULE', $primaryModule); $recordStructureInstance = Vtiger_RecordStructure_Model::getInstanceFromRecordModel($reportModel); $primaryModuleRecordStructure = $recordStructureInstance->getPrimaryModuleRecordStructure(); $secondaryModuleRecordStructures = $recordStructureInstance->getSecondaryModuleRecordStructure(); $viewer->assign('SECONDARY_MODULES', $secondaryModules); $viewer->assign('PRIMARY_MODULE_RECORD_STRUCTURE', $primaryModuleRecordStructure); $viewer->assign('SECONDARY_MODULE_RECORD_STRUCTURES', $secondaryModuleRecordStructures); $dateFilters = Vtiger_Field_Model::getDateFilterTypes(); foreach ($dateFilters as $comparatorKey => $comparatorInfo) { $comparatorInfo['startdate'] = DateTimeField::convertToUserFormat($comparatorInfo['startdate']); $comparatorInfo['enddate'] = DateTimeField::convertToUserFormat($comparatorInfo['enddate']); $comparatorInfo['label'] = vtranslate($comparatorInfo['label'], $moduleName); $dateFilters[$comparatorKey] = $comparatorInfo; } $viewer->assign('DATE_FILTERS', $dateFilters); if ($primaryModule == 'Calendar' || in_array('Calendar', $secondaryModules)) { $advanceFilterOpsByFieldType = Calendar_Field_Model::getAdvancedFilterOpsByFieldType(); } else { $advanceFilterOpsByFieldType = Vtiger_Field_Model::getAdvancedFilterOpsByFieldType(); } $viewer->assign('ADVANCED_FILTER_OPTIONS', Vtiger_Field_Model::getAdvancedFilterOptions()); $viewer->assign('ADVANCED_FILTER_OPTIONS_BY_TYPE', $advanceFilterOpsByFieldType); $viewer->assign('MODULE', $moduleName); $calculationFields = $reportModel->get('calculation_fields'); if ($calculationFields) { $calculationFields = Zend_Json::decode($calculationFields); $viewer->assign('LINEITEM_FIELD_IN_CALCULATION', $reportModel->showLineItemFieldsInFilter($calculationFields)); } if ($request->get('isDuplicate')) { $viewer->assign('IS_DUPLICATE', true); } $viewer->view('step3.tpl', $moduleName); }
/** * Function to get all Report Record Models * @param <Array> $allReportsList * @param <Vtiger_Module_Model> - Reports Module Model * @return <Array> Reports Record Models */ public function getAllReportModels($allReportsList, $reportModuleModel) { $allReportModels = array(); $folders = self::getAll(); foreach ($allReportsList as $key => $reportsList) { for ($i = 0; $i < count($reportsList); $i++) { $reportModel = new Reports_Record_Model(); $reportModel->setData($reportsList[$i])->setModuleFromInstance($reportModuleModel); $reportModel->set('foldername', $folders[$key]->getName()); $allReportModels[] = $reportModel; unset($reportModel); } } return $allReportModels; }
function getReport(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $record = $request->get('record'); $reportModel = Reports_Record_Model::getInstanceById($record); $reportChartModel = Reports_Chart_Model::getInstanceById($reportModel); $secondaryModules = $reportModel->getSecondaryModules(); if (empty($secondaryModules)) { $viewer->assign('CLICK_THROUGH', true); } $viewer->assign('ADVANCED_FILTERS', $request->get('advanced_filter')); $viewer->assign('PRIMARY_MODULE_FIELDS', $reportModel->getPrimaryModuleFields()); $viewer->assign('SECONDARY_MODULE_FIELDS', $reportModel->getSecondaryModuleFields()); $viewer->assign('CALCULATION_FIELDS', $reportModel->getModuleCalculationFieldsForReport()); $data = $reportChartModel->getData(); $viewer->assign('CHART_TYPE', $reportChartModel->getChartType()); $viewer->assign('DATA', json_encode($data, JSON_HEX_APOS)); $viewer->assign('REPORT_MODEL', $reportModel); $viewer->assign('RECORD_ID', $record); $viewer->assign('REPORT_MODEL', $reportModel); $viewer->assign('SECONDARY_MODULES', $secondaryModules); $viewer->assign('MODULE', $moduleName); $viewer->view('ChartReportContents.tpl', $moduleName); }