コード例 #1
0
 function process(Mobile_API_Request $request)
 {
     global $current_user, $adb, $currentModule;
     $current_user = $this->getActiveUser();
     $response = new Mobile_API_Response();
     $record = $request->get('record');
     $relatedmodule = $request->get('relatedmodule');
     $currentPage = $request->get('page', 0);
     // Input validation
     if (empty($record)) {
         $response->setError(1001, 'Record id is empty');
         return $response;
     }
     $recordid = vtws_getIdComponents($record);
     $recordid = $recordid[1];
     $module = Mobile_WS_Utils::detectModulenameFromRecordId($record);
     // Initialize global variable
     $currentModule = $module;
     $functionHandler = Mobile_WS_Utils::getRelatedFunctionHandler($module, $relatedmodule);
     if ($functionHandler) {
         $sourceFocus = CRMEntity::getInstance($module);
         $relationResult = call_user_func_array(array($sourceFocus, $functionHandler), array($recordid, getTabid($module), getTabid($relatedmodule)));
         $query = $relationResult['query'];
         $querySEtype = "vtiger_crmentity.setype as setype";
         if ($relatedmodule == 'Calendar') {
             $querySEtype = "vtiger_activity.activitytype as setype";
         }
         $query = sprintf("SELECT vtiger_crmentity.crmid, {$querySEtype} %s", substr($query, stripos($query, 'FROM')));
         $queryResult = $adb->query($query);
         // Gather resolved record id's
         $relatedRecords = array();
         while ($row = $adb->fetch_array($queryResult)) {
             $targetSEtype = $row['setype'];
             if ($relatedmodule == 'Calendar') {
                 if ($row['setype'] != 'Task' && $row['setype'] != 'Emails') {
                     $targetSEtype = 'Events';
                 } else {
                     $targetSEtype = $relatedmodule;
                 }
             }
             $relatedRecords[] = sprintf("%sx%s", Mobile_WS_Utils::getEntityModuleWSId($targetSEtype), $row['crmid']);
         }
         // Perform query to get record information with grouping
         $wsquery = sprintf("SELECT * FROM %s WHERE id IN ('%s');", $relatedmodule, implode("','", $relatedRecords));
         $newRequest = new Mobile_API_Request();
         $newRequest->set('module', $relatedmodule);
         $newRequest->set('query', $wsquery);
         $newRequest->set('page', $currentPage);
         $response = parent::process($newRequest);
     }
     return $response;
 }
コード例 #2
0
 function process(Mobile_API_Request $request)
 {
     global $current_user, $adb, $currentModule;
     $current_user = $this->getActiveUser();
     $response = new Mobile_API_Response();
     $record = $request->get('record');
     $currentPage = $request->get('page', 0);
     // Input validation
     if (empty($record)) {
         $response->setError(1001, 'Record id is empty');
         return $response;
     }
     $recordid = vtws_getIdComponents($record);
     $recordid = $recordid[1];
     $module = Mobile_WS_Utils::detectModulenameFromRecordId($record);
     // Initialize global variable
     $currentModule = $module;
     //related module currently supported
     $relatedmodule = array('Contacts', 'Potentials', 'HelpDesk');
     $activemodule = $this->sessionGet('_MODULES');
     foreach ($activemodule as $amodule) {
         if (in_array($amodule->name(), $relatedmodule)) {
             $active_related_module[] = $amodule->name();
         }
     }
     foreach ($active_related_module as $relmod) {
         $functionHandler = Mobile_WS_Utils::getRelatedFunctionHandler($module, $relmod);
         $fieldmodel = new Mobile_UI_FieldModel();
         if ($functionHandler) {
             $sourceFocus = CRMEntity::getInstance($module);
             $relationResult = call_user_func_array(array($sourceFocus, $functionHandler), array($recordid, getTabid($module), getTabid($relmod)));
             $relatedRecords[$relmod] = array_keys($relationResult['entries']);
             $response->setResult($relatedRecords);
         } else {
             $response->setError(1018, 'Function Handler for module ' . $module . ' for related Module ' . $relmod . '  not found.');
         }
     }
     return $response;
 }