xref: /plugin/structpublish/helper/db.php (revision 2b546eccbf453fa6e7a7b042659a4ecc69ad11e9)
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    const ACTION_APPROVE = 'approve';
8939e6e3cSAnna Dabrowska    const ACTION_PUBLISH = 'publish';
9939e6e3cSAnna Dabrowska
10e394901aSAnna Dabrowska    /**
11910e7e15SAnna Dabrowska     * Get list of all pages known to the plugin
12910e7e15SAnna Dabrowska     * @return array
13910e7e15SAnna Dabrowska     */
14910e7e15SAnna Dabrowska    public function getPages($pid = null)
15910e7e15SAnna Dabrowska    {
16910e7e15SAnna Dabrowska        $sql = 'SELECT pid FROM data_structpublish';
17910e7e15SAnna Dabrowska        if ($pid) {
18910e7e15SAnna Dabrowska            $sql .= ' WHERE pid = ?';
19910e7e15SAnna Dabrowska        }
20910e7e15SAnna Dabrowska        $res = $this->sqlite->query($sql, $pid);
21910e7e15SAnna Dabrowska        $list = $this->sqlite->res2arr($res);
22910e7e15SAnna Dabrowska        $this->sqlite->res_close($res);
23910e7e15SAnna Dabrowska        return $list;
24910e7e15SAnna Dabrowska    }
25910e7e15SAnna Dabrowska
26910e7e15SAnna Dabrowska    /**
27939e6e3cSAnna Dabrowska     * Returns true if the current page is included in publishing workflows
28939e6e3cSAnna Dabrowska     *
29939e6e3cSAnna Dabrowska     * @return bool
30939e6e3cSAnna Dabrowska     */
31939e6e3cSAnna Dabrowska    public function isPublishable()
32939e6e3cSAnna Dabrowska    {
33939e6e3cSAnna Dabrowska        global $ID;
34939e6e3cSAnna Dabrowska
35939e6e3cSAnna Dabrowska        $sql = 'SELECT * FROM structpublish_assignments WHERE pid = ? AND assigned = 1';
36939e6e3cSAnna Dabrowska        $res = $this->sqlite->query($sql, $ID);
37939e6e3cSAnna Dabrowska        if ($res && $this->sqlite->res2count($res)) {
38939e6e3cSAnna Dabrowska            return true;
39939e6e3cSAnna Dabrowska        }
40939e6e3cSAnna Dabrowska        return false;
41939e6e3cSAnna Dabrowska    }
42*2b546eccSAndreas Gohr
43*2b546eccSAndreas Gohr    /**
44*2b546eccSAndreas Gohr     * Check if the current user has the given roles on the current page
45*2b546eccSAndreas Gohr     *
46*2b546eccSAndreas Gohr     * @param string $pid The page ID to check access for
47*2b546eccSAndreas Gohr     * @param string[] $roles Roles needed. Empty for any role
48*2b546eccSAndreas Gohr     * @return bool
49*2b546eccSAndreas Gohr     */
50*2b546eccSAndreas Gohr    public function checkAccess($pid, $roles = [])
51*2b546eccSAndreas Gohr    {
52*2b546eccSAndreas Gohr        return action_plugin_structpublish_sqlitefunction::userHasRole($pid, '', [], $roles);
53*2b546eccSAndreas Gohr    }
54*2b546eccSAndreas Gohr
55e394901aSAnna Dabrowska}
56