-
Notifications
You must be signed in to change notification settings - Fork 0
/
JosheliTweets.php
64 lines (53 loc) · 1.88 KB
/
JosheliTweets.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
require __DIR__ . '/vendor/autoload.php';
class JosheliTweets
{
public function __construct()
{
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
}
public function tweet()
{
$status = $this->formatTweetFromWordpressPost($this->getRandomWordpressPost());
if($status)
{
$settings = [
'oauth_access_token' => getenv('TWITTER_OAUTH_ACCESS_TOKEN'),
'oauth_access_token_secret' => getenv('TWITTER_OAUTH_ACCESS_TOKEN_SECRET'),
'consumer_key' => getenv('TWITTER_CONSUMER_KEY'),
'consumer_secret' => getenv('TWITTER_CONSUMER_SECRET')
];
$url = 'https://api.twitter.com/1.1/statuses/update.json';
$request_method = 'POST';
$twitter = new TwitterAPIExchange($settings);
$twitter->buildOauth($url, $request_method)
->setPostfields(['status' => $status])
->performRequest();
}
}
protected function getRandomWordpressPost()
{
$mysqli = new mysqli(
getenv('WP_DB_HOST'),
getenv('WP_DB_USER'),
getenv('WP_DB_PASS'),
getenv('WP_DB_NAME'),
getenv('WP_DB_PORT') ? getenv('WP_DB_PORT') : 3306
);
return $mysqli
->query('SELECT * FROM `wp_posts` WHERE `post_type` = "post" AND `post_status` = "publish" ORDER BY rand() LIMIT 1')
->fetch_object();
}
protected function formatTweetFromWordpressPost($post)
{
$post_date = date('M j, Y', strtotime($post->post_date));
list($post_year, $post_month, $post_day) = explode('-', strtok($post->post_date, ' '));
$permalink = "https://josheli.com/knob/{$post_year}/{$post_month}/{$post_day}/{$post->post_name}";
$status = "{$post_date}: {$post->post_title} - {$permalink}";
$post_content = preg_replace(['@\[.*?\]@', '/\s\s+/'], ' ', strip_tags($post->post_content));
$status .= ' - ' . $post_content;
$status = trim(substr($status, 0, 277)) . '...';
return $status;
}
}