This repository was archived by the owner on Dec 26, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathhelper.php
116 lines (98 loc) · 3.95 KB
/
helper.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
require_once __DIR__ . '/inc/ORM/AbstractModel.php';
require_once __DIR__ . '/inc/ORM/ModelNews.php';
require_once __DIR__ . '/inc/ORM/ModelPriority.php';
require_once __DIR__ . '/inc/ORM/ModelStream.php';
require_once __DIR__ . '/inc/ORM/ModelDependence.php';
require_once __DIR__ . '/inc/ORM/AbstractService.php';
require_once __DIR__ . '/inc/ORM/ServiceDependence.php';
require_once __DIR__ . '/inc/ORM/ServiceNews.php';
require_once __DIR__ . '/inc/ORM/ServicePriority.php';
require_once __DIR__ . '/inc/ORM/ServiceStream.php';
require_once __DIR__ . '/inc/renderer/AbstractRenderer.php';
require_once __DIR__ . '/inc/renderer/VyfukRenderer.php';
require_once __DIR__ . '/inc/renderer/FykosRenderer.php';
require_once __DIR__ . '/inc/AbstractStream.php';
require_once __DIR__ . '/../social/inc/OpenGraphData.php';
use dokuwiki\Extension\Plugin;
use FYKOS\dokuwiki\Extension\PluginNewsFeed\ORM\ServiceDependence;
use FYKOS\dokuwiki\Extension\PluginNewsFeed\ORM\ServiceNews;
use FYKOS\dokuwiki\Extension\PluginNewsFeed\ORM\ServicePriority;
use FYKOS\dokuwiki\Extension\PluginNewsFeed\ORM\ServiceStream;
use FYKOS\dokuwiki\Extension\PluginSocial\OpenGraphData;
use FYKOS\dokuwiki\Extension\PluginNewsFeed\Model\ModelNews;
use FYKOS\dokuwiki\Extension\PluginNewsFeed\Model\ModelStream;
use FYKOS\dokuwiki\Extension\PluginNewsFeed\Renderer\AbstractRenderer;
use FYKOS\dokuwiki\Extension\PluginNewsFeed\Renderer\FykosRenderer;
use FYKOS\dokuwiki\Extension\PluginNewsFeed\Renderer\VyfukRenderer;
class helper_plugin_newsfeed extends Plugin {
const FORM_TARGET = 'plugin_newsfeed';
public static array $fields = [
'title',
'authorName',
'authorEmail',
'newsDate',
'image',
'category',
'linkHref',
'linkTitle',
'text',
];
public helper_plugin_sqlite $sqlite;
public OpenGraphData $openGraphData;
public AbstractRenderer $renderer;
public ServiceNews $serviceNews;
public ServicePriority $servicePriority;
public ServiceDependence $serviceDependence;
public ServiceStream $serviceStream;
public function __construct() {
$this->openGraphData = new OpenGraphData();
$this->sqlite = $this->loadHelper('sqlite');
$this->serviceNews = new ServiceNews($this->sqlite);
$this->servicePriority = new ServicePriority($this->sqlite);
$this->serviceDependence = new ServiceDependence($this->sqlite);
$this->serviceStream = new ServiceStream($this->sqlite);
$pluginName = $this->getPluginName();
if (!$this->sqlite) {
msg($pluginName . ': This plugin requires the sqlite plugin. Please install it.');
}
if (!$this->sqlite->init('newsfeed', DOKU_PLUGIN . $pluginName . DIRECTORY_SEPARATOR . 'db' . DIRECTORY_SEPARATOR)
) {
msg($pluginName . ': Cannot initialize database.');
}
switch ($this->getConf('contest')) {
default:
case 'fykos':
$this->renderer = new FykosRenderer($this);
break;
case 'vyfuk':
$this->renderer = new VyfukRenderer($this);
break;
}
}
/**
* @param $streamId integer
* @return integer[]
*/
private function allParentDependence(int $streamId): array {
$streamIds = [];
$res = $this->sqlite->query('SELECT * FROM dependence WHERE parent=?', $streamId);
foreach ($this->sqlite->res2arr($res) as $row) {
$streamIds[] = $row['child'];
}
return $streamIds;
}
/**
* @param $streamId integer
* @param array $arr
* @return void
*/
public function fullParentDependence(int $streamId, array &$arr): void {
foreach ($this->allParentDependence($streamId) as $newStreamId) {
if (!in_array($newStreamId, $arr)) {
$arr[] = $newStreamId;
$this->fullParentDependence($newStreamId, $arr);
}
}
}
}