forked from koala-framework/koala-framework
/
Component.php
50 lines (42 loc) · 1.55 KB
/
Component.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
<?php
class Kwc_Box_Tags_RelatedNews_Component extends Kwc_Directories_List_Component
{
public static function getSettings()
{
$ret = parent::getSettings();
$ret['generators']['child']['component']['view'] = 'Kwc_Box_Tags_RelatedNews_View_Component';
$ret['useDirectorySelect'] = false;
return $ret;
}
protected function _getItemDirectory()
{
return 'Kwc_News_Directory_Component';
}
public static function getItemDirectoryClasses($directoryClass)
{
return array('Kwc_News_Directory_Component');
}
public function getSelect()
{
$ret = parent::getSelect();
$tagIds = $this->_getTagIds();
if (!$tagIds) return null;
$ret->join('kwc_components_to_tags', "kwc_components_to_tags.component_id = CONCAT('news_', kwc_news.id)", array());
$ret->where('kwc_components_to_tags.tag_id IN ('.implode(',', $tagIds).')');
$ret->group('kwc_news.id');
//eigene seite nicht anzeigen
$ret->where('kwc_components_to_tags.component_id != ?', $this->getData()->getPage()->dbId);
return $ret;
}
protected function _getTagIds()
{
if (!$this->getData()->getPage() || !$this->getData()->getPage()->generator) return null;
$plugin = $this->getData()->getPage()->generator->getGeneratorPlugin('tags');
if (!$plugin) return null;
$ret = array();
foreach ($plugin->getTags($this->getData()->getPage()) as $tag) {
$ret[] = (int)$tag->id;
}
return $ret;
}
}