web/rsln-opendata/tweet_ajax.php
author Samuel Huron <samuel.huron@centrepompidou.fr>
Tue, 15 Mar 2011 13:46:46 +0100
changeset 66 8a382087127f
child 68 ecaf28ffe26e
permissions -rw-r--r--
rsln-opendata
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
66
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     1
<?php
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     2
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     3
/**
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     4
 * include some common code (like we did in the 90s)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     5
 * People still do this? ;)
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     6
 */
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     7
include_once './common.php';
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     8
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
     9
/**
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    10
 * Check for a POSTed status message to send to Twitter
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    11
 */
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    12
if (!empty($_POST) && isset($_POST['status'])
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    13
&& isset($_SESSION['TWITTER_ACCESS_TOKEN'])) {
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    14
    /**
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    15
     * Easiest way to use OAuth now that we have an Access Token is to use
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    16
     * a preconfigured instance of Zend_Http_Client which automatically
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    17
     * signs and encodes all our requests without additional work
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    18
     */
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    19
    $token = unserialize($_SESSION['TWITTER_ACCESS_TOKEN']);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    20
    $client = $token->getHttpClient($configuration);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    21
    $client->setUri('http://twitter.com/statuses/update.json');
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    22
    $client->setMethod(Zend_Http_Client::POST);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    23
    $client->setParameterPost('status', $_POST['status']);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    24
    $response = $client->request();
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    25
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    26
    /**
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    27
     * Check if the json response refers to our tweet details (assume it
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    28
     * means it was successfully posted). API gurus can correct me.
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    29
     */
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    30
    $data = json_decode($response->getBody());
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    31
    $result = $response->getBody();
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    32
    if (isset($data->text)) {
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    33
        $result = 'true';
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    34
    }
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    35
    /**
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    36
     * Tweet sent (hopefully), redirect back home...
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    37
     */
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    38
    //header('Location: ' . URL_ROOT . '?result=' . $result);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    39
	echo($result);
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    40
} else {
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    41
    /**
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    42
     * Mistaken request? Some malfeasant trying something?
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    43
     */
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    44
    exit('Invalid tweet request. Oops. Sorry.');
8a382087127f rsln-opendata
Samuel Huron <samuel.huron@centrepompidou.fr>
parents:
diff changeset
    45
}