Source for file model.php
Documentation is available at model.php
* Project: deskweb - the desktop manager for web <br />
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* You may contact the authors of Deskweb by emial at: <br />
* Massimiliano Balestrieri <br />
* The latest version of deskweb can be obtained from: <br />
* http://www.deskweb.org/ <br />
* @link http://www.deskweb.org/
* @author Massimiliano Balestrieri <io@maxb.net>
* @copyright 2005-2006 Massimiliano Balestrieri.
* questa classe contiene i dati che servono a deskweb
* array menu contenuto nel db
* array menujs contenuto nel db
* array contenente la navigazione
* array contenente i dati delle applicazioni aperte
if ($session->getJavascript()) {
$sql =
"select fk_parent,is_sys from ".
PREFIX_DB.
"node where id_node='".
$id.
"'";
//echo $id[0]['fk_parent'];
if (isset
($fk[0]['fk_parent']) &&
$fk[0]['is_sys'] ==
0)
return $fk[0]['fk_parent'];
* funzione beta per ricavare l'albero partendo da un nodo
function getTree($id, & $tree, $is_parent =
false) {
for ($x =
0; $x <=
sizeof($id) -
1; $x ++
) {
//destinazione (pattern per la sostituzione)
$parent =
"{destination}";
$fields =
"node, id_dom, type, application, window, fk_parent, icon, content, fk_menu, order_menu, last_date, is_sys, have_child, permissions, fk_user, fk_group";
// estraggo il padre o i figli
$sql =
"select * from ".
PREFIX_DB.
"node where id_node ='".
$id.
"'";
$sql =
"select * from ".
PREFIX_DB.
"node where fk_parent ='".
$id.
"' order by have_child desc";
for ($x =
0; $x <=
sizeof($temp) -
1; $x ++
) {
$temp[$x]['fk_parent'] =
$parent;
unset
($values['id_node']);
$values =
join(",", $values);
$temp[$x]['clone'] =
"insert into ".
PREFIX_DB.
"node (".
$fields.
") values(".
@ $values.
")";
$temp2 =
array ('id_node' =>
$temp[$x]['id_node'], 'fk_parent' =>
$temp[$x]['fk_parent'], 'clone' =>
$temp[$x]['clone']);
if ($temp[$x]['have_child'] ==
1)
* funzione beta per ricavare l'albero partendo da un nodo
* restituisce solo gli id (serve all'eliminazione)
function getTreeId($id, & $tree, $is_parent =
false) {
for ($x =
0; $x <=
sizeof($id) -
1; $x ++
) {
$sql =
"select id_node,have_child from ".
PREFIX_DB.
"node where id_node ='".
$id.
"'";
$sql =
"select id_node,have_child from ".
PREFIX_DB.
"node where fk_parent ='".
$id.
"' order by have_child desc";
for ($x =
0; $x <=
sizeof($temp) -
1; $x ++
) {
$tree[] =
$temp[$x]['id_node'];
if ($temp[$x]['have_child'] ==
1)
* funzione pubblica statica
* verifica che una sezione sia leggibile
if (isset
($dati[0]['id_node']))
* funzione pubblica statica
* verifica che una sezione sia scrivibile
if (isset
($dati[0]['id_node']))
* funzione pubblica statica
* verifica se l'utente sia il proprietario della sezione
$sql =
"select id_node,fk_user,is_sys from ".
PREFIX_DB.
"node where id_node ='".
$id_sezione.
"'";
$user =
$session->getCurrentUser();
if ($user ==
$temp[0]['fk_user'] &&
$temp[0]['is_sys'] ==
0) {
function is_sys($id_sezione) {
$sql =
"select is_sys from ".
PREFIX_DB.
"node where id_node='".
$id_sezione.
"'";
return $dati[0]['is_sys'];
$user =
$session->getCurrentUser();
$group =
$session->getCurrentGroup();
// 2 livelli di profondità
$sql =
"select id_node,node,icon,type,fk_parent,have_child,fk_menu from ".
PREFIX_DB.
"node where fk_parent in(".
$idmenu_app.
",".
$idmenu_places.
",".
$idmenu_sys.
") and ".
$this->_getSqlRealm();
for ($x =
0; $x <=
sizeof($padri) -
1; $x ++
) {
$ids[] =
$padri[$x]['id_node'];
$id_padri =
join($ids, ",");
$sql =
"select id_node,node,icon,type,fk_parent,have_child from ".
PREFIX_DB.
"node where fk_parent in(".
$id_padri.
") and ".
$this->_getSqlRealm();
return $menujs =
array ('padri' =>
$padri, 'figli' =>
$figli);
function _getSqlRealm($static =
false, $checkwritable =
false) {
$user =
$session->getCurrentUser();
$group =
$session->getCurrentGroup();
$user =
$_SESSION['AUTH']['USER'];
$group =
$_SESSION['AUTH']['GROUP'];
// compongo l'sql per l'estrazione sicura dei dati
$sql_owner =
" (fk_user = '".
$user.
"')";
// 2) is_group and is readable from group
$sql_group =
" (fk_group = '".
$group.
"' and substring(permissions,4,1) = 'r')";
$sql_public_read =
"(substring(permissions,7,1) = 'r')";
$sql_group_writable =
" (fk_group = '".
$group.
"' and substring(permissions,5,1) = 'w') ";
$sql_public_writable =
"(substring(permissions,8,1) = 'w')";
$sql_write .=
$sql_owner .
" or " .
$sql_group_writable .
" or ".
$sql_public_writable .
" )";
$sql =
$sql_owner.
" or ".
$sql_group.
" or ".
$sql_public_read;
return "(".
$sql.
")".
$sql_write;
$user =
$session->getCurrentUser();
$sql =
"select id_node,node,icon,type,id_dom,fk_menu from ".
PREFIX_DB.
"node where fk_menu>0 and ".
$this->_getSqlRealm();
//(fk_user = '".$user."' or (fk_user = 0 and fk_group = 0)) order by fk_menu,order_menu";
* carica i dati delle applicazioni in memoria
$sql =
"select id_node,node,type,application,window,icon,permissions,fk_user,fk_group,have_child,last_date,username,groupname from ".
PREFIX_DB.
"node,".
PREFIX_DB.
"users ,".
PREFIX_DB.
"groups where id_user = fk_user and id_group = fk_group and id_node in(".
$ids.
") and ".
$this->_getSqlRealm();
//$this->_checkPermissions($dati, "fathers");
for ($x =
0; $x <=
count($dati) -
1; $x ++
) {
$apps =
$session->getActiveDeskwebApps();
$session->addDeskwebApp($dati[$x]['application']);
if ($dati[$x]['have_child'] ==
1) {
$sql =
"select id_node,node,icon,type,id_dom,permissions,fk_user,fk_group,last_date,username,groupname from ".
PREFIX_DB.
"node ,".
PREFIX_DB.
"users ,".
PREFIX_DB.
"groups where id_user = fk_user and id_group = fk_group and fk_parent ='".
$dati[$x]['id_node'].
"' and ".
$this->_getSqlRealm().
" order by type,node";
//$this->_checkPermissions($dati[$x]['sons'], "sons");
* verifica i permessi delle sezioni e restituisce le sezioni che l'utente
* nelle richieste ajax non ricordo se questo metodo venga invocato
for ($x =
0; $x <=
count($dati) -
1; $x ++
) {
for ($x =
0; $x <=
count($arr_uscita) -
1; $x ++
) {
//if ($livello == "ids" && isset ($_SESSION['id_sezioni'][SessionDeskWeb :: pos_array($_SESSION['id_sezioni'], $dati[$arr_uscita[$x]]['id_node'])])) {
// unset ($_SESSION['id_sezioni'][SessionDeskWeb :: pos_array($_SESSION['id_sezioni'], $dati[$arr_uscita[$x]]['id_node'])]);
// session_write_close();
//unset ($dati[$arr_uscita[$x]]);
* verifica se l'utente è root
* verificare quale sia l'id da assegnare a root (penso che alla fine sarà 1)
$user =
$session->getCurrentUser();
* verifica se l'utente sia il proprietario della sezione
$user =
$session->getCurrentUser();
if ($user ==
$dato ||
$dato ==
0) {
* verifica se l'utente appartenga al gruppo della sezione
* implementare le politiche e la gestione dei gruppi
$group =
$session->getCurrentGroup();
if ($group ==
$dato ||
$dato ==
0)
* verifica che una sezione sia leggibile
if ($dati['type'] ==
'dir') {
if ($dati['permissions'][6] ==
'r' &&
$livello ==
"sons") {
elseif ($dati['permissions'][8] ==
'x' &&
$livello ==
"fathers") {
elseif ($dati['permissions'][5] ==
'x' and $this->_isGroup($dati['fk_group'])) {
elseif ($dati['permissions'][2] ==
'x' and $this->_isOwner($dati['fk_user'])) {
if ($dati['permissions'][6] ==
'r') {
elseif ($dati['permissions'][3] ==
'r' and $this->_isGroup($dati['fk_group'])) {
elseif ($dati['permissions'][0] ==
'r' and $this->_isOwner($dati['fk_user'])) {
Documentation generated on Sun, 18 Jun 2006 23:16:54 +0200 by phpDocumentor 1.3.0RC6