xref: /plugin/structpublish/helper/db.php (revision 126b0b8e78a33b559ee525a8bc42a60b44e89ceb) !
1e394901aSAnna Dabrowska<?php
2e394901aSAnna Dabrowska
3910e7e15SAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Assignments;
4910e7e15SAnna Dabrowska
5e394901aSAnna Dabrowskaclass helper_plugin_structpublish_db extends helper_plugin_struct_db
6e394901aSAnna Dabrowska{
7939e6e3cSAnna Dabrowska
8e394901aSAnna Dabrowska    /**
9910e7e15SAnna Dabrowska     * Get list of all pages known to the plugin
10910e7e15SAnna Dabrowska     * @return array
11910e7e15SAnna Dabrowska     */
12*126b0b8eSAnna Dabrowska    public function getPages()
13910e7e15SAnna Dabrowska    {
14*126b0b8eSAnna Dabrowska        $sql = 'SELECT pid FROM titles';
15*126b0b8eSAnna Dabrowska        $res = $this->sqlite->query($sql);
16910e7e15SAnna Dabrowska        $list = $this->sqlite->res2arr($res);
17910e7e15SAnna Dabrowska        $this->sqlite->res_close($res);
18*126b0b8eSAnna Dabrowska        return array_column($list, 'pid');
19910e7e15SAnna Dabrowska    }
20910e7e15SAnna Dabrowska
21910e7e15SAnna Dabrowska    /**
22939e6e3cSAnna Dabrowska     * Returns true if the current page is included in publishing workflows
23939e6e3cSAnna Dabrowska     *
24939e6e3cSAnna Dabrowska     * @return bool
25939e6e3cSAnna Dabrowska     */
26939e6e3cSAnna Dabrowska    public function isPublishable()
27939e6e3cSAnna Dabrowska    {
28939e6e3cSAnna Dabrowska        global $ID;
29939e6e3cSAnna Dabrowska
30*126b0b8eSAnna Dabrowska        $sql = 'SELECT pid FROM structpublish_assignments WHERE pid = ? AND assigned = 1';
31939e6e3cSAnna Dabrowska        $res = $this->sqlite->query($sql, $ID);
32939e6e3cSAnna Dabrowska        if ($res && $this->sqlite->res2count($res)) {
33939e6e3cSAnna Dabrowska            return true;
34939e6e3cSAnna Dabrowska        }
35939e6e3cSAnna Dabrowska        return false;
36939e6e3cSAnna Dabrowska    }
372b546eccSAndreas Gohr
382b546eccSAndreas Gohr    /**
392b546eccSAndreas Gohr     * Check if the current user has the given roles on the current page
402b546eccSAndreas Gohr     *
412b546eccSAndreas Gohr     * @param string $pid The page ID to check access for
422b546eccSAndreas Gohr     * @param string[] $roles Roles needed. Empty for any role
432b546eccSAndreas Gohr     * @return bool
442b546eccSAndreas Gohr     */
452b546eccSAndreas Gohr    public function checkAccess($pid, $roles = [])
462b546eccSAndreas Gohr    {
472b546eccSAndreas Gohr        return action_plugin_structpublish_sqlitefunction::userHasRole($pid, '', [], $roles);
482b546eccSAndreas Gohr    }
492b546eccSAndreas Gohr
50e394901aSAnna Dabrowska}
51