'source_module', 'action' => 'DetailView'); return $permissions; } public function process(Vtiger_Request $request) { $sourceModuleName = $request->get('source_module'); $moduleModel = Vtiger_Module_Model::getInstance($sourceModuleName); $customViewModel = $this->getCVModelFromRequest($request); $response = new Vtiger_Response(); if (!$customViewModel->checkDuplicate()) { $customViewModel->save(); $cvId = $customViewModel->getId(); /** * We are setting list_headers in session when we manage columns. * we should clear this from session in order to apply view */ $listViewSessionKey = $sourceModuleName.'_'.$cvId; Vtiger_ListView_Model::deleteParamsSession($listViewSessionKey,'list_headers'); $response->setResult(array('id'=>$cvId, 'listviewurl'=>$moduleModel->getListViewUrl().'&viewname='.$cvId)); } else { $response->setError(vtranslate('LBL_CUSTOM_VIEW_NAME_DUPLICATES_EXIST', $moduleName)); } $response->emit(); } /** * Function to get the custom view model based on the request parameters * @param Vtiger_Request $request * @return CustomView_Record_Model or Module specific Record Model instance */ private function getCVModelFromRequest(Vtiger_Request $request) { $cvId = $request->get('record'); if(!empty($cvId)) { $customViewModel = CustomView_Record_Model::getInstanceById($cvId); } else { $customViewModel = CustomView_Record_Model::getCleanInstance(); $customViewModel->setModule($request->get('source_module')); } $customViewData = array( 'cvid' => $cvId, 'viewname' => $request->get('viewname'), 'setdefault' => $request->get('setdefault'), 'setmetrics' => $request->get('setmetrics'), 'status' => $request->get('status') ); $selectedColumnsList = $request->get('columnslist'); if(!empty($selectedColumnsList)) { $customViewData['columnslist'] = $selectedColumnsList; } $stdFilterList = $request->get('stdfilterlist'); if(!empty($stdFilterList)) { $customViewData['stdfilterlist'] = $stdFilterList; } $advFilterList = $request->get('advfilterlist'); if(!empty($advFilterList)) { $customViewData['advfilterlist'] = $advFilterList; } if($request->has('sharelist')) { $customViewData['sharelist'] = $request->get('sharelist'); if($customViewData['sharelist'] == '1') $customViewData['members'] = $request->get('members'); } return $customViewModel->setData($customViewData); } public function validateRequest(Vtiger_Request $request) { $request->validateWriteAccess(); } }