Beispiel #1
0
 public function checkPermission(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $moduleModel = Reports_Module_Model::getInstance($moduleName);
     $currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
     if (!$currentUserPriviligesModel->hasModulePermission($moduleModel->getId())) {
         throw new NoPermittedException('LBL_PERMISSION_DENIED');
     }
 }
Beispiel #2
0
 public function checkPermission(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $moduleModel = Reports_Module_Model::getInstance($moduleName);
     $record = $request->get('record');
     $reportModel = Reports_Record_Model::getCleanInstance($record);
     $currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
     if (!$currentUserPriviligesModel->hasModulePermission($moduleModel->getId()) && !$reportModel->isEditable()) {
         throw new AppException('LBL_PERMISSION_DENIED');
     }
 }
 public function getDetailDashboards($moduleName, $recordId)
 {
     $dashboardsUrls = array();
     foreach (Reports_Module_Model::getTemplatesReportModels($moduleName) as $report) {
         $dashboardsUrls[] = $report->getWidgetReportURL();
     }
     $detailWidgets = array();
     if (!empty($dashboardsUrls)) {
         $inCriteria = '(' . substr(str_repeat('?,', count($dashboardsUrls)), 0, -1) . ')';
         $sql = "SELECT vtiger_links.*, vtiger_module_dashboard_widgets.userid, vtiger_module_dashboard_widgets.id as widgetid, vtiger_module_dashboard_widgets.position as position, vtiger_links.linkid FROM vtiger_links " . "INNER JOIN vtiger_module_dashboard_widgets ON vtiger_links.linkid=vtiger_module_dashboard_widgets.linkid " . "WHERE (linktype=? AND tabid=? AND vtiger_module_dashboard_widgets.userid=? AND linkurl IN" . $inCriteria . ")";
         $db = PearDatabase::getInstance();
         $currentUser = Users_Record_Model::getCurrentUserModel();
         $result = $db->pquery($sql, array_merge(array('DASHBOARDWIDGET', getTabid($moduleName), $currentUser->getId()), $dashboardsUrls));
         while ($row = $db->fetchByAssoc($result)) {
             /* Prepare URL for report template */
             if ($this->checkModulePermission($row)) {
                 $widgetModel = Vtiger_Widget_Model::getInstanceFromValues($row);
                 $widgetModel->applyTemplateRecordId($recordId);
                 $detailWidgets[] = $widgetModel;
             }
         }
     }
     return $detailWidgets;
 }
 /**
  * Function to get the detail view links (links and widgets)
  * @param <array> $linkParams - parameters which will be used to calicaulate the params
  * @return <array> - array of link models in the format as below
  *                   array('linktype'=>list of link models);
  */
 public function getDetailViewLinks($linkParams)
 {
     $linkTypes = array('DETAILVIEWBASIC', 'DETAILVIEW');
     $moduleModel = $this->getModule();
     $recordModel = $this->getRecord();
     $moduleName = $moduleModel->getName();
     $recordId = $recordModel->getId();
     $detailViewLink = array();
     if (Users_Privileges_Model::isPermitted($moduleName, 'EditView', $recordId)) {
         $detailViewLinks[] = array('linktype' => 'DETAILVIEWBASIC', 'linklabel' => 'LBL_EDIT', 'linkurl' => $recordModel->getEditViewUrl(), 'linkicon' => '');
         foreach ($detailViewLinks as $detailViewLink) {
             $linkModelList['DETAILVIEWBASIC'][] = Vtiger_Link_Model::getInstanceFromValues($detailViewLink);
         }
     }
     $linkModelListDetails = Vtiger_Link_Model::getAllByType($moduleModel->getId(), $linkTypes, $linkParams);
     //Mark all detail view basic links as detail view links.
     //Since ui will be look ugly if you need many basic links
     $detailViewBasiclinks = $linkModelListDetails['DETAILVIEWBASIC'];
     unset($linkModelListDetails['DETAILVIEWBASIC']);
     if (Users_Privileges_Model::isPermitted($moduleName, 'Delete', $recordId)) {
         $deletelinkModel = array('linktype' => 'DETAILVIEW', 'linklabel' => sprintf("%s %s", getTranslatedString('LBL_DELETE', $moduleName), vtranslate('SINGLE_' . $moduleName, $moduleName)), 'linkurl' => 'javascript:Vtiger_Detail_Js.deleteRecord("' . $recordModel->getDeleteUrl() . '")', 'linkicon' => '');
         $linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues($deletelinkModel);
     }
     if (Users_Privileges_Model::isPermitted($moduleName, 'EditView', $recordId)) {
         $duplicateLinkModel = array('linktype' => 'DETAILVIEWBASIC', 'linklabel' => 'LBL_DUPLICATE', 'linkurl' => $recordModel->getDuplicateRecordUrl(), 'linkicon' => '');
         $linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues($duplicateLinkModel);
     }
     if (!empty($detailViewBasiclinks)) {
         foreach ($detailViewBasiclinks as $linkModel) {
             // Remove view history, needed in vtiger5 to see history but not in vtiger6
             if ($linkModel->linklabel == 'View History') {
                 continue;
             }
             $linkModelList['DETAILVIEW'][] = $linkModel;
         }
     }
     //SalesPlatform.ru begin -  add PDF templates links to DetailView  from SPPDFTemplates
     /* Two cycles - to order */
     $pdfTemplates = new SPPDFTemplates_Module_Model();
     $availableTemplates = $pdfTemplates->getModuleTemplates($this->getModuleName(), $this->record->get('spcompany'));
     foreach ($availableTemplates as $template) {
         /* Export PDF links */
         $pdfTemplateLink = array('linklabel' => sprintf("%s %s", vtranslate('LBL_EXPORT_TO_PDF', $moduleName), $template->getName()), 'linkurl' => $recordModel->getExportPDFURL($template));
         $linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues($pdfTemplateLink);
     }
     foreach ($availableTemplates as $template) {
         /* Email link */
         $sendEmailLink = array('linklabel' => sprintf("%s %s", vtranslate('LBL_SEND_MAIL_PDF', $moduleName), $template->getName()), 'linkurl' => 'javascript:Vtiger_Detail_Js.sendEmailPDFClickHandler(\'' . $recordModel->getSendEmailPDFUrl($template) . '\')');
         $linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues($sendEmailLink);
     }
     //SalesPlatform.ru end
     $relatedLinks = $this->getDetailViewRelatedLinks();
     foreach ($relatedLinks as $relatedLinkEntry) {
         $relatedLink = Vtiger_Link_Model::getInstanceFromValues($relatedLinkEntry);
         $linkModelList[$relatedLink->getType()][] = $relatedLink;
     }
     $widgets = $this->getWidgets();
     foreach ($widgets as $widgetLinkModel) {
         $linkModelList['DETAILVIEWWIDGET'][] = $widgetLinkModel;
     }
     $currentUserModel = Users_Record_Model::getCurrentUserModel();
     if ($currentUserModel->isAdminUser()) {
         $settingsLinks = $moduleModel->getSettingLinks();
         foreach ($settingsLinks as $settingsLink) {
             $linkModelList['DETAILVIEWSETTING'][] = Vtiger_Link_Model::getInstanceFromValues($settingsLink);
         }
     }
     //SalesPlatform.ru begin add templates reports
     foreach (Reports_Module_Model::getTemplatesReportModels($moduleName) as $reportModel) {
         $linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues(array('linklabel' => vtranslate('SINGLE_Reports', 'Reports') . ' «' . $reportModel->getName() . '»', 'linkurl' => $reportModel->getDetailViewUrl() . '&report_record_id=' . $recordId));
     }
     //SalesPlatform.ru end
     return $linkModelList;
 }