Skip to content
Snippets Groups Projects
Save.php 4.54 KiB
Newer Older
Prasad's avatar
Prasad committed
<?php
/*+***********************************************************************************
 * The contents of this file are subject to the vtiger CRM Public License Version 1.0
 * ("License"); You may not use this file except in compliance with the License
 * The Original Code is:  vtiger CRM Open Source
 * The Initial Developer of the Original Code is vtiger.
 * Portions created by vtiger are Copyright (C) vtiger.
 * All Rights Reserved.
 *************************************************************************************/

class Reports_Save_Action extends Vtiger_Save_Action {

	public function requiresPermission(\Vtiger_Request $request) {
		$permissions = parent::requiresPermission($request);
		$permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView', 'record_parameter' => 'record');
		return $permissions;
	}
	
Prasad's avatar
Prasad committed
	public function checkPermission(Vtiger_Request $request) {
		parent::checkPermission($request);
Prasad's avatar
Prasad committed

		$record = $request->get('record');
		if ($record) {
			$reportModel = Reports_Record_Model::getCleanInstance($record);
			if (!$reportModel->isEditable()) {
Prasad's avatar
Prasad committed
				throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
Prasad's avatar
Prasad committed
			}
		}
                $selectedFields = $request->get('selected_fields');
                if (count($selectedFields) > 0) {
                    foreach ($selectedFields as $field) {
                        list($tablename, $colname, $module_field, $fieldname, $single) = split(":", $field);
                        list($module, $fieldName) = split("_", $module_field, 2);
                        $moduleModel = Vtiger_Module_Model::getInstance($module);
                        $fieldModel = Vtiger_Field_Model::getInstance($fieldname, $moduleModel);

                        if ($fieldModel->table !== $tablename) {
                            throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
                        } elseif ($fieldModel->column !== $colname) {
                            throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
                        }
                    }
                }
Prasad's avatar
Prasad committed
	}

	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);
		}

Prasad's avatar
Prasad committed
		$reporttype = $request->get('reporttype');
		if(empty($reporttype)) $reporttype='tabular';
Prasad's avatar
Prasad committed
		$reportModel->set('reportname', $request->get('reportname'));
		$reportModel->set('folderid', $request->get('reportfolderid'));
Prasad's avatar
Prasad committed
		$reportModel->set('description', $request->get('reports_description'));
Prasad's avatar
Prasad committed
		$reportModel->set('reporttype', $reporttype);
Prasad's avatar
Prasad committed

		$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'));
Prasad's avatar
Prasad committed
		$reportModel->set('members', $request->get('members'));
Prasad's avatar
Prasad committed

		$reportModel->save();

		//Scheduled Reports
Prasad's avatar
Prasad committed
		$scheduleReportModel = new Reports_ScheduleReports_Model();
		$scheduleReportModel->set('scheduleid', $request->get('schtypeid'));
		$scheduleReportModel->set('schtime', date('H:i', strtotime($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->set('fileformat', $request->get('fileformat'));
		$scheduleReportModel->saveScheduleReport();
Prasad's avatar
Prasad committed
		//END

		$loadUrl = $reportModel->getDetailViewUrl();
		header("Location: $loadUrl");
	}
}