/** * Sends a tweet via Twitter * * @param string $message Message to send * @param string $user UserId of the user to send the message for * @param bool $cutMessage Should the message be cut if it is longer than 140 characters, * if set to false, an error will be returned if the message is longer than 140 characters * * @return int -1 if the user did not authorize the site with twitter, * -2, if the message is longer than 140 characters, * a negative number corresponding to the HTTP response codes from twitter * (http://dev.twitter.com/pages/streaming_api_response_codes) * or a positive tweet id of the message */ function tweet($message, $user, $cutMessage = false) { global $prefs; $token = $this->get_user_preference($user, 'twitter_token', ''); if ($token == '') { $this->add_log('tweet', 'user not registered with twitter'); return -1; } if ($cutMessage) { $message = substr($message, 0, 140); } else { if (strlen($message) > 140) { $this->add_log('tweet', 'message too long'); return -2; } } $token = unserialize($token); $this->options['callbackUrl'] = $this->getURL(); $this->options['consumerKey'] = $prefs['socialnetworks_twitter_consumer_key']; $this->options['consumerSecret'] = $prefs['socialnetworks_twitter_consumer_secret']; $twitter = new Zend_Service_Twitter(array('oauthOptions' => array('consumerKey' => $prefs['socialnetworks_twitter_consumer_key'], 'consumerSecret' => $prefs['socialnetworks_twitter_consumer_secret']), 'accessToken' => $token)); try { $response = $twitter->statusesUpdate($message); } catch (Zend_Service_Twitter_Exception $e) { $this->add_log('tweet', 'twitter error ' . $e->getMessage()); return -$e->getCode(); } if (!$response->isSuccess()) { $errors = $response->getErrors(); $this->add_log('tweet', 'twitter response: ' . $errors[0]->message . ' - Code: ' . $errors[0]->code); return -$errors['code']; } else { $id = $response->toValue(); return $id->id_str; } }