Commit ea60b86c authored by Sebastian Kummer's avatar Sebastian Kummer

ZP-556 Added read-only flag to

- WebserviceDevice->AdditionalFolderAdd(),
- ZPushAdmin->AdditionalFolderAdd(),
- ASDevice->AddAdditionalFolder(),
- DeviceManager->GetAdditionalUserSyncFolders().

Released under the Affero GNU General Public License (AGPL) version 3.
parent e39de317
...@@ -827,11 +827,12 @@ class ASDevice extends StateObject { ...@@ -827,11 +827,12 @@ class ASDevice extends StateObject {
* @param string $folderid the folder id of the additional folder. * @param string $folderid the folder id of the additional folder.
* @param string $name the name of the additional folder (has to be unique for all folders on the device). * @param string $name the name of the additional folder (has to be unique for all folders on the device).
* @param string $type AS foldertype of SYNC_FOLDER_TYPE_USER_* * @param string $type AS foldertype of SYNC_FOLDER_TYPE_USER_*
* @param boolean $readonly Indicates if the folder should be synched if the user has at least read-only permissions.
* *
* @access public * @access public
* @return boolean * @return boolean
*/ */
public function AddAdditionalFolder($store, $folderid, $name, $type) { public function AddAdditionalFolder($store, $folderid, $name, $type, $readonly) {
// check if type is of a additional user type // check if type is of a additional user type
if (!in_array($type, array(SYNC_FOLDER_TYPE_USER_CONTACT, SYNC_FOLDER_TYPE_USER_APPOINTMENT, SYNC_FOLDER_TYPE_USER_TASK, SYNC_FOLDER_TYPE_USER_MAIL, SYNC_FOLDER_TYPE_USER_NOTE, SYNC_FOLDER_TYPE_USER_JOURNAL))) { if (!in_array($type, array(SYNC_FOLDER_TYPE_USER_CONTACT, SYNC_FOLDER_TYPE_USER_APPOINTMENT, SYNC_FOLDER_TYPE_USER_TASK, SYNC_FOLDER_TYPE_USER_MAIL, SYNC_FOLDER_TYPE_USER_NOTE, SYNC_FOLDER_TYPE_USER_JOURNAL))) {
ZLog::Write(LOGLEVEL_ERROR, sprintf("ASDevice->AddAdditionalFolder(): folder can not be added because the specified type '%s' is not a permitted user type.", $type)); ZLog::Write(LOGLEVEL_ERROR, sprintf("ASDevice->AddAdditionalFolder(): folder can not be added because the specified type '%s' is not a permitted user type.", $type));
...@@ -873,6 +874,7 @@ class ASDevice extends StateObject { ...@@ -873,6 +874,7 @@ class ASDevice extends StateObject {
'folderid' => $folderid, 'folderid' => $folderid,
'name' => $name, 'name' => $name,
'type' => $type, 'type' => $type,
'readonly' => $readonly,
); );
$this->additionalfolders = $af; $this->additionalfolders = $af;
......
...@@ -470,6 +470,7 @@ class DeviceManager { ...@@ -470,6 +470,7 @@ class DeviceManager {
// save store as custom property which is not streamed directly to the device // save store as custom property which is not streamed directly to the device
$folder->NoBackendFolder = true; $folder->NoBackendFolder = true;
$folder->Store = $df['store']; $folder->Store = $df['store'];
$folder->ReadOnly = $df['readonly'];
$folders[$folder->BackendId] = $folder; $folders[$folder->BackendId] = $folder;
} }
......
...@@ -522,11 +522,12 @@ class ZPushAdmin { ...@@ -522,11 +522,12 @@ class ZPushAdmin {
* @param string $add_folderid the folder id of the additional folder. * @param string $add_folderid the folder id of the additional folder.
* @param string $add_name the name of the additional folder (has to be unique for all folders on the device). * @param string $add_name the name of the additional folder (has to be unique for all folders on the device).
* @param string $add_type AS foldertype of SYNC_FOLDER_TYPE_USER_* * @param string $add_type AS foldertype of SYNC_FOLDER_TYPE_USER_*
* @param boolean $add_readonly Indicates if the folder should be synched if the user has at least read-only permissions.
* *
* @access public * @access public
* @return boolean * @return boolean
*/ */
static public function AdditionalFolderAdd($user, $devid, $add_store, $add_folderid, $add_name, $add_type) { static public function AdditionalFolderAdd($user, $devid, $add_store, $add_folderid, $add_name, $add_type, $add_readonly) {
// load device data // load device data
$device = new ASDevice($devid, ASDevice::UNDEFINED, $user, ASDevice::UNDEFINED); $device = new ASDevice($devid, ASDevice::UNDEFINED, $user, ASDevice::UNDEFINED);
try { try {
...@@ -543,7 +544,7 @@ class ZPushAdmin { ...@@ -543,7 +544,7 @@ class ZPushAdmin {
return false; return false;
} }
$status = $device->AddAdditionalFolder($add_store, $add_folderid, $add_name, $add_type); $status = $device->AddAdditionalFolder($add_store, $add_folderid, $add_name, $add_type, $add_readonly);
if ($status) if ($status)
ZPush::GetStateMachine()->SetState($device->GetData(), $devid, IStateMachine::DEVICEDATA); ZPush::GetStateMachine()->SetState($device->GetData(), $devid, IStateMachine::DEVICEDATA);
......
...@@ -182,17 +182,19 @@ class WebserviceDevice { ...@@ -182,17 +182,19 @@ class WebserviceDevice {
* @param string $add_folderid the folder id of the additional folder. * @param string $add_folderid the folder id of the additional folder.
* @param string $add_name the name of the additional folder (has to be unique for all folders on the device). * @param string $add_name the name of the additional folder (has to be unique for all folders on the device).
* @param string $add_type AS foldertype of SYNC_FOLDER_TYPE_USER_* * @param string $add_type AS foldertype of SYNC_FOLDER_TYPE_USER_*
* @param boolean $add_readonly Indicates if the folder should be synched if the user has at least read-only permissions.
* *
* @access public * @access public
* @return boolean * @return boolean
*/ */
public function AdditionalFolderAdd($deviceId, $add_store, $add_folderid, $add_name, $add_type) { public function AdditionalFolderAdd($deviceId, $add_store, $add_folderid, $add_name, $add_type, $add_readonly) {
$user = Request::GetGETUser(); $user = Request::GetGETUser();
$deviceId = preg_replace("/[^A-Za-z0-9]/", "", $deviceId); $deviceId = preg_replace("/[^A-Za-z0-9]/", "", $deviceId);
$add_folderid = preg_replace("/[^A-Za-z0-9]/", "", $add_folderid); $add_folderid = preg_replace("/[^A-Za-z0-9]/", "", $add_folderid);
$add_type = preg_replace("/[^0-9]/", "", $add_type); $add_type = preg_replace("/[^0-9]/", "", $add_type);
$add_readonly = !! $add_readonly;
$status = ZPushAdmin::AdditionalFolderAdd($user, $deviceId, $add_store, $add_folderid, $add_name, $add_type); $status = ZPushAdmin::AdditionalFolderAdd($user, $deviceId, $add_store, $add_folderid, $add_name, $add_type, $add_readonly);
if (!$status) { if (!$status) {
ZPush::GetTopCollector()->AnnounceInformation(ZLog::GetLastMessage(LOGLEVEL_ERROR), true); ZPush::GetTopCollector()->AnnounceInformation(ZLog::GetLastMessage(LOGLEVEL_ERROR), true);
throw new SoapFault("ERROR", ZLog::GetLastMessage(LOGLEVEL_ERROR)); throw new SoapFault("ERROR", ZLog::GetLastMessage(LOGLEVEL_ERROR));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment