CORE-POS/IS4C

View on GitHub
fannie/modules/plugins2.0/CalendarPlugin/CalendarPluginPermissions.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/*******************************************************************************

    Copyright 2013 Whole Foods Co-op

    This file is part of IT CORE.

    IT CORE is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    IT CORE 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 General Public License for more details.

    You should have received a copy of the GNU General Public License
    in the file license.txt along with IT CORE; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*********************************************************************************/

if(!class_exists("CalendarPluginDB")) {
    include(dirname(__FILE__).'/CalendarPluginDB.php');
}

class CalendarPluginPermissions {

    public static function get_own_calendars($uid){
        $db = CalendarPluginDB::get();

        $p =  $db->prepare("SELECT c.calendarID,c.name FROM
                calendars AS c LEFT JOIN permissions AS p
                ON c.calendarID=p.calendarID WHERE
                p.uid=? AND p.classID=4 order by c.name");
        $results = $db->execute($p,array($uid));
        $ret = array();
        while($row = $db->fetch_row($results))
            $ret[$row[0]] = $row[1];    

        return $ret;
    }

    public static function get_other_calendars($uid){
        $db = CalendarPluginDB::get();

        $p =  $db->prepare("SELECT c.calendarID,c.name,p.classID FROM
                calendars AS c LEFT JOIN permissions AS p
                ON c.calendarID=p.calendarID WHERE
                p.uid=? or p.uid=-1 order by c.name");
        $results = $db->execute($p,array($uid));
        $ret = array();
        while($row = $db->fetch_row($results)){
            $ret[$row[0]] = $row[1];
            if ($row[2] == 4)
                unset($ret[$row[0]]);
        }

        return $ret;
    }

    public static function can_read($uid,$calID){
        $db = CalendarPluginDB::get();
        $p =  $db->prepare("SELECT c.calendarID,c.name FROM
                calendars AS c LEFT JOIN permissions AS p
                ON c.calendarID=p.calendarID WHERE
                p.uid=? OR p.uid=-1 AND c.calendarID=?");
        $results = $db->execute($p,array($uid,$calID));
        if ($db->num_rows($results) > 0) return True;
        return False;
    }

    public static function can_write($uid,$calID){
        $db = CalendarPluginDB::get();
        $p =  $db->prepare("SELECT c.calendarID,c.name FROM
                calendars AS c LEFT JOIN permissions AS p
                ON c.calendarID=p.calendarID WHERE
                (p.uid=? OR p.uid=-1) AND p.classID > 1 and c.calendarID=?");
        $results = $db->execute($p,array($uid,$calID));
        if ($db->num_rows($results) > 0) return True;
        return False;
    }

    public static function can_admin($uid,$calID){
        $db = CalendarPluginDB::get();
        $p =  $db->prepare("SELECT c.calendarID,c.name FROM
                calendars AS c LEFT JOIN permissions AS p
                ON c.calendarID=p.calendarID WHERE
                p.uid=? AND p.classID > 2 and c.calendarID=?");
        $results = $db->execute($p,array($uid,$calID));
        if ($db->num_rows($results) > 0) return True;
        return False;
    }

    public static function is_owner($uid,$calID){
        $db = CalendarPluginDB::get();
        $p =  $db->prepare("SELECT c.calendarID,c.name FROM
                calendars AS c LEFT JOIN permissions AS p
                ON c.calendarID=p.calendarID WHERE
                p.uid=? AND p.classID = 4 and c.calendarID=?");
        $results = $db->execute($p,array($uid,$calID));
        if ($db->num_rows($results) > 0) return True;
        return False;
    }

}