Your IP : 216.73.216.40


Current Path : /var/www/html/ajay/phpwebsite-1.8.x/mod/checkin/class/
Upload File :
Current File : /var/www/html/ajay/phpwebsite-1.8.x/mod/checkin/class/Checkin.php

<?php
/**
 * @version $Id$
 * @author Matthew McNaney <mcnaney at gmail dot com>
 */


define('LAST_NAME_BITMASK', 0x1);
define('REASON_BITMASK', 0x2);
define('GENDER_BITMASK', 0x4);
define('BIRTHDATE_BITMASK', 0x8);

class Checkin {
    public $title           = null;
    public $message         = null;
    public $content         = null;
    public $staff           = null;
    public $visitor         = null;
    public $reason          = null;
    public $visitor_list    = null;
    public $staff_list      = null;
    public $unassigned_only = false;


    /**
     * staff_id = 0
     * would load the unassigned visitors
     */
    public function loadVisitorList($staff_id=null, $index=false)
    {
        PHPWS_Core::initModClass('checkin', 'Visitors.php');
        $db = new PHPWS_DB('checkin_visitor');
        if ($index) {
            $db->setIndexBy('assigned', true);
        }
        if (isset($staff_id)) {
            $db->addWhere('assigned', $staff_id);
        }
        $db->addWhere('finished', 0);
        $db->addOrder('arrival_time asc');
        $result = $db->getObjects('Checkin_Visitor');

        if (!PHPWS_Error::logIfError($result)) {
            $this->visitor_list = & $result;
        }
    }


    public function loadStaffList($active_only=false)
    {
        PHPWS_Core::initModClass('checkin', 'Staff.php');
        $db = new PHPWS_DB('checkin_staff');
        if ($active_only) {
            $db->addWhere('active', 1);
        }
        $db->addColumn('users.display_name');
        $db->addColumn('checkin_staff.*');
        $db->addWhere('user_id', 'users.id');
        $db->addOrder('checkin_staff.view_order');
        $result = $db->getObjects('Checkin_Staff');
        if (!PHPWS_Error::logIfError($result)) {
            $this->staff_list = & $result;
        }
    }

    public function loadStaff($id=0, $load_reasons=false)
    {
        PHPWS_Core::initModClass('checkin', 'Staff.php');

        if (!$id && !empty($_REQUEST['staff_id'])) {
            $id = (int)$_REQUEST['staff_id'];
        }
        if ($id) {
            $this->staff = new Checkin_Staff($id);
            if ($load_reasons) {
                $this->staff->loadReasons();
            }
        } else {
            $this->staff = new Checkin_Staff;
        }
    }

    public function loadReason($id=0)
    {
        PHPWS_Core::initModClass('checkin', 'Reasons.php');

        if (!$id && !empty($_REQUEST['reason_id'])) {
            $id = (int)$_REQUEST['reason_id'];
        }

        if ($id) {
            $this->reason = new Checkin_Reasons($id);
        } else {
            $this->reason = new Checkin_Reasons;
        }
    }

    public static function getReasons($all=false)
    {
        $db = new PHPWS_DB('checkin_reasons');
        $db->addOrder('summary');
        if (!$all) {
            $db->addColumn('id');
            $db->addColumn('summary');
            $db->setIndexBy('id');
            return $db->select('col');
        }
        return $db->select();
    }

    public function loadVisitor($id=0)
    {
        PHPWS_Core::initModClass('checkin', 'Visitors.php');

        if (!$id && isset($_REQUEST['visitor_id'])) {
            $id = (int)$_REQUEST['visitor_id'];
        }

        if (!$id) {
            $this->visitor = new Checkin_Visitor;
        } else {
            $this->visitor = new Checkin_Visitor($id);
        }
    }

    public function getStaffList($as_object=false, $available_only=false, $active_only=false)
    {
        $db = new PHPWS_DB('checkin_staff');
        if ($available_only) {
            $db->addWhere('status', 1, '!=');
        }

        $db->addWhere('user_id', 'users.id');
        if ($active_only) {
            $db->addWhere('active',1);
        }
        $db->addColumn('users.display_name');
        if ($as_object) {
            PHPWS_Core::initModClass('checkin', 'Staff.php');
            $db->addColumn('*');
            return $db->getObjects('Checkin_Staff');
        } else {
            $db->addColumn('id');
            $db->setIndexBy('id');
            return $db->select('col');
        }
    }

    public function getStatusColors()
    {
        $list[0] = '#39f15a';
        $list[1] = '#f9f95b';
        $list[2] = '#f96567';
        $list[3] = '#519FF9';

        return $list;
    }

    public function getStatusList()
    {
        $list[0] = dgettext('checkin', 'Available');
        $list[1] = dgettext('checkin', 'Unavailable');
        $list[2] = dgettext('checkin', 'Meeting with visitor');
        $list[3] = dgettext('checkin', 'Send back');

        return $list;
    }


    public function parseFilter($filter)
    {
        $filter = strtolower(str_replace(' ', '', $filter));
        $farray = explode(',', $filter);

        foreach ($farray as $val) {
            $subval = explode('-', $val);
            switch (1) {
                case strlen($val) == 1:
                    $final[] = $val;
                    break;

                case preg_match('/^\w{1}-\w{1}$/', $val):
                    $final[] = "[$val]";
                    break;

                case preg_match('/^\w{2}-\w{2}$/', $val):
                    if (substr($subval[0], 0, 1) == substr($subval[1], 0, 1)) {
                        $final[] = sprintf('%s[%s-%s]', substr($subval[0], 0, 1),
                        substr($subval[0], 1, 1),
                        substr($subval[1], 1, 1));
                    } else {
                        $char1 = substr($subval[0], 0, 1);
                        $char2 = substr($subval[0], 1, 1);
                        if ($char2 == 'a') {
                            $final[] = $char1;
                        } else {
                            $final[] = sprintf('%s[a-%s]', $char1, $char2);
                        }

                        $char3 = substr($subval[1], 0, 1);
                        $char4 = substr($subval[1], 1, 1);

                        if ($char4 == 'a') {
                            $final[] = $subval[1];
                        } else {
                            $final[] = sprintf('%s[a-%s]', $char3, $char4);
                        }
                    }
                    break;

                case preg_match('/^\w{1}-\w{2}$/', $val):
                    $final[] = $subval[0];
                    $char1 = substr($subval[1], 0, 1);
                    $char2 = substr($subval[1], 1, 1);
                    if ($char2 == 'a') {
                        $final[] = $subval[1];
                    } else {
                        $final[] = sprintf('%s[a-%s]', $char1, $char2);
                    }
                    break;

                case preg_match('/^\w{2}-\w{1}$/', $val):
                    $char1 = substr($subval[0], 0, 1);
                    $char2 = substr($subval[0], 1, 1);
                    $char3 = substr($subval[1], 0, 1);
                    if ($char2 == 'z') {
                        $final[] = $subval[0];
                    } else {
                        $final[] = sprintf('%s[%s-z]', $char1, $char2);
                    }

                    $start_char = (int)ord($char1);
                    $final_char = (int)ord($char3);
                    if ($final_char - $start_char == 1) {
                        $final[] = $subval[1];
                    } else {
                        for ($i = $start_char; $i < $final_char; $i++);
                        $final[] = sprintf('[%s-%s]', chr($start_char + 1), chr($i));
                    }
                    break;

                default:
                    $final[] = $val;
                    break;
            }
        }
        return sprintf('/^%s/i', implode('|', $final));
    }

    public static function timeWaiting($rel)
    {
        if ($rel < 0) {
            return dgettext('checkin', 'Time error');
        }

        $hours = floor( $rel / 3600);
        if ($hours) {
            $rel = $rel % 3600;
        }

        $mins = floor( $rel / 60);

        if ($hours) {
            $waiting[] = sprintf(dngettext('checkin', '%s hour', '%s hours', (int)$hours), $hours);
        }

        if ($mins) {
            $waiting[] = sprintf(dgettext('checkin', '%s min.'), $mins);
        }

        if (!isset($waiting)) {
            if (!$rel) {
                $waiting[] = dgettext('checkin', 'No meeting');
            } else {
                $waiting[] = dgettext('checkin', '< 1 min.');
            }
        }

        return implode(', ', $waiting);
    }

}
?>