Esempio n. 1
0
 public function process(Vtiger_Request $request)
 {
     $recordId = $request->get('record');
     $modules = $request->get('modules');
     $assignId = $request->get('assigned_user_id');
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $entityValues = array();
     $entityValues['transferRelatedRecordsTo'] = $request->get('transferModule');
     $entityValues['assignedTo'] = vtws_getWebserviceEntityId(vtws_getOwnerType($assignId), $assignId);
     $entityValues['leadId'] = vtws_getWebserviceEntityId($request->getModule(), $recordId);
     $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $request->getModule());
     $convertLeadFields = $recordModel->getConvertLeadFields();
     $availableModules = array('Accounts', 'Contacts', 'Potentials');
     foreach ($availableModules as $module) {
         if (vtlib_isModuleActive($module) && in_array($module, $modules)) {
             $entityValues['entities'][$module]['create'] = true;
             $entityValues['entities'][$module]['name'] = $module;
             $entityValues['entities'][$module]['create_always'] = Vtiger_Processes_Model::getConfig('marketing', 'conversion', 'create_always');
             foreach ($convertLeadFields[$module] as $fieldModel) {
                 $fieldName = $fieldModel->getName();
                 $fieldValue = $request->get($fieldName);
                 //Potential Amount Field value converting into DB format
                 if ($fieldModel->getFieldDataType() === 'currency') {
                     $fieldValue = Vtiger_Currency_UIType::convertToDBFormat($fieldValue);
                 } elseif ($fieldModel->getFieldDataType() === 'date') {
                     $fieldValue = DateTimeField::convertToDBFormat($fieldValue);
                 } elseif ($fieldModel->getFieldDataType() === 'reference' && $fieldValue) {
                     $ids = vtws_getIdComponents($fieldValue);
                     if (count($ids) === 1) {
                         $fieldValue = vtws_getWebserviceEntityId(getSalesEntityType($fieldValue), $fieldValue);
                     }
                 }
                 $entityValues['entities'][$module][$fieldName] = $fieldValue;
             }
         }
     }
     try {
         $result = vtws_convertlead($entityValues, $currentUser);
     } catch (Exception $e) {
         $this->showError($request, $e);
         exit;
     }
     if (!empty($result['Accounts'])) {
         $accountIdComponents = vtws_getIdComponents($result['Accounts']);
         $accountId = $accountIdComponents[1];
     }
     if (!empty($result['Contacts'])) {
         $contactIdComponents = vtws_getIdComponents($result['Contacts']);
         $contactId = $contactIdComponents[1];
     }
     if (!empty($accountId)) {
         ModTracker_Record_Model::addConvertToAccountRelation('Accounts', $accountId, $assignId);
         header("Location: index.php?view=Detail&module=Accounts&record={$accountId}");
     } elseif (!empty($contactId)) {
         header("Location: index.php?view=Detail&module=Contacts&record={$contactId}");
     } else {
         $this->showError($request);
         exit;
     }
 }
Esempio n. 2
0
    /**
     * Function returns comments and recent activities across CRM
     * @param <Vtiger_Paging_Model> $pagingModel
     * @param <String> $type - comments, updates or all
     * @return <Array>
     */
    public function getHistory($pagingModel, $type = false)
    {
        if (empty($type)) {
            $type = 'all';
        }
        //TODO: need to handle security
        $comments = array();
        if ($type == 'all' || $type == 'comments') {
            $comments = $this->getComments($pagingModel);
            if ($type == 'comments') {
                return $comments;
            }
        }
        $db = PearDatabase::getInstance();
        //As getComments api is used to get comment infomation,no need of getting
        //comment information again,so avoiding from modtracker
        $result = $db->pquery('SELECT vtiger_modtracker_basic.*
								FROM vtiger_modtracker_basic
								INNER JOIN vtiger_crmentity ON vtiger_modtracker_basic.crmid = vtiger_crmentity.crmid
									AND deleted = 0 AND module != "ModComments"
								ORDER BY vtiger_modtracker_basic.id DESC LIMIT ?, ?', array($pagingModel->getStartIndex(), $pagingModel->getPageLimit()));
        $activites = array();
        for ($i = 0; $i < $db->num_rows($result); $i++) {
            $row = $db->query_result_rowdata($result, $i);
            $moduleName = $row['module'];
            $recordId = $row['crmid'];
            if (Users_Privileges_Model::isPermitted($moduleName, 'DetailView', $recordId)) {
                $modTrackerRecorModel = new ModTracker_Record_Model();
                $modTrackerRecorModel->setData($row)->setParent($recordId, $moduleName);
                $time = $modTrackerRecorModel->get('changedon');
                $activites[$time] = $modTrackerRecorModel;
            }
        }
        $history = array_merge($activites, $comments);
        foreach ($history as $time => $model) {
            $dateTime[] = $time;
        }
        if (!empty($history)) {
            array_multisort($dateTime, SORT_DESC, SORT_STRING, $history);
            return $history;
        }
        return false;
    }
Esempio n. 3
0
 public function process(Vtiger_Request $request)
 {
     $parentRecordId = $request->get('parent_id');
     $pageNumber = $request->get('page');
     $limit = $request->get('limit');
     $moduleName = $request->getModule();
     if (empty($pageNumber)) {
         $pageNumber = 1;
     }
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $pageNumber);
     if (!empty($limit)) {
         $pagingModel->set('limit', $limit);
     }
     $recentActivities = ModTracker_Record_Model::getRecentActivities($parentRecordId, $pagingModel);
     $pagingModel->calculatePageRange($recentActivities);
     $viewer = $this->getViewer($request);
     $viewer->assign('RECENT_ACTIVITIES', $recentActivities);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('PAGING_MODEL', $pagingModel);
     echo $viewer->view('RecentActivities.tpl', $moduleName, 'true');
 }
Esempio n. 4
0
 /**
  * Function returns recent changes made on the record
  * @param Vtiger_Request $request
  */
 function showRecentActivities(Vtiger_Request $request)
 {
     $parentRecordId = $request->get('record');
     $pageNumber = $request->get('page');
     $limit = $request->get('limit');
     $moduleName = $request->getModule();
     if (empty($pageNumber)) {
         $pageNumber = 1;
     }
     $pagingModel = new Vtiger_Paging_Model();
     $pagingModel->set('page', $pageNumber);
     if (!empty($limit)) {
         $pagingModel->set('limit', $limit);
     }
     $recentActivities = ModTracker_Record_Model::getUpdates($parentRecordId, $pagingModel);
     $pagingModel->calculatePageRange($recentActivities);
     if ($pagingModel->getCurrentPage() == ModTracker_Record_Model::getTotalRecordCount($parentRecordId) / $pagingModel->getPageLimit()) {
         $pagingModel->set('nextPageExists', false);
     }
     $viewer = $this->getViewer($request);
     $viewer->assign('RECENT_ACTIVITIES', $recentActivities);
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('PAGING_MODEL', $pagingModel);
     echo $viewer->view('RecentActivities.tpl', $moduleName, 'true');
 }
Esempio n. 5
0
    /**
     * Function returns comments and recent activities across CRM
     * @param <Vtiger_Paging_Model> $pagingModel
     * @param <String> $type - comments, updates or all
     * @return <Array>
     */
    public function getHistory($pagingModel, $type = false)
    {
        if (empty($type)) {
            $type = 'all';
        }
        //TODO: need to handle security
        $comments = array();
        if ($type == 'comments') {
            $modCommentsModel = Vtiger_Module_Model::getInstance('ModComments');
            if ($modCommentsModel->isPermitted('DetailView')) {
                $comments = $this->getComments($pagingModel);
            }
            if ($type == 'comments') {
                return $comments;
            }
        } else {
            if ($type == 'updates' || $type == 'all') {
                $db = PearDatabase::getInstance();
                $queryforActivity = $this->getActivityQuery($type);
                $result = $db->pquery('SELECT vtiger_modtracker_basic.*
					FROM vtiger_modtracker_basic
					INNER JOIN vtiger_crmentity ON vtiger_modtracker_basic.crmid = vtiger_crmentity.crmid
					AND deleted = 0 ' . $queryforActivity . '
					ORDER BY vtiger_modtracker_basic.id DESC LIMIT ?, ?', array($pagingModel->getStartIndex(), $pagingModel->getPageLimit()));
                $history = array();
                for ($i = 0; $i < $db->num_rows($result); $i++) {
                    $row = $db->query_result_rowdata($result, $i);
                    $moduleName = $row['module'];
                    $recordId = $row['crmid'];
                    if (Users_Privileges_Model::isPermitted($moduleName, 'DetailView', $recordId)) {
                        $modTrackerRecorModel = new ModTracker_Record_Model();
                        $modTrackerRecorModel->setData($row)->setParent($recordId, $moduleName);
                        $time = $modTrackerRecorModel->get('changedon');
                        $history[$time] = $modTrackerRecorModel;
                    }
                }
                return $history;
            }
        }
        return false;
    }
Esempio n. 6
0
 public function process(Vtiger_Request $request)
 {
     $recordId = $request->get('record');
     $modules = $request->get('modules');
     $assignId = $request->get('assigned_user_id');
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $entityValues = array();
     $entityValues['transferRelatedRecordsTo'] = $request->get('transferModule');
     $entityValues['assignedTo'] = vtws_getWebserviceEntityId(vtws_getOwnerType($assignId), $assignId);
     $entityValues['leadId'] = vtws_getWebserviceEntityId($request->getModule(), $recordId);
     $createAlways = Vtiger_Processes_Model::getConfig('marketing', 'conversion', 'create_always');
     $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $request->getModule());
     $convertLeadFields = $recordModel->getConvertLeadFields();
     $availableModules = array('Accounts', 'Contacts', 'Potentials');
     foreach ($availableModules as $module) {
         if (vtlib_isModuleActive($module) && in_array($module, $modules)) {
             $entityValues['entities'][$module]['create'] = true;
             $entityValues['entities'][$module]['name'] = $module;
             foreach ($convertLeadFields[$module] as $fieldModel) {
                 $fieldName = $fieldModel->getName();
                 $fieldValue = $request->get($fieldName);
                 //Potential Amount Field value converting into DB format
                 if ($fieldModel->getFieldDataType() === 'currency') {
                     $fieldValue = Vtiger_Currency_UIType::convertToDBFormat($fieldValue);
                 } elseif ($fieldModel->getFieldDataType() === 'date') {
                     $fieldValue = DateTimeField::convertToDBFormat($fieldValue);
                 } elseif ($fieldModel->getFieldDataType() === 'reference' && $fieldValue) {
                     $ids = vtws_getIdComponents($fieldValue);
                     if (count($ids) === 1) {
                         $fieldValue = vtws_getWebserviceEntityId(getSalesEntityType($fieldValue), $fieldValue);
                     }
                 }
                 $entityValues['entities'][$module][$fieldName] = $fieldValue;
             }
         }
     }
     try {
         $results = true;
         if ($createAlways === true || $createAlways === 'true') {
             $leadModel = Vtiger_Module_Model::getCleanInstance($request->getModule());
             $results = $leadModel->searchAccountsToConvert($recordModel);
             $entityValues['entities']['Accounts']['convert_to_id'] = $results;
         }
         if (!$results) {
             $message = vtranslate('LBL_TOO_MANY_ACCOUNTS_TO_CONVERT', $request->getModule(), '');
             if ($currentUser->isAdminUser()) {
                 $message = vtranslate('LBL_TOO_MANY_ACCOUNTS_TO_CONVERT', $request->getModule(), '<a href="index.php?module=MarketingProcesses&view=Index&parent=Settings"><span class="glyphicon glyphicon-folder-open"></span></a>');
             }
             $this->showError($request, '', $message);
             exit;
         }
     } catch (Exception $e) {
         $this->showError($request, $e);
         exit;
     }
     try {
         $result = vtws_convertlead($entityValues, $currentUser);
     } catch (Exception $e) {
         $this->showError($request, $e);
         exit;
     }
     if (!empty($result['Accounts'])) {
         $accountIdComponents = vtws_getIdComponents($result['Accounts']);
         $accountId = $accountIdComponents[1];
     }
     if (!empty($result['Contacts'])) {
         $contactIdComponents = vtws_getIdComponents($result['Contacts']);
         $contactId = $contactIdComponents[1];
     }
     if (!empty($accountId)) {
         ModTracker_Record_Model::addConvertToAccountRelation('Accounts', $accountId, $assignId);
         header("Location: index.php?view=Detail&module=Accounts&record={$accountId}");
     } elseif (!empty($contactId)) {
         header("Location: index.php?view=Detail&module=Contacts&record={$contactId}");
     } else {
         $this->showError($request);
         exit;
     }
 }
Esempio n. 7
0
    /**
     * Function returns comments and recent activities across module
     * @param <Vtiger_Paging_Model> $pagingModel
     * @param <String> $type - comments, updates or all
     * @return <Array>
     */
    public function getHistory($pagingModel, $type = false)
    {
        global $log;
        $log->debug("Entering ./models/Module.php::getHistory");
        if (empty($type)) {
            $type = 'all';
        }
        //TODO: need to handle security
        $comments = array();
        if ($type == 'all' || $type == 'comments') {
            $modCommentsModel = Vtiger_Module_Model::getInstance('ModComments');
            if ($modCommentsModel->isPermitted('DetailView')) {
                $comments = $this->getComments($pagingModel);
            }
            if ($type == 'comments') {
                return $comments;
            }
        }
        $db = PearDatabase::getInstance();
        $result = $db->pquery('SELECT vtiger_modtracker_basic.*
								FROM vtiger_modtracker_basic
								INNER JOIN vtiger_crmentity ON vtiger_modtracker_basic.crmid = vtiger_crmentity.crmid
									AND deleted = 0 AND module = ?
								ORDER BY vtiger_modtracker_basic.id DESC LIMIT ?, ?', array($this->getName(), $pagingModel->getStartIndex(), $pagingModel->getPageLimit()));
        $activites = array();
        for ($i = 0; $i < $db->num_rows($result); $i++) {
            $row = $db->query_result_rowdata($result, $i);
            if (Users_Privileges_Model::isPermitted($row['module'], 'DetailView', $row['crmid'])) {
                $modTrackerRecorModel = new ModTracker_Record_Model();
                $modTrackerRecorModel->setData($row)->setParent($row['crmid'], $row['module']);
                $time = $modTrackerRecorModel->get('changedon');
                $activites[$time] = $modTrackerRecorModel;
            }
        }
        $history = array_merge($activites, $comments);
        $dateTime = array();
        foreach ($history as $time => $model) {
            $dateTime[] = $time;
        }
        if (!empty($history)) {
            array_multisort($dateTime, SORT_DESC, SORT_STRING, $history);
            return $history;
        }
        $log->debug("Exiting ./models/Module.php::getHistory");
        return false;
    }
Esempio n. 8
0
    /**
     * Function returns comments and recent activities across module
     * @param <Vtiger_Paging_Model> $pagingModel
     * @param <String> $type - comments, updates or all
     * @return <Array>
     */
    public function getHistory($pagingModel, $type = false)
    {
        if (empty($type)) {
            $type = 'all';
        }
        //TODO: need to handle security
        $comments = array();
        if ($type == 'all' || $type == 'comments') {
            $comments = $this->getComments($pagingModel);
            if ($type == 'comments') {
                return $comments;
            }
        }
        $nonAdminAccessQuery = Users_Privileges_Model::getNonAdminAccessControlQuery('ModComments');
        $db = PearDatabase::getInstance();
        $result = $db->pquery('SELECT vtiger_modtracker_basic.*
								FROM vtiger_modtracker_basic
								INNER JOIN vtiger_crmentity ON vtiger_modtracker_basic.crmid = vtiger_crmentity.crmid
									AND deleted = 0 AND module = ?
                                INNER JOIN vtiger_crmentity crmentity2 ON vtiger_modcomments.related_to = crmentity2.crmid
                                    AND crmentity2.deleted = 0
                                INNER JOIN vtiger_crmentity crmentity3 ON vtiger_modcomments.customer = crmentity3.crmid 
                                    AND crmentity3.deleted = 0
                                ' . $nonAdminAccessQuery . '
								ORDER BY vtiger_modtracker_basic.id DESC LIMIT ?, ?', array($this->getName(), $pagingModel->getStartIndex(), $pagingModel->getPageLimit()));
        $activites = array();
        for ($i = 0; $i < $db->num_rows($result); $i++) {
            $row = $db->query_result_rowdata($result, $i);
            if (Users_Privileges_Model::isPermitted($row['module'], 'DetailView', $row['crmid'])) {
                $modTrackerRecorModel = new ModTracker_Record_Model();
                $modTrackerRecorModel->setData($row)->setParent($row['crmid'], $row['module']);
                $time = $modTrackerRecorModel->get('changedon');
                $activites[$time] = $modTrackerRecorModel;
            }
        }
        $history = array_merge($activites, $comments);
        $dateTime = array();
        foreach ($history as $time => $model) {
            $dateTime[] = $time;
        }
        if (!empty($history)) {
            array_multisort($dateTime, SORT_DESC, SORT_STRING, $history);
            return $history;
        }
        return false;
    }