Overview

Packages

  • ActiveSync
  • None

Classes

  • Horde_ActiveSync
  • Horde_ActiveSync_Connector_Exporter
  • Horde_ActiveSync_Connector_Importer
  • Horde_ActiveSync_Driver_Base
  • Horde_ActiveSync_Exception
  • Horde_ActiveSync_Exception_InvalidRequest
  • Horde_ActiveSync_Exception_StateGone
  • Horde_ActiveSync_Message_Base
  • Horde_ActiveSync_Request_Base
  • Horde_ActiveSync_Request_FolderCreate
  • Horde_ActiveSync_Request_FolderSync
  • Horde_ActiveSync_Request_GetHierarchy
  • Horde_ActiveSync_Request_GetItemEstimate
  • Horde_ActiveSync_Request_MeetingResponse
  • Horde_ActiveSync_Request_MoveItems
  • Horde_ActiveSync_Request_Notify
  • Horde_ActiveSync_Request_Ping
  • Horde_ActiveSync_Request_Provision
  • Horde_ActiveSync_Request_Search
  • Horde_ActiveSync_Request_SendMail
  • Horde_ActiveSync_Request_SmartForward
  • Horde_ActiveSync_Request_SmartReply
  • Horde_ActiveSync_Request_Sync
  • Horde_ActiveSync_State_File
  • Horde_ActiveSync_Sync
  • Horde_ActiveSync_Wbxml
  • Horde_ActiveSync_Wbxml_Decoder
  • Horde_ActiveSync_Wbxml_Encoder
  • Overview
  • Package
  • Class
  • Tree
 1: <?php
 2: /**
 3:  * Handle MoveItems requests.
 4:  * 
 5:  * Logic adapted from Z-Push, original copyright notices below.
 6:  *
 7:  * Copyright 2009-2012 Horde LLC (http://www.horde.org/)
 8:  *
 9:  * @author Michael J. Rubinsky <mrubinsk@horde.org>
10:  * @package ActiveSync
11:  */
12: /**
13:  * Zarafa Deutschland GmbH, www.zarafaserver.de
14:  * This file is distributed under GPL-2.0.
15:  * Consult COPYING file for details
16:  */
17: // Move
18: define("SYNC_MOVE_MOVES","Move:Moves");
19: define("SYNC_MOVE_MOVE","Move:Move");
20: define("SYNC_MOVE_SRCMSGID","Move:SrcMsgId");
21: define("SYNC_MOVE_SRCFLDID","Move:SrcFldId");
22: define("SYNC_MOVE_DSTFLDID","Move:DstFldId");
23: define("SYNC_MOVE_RESPONSE","Move:Response");
24: define("SYNC_MOVE_STATUS","Move:Status");
25: define("SYNC_MOVE_DSTMSGID","Move:DstMsgId");
26: class Horde_ActiveSync_Request_MoveItems extends Horde_ActiveSync_Request_Base
27: {
28:     /**
29:      * Handle request
30:      *
31:      * @return boolean
32:      */
33:     public function handle()
34:     {
35:        if (!$this->_decoder->getElementStartTag(SYNC_MOVE_MOVES)) {
36:             return false;
37:         }
38: 
39:         $moves = array();
40:         while ($this->_decoder->getElementStartTag(SYNC_MOVE_MOVE)) {
41:             $move = array();
42:             if ($this->_decoder->getElementStartTag(SYNC_MOVE_SRCMSGID)) {
43:                 $move['srcmsgid'] = $this->_decoder->getElementContent();
44:                 if(!$this->_decoder->getElementEndTag())
45:                     break;
46:             }
47:             if ($this->_decoder->getElementStartTag(SYNC_MOVE_SRCFLDID)) {
48:                 $move['srcfldid'] = $this->_decoder->getElementContent();
49:                 if (!$this->_decoder->getElementEndTag()) {
50:                     break;
51:                 }
52:             }
53:             if ($this->_decoder->getElementStartTag(SYNC_MOVE_DSTFLDID)) {
54:                 $move['dstfldid'] = $this->_decoder->getElementContent();
55:                 if (!$this->_decoder->getElementEndTag()) {
56:                     break;
57:                 }
58:             }
59:             array_push($moves, $move);
60: 
61:             if (!$this->_decoder->getElementEndTag()) {
62:                 return false;
63:             }
64:         }
65: 
66:         if (!$this->_decoder->getElementEndTag())
67:             return false;
68: 
69:         $this->_encoder->StartWBXML();
70: 
71:         $this->_encoder->startTag(SYNC_MOVE_MOVES);
72: 
73:         foreach ($moves as $move) {
74:             $this->_encoder->startTag(SYNC_MOVE_RESPONSE);
75:             $this->_encoder->startTag(SYNC_MOVE_SRCMSGID);
76:             $this->_encoder->content($move['srcmsgid']);
77:             $this->_encoder->endTag();
78: 
79:             $importer = $this->_driver->getContentsImporter($move['srcfldid']);
80:             $result = $importer->importMessageMove($move['srcmsgid'], $move['dstfldid']);
81: 
82:             // We discard the importer state for now.
83:             $this->_encoder->startTag(SYNC_MOVE_STATUS);
84:             $this->_encoder->content($result ? 3 : 1);
85:             $this->_encoder->endTag();
86: 
87:             $this->_encoder->startTag(SYNC_MOVE_DSTMSGID);
88:             $this->_encoder->content(is_string($result) ? $result : $move['srcmsgid']);
89:             $this->_encoder->endTag();
90:             $this->_encoder->endTzg();
91:         }
92:         $this->_encoder->endTag();
93: 
94:         return true;
95:     }
96: }
API documentation generated by ApiGen