aboutsummaryrefslogtreecommitdiff
path: root/bridges/UnraidCommunityApplicationsBridge.php
blob: c2cb3ace7e30201347c6b1c88f7f2d99fb01d690 (plain) (blame)
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
65
66
67
68
69
70
<?php
class UnraidCommunityApplicationsBridge extends BridgeAbstract {
	const NAME = 'Unraid Community Applications';
	const URI = 'https://forums.unraid.net/topic/38582-plug-in-community-applications/';
	const DESCRIPTION = 'Fetches the latest fifteen new apps/plugins from Unraid Community Applications';
	const MAINTAINER = 'Paroleen';
	const CACHE_TIMEOUT = 3600;

	const APPSURI = 'https://raw.githubusercontent.com/Squidly271/AppFeed/master/applicationFeed.json';

	private $apps = array();

	private function fetchApps() {
		Debug::log('Fetching all applications/plugins');
		$this->apps = getContents(self::APPSURI);
		$this->apps = json_decode($this->apps, true)['applist'];
	}

	private function sortApps() {
		Debug::log('Sorting applications/plugins');
		usort($this->apps, function($app1, $app2) {
			return $app1['FirstSeen'] < $app2['FirstSeen'] ? 1 : -1;
		});
	}

	public function collectData() {
		$this->fetchApps();
		$this->sortApps();

		Debug::log('Building RSS feed');
		foreach($this->apps as $app) {
			if(!array_key_exists('Language', $app)) {
				$item = array();
				$item['title'] = $app['Name'];
				$item['timestamp'] = $app['FirstSeen'];
				$item['author'] = explode('\'', $app['Repo'])[0];
				$item['categories'] = explode(' ', $app['Category']);
				$item['content'] = '';

				if(array_key_exists('Icon', $app))
					$item['content'] .= '<img style="width: 64px" src="'
						. $app['Icon']
						. '">';

				if(array_key_exists('Overview', $app))
					$item['content'] .= '<p>'
						. $app['Overview']
						. '</p>';

				if(array_key_exists('Project', $app))
					$item['uri'] = $app['Project'];

				if(array_key_exists('Registry', $app))
					$item['content'] .= '<br><a href="'
						. $app['Registry']
						. '">Docker Hub</a>';

				if(array_key_exists('Support', $app))
					$item['content'] .= '<br><a href="'
						. $app['Support']
						. '">Support</a>';

				$this->items[] = $item;

				if(count($this->items) >= 15)
					break;
			}
		}
	}
}