Exemplo n.º 1
0
 /**
  * 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)
 {
     $linkModelList = Vtiger_DetailView_Model::getDetailViewLinks($linkParams);
     $recordModel = $this->getRecord();
     $moduleModel = $this->getModule();
     $moduleName = $moduleModel->getName();
     $recordId = $recordModel->getId();
     //TODO: update the database so that these separate handlings are not required
     $index = 0;
     foreach ($linkModelList['DETAILVIEW'] as $link) {
         if ($link->linklabel == 'View History' || $link->linklabel == 'Send SMS') {
             unset($linkModelList['DETAILVIEW'][$index]);
         } else {
             if ($link->linklabel == 'LBL_SHOW_ACCOUNT_HIERARCHY') {
                 $link->linklabel = 'LBL_SHOW_ACCOUNT_HIERARCHY';
                 $linkURL = 'index.php?module=Accounts&view=AccountHierarchy&record=' . $recordId;
                 $link->linkurl = 'javascript:Accounts_Detail_Js.triggerAccountHierarchy("' . $linkURL . '");';
                 unset($linkModelList['DETAILVIEW'][$index]);
                 $linkModelList['DETAILVIEW'][$index] = $link;
             }
         }
         $index++;
     }
     if (Users_Privileges_Model::isPermitted($moduleModel->getName(), 'ConvertLead', $recordModel->getId()) && Users_Privileges_Model::isPermitted($moduleModel->getName(), 'EditView', $recordModel->getId())) {
         $convert = !Leads_Module_Model::checkIfAllowedToConvert($recordModel->get('leadstatus')) ? 'hide' : '';
         $basicActionLink = array('linktype' => 'DETAILVIEWBASIC', 'linklabel' => '', 'linkclass' => 'btn-info btn-convertLead ' . $convert, 'linkhint' => vtranslate('LBL_CONVERT_LEAD', $moduleName), 'linkurl' => 'javascript:Leads_Detail_Js.convertLead("' . $recordModel->getConvertLeadUrl() . '",this);', 'linkicon' => 'glyphicon glyphicon-transfer');
         $linkModelList['DETAILVIEWBASIC'][] = Vtiger_Link_Model::getInstanceFromValues($basicActionLink);
     }
     return $linkModelList;
 }
Exemplo n.º 2
0
 /**
  * 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)
 {
     $currentUserModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
     $linkModelList = Vtiger_DetailView_Model::getDetailViewLinks($linkParams);
     $recordModel = $this->getRecord();
     $moduleModel = $this->getModule();
     $moduleName = $moduleModel->getName();
     $recordId = $recordModel->getId();
     $emailModuleModel = Vtiger_Module_Model::getInstance('OSSMail');
     if ($currentUserModel->hasModulePermission($emailModuleModel->getId())) {
         $config = $emailModuleModel->getComposeParameters();
         $basicActionLink = array('linktype' => 'DETAILVIEWBASIC', 'linklabel' => '', 'linkurl' => $emailModuleModel->getComposeUrl($moduleName, $recordId, 'Detail', $config['popup']), 'linkicon' => 'glyphicon glyphicon-envelope', 'linktarget' => $config['target'], 'linkPopup' => $config['popup'], 'linkhint' => 'LBL_SEND_EMAIL');
         $linkModelList['DETAILVIEWBASIC'][] = Vtiger_Link_Model::getInstanceFromValues($basicActionLink);
     }
     //TODO: update the database so that these separate handlings are not required
     $index = 0;
     foreach ($linkModelList['DETAILVIEW'] as $link) {
         if ($link->linklabel == 'View History' || $link->linklabel == 'Send SMS') {
             unset($linkModelList['DETAILVIEW'][$index]);
         } else {
             if ($link->linklabel == 'LBL_SHOW_ACCOUNT_HIERARCHY') {
                 $link->linklabel = 'LBL_SHOW_ACCOUNT_HIERARCHY';
                 $linkURL = 'index.php?module=Accounts&view=AccountHierarchy&record=' . $recordId;
                 $link->linkurl = 'javascript:Accounts_Detail_Js.triggerAccountHierarchy("' . $linkURL . '");';
                 unset($linkModelList['DETAILVIEW'][$index]);
                 $linkModelList['DETAILVIEW'][$index] = $link;
             }
         }
         $index++;
     }
     $CalendarActionLinks[] = array();
     $CalendarModuleModel = Vtiger_Module_Model::getInstance('Calendar');
     if ($currentUserModel->hasModuleActionPermission($CalendarModuleModel->getId(), 'EditView')) {
         $CalendarActionLinks[] = array('linktype' => 'DETAILVIEW', 'linklabel' => 'LBL_ADD_EVENT', 'linkurl' => $recordModel->getCreateEventUrl(), 'linkicon' => 'glyphicon glyphicon-time');
         $CalendarActionLinks[] = array('linktype' => 'DETAILVIEW', 'linklabel' => 'LBL_ADD_TASK', 'linkurl' => $recordModel->getCreateTaskUrl(), 'linkicon' => 'glyphicon glyphicon-calendar');
     }
     $SMSNotifierModuleModel = Vtiger_Module_Model::getInstance('SMSNotifier');
     if (!empty($SMSNotifierModuleModel) && $currentUserModel->hasModulePermission($SMSNotifierModuleModel->getId())) {
         $basicActionLink = array('linktype' => 'DETAILVIEWBASIC', 'linklabel' => 'LBL_SEND_SMS', 'linkurl' => 'javascript:Vtiger_Detail_Js.triggerSendSms("index.php?module=' . $this->getModule()->getName() . '&view=MassActionAjax&mode=showSendSMSForm","SMSNotifier");', 'linkicon' => 'glyphicon glyphicon-comment', 'title' => vtranslate('LBL_SEND_SMS'));
         $linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues($basicActionLink);
     }
     foreach ($CalendarActionLinks as $basicLink) {
         $linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues($basicLink);
     }
     if (Users_Privileges_Model::isPermitted($moduleModel->getName(), 'ConvertLead', $recordModel->getId()) && Users_Privileges_Model::isPermitted($moduleModel->getName(), 'EditView', $recordModel->getId())) {
         $basicActionLink = array('linktype' => 'DETAILVIEWBASIC', 'linklabel' => '', 'linkclass' => 'btn-info btn-convertLead', 'linkhint' => vtranslate('LBL_CONVERT_LEAD', $moduleName), 'linkurl' => 'javascript:Leads_Detail_Js.convertLead("' . $recordModel->getConvertLeadUrl() . '",this);', 'linkicon' => 'glyphicon glyphicon-transfer', 'linkgrupclass' => !Leads_Module_Model::checkIfAllowedToConvert($recordModel->get('leadstatus')) ? 'hide' : '');
         $linkModelList['DETAILVIEWBASIC'][] = Vtiger_Link_Model::getInstanceFromValues($basicActionLink);
     }
     return $linkModelList;
 }
Exemplo n.º 3
0
 function checkPermission(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
     if (!$currentUserPriviligesModel->hasModuleActionPermission($moduleModel->getId(), 'ConvertLead')) {
         throw new AppException(vtranslate('LBL_PERMISSION_DENIED', $moduleName));
     }
     $recordId = $request->get('record');
     $recordModel = Vtiger_Record_Model::getInstanceById($recordId);
     if (!Leads_Module_Model::checkIfAllowedToConvert($recordModel->get('leadstatus'))) {
         throw new AppException(vtranslate('LBL_PERMISSION_DENIED', $moduleName));
     }
 }
Exemplo n.º 4
0
 function checkPermission(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
     $currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
     if (!$currentUserPriviligesModel->hasModuleActionPermission($moduleModel->getId(), 'ConvertLead')) {
         throw new NoPermittedException('LBL_PERMISSION_DENIED');
     }
     $recordPermission = Users_Privileges_Model::isPermitted($moduleName, 'Save', $recordId);
     if (!$recordPermission) {
         throw new NoPermittedToRecordException('LBL_NO_PERMISSIONS_FOR_THE_RECORD');
     }
     $recordId = $request->get('record');
     $recordModel = Vtiger_Record_Model::getInstanceById($recordId);
     if (!Leads_Module_Model::checkIfAllowedToConvert($recordModel->get('leadstatus'))) {
         throw new NoPermittedException('LBL_PERMISSION_DENIED');
     }
 }
Exemplo n.º 5
0
 /**
  * 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();
     global $log;
     $query = 'SELECT label, crmid, setype, createdtime FROM vtiger_crmentity WHERE label LIKE ? AND vtiger_crmentity.deleted = 0';
     $params = array("%{$searchKey}%");
     if ($module !== false) {
         $query .= ' AND setype = ?';
         $params[] = $module;
     }
     //$log->debug("busqueda global getSearchResult... ".$query);
     //Modified by jmangarret 19/05/2015
     if ($module == "RegistroDeVentas" || $module == "Boletos" || $module == "VentaDeProductos") {
         $query = $query . " UNION ALL " . 'select CONCAT(cf_1618, " ",registrodeventasname) as label, R2.registrodeventasid as crmid, "RegistroDeVentas" as setype, E.createdtime as createdtime ';
         $query = $query . 'from vtiger_registrodeventas as R1, vtiger_registrodeventascf as R2, vtiger_crmentity as E ';
         $query = $query . 'where R1.registrodeventasid=R2.registrodeventasid AND R2.registrodeventasid = E.crmid AND E.deleted = 0 ';
         $query = $query . 'AND (R2.cf_1618 like ? OR R2.cf_854 like ? OR R1.registrodeventasname like ?) ';
         $params = array_merge($params, array("%{$searchKey}%", "%{$searchKey}%", "%{$searchKey}%"));
         $query = $query . " UNION ALL " . 'select localizador as label, B.boletosid as crmid, "Boletos" as setype, E.createdtime as createdtime ';
         $query = $query . 'from vtiger_boletos AS B, vtiger_crmentity AS E ';
         $query = $query . 'where B.boletosid = E.crmid AND E.deleted = 0 AND (B.localizador like ? or B.boleto1 like ?)';
         $params = array_merge($params, array("%{$searchKey}%", "%{$searchKey}%"));
     }
     //$params = array_merge($params ,array("%$searchKey%","%$searchKey%"));
     //Remove the ordering for now to improve the speed
     //$query .= ' ORDER BY createdtime DESC';
     $result = $db->pquery($query, $params);
     $noOfRows = $db->num_rows($result);
     //die($query);
     $moduleModels = $matchingRecords = $leadIdsList = array();
     for ($i = 0; $i < $noOfRows; ++$i) {
         $row = $db->query_result_rowdata($result, $i);
         if ($row['setype'] === 'Leads') {
             $leadIdsList[] = $row['crmid'];
         }
     }
     $convertedInfo = Leads_Module_Model::getConvertedInfo($leadIdsList);
     for ($i = 0, $recordsCount = 0; $i < $noOfRows && $recordsCount < 100; ++$i) {
         $row = $db->query_result_rowdata($result, $i);
         if ($row['setype'] === 'Leads' && $convertedInfo[$row['crmid']]) {
             continue;
         }
         if (Users_Privileges_Model::isPermitted($row['setype'], 'DetailView', $row['crmid'])) {
             $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);
             $recordsCount++;
         }
     }
     return $matchingRecords;
 }
Exemplo n.º 6
0
 /**
  * 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)
 {
     global $max_number_search_result;
     $db = PearDatabase::getInstance();
     $query = 'SELECT label, searchlabel, crmid, setype, createdtime FROM vtiger_crmentity crm INNER JOIN vtiger_entityname e ON crm.setype = e.modulename WHERE searchlabel LIKE ? AND turn_off = ? AND crm.deleted = 0';
     $params = array("%{$searchKey}%", 1);
     if ($module !== false) {
         $query .= ' AND setype = ?';
         $params[] = $module;
     }
     $query .= ' ORDER BY sequence ASC, createdtime DESC';
     $result = $db->pquery($query, $params);
     $noOfRows = $db->num_rows($result);
     $moduleModels = $matchingRecords = $leadIdsList = array();
     for ($i = 0; $i < $noOfRows; ++$i) {
         $row = $db->query_result_rowdata($result, $i);
         if ($row['setype'] === 'Leads') {
             $leadIdsList[] = $row['crmid'];
         }
     }
     $convertedInfo = Leads_Module_Model::getConvertedInfo($leadIdsList);
     for ($i = 0, $recordsCount = 0; $i < $noOfRows && $recordsCount < $max_number_search_result; ++$i) {
         $row = $db->query_result_rowdata($result, $i);
         if ($row['setype'] === 'Leads' && $convertedInfo[$row['crmid']]) {
             continue;
         }
         if (Users_Privileges_Model::isPermitted($row['setype'], 'DetailView', $row['crmid'])) {
             $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);
             $recordsCount++;
         }
     }
     return $matchingRecords;
 }
Exemplo n.º 7
0
 function preProcess(Vtiger_Request $request)
 {
     $viewer = $this->getViewer($request);
     $viewer->assign('CONVERSION_AVAILABLE_STATUS', Zend_Json::encode(Leads_Module_Model::getConversionAvaibleStatuses()));
     parent::preProcess($request);
 }
Exemplo n.º 8
0
 /**
  * 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, $limit = false)
 {
     $db = PearDatabase::getInstance();
     $params = ["%{$searchKey}%"];
     $sortColumns = $join = $where = '';
     if ($module !== false) {
         $where .= ' AND vtiger_crmentity.setype = ?';
         $params[] = $module;
     } else {
         $join = 'INNER JOIN vtiger_entityname ON vtiger_crmentity.setype = vtiger_entityname.modulename';
         $where .= ' AND vtiger_entityname.turn_off = ?';
         $sortColumns .= 'vtiger_entityname.sequence ASC,';
         $params[] = 1;
     }
     if (PerformancePrefs::getBoolean('SORT_SEARCH_RESULTS')) {
         $sortColumns .= 'vtiger_crmentity.label ASC,';
     }
     $query = 'SELECT label, searchlabel, crmid, setype, createdtime, smownerid FROM vtiger_crmentity ' . $join . ' WHERE vtiger_crmentity.searchlabel LIKE ? AND vtiger_crmentity.deleted = 0' . $where;
     if (!empty($sortColumns)) {
         $query .= ' ORDER BY ' . $sortColumns;
         $query = rtrim($query, ',');
     }
     $result = $db->pquery($query, $params);
     $noOfRows = $db->num_rows($result);
     $moduleModels = $matchingRecords = $leadIdsList = array();
     for ($i = 0; $i < $noOfRows; ++$i) {
         $row = $db->query_result_rowdata($result, $i);
         if ($row['setype'] === 'Leads') {
             $leadIdsList[] = $row['crmid'];
         }
     }
     $convertedInfo = Leads_Module_Model::getConvertedInfo($leadIdsList);
     $user = Users_Record_Model::getCurrentUserModel();
     $roleInstance = Settings_Roles_Record_Model::getInstanceById($user->get('roleid'));
     $searchunpriv = $roleInstance->get('searchunpriv');
     for ($i = 0, $recordsCount = 0; $i < $noOfRows && $recordsCount < vglobal('max_number_search_result'); ++$i) {
         $row = $db->query_result_rowdata($result, $i);
         if ($row['setype'] === 'Leads' && $convertedInfo[$row['crmid']]) {
             continue;
         }
         $recordPermitted = $permitted = Users_Privileges_Model::isPermitted($row['setype'], 'DetailView', $row['crmid']);
         if (!empty($searchunpriv)) {
             if (in_array($row['setype'], explode(',', $searchunpriv))) {
                 $recordPermitted = true;
             }
         }
         if ($recordPermitted) {
             $row['id'] = $row['crmid'];
             $row['permitted'] = $permitted;
             $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);
             $recordsCount++;
         }
         if ($limit && $limit == $recordsCount) {
             return $matchingRecords;
         }
     }
     return $matchingRecords;
 }
Exemplo n.º 9
0
    /**
     * 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();
        $query = 'SELECT label, searchlabel, crmid, setype, createdtime FROM vtiger_crmentity WHERE searchlabel LIKE ? AND vtiger_crmentity.deleted = 0';
        $params = array("%{$searchKey}%");
        if ($module !== false) {
            $query .= ' AND setype = ?';
            if ($module == 'Products') {
                $query = 'SELECT label,searchlabel, crmid, setype, createdtime FROM vtiger_crmentity INNER JOIN vtiger_products ON 
							vtiger_products.productid = vtiger_crmentity.crmid WHERE searchlabel LIKE ? AND vtiger_crmentity.deleted = 0 
							AND vtiger_products.discontinued = 1 AND setype = ?';
            } else {
                if ($module == 'Services') {
                    $query = 'SELECT label,searchlabel, crmid, setype, createdtime FROM vtiger_crmentity INNER JOIN vtiger_service ON 
							vtiger_service.serviceid = vtiger_crmentity.crmid WHERE searchlabel LIKE ? AND vtiger_crmentity.deleted = 0 
							AND vtiger_service.discontinued = 1 AND setype = ?';
                }
            }
            $params[] = $module;
        }
        //Remove the ordering for now to improve the speed
        //$query .= ' ORDER BY createdtime DESC';
        $result = $db->pquery($query, $params);
        $noOfRows = $db->num_rows($result);
        $moduleModels = $matchingRecords = $leadIdsList = array();
        for ($i = 0; $i < $noOfRows; ++$i) {
            $row = $db->query_result_rowdata($result, $i);
            if ($row['setype'] === 'Leads') {
                $leadIdsList[] = $row['crmid'];
            }
        }
        $convertedInfo = Leads_Module_Model::getConvertedInfo($leadIdsList);
        for ($i = 0, $recordsCount = 0; $i < $noOfRows && $recordsCount < 100; ++$i) {
            $row = $db->query_result_rowdata($result, $i);
            if ($row['setype'] === 'Leads' && $convertedInfo[$row['crmid']]) {
                continue;
            }
            if (Users_Privileges_Model::isPermitted($row['setype'], 'DetailView', $row['crmid'])) {
                $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);
                $recordsCount++;
            }
        }
        return $matchingRecords;
    }