Skip to content
Snippets Groups Projects
class.group.php 4.36 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jared Hancock's avatar
    Jared Hancock committed
    <?php
    /*********************************************************************
        class.group.php
    
        User Group - Everything about a group!
    
        Peter Rotich <peter@osticket.com>
        Copyright (c)  2006-2012 osTicket
        http://www.osticket.com
    
        Released under the GNU General Public License WITHOUT ANY WARRANTY.
        See LICENSE.TXT for details.
    
        vim: expandtab sw=4 ts=4 sts=4:
    **********************************************************************/
    
    class Group {
    
        var $id;
        var $ht;
    
        function Group($id){
    
            $this->id=0;
            return $this->load($id);
        }
    
        function load($id){
    
            $sql='SELECT grp.*,grp.group_name as name, grp.group_enabled as isactive, count(staff.staff_id) as users '
                .'FROM '.GROUP_TABLE.' grp '
                .'LEFT JOIN '.STAFF_TABLE.' staff USING(group_id) '
                .'WHERE grp.group_id='.db_input($id).' GROUP BY grp.group_id ';
            if(!($res=db_query($sql)) || !db_num_rows($res))
                return false;
    
            $this->ht=db_fetch_array($res);
            $this->id=$this->ht['group_id'];
            $this->members=array();
    
            return $this->id;
        }
    
        function reload(){
            return $this->load($this->getId());
        }
    
        function getHashtable() {
            return $this->ht;
        }
    
        function getInfo(){
            return  $this->getHashtable();
        }
    
        function getId(){
            return $this->id;
        }
    
        function getName(){
            return $this->ht['name'];
        }
    
        function getNumUsers(){
            return $this->ht['users'];
        }
    
    
        function isEnabled(){
            return ($this->ht['isactive']);
        }
    
        function isActive(){
            return $this->isEnabled();
        }
    
    
    
        function update($vars,&$errors) {
    
            if(Group::save($this->getId(),$vars,$errors)){
                $this->reload();
                return true;
            }
    
            return false;
        }
    
        /*** Static functions ***/
        function getIdByName($name){
            $sql='SELECT group_id FROM '.GROUP_TABLE.' WHERE group_name='.db_input(trim($name));
            if(($res=db_query($sql)) && db_num_rows($res))
                list($id)=db_fetch_row($res);
    
            return $id;
        }
    
        function lookup($id){
            return ($id && is_numeric($id) && ($g= new Group($id)) && $g->getId()==$id)?$g:null;
        }
    
    
        function create($vars,&$errors) { 
            return self::save(0,$vars,$errors);
        }
    
        function save($id,$vars,&$errors) {
    
            if($id && $vars['id']!=$id)
                $errors['err']='Missing or invalid group ID';
                
            if(!$vars['name']) {
                $errors['name']='Group name required';
            }elseif(strlen($vars['name'])<3) {
                $errors['name']='Group name must be at least 3 chars.';
            }elseif(($gid=Group::getIdByName($vars['name'])) && $gid!=$id){
                $errors['name']='Group name already exists';
            }
            
            if($errors) return false;
                
            $sql=' SET updated=NOW(), group_name='.db_input(Format::striptags($vars['name'])).
                 ', group_enabled='.db_input($vars['isactive']).
                 ', dept_access='.db_input($vars['depts']?implode(',',$vars['depts']):'').
                 ', can_create_tickets='.db_input($vars['can_create_tickets']).
                 ', can_delete_tickets='.db_input($vars['can_delete_tickets']).
                 ', can_edit_tickets='.db_input($vars['can_edit_tickets']).
                 ', can_assign_tickets='.db_input($vars['can_assign_tickets']).
                 ', can_transfer_tickets='.db_input($vars['can_transfer_tickets']).
                 ', can_close_tickets='.db_input($vars['can_close_tickets']).
                 ', can_ban_emails='.db_input($vars['can_ban_emails']).
                 ', can_manage_premade='.db_input($vars['can_manage_premade']).
                 ', can_manage_faq='.db_input($vars['can_manage_faq']).
                 ', notes='.db_input($vars['notes']);
                
            if($id) {
                
                $sql='UPDATE '.GROUP_TABLE.' '.$sql.' WHERE group_id='.db_input($id);
                if(($res=db_query($sql)))
                    return true;
    
                $errors['err']='Unable to update group. Internal error occurred.';
                
            }else{
                $sql='INSERT INTO '.GROUP_TABLE.' '.$sql.',created=NOW()';
                if(($res=db_query($sql)) && ($id=db_insert_id()))
                    return $id;
                    
                $errors['err']='Unable to create the group. Internal error';
            }
            
            return false;
        }
    }
    ?>