[RedditBridge]: Add user option (#1943)
This commit is contained in:
parent
687eb728d4
commit
569276f4ef
1 changed files with 48 additions and 7 deletions
|
@ -23,6 +23,19 @@ class RedditBridge extends BridgeAbstract {
|
||||||
'exampleValue' => 'selfhosted, php',
|
'exampleValue' => 'selfhosted, php',
|
||||||
'title' => 'SubReddit names, separated by commas'
|
'title' => 'SubReddit names, separated by commas'
|
||||||
)
|
)
|
||||||
|
),
|
||||||
|
'user' => array(
|
||||||
|
'u' => array(
|
||||||
|
'name' => 'User',
|
||||||
|
'required' => true,
|
||||||
|
'title' => 'User name'
|
||||||
|
),
|
||||||
|
'comments' => array(
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'name' => 'Comments',
|
||||||
|
'title' => 'Whether to return comments',
|
||||||
|
'defaultValue' => false
|
||||||
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -33,12 +46,18 @@ class RedditBridge extends BridgeAbstract {
|
||||||
public function getName() {
|
public function getName() {
|
||||||
if ($this->queriedContext == 'single') {
|
if ($this->queriedContext == 'single') {
|
||||||
return 'Reddit r/' . $this->getInput('r');
|
return 'Reddit r/' . $this->getInput('r');
|
||||||
|
} elseif ($this->queriedContext == 'user') {
|
||||||
|
return 'Reddit u/' . $this->getInput('u');
|
||||||
} else {
|
} else {
|
||||||
return self::NAME;
|
return self::NAME;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function collectData() {
|
public function collectData() {
|
||||||
|
|
||||||
|
$user = false;
|
||||||
|
$comments = false;
|
||||||
|
|
||||||
switch ($this->queriedContext) {
|
switch ($this->queriedContext) {
|
||||||
case 'single':
|
case 'single':
|
||||||
$subreddits[] = $this->getInput('r');
|
$subreddits[] = $this->getInput('r');
|
||||||
|
@ -46,33 +65,55 @@ class RedditBridge extends BridgeAbstract {
|
||||||
case 'multi':
|
case 'multi':
|
||||||
$subreddits = explode(',', $this->getInput('rs'));
|
$subreddits = explode(',', $this->getInput('rs'));
|
||||||
break;
|
break;
|
||||||
|
case 'user':
|
||||||
|
$subreddits[] = $this->getInput('u');
|
||||||
|
$user = true;
|
||||||
|
$comments = $this->getInput('comments');
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($subreddits as $subreddit) {
|
foreach ($subreddits as $subreddit) {
|
||||||
$name = trim($subreddit);
|
$name = trim($subreddit);
|
||||||
|
|
||||||
$values = getContents(self::URI . '/r/' . $name . '.json')
|
$values = getContents(self::URI . ($user ? '/user/' : '/r/') . $name . '.json')
|
||||||
or returnServerError('Unable to fetch posts!');
|
or returnServerError('Unable to fetch posts!');
|
||||||
$decodedValues = json_decode($values);
|
$decodedValues = json_decode($values);
|
||||||
|
|
||||||
foreach ($decodedValues->data->children as $post) {
|
foreach ($decodedValues->data->children as $post) {
|
||||||
|
if ($post->kind == 't1' && !$comments) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$data = $post->data;
|
$data = $post->data;
|
||||||
|
|
||||||
$item = array();
|
$item = array();
|
||||||
$item['author'] = $data->author;
|
$item['author'] = $data->author;
|
||||||
$item['title'] = $data->title;
|
|
||||||
$item['uid'] = $data->id;
|
$item['uid'] = $data->id;
|
||||||
$item['timestamp'] = $data->created_utc;
|
$item['timestamp'] = $data->created_utc;
|
||||||
$item['uri'] = $this->encodePermalink($data->permalink);
|
$item['uri'] = $this->encodePermalink($data->permalink);
|
||||||
|
|
||||||
$item['categories'] = array();
|
$item['categories'] = array();
|
||||||
|
|
||||||
|
if ($post->kind == 't1') {
|
||||||
|
$item['title'] = 'Comment: ' . $data->link_title;
|
||||||
|
} else {
|
||||||
|
$item['title'] = $data->title;
|
||||||
|
|
||||||
$item['categories'][] = $data->link_flair_text;
|
$item['categories'][] = $data->link_flair_text;
|
||||||
$item['categories'][] = $data->pinned ? 'Pinned' : null;
|
$item['categories'][] = $data->pinned ? 'Pinned' : null;
|
||||||
$item['categories'][] = $data->over_18 ? 'NSFW' : null;
|
|
||||||
$item['categories'][] = $data->spoiler ? 'Spoiler' : null;
|
$item['categories'][] = $data->spoiler ? 'Spoiler' : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$item['categories'][] = $data->over_18 ? 'NSFW' : null;
|
||||||
$item['categories'] = array_filter($item['categories']);
|
$item['categories'] = array_filter($item['categories']);
|
||||||
|
|
||||||
if ($data->is_self) {
|
if ($post->kind == 't1') {
|
||||||
|
// Comment
|
||||||
|
|
||||||
|
$item['content']
|
||||||
|
= htmlspecialchars_decode($data->body_html);
|
||||||
|
|
||||||
|
} elseif ($data->is_self) {
|
||||||
// Text post
|
// Text post
|
||||||
|
|
||||||
$item['content']
|
$item['content']
|
||||||
|
@ -112,7 +153,7 @@ class RedditBridge extends BridgeAbstract {
|
||||||
$id = $media->media_id;
|
$id = $media->media_id;
|
||||||
$type = $data->media_metadata->$id->m == 'image/gif' ? 'gif' : 'u';
|
$type = $data->media_metadata->$id->m == 'image/gif' ? 'gif' : 'u';
|
||||||
$src = $data->media_metadata->$id->s->$type;
|
$src = $data->media_metadata->$id->s->$type;
|
||||||
$images[] = '<img src="' . $src . '"/>';
|
$images[] = '<figure><img src="' . $src . '"/></figure>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$item['content'] = implode('', $images);
|
$item['content'] = implode('', $images);
|
||||||
|
|
Loading…
Reference in a new issue