ActiveSync - add Json FE remoteResetDevices
[tine20] / tine20 / ActiveSync / Frontend / Json.php
1 <?php
2 /**
3  * Tine 2.0
4  *
5  * @package     ActiveSync
6  * @subpackage  Frontend
7  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
8  * @author      Lars Kneschke <l.kneschke@metaways.de>
9  * @copyright   Copyright (c) 2009-2017 Metaways Infosystems GmbH (http://www.metaways.de)
10  *
11  */
12
13 /**
14  * backend class for Zend_Json_Server
15  *
16  * This class handles all Json requests for the ActiveSync application
17  *
18  * @package     ActiveSync
19  * @subpackage  Frontend
20  */
21 class ActiveSync_Frontend_Json extends Tinebase_Frontend_Json_Abstract
22 {
23     protected $_applicationName = 'ActiveSync';
24     
25     /**
26      * Set sync filter
27      * 
28      * @param  string $deviceId
29      * @param  string $class one of {Calendar, Contacts, Email, Tasks}
30      * @param  string $filterId
31      * @return array device data
32      */
33     public function setDeviceContentFilter($deviceId, $class, $filterId)
34     {
35         $device = ActiveSync_Controller_Device::getInstance()->setDeviceContentFilter($deviceId, $class, $filterId);
36         
37         return $device->toArray();
38     }
39     
40     /**
41      * Returns registry data of the application.
42      *
43      * Each application has its own registry to supply static data to the client.
44      * Registry data is queried only once per session from the client.
45      *
46      * This registry must not be used for rights or ACL purposes. Use the generic
47      * rights and ACL mechanisms instead!
48      */
49     public function getRegistryData()
50     {
51         
52         $deviceBackend = new ActiveSync_Backend_Device();
53         $userDevices = $deviceBackend->search(new ActiveSync_Model_DeviceFilter(array(
54             array('field' => 'owner_id', 'operator' => 'equals', 'value' => Tinebase_Core::getUser()->getId())
55         )));
56         
57         return array(
58             'userDevices' => $userDevices->toArray()
59         );
60     }
61     
62     /****************************** SyncDevices ******************************/
63     
64     /**
65      * Search for records matching given arguments
66      *
67      * @param array $filter
68      * @param array $paging
69      * @return array
70      */
71     public function searchSyncDevices($filter, $paging)
72     {
73         $result = $this->_search($filter, $paging, ActiveSync_Controller_SyncDevices::getInstance(), 'ActiveSync_Model_DeviceFilter');
74     
75         return $result;
76     }
77     
78     /**
79      * Return a single record
80      *
81      * @param   string $id
82      * @return  array record data
83      */
84     public function getSyncDevice($id)
85     {
86         return $this->_get($id, ActiveSync_Controller_SyncDevices::getInstance());
87     }
88     
89     /**
90      * creates/updates a record
91      *
92      * @param  array $recordData
93      * @return array created/updated record
94      */
95     public function saveSyncDevice($recordData)
96     {
97         if (empty($recordData['id'])) {
98             throw new Tinebase_Exception_AccessDenied('you are not allowed to create a sync device');
99         }
100         return $this->_save($recordData, ActiveSync_Controller_SyncDevices::getInstance(), 'ActiveSync_Model_Device', 'id');
101     }
102     
103     /**
104      * deletes existing records
105      *
106      * @param  array  $ids
107      * @return string
108      */
109     public function deleteSyncDevices($ids)
110     {
111         return $this->_delete($ids, ActiveSync_Controller_SyncDevices::getInstance());
112     }
113
114     /**
115      * @param array $ids
116      * @return array
117      */
118     public function remoteResetDevices($ids)
119     {
120         ActiveSync_Controller_SyncDevices::getInstance()->remoteResetDevices($ids);
121
122         return array('success' => true);
123     }
124 }