Example #1
0
function simpleCalDAVchange($client, $cal, $etag)
{
    // Check for missing arguments
    if (!(isset($client) && isset($cal) && isset($etag))) {
        return array(1, 'Missing arguments');
    }
    // Parse $cal for UID
    if (!preg_match('#^UID:(.*?)$#m', $cal, $matches)) {
        return array(2, 'Can\'t find UID in $cal');
    } else {
        $uid = $matches[1];
    }
    // Is there a '/' at the end of the url?
    if (!preg_match('#^.*?/$#', $client->calendar_url, $matches)) {
        $url = $client->calendar_url . '/';
    } else {
        $url = $client->calendar_url;
    }
    // Are $uid and $etag correct?
    $result = simpleCalDAVgetByUID($client, $uid);
    if ($result[0] != 0 || count($result[1]) != 1) {
        return array(3, 'Wrong unique ID. Can\'t find unique ID on server.', $client->GetHttpRequest(), $client->GetBody(), $client->GetResponseHeaders(), $client->GetXmlResponse());
    } elseif ($result[1][0]['etag'] != $etag) {
        return array(4, 'Wrong entity tag. The entity seems to have changed.', $client->GetHttpRequest(), $client->GetBody(), $client->GetResponseHeaders(), $client->GetXmlResponse());
    }
    // Put it!
    $newEtag = $client->DoPUTRequest($url . $uid . '.ics', $cal, $etag);
    // PUT-request successfull?
    if ($client->GetHttpResultCode() != '204') {
        if ($client->GetHttpResultCode() == '412') {
            return array(5, 'You shouldn\'t get here... strange :-/.', $client->GetHttpRequest(), $client->GetBody(), $client->GetResponseHeaders(), $client->GetXmlResponse());
        } else {
            return array(6, 'Recieved unknown HTTP status', $client->GetHttpRequest(), $client->GetBody(), $client->GetResponseHeaders(), $client->GetXmlResponse());
        }
    }
    return array(0, $newEtag);
}
Example #2
0
    $etagOfFirstEvent = $ret[1];
    $ret = simpleCalDAVcreate($client, $secondNewEvent);
    // Creates $secondNewEvent on the server and returns array(0, 'etag of second event').
    $etagOfSecondEvent = $ret[1];
    $ret = simpleCalDAVgetByUID($client, 'ExampleUID1');
    // Returns array(0, array(array( 'href'=>'something.ics', 'data'=>$firstNewEvent, 'etag'=>'etag of first event'))).
    $ret = simpleCalDAVgetEventsByTime($client, '20140418T103000Z', '20140419T200000Z');
    /* Returns array(0, array(
     * 							array( 'href'=>'something.ics', 'data'=>$firstNewEvent, 'etag'=>'etag of first event'),
     *							array( 'href'=>'someOtherThing.ics', 'data'=>$secondNewEvent, 'etag'=>'etag of second event'))).
     */
    $ret = simpleCalDAVchange($client, $changedFirstEvent, $etagOfFirstEvent);
    // Change the first event on the server from $firstNewEvent to $changedFirstEvent
    $etagOfFirstEvent = $ret[1];
    // and return array(0, 'new etag of first event').
    $ret = simpleCalDAVgetByUID($client, 'ExampleUID1');
    // Returns array(0, array( 'href'=>'something.ics', 'data'=>$changedFirstEvent, 'etag'=>'new etag of first event')).
    $ret = simpleCalDAVgetEventsByTime($client, '20140418T103000Z', '20140419T200000Z');
    // Returns array(0, array(array( 'href'=>'someOtherThing.ics', 'data'=>$secondNewEvent, 'etag'=>'etag of second event'))).
    $ret = simpleCalDAVdelete($client, 'ExampleUID2', $etagOfSecondEvent);
    // Deletes the second event from the server and returns array(0).
    $ret = simpleCalDAVgetEventsByTime($client, '20140418T103000Z', '20140419T200000Z');
    // Returns array(0, array()).
} else {
    echo '<pre>';
    echo $ret[1] . '<br><br>';
    echo 'Request-Header:<br>' . $ret[2] . '<br><br>';
    echo 'Request-Body:<br>' . htmlentities($ret[3]) . '<br><br>';
    echo 'Resonse-Header:<br>' . $ret[4] . '<br><br>';
    echo 'XML-Response-Body:<br>' . htmlentities($ret[5]);
    echo '</pre>';