xref: /plugin/structpublish/syntax/table.php (revision 3231ebae4b1306b9f8a4137b83017a39a16e79eb)
1*3231ebaeSAnna Dabrowska<?php
2*3231ebaeSAnna Dabrowska
3*3231ebaeSAnna Dabrowskause dokuwiki\plugin\struct\meta\AggregationTable;
4*3231ebaeSAnna Dabrowska
5*3231ebaeSAnna Dabrowska/**
6*3231ebaeSAnna Dabrowska * DokuWiki Plugin structpublish (Syntax Component)
7*3231ebaeSAnna Dabrowska *
8*3231ebaeSAnna Dabrowska * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
9*3231ebaeSAnna Dabrowska * @author  Anna Dabrowska <dokuwiki@cosmocode.de>
10*3231ebaeSAnna Dabrowska */
11*3231ebaeSAnna Dabrowska
12*3231ebaeSAnna Dabrowskaclass syntax_plugin_structpublish_table extends syntax_plugin_struct_serial
13*3231ebaeSAnna Dabrowska{
14*3231ebaeSAnna Dabrowska    protected $tableclass = AggregationTable::class;
15*3231ebaeSAnna Dabrowska
16*3231ebaeSAnna Dabrowska    /**
17*3231ebaeSAnna Dabrowska     * Connect pattern
18*3231ebaeSAnna Dabrowska     *
19*3231ebaeSAnna Dabrowska     * @param string $mode Parser mode
20*3231ebaeSAnna Dabrowska     */
21*3231ebaeSAnna Dabrowska    public function connectTo($mode)
22*3231ebaeSAnna Dabrowska    {
23*3231ebaeSAnna Dabrowska        $this->Lexer->addSpecialPattern('----+ *structpublish *-+\n.*?\n?----+', $mode, 'plugin_structpublish_table');
24*3231ebaeSAnna Dabrowska    }
25*3231ebaeSAnna Dabrowska
26*3231ebaeSAnna Dabrowska    /**
27*3231ebaeSAnna Dabrowska     * Filter based on primary key columns
28*3231ebaeSAnna Dabrowska     *
29*3231ebaeSAnna Dabrowska     * @param array $config
30*3231ebaeSAnna Dabrowska     * @return array
31*3231ebaeSAnna Dabrowska     */
32*3231ebaeSAnna Dabrowska    protected function addTypeFilter($config)
33*3231ebaeSAnna Dabrowska    {
34*3231ebaeSAnna Dabrowska        $config['schemas'][] = ['structpublish', 'structpublish'];
35*3231ebaeSAnna Dabrowska        array_unshift($config['cols'], '%pageid%');
36*3231ebaeSAnna Dabrowska        $config['filter'][] = [
37*3231ebaeSAnna Dabrowska            '%rowid%', '!=',
38*3231ebaeSAnna Dabrowska            (string)\dokuwiki\plugin\struct\meta\AccessTablePage::DEFAULT_PAGE_RID, 'AND'
39*3231ebaeSAnna Dabrowska        ];
40*3231ebaeSAnna Dabrowska        $config['withpid'] = 1; // flag for the editor to distinguish data types
41*3231ebaeSAnna Dabrowska        return $config;
42*3231ebaeSAnna Dabrowska    }
43*3231ebaeSAnna Dabrowska}
44*3231ebaeSAnna Dabrowska
45