PATH:
home
/
letacommog
/
crmleta
/
modules
/
Mobile
/
api
/
ws
<?php /*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License * The Original Code is: vtiger CRM Open Source * The Initial Developer of the Original Code is vtiger. * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************/ include_once 'include/Webservices/Query.php'; include_once dirname(__FILE__) . '/FetchRecordWithGrouping.php'; include_once dirname(__FILE__) . '/models/Alert.php'; class Mobile_WS_FetchRecordsWithGrouping extends Mobile_WS_FetchRecordWithGrouping { function process(Mobile_API_Request $request) { $response = new Mobile_API_Response(); $current_user = $this->getActiveUser(); $module = $request->get('module'); $moduleWSID = Mobile_WS_Utils::getEntityModuleWSId($module); if (empty($module)) { $response->setError(1501, "Module not specified."); return $response; } $records = array(); // Fetch the request parameters $idlist = $request->get('ids'); $alertid = $request->get('alertid'); // List of ids specified? if (!empty($idlist)) { $idlist = Zend_Json::decode($idlist); $records = $this->fetchRecordsWithId($module, $idlist, $current_user); } // Alert id specified? else if (!empty($alertid)) { $alert = Mobile_WS_AlertModel::modelWithId($alertid); if ($alert === false) { $response->setError(1404, "Alert not found."); $records = false; } $alert->setUser($current_user); $records = $this->fetchAlertRecords($module, $alert); } if ($records !== false) { $response->setResult(array('records' => $records)); } return $response; } function fetchRecordsWithId($module, $idlist, $user) { if (empty($idlist)) return array(); $wsresult = vtws_query(sprintf("SELECT * FROM {$module} WHERE id IN ('%s');", implode("','", $idlist)), $user); if (!empty($wsresult)) { $resolvedRecords = array(); foreach($wsresult as $record) { $this->resolveRecordValues($record, $user); $resolvedRecords[] = $this->transformRecordWithGrouping($record, $module, false); } } return $resolvedRecords; } function fetchAlertRecords($module, $alert) { global $adb; // Initialize global variable: ($alert->query() could indirectly depend if its using Module API as its base) global $current_user; if (!isset($current_user)) $current_user = $alert->getUser(); $moduleWSID = Mobile_WS_Utils::getEntityModuleWSId($module); $alertResult = $adb->pquery($alert->query(), $alert->queryParameters()); $alertRecords = array(); // For Calendar module there is a need for merging Todo's if ($module == 'Calendar') { $eventsWSID = Mobile_WS_Utils::getEntityModuleWSId('Events'); $eventIds = array(); $taskIds = array(); while($resultrow = $adb->fetch_array($alertResult)) { if (isset($resultrow['activitytype']) && $resultrow['activitytype'] == 'Task') { $taskIds[] = "{$moduleWSID}x". $resultrow['crmid']; } else { $eventIds[] = "{$eventsWSID}x". $resultrow['crmid']; } } $alertRecords = $this->fetchRecordsWithId($module, $taskIds, $alert->getUser()); if (!empty($eventIds)) { $alertRecords = array_merge($alertRecords, $this->fetchRecordsWithId('Events', $eventIds, $alert->getUser())); } } else { $fetchIds = array(); while($resultrow = $adb->fetch_array($alertResult)) { $fetchIds[] = "{$moduleWSID}x" . $resultrow['crmid']; } $alertRecords = $this->fetchRecordsWithId($module, $fetchIds, $alert->getUser()); } return $alertRecords; } }
[+]
..
[-] Login.php
[edit]
[-] FetchModules.php
[edit]
[-] TaxByType.php
[edit]
[-] Describe.php
[edit]
[-] FetchReferenceRecords.php
[edit]
[+]
models
[-] Query.php
[edit]
[-] SaveRecord.php
[edit]
[-] FetchModuleFilters.php
[edit]
[-] Logout.php
[edit]
[-] Controller.php
[edit]
[-] FetchModuleOwners.php
[edit]
[-] History.php
[edit]
[-] AddRecordComment.php
[edit]
[-] ListModuleRecords.php
[edit]
[-] UserInfo.php
[edit]
[-] FetchAllAlerts.php
[edit]
[-] RelatedRecordsWithGrouping.php
[edit]
[-] FetchRecordWithGrouping.php
[edit]
[-] FetchRecordsWithGrouping.php
[edit]
[-] FilterDetailsWithCount.php
[edit]
[-] LoginAndFetchModules.php
[edit]
[-] SyncModuleRecords.php
[edit]
[-] DeleteRecords.php
[edit]
[-] FetchRecord.php
[edit]
[-] Utils.php
[edit]
[-] AlertDetailsWithMessage.php
[edit]
[-] QueryWithGrouping.php
[edit]