Пример #1
0
 /**
  * Post a status update to Twitter
  * @param int      $item_id
  */
 public function tweet($item_id)
 {
     access::verify_csrf();
     $item = ORM::factory("item", $item_id);
     $form = twitter::get_tweet_form($item);
     if ($form->validate()) {
         $item_url = url::abs_site($item->relative_url_cache);
         $user = $this->_get_twitter_user(identity::active_user()->id);
         $consumer_key = module::get_var("twitter", "consumer_key");
         $consumer_secret = module::get_var("twitter", "consumer_secret");
         require_once MODPATH . "twitter/vendor/twitteroauth/twitteroauth.php";
         $connection = new TwitterOAuth($consumer_key, $consumer_secret, $user->oauth_token, $user->oauth_token_secret);
         $message = $form->twitter_message->tweet->value;
         $attach_image = $form->twitter_message->attach_image->value;
         if ($attach_image == 1) {
             $filename = APPPATH . "../var/resizes/" . $item->relative_path_cache;
             $handle = fopen($filename, "rb");
             $image = fread($handle, filesize($filename));
             fclose($handle);
             $response = $connection->upload('statuses/update_with_media', array('media[]' => "{$image};type=image/jpeg;filename={$filename}", 'status' => $message));
         } else {
             $response = $connection->post('statuses/update', array('status' => $message));
         }
         if (200 == $connection->http_code) {
             message::success(t("Tweet sent!"));
             json::reply(array("result" => "success", "location" => $item->url()));
         } else {
             message::error(t("Unable to send, your Tweet has been saved. Please try again later: %http_code, %response_error", array("http_code" => $connection->http_code, "response_error" => $response->error)));
             log::error("content", "Twitter", t("Unable to send tweet: %http_code", array("http_code" => $connection->http_code)));
             json::reply(array("result" => "success", "location" => $item->url()));
         }
         $tweet->item_id = $item_id;
         !empty($response->id) ? $tweet->twitter_id = $response->id : ($tweet->twitter_id = NULL);
         $tweet->tweet = $message;
         $tweet->id = $form->twitter_message->tweet_id->value;
         $this->_save_tweet($tweet);
     } else {
         json::reply(array("result" => "error", "html" => (string) $form));
     }
 }
Пример #2
0
 /**
  * Post a status update to Twitter
  * @param int      $item_id
  */
 public function tweet($item_id)
 {
     access::verify_csrf();
     $item = ORM::factory("item", $item_id);
     $form = twitter::get_tweet_form($item);
     if ($form->validate()) {
         $item_url = url::abs_site($item->relative_url_cache);
         $user = $this->_get_twitter_user(identity::active_user()->id);
         $consumer_key = module::get_var("twitter", "consumer_key");
         $consumer_secret = module::get_var("twitter", "consumer_secret");
         require_once MODPATH . "twitter/vendor/twitteroauth/twitteroauth.php";
         $connection = new TwitterOAuth($consumer_key, $consumer_secret, $user->oauth_token, $user->oauth_token_secret);
         $message = $form->twitter_message->tweet->value;
         $response = $connection->post('statuses/update', array('status' => $message));
         if (200 == $connection->http_code) {
             message::success(t("Tweet sent!"));
             json::reply(array("result" => "success", "location" => $item->url()));
         } else {
             message::error(t("Unable to send, your Tweet has been saved. Please try again later."));
             log::error("content", "Twitter", t("Unable to send tweet: %http_code", array("http_code" => $connection->http_code)));
             json::reply(array("result" => "success", "location" => $item->url()));
         }
         $tweet->item_id = $item_id;
         !empty($response->id) ? $tweet->twitter_id = $response->id : ($tweet->twitter_id = NULL);
         $tweet->tweet = $message;
         $tweet->id = $form->twitter_message->tweet_id->value;
         $this->_save_tweet($tweet);
     } else {
         json::reply(array("result" => "error", "html" => (string) $form));
     }
 }