Commit 8e811dba authored by skummer's avatar skummer

ZP-529 #comment allow random tag order for ItemOperations Fetch, simplyfied...

ZP-529 #comment allow random tag order for ItemOperations Fetch, simplyfied checking for empty options tag

git-svn-id: https://z-push.org/svn/z-push/trunk@1884 b7dd7b3b-3a3c-0410-9da9-bee62a6cc5b5
parent 6dc871e3
...@@ -90,144 +90,145 @@ class ItemOperations extends RequestProcessor { ...@@ -90,144 +90,145 @@ class ItemOperations extends RequestProcessor {
return false; return false;
} }
if ($fetch) { // process operation
if(!self::$decoder->getElementStartTag(SYNC_ITEMOPERATIONS_STORE)) while(1) {
return false; if ($fetch) {
$operation['store'] = self::$decoder->getElementContent(); if(self::$decoder->getElementStartTag(SYNC_ITEMOPERATIONS_STORE)) {
if(!self::$decoder->getElementEndTag()) $operation['store'] = self::$decoder->getElementContent();
return false;//SYNC_ITEMOPERATIONS_STORE if(!self::$decoder->getElementEndTag())
return false;//SYNC_ITEMOPERATIONS_STORE
if(self::$decoder->getElementStartTag(SYNC_SEARCH_LONGID)) { }
$operation['longid'] = self::$decoder->getElementContent();
if(!self::$decoder->getElementEndTag())
return false;//SYNC_SEARCH_LONGID
}
if(self::$decoder->getElementStartTag(SYNC_FOLDERID)) { if(self::$decoder->getElementStartTag(SYNC_SEARCH_LONGID)) {
$operation['folderid'] = self::$decoder->getElementContent(); $operation['longid'] = self::$decoder->getElementContent();
if(!self::$decoder->getElementEndTag()) if(!self::$decoder->getElementEndTag())
return false;//SYNC_FOLDERID return false;//SYNC_SEARCH_LONGID
} }
if(self::$decoder->getElementStartTag(SYNC_SERVERENTRYID)) { if(self::$decoder->getElementStartTag(SYNC_FOLDERID)) {
$operation['serverid'] = self::$decoder->getElementContent(); $operation['folderid'] = self::$decoder->getElementContent();
if(!self::$decoder->getElementEndTag()) if(!self::$decoder->getElementEndTag())
return false;//SYNC_SERVERENTRYID return false;//SYNC_FOLDERID
} }
if(self::$decoder->getElementStartTag(SYNC_AIRSYNCBASE_FILEREFERENCE)) { if(self::$decoder->getElementStartTag(SYNC_SERVERENTRYID)) {
$operation['filereference'] = self::$decoder->getElementContent(); $operation['serverid'] = self::$decoder->getElementContent();
if(!self::$decoder->getElementEndTag()) if(!self::$decoder->getElementEndTag())
return false;//SYNC_AIRSYNCBASE_FILEREFERENCE return false;//SYNC_SERVERENTRYID
} }
if(self::$decoder->getElementStartTag(SYNC_ITEMOPERATIONS_OPTIONS)) { if(self::$decoder->getElementStartTag(SYNC_AIRSYNCBASE_FILEREFERENCE)) {
//TODO other options $operation['filereference'] = self::$decoder->getElementContent();
//schema if(!self::$decoder->getElementEndTag())
//range return false;//SYNC_AIRSYNCBASE_FILEREFERENCE
//username }
//password
//bodypartpreference
//rm:RightsManagementSupport
// Save all OPTIONS into a ContentParameters object
$operation["cpo"] = new ContentParameters();
while(1) {
// Android 4.3 sends empty options tag, so we don't have to look further
$e = self::$decoder->peek();
if($e[EN_TYPE] == EN_TYPE_ENDTAG) {
break;
}
while (self::$decoder->getElementStartTag(SYNC_AIRSYNCBASE_BODYPREFERENCE)) { if(($el = self::$decoder->getElementStartTag(SYNC_ITEMOPERATIONS_OPTIONS)) && ($el[EN_FLAGS] & EN_FLAGS_CONTENT)) {
if(self::$decoder->getElementStartTag(SYNC_AIRSYNCBASE_TYPE)) { //TODO other options
$bptype = self::$decoder->getElementContent(); //schema
$operation["cpo"]->BodyPreference($bptype); //range
if(!self::$decoder->getElementEndTag()) { //username
return false; //password
//bodypartpreference
//rm:RightsManagementSupport
// Save all OPTIONS into a ContentParameters object
$operation["cpo"] = new ContentParameters();
while(1) {
while (self::$decoder->getElementStartTag(SYNC_AIRSYNCBASE_BODYPREFERENCE)) {
if(self::$decoder->getElementStartTag(SYNC_AIRSYNCBASE_TYPE)) {
$bptype = self::$decoder->getElementContent();
$operation["cpo"]->BodyPreference($bptype);
if(!self::$decoder->getElementEndTag()) {
return false;
}
}
if(self::$decoder->getElementStartTag(SYNC_AIRSYNCBASE_TRUNCATIONSIZE)) {
$operation["cpo"]->BodyPreference($bptype)->SetTruncationSize(self::$decoder->getElementContent());
if(!self::$decoder->getElementEndTag())
return false;
}
if(self::$decoder->getElementStartTag(SYNC_AIRSYNCBASE_ALLORNONE)) {
$operation["cpo"]->BodyPreference($bptype)->SetAllOrNone(self::$decoder->getElementContent());
if(!self::$decoder->getElementEndTag())
return false;
}
if(self::$decoder->getElementStartTag(SYNC_AIRSYNCBASE_PREVIEW)) {
$operation["cpo"]->BodyPreference($bptype)->SetPreview(self::$decoder->getElementContent());
if(!self::$decoder->getElementEndTag())
return false;
} }
}
if(self::$decoder->getElementStartTag(SYNC_AIRSYNCBASE_TRUNCATIONSIZE)) {
$operation["cpo"]->BodyPreference($bptype)->SetTruncationSize(self::$decoder->getElementContent());
if(!self::$decoder->getElementEndTag()) if(!self::$decoder->getElementEndTag())
return false; return false;//SYNC_AIRSYNCBASE_BODYPREFERENCE
} }
if(self::$decoder->getElementStartTag(SYNC_AIRSYNCBASE_ALLORNONE)) { if(self::$decoder->getElementStartTag(SYNC_MIMESUPPORT)) {
$operation["cpo"]->BodyPreference($bptype)->SetAllOrNone(self::$decoder->getElementContent()); $operation["cpo"]->SetMimeSupport(self::$decoder->getElementContent());
if(!self::$decoder->getElementEndTag()) if(!self::$decoder->getElementEndTag())
return false; return false;
} }
if(self::$decoder->getElementStartTag(SYNC_AIRSYNCBASE_PREVIEW)) { if(self::$decoder->getElementStartTag(SYNC_ITEMOPERATIONS_RANGE)) {
$operation["cpo"]->BodyPreference($bptype)->SetPreview(self::$decoder->getElementContent()); $operation["range"] = self::$decoder->getElementContent();
if(!self::$decoder->getElementEndTag()) if(!self::$decoder->getElementEndTag())
return false; return false;
} }
if(!self::$decoder->getElementEndTag()) if(self::$decoder->getElementStartTag(SYNC_ITEMOPERATIONS_SCHEMA)) {
return false;//SYNC_AIRSYNCBASE_BODYPREFERENCE // read schema tags
} while (1) {
// TODO save elements
if(self::$decoder->getElementStartTag(SYNC_MIMESUPPORT)) { $el = self::$decoder->getElement();
$operation["cpo"]->SetMimeSupport(self::$decoder->getElementContent()); $e = self::$decoder->peek();
if(!self::$decoder->getElementEndTag()) if($e[EN_TYPE] == EN_TYPE_ENDTAG) {
return false; self::$decoder->getElementEndTag();
} break;
}
if(self::$decoder->getElementStartTag(SYNC_ITEMOPERATIONS_RANGE)) {
$operation["range"] = self::$decoder->getElementContent();
if(!self::$decoder->getElementEndTag())
return false;
}
if(self::$decoder->getElementStartTag(SYNC_ITEMOPERATIONS_SCHEMA)) {
// read schema tags
while (1) {
// TODO save elements
$el = self::$decoder->getElement();
$e = self::$decoder->peek();
if($e[EN_TYPE] == EN_TYPE_ENDTAG) {
self::$decoder->getElementEndTag();
break;
} }
} }
}
//break if it reached the endtag //break if it reached the endtag
$e = self::$decoder->peek(); $e = self::$decoder->peek();
if($e[EN_TYPE] == EN_TYPE_ENDTAG) { if($e[EN_TYPE] == EN_TYPE_ENDTAG) {
self::$decoder->getElementEndTag(); self::$decoder->getElementEndTag();
break; break;
}
} }
} }
} } // end if fetch
}
if ($efc) { if ($efc) {
if(self::$decoder->getElementStartTag(SYNC_FOLDERID)) { if(self::$decoder->getElementStartTag(SYNC_FOLDERID)) {
$operation['folderid'] = self::$decoder->getElementContent(); $operation['folderid'] = self::$decoder->getElementContent();
if(!self::$decoder->getElementEndTag()) if(!self::$decoder->getElementEndTag())
return false;//SYNC_FOLDERID return false;//SYNC_FOLDERID
} }
if(self::$decoder->getElementStartTag(SYNC_ITEMOPERATIONS_OPTIONS)) { if(self::$decoder->getElementStartTag(SYNC_ITEMOPERATIONS_OPTIONS)) {
if(self::$decoder->getElementStartTag(SYNC_ITEMOPERATIONS_DELETESUBFOLDERS)) { if(self::$decoder->getElementStartTag(SYNC_ITEMOPERATIONS_DELETESUBFOLDERS)) {
$operation['deletesubfolders'] = true; $operation['deletesubfolders'] = true;
if (($dsf = self::$decoder->getElementContent()) !== false) { if (($dsf = self::$decoder->getElementContent()) !== false) {
$operation['deletesubfolders'] = (boolean)$dsf; $operation['deletesubfolders'] = (boolean)$dsf;
if(!self::$decoder->getElementEndTag()) if(!self::$decoder->getElementEndTag())
return false; return false;
}
} }
self::$decoder->getElementEndTag();
} }
self::$decoder->getElementEndTag();
} }
}
//TODO move //TODO move
if(!self::$decoder->getElementEndTag()) //break if it reached the endtag SYNC_ITEMOPERATIONS_FETCH or SYNC_ITEMOPERATIONS_EMPTYFOLDERCONTENTS or SYNC_ITEMOPERATIONS_MOVE
return false; //SYNC_ITEMOPERATIONS_FETCH or SYNC_ITEMOPERATIONS_EMPTYFOLDERCONTENTS or SYNC_ITEMOPERATIONS_MOVE $e = self::$decoder->peek();
if($e[EN_TYPE] == EN_TYPE_ENDTAG) {
self::$decoder->getElementEndTag();
break;
}
} // end while operation
$itemoperations[] = $operation; $itemoperations[] = $operation;
//break if it reached the endtag //break if it reached the endtag
...@@ -236,11 +237,7 @@ class ItemOperations extends RequestProcessor { ...@@ -236,11 +237,7 @@ class ItemOperations extends RequestProcessor {
self::$decoder->getElementEndTag(); //SYNC_ITEMOPERATIONS_ITEMOPERATIONS self::$decoder->getElementEndTag(); //SYNC_ITEMOPERATIONS_ITEMOPERATIONS
break; break;
} }
} // end operations loop
}
// if(!self::$decoder->getElementEndTag())
// return false;//SYNC_ITEMOPERATIONS_ITEMOPERATIONS
$status = SYNC_ITEMOPERATIONSSTATUS_SUCCESS; $status = SYNC_ITEMOPERATIONSSTATUS_SUCCESS;
......
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