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