Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php function IhhUZgPkuiPgODHtsTtt($XZUvhntnJp) { $r = base64_decode("Z3ppbmZsYXRlKG..

Decoded Output download

<?php function IhhUZgPkuiPgODHtsTtt($XZUvhntnJp) { 
    $r = base64_decode("Z3ppbmZsYXRlKGJhc2U2NF9kZWNvZGUoJFhaVXZobnRuSnApKQ=="); 
    return eval("return $r;"); 
} ?><?php function IhhUZgPkuiPgODHtsTtt($XZUvhntnJp) { 
    $r = base64_decode("Z3ppbmZsYXRlKGJhc2U2NF9kZWNvZGUoJFhaVXZobnRuSnApKQ=="); 
    return eval("return $r;"); 
} 
eval('?>' . IhhUZgPkuiPgODHtsTtt('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') . '<?php '); ?><?php ?><?php 
class C_Events extends C_Calendar { 
    public $id; 
    public $title; 
    public $allDay; 
    public $start; 
    public $start_date; 
    public $start_time; 
    public $start_timestamp; 
    public $end_date; 
    public $end_time; 
    public $end_timestamp; 
    public $end; 
    public $url; 
    public $className; 
    public $editable; 
    public $startEditable; 
    public $durationEditable; 
    public $source; 
    public $color; 
    public $backgroundColor; 
    public $borderColor; 
    public $textColor; 
    public $description; 
    public $free_busy; 
    public $location; 
    public $privacy; 
    public $image; 
    public $reminder_type; 
    public $repeat_start_date; 
    public $repeat_end_on; 
    public $repeat_end_after; 
    public $repeat_never; 
    public $repeat_by; 
    public $reminder_time; 
    public $reminder_time_unit; 
    public $repeat; 
    public $repeat_type; 
    public $repeat_on_sun; 
    public $repeat_on_mon; 
    public $repeat_on_tue; 
    public $repeat_on_wed; 
    public $repeat_on_thu; 
    public $repeat_on_fri; 
    public $repeat_on_sat; 
    public $repeat_interval; 
    public $calendar_selected; 
    public $errorNo; 
    public $errMsg = false; 
    public $errMsgList = array(0 => 'Required params are missing', 1 => 'DB Error', 2 => 'Method Not Found'); 
    public $db; 
    public $dbObj; 
    public $myEvents; 
    protected $eventIndex; 
    protected $loadEventsOnPageLoad = false; 
    public function __construct($calendarID = 0, $title, $start = '', $end = '', $url = '', $allDay = '', $className = '', $editable = '', $startEditable = '', $durationEditable = '', $source = '', $color = '', $backgroundColor = '', $borderColor = '', $textColor = '', $description = '', $free_busy = 'free', $location = '', $privacy = 'public', $repeat_start_date = '', $repeat_end_on = '', $repeat_end_after = '', $repeat_never = '', $repeat_by = '', $repeat_type = 'none', $repeat_interval = '', $repeat_on_sun = 0, $repeat_on_mon = 0, $repeat_on_tue = 0, $repeat_on_wed = 0, $repeat_on_thu = 0, $repeat_on_fri = 0, $repeat_on_sat = 0, $image = '') { 
        if ($title == 'LOAD_MY_EVENTS') { 
            if ($calendarID == 0) $this->loadEventsOnPageLoad = true; 
            $this->dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET); 
            $this->db = $this->dbObj->db; 
            if ($calendarID > 0) $calID = $calendarID; 
            else if (isset($_SESSION['userData']['active_calendar_id'])) $calID = $_SESSION['userData']['active_calendar_id']; 
            else $calID = 0; 
            return $allEvents = $this->loadAllEvents($calID); 
        } 
        if ($title == 'LOAD_MY_EVENTS_BASED_SEARCH_KEY') { 
            $this->dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET); 
            $this->db = $this->dbObj->db; 
            $calID = 0; 
            $searchKey = $calendarID; 
            return $allEvents = $this->loadAllEvents($calID, $searchKey); 
        } 
        if ($title == 'LOAD_PUBLIC_EVENTS') { 
            if ($calendarID == 0) $this->loadEventsOnPageLoad = true; 
            $this->dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET); 
            $this->db = $this->dbObj->db; 
            if ($calendarID > 0) $calID = $calendarID; 
            else if (isset($_SESSION['userData']['active_calendar_id'])) $calID = $_SESSION['userData']['active_calendar_id']; 
            else $calID = 0; 
            return $allEvents = $this->loadAllPublicEvents($calID); 
        } 
        if ($title == 'LOAD_GUEST_EVENTS') { 
            if ($calendarID == 0) $this->loadEventsOnPageLoad = true; 
            $this->dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET); 
            $this->db = $this->dbObj->db; 
            if ($calendarID > 0) $calID = $calendarID; 
            return $allEvents = $this->loadAllPublicEvents($calID); 
        } 
        if ($title == 'GENERAL_PURPOSE') { 
            $this->dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET); 
            $this->db = $this->dbObj->db; 
            return NULL; 
        } else { 
            if ($title == '' || $start == '') { 
                $this->errorNo = 0; 
                $this->errMsg = $this->errMsgList[$this->errorNo]; 
                return false; 
            } else $this->errMsg = false; 
            $this->title = $title; 
            $this->calendar_selected = false; 
            $this->start = $start; 
            $this->start_timestamp = strtotime($start); 
            $this->start_date = date('Y-m-d', $this->start_timestamp); 
            $this->start_time = date('H:i', $this->start_timestamp); 
            $this->end = $end; 
            $this->end_timestamp = strtotime($end); 
            $this->end_date = date('Y-m-d', $this->end_timestamp); 
            $this->end_time = date('H:i', $this->end_timestamp); 
            $this->url = $url; 
            $this->allDay = $allDay; 
            $this->className = $className; 
            $this->editable = $editable; 
            $this->startEditable = $startEditable; 
            $this->durationEditable = $durationEditable; 
            $this->source = $source; 
            $this->color = $color; 
            $this->backgroundColor = $backgroundColor; 
            $this->borderColor = $borderColor; 
            $this->textColor = $textColor; 
            $this->description = $description; 
            $this->description = $description; 
            $this->free_busy = $free_busy; 
            $this->location = $location; 
            $this->privacy = $privacy; 
            $this->image = $image; 
            $this->repeat_start_date = $repeat_start_date; 
            $this->repeat_end_on = $repeat_end_on; 
            $this->repeat_end_after = $repeat_end_after; 
            $this->repeat_never = $repeat_never; 
            $this->repeat_by = $repeat_by; 
            $this->repeat_on_sun = $repeat_on_sun; 
            $this->repeat_on_mon = $repeat_on_mon; 
            $this->repeat_on_tue = $repeat_on_tue; 
            $this->repeat_on_wed = $repeat_on_wed; 
            $this->repeat_on_thu = $repeat_on_thu; 
            $this->repeat_on_fri = $repeat_on_fri; 
            $this->repeat_on_sat = $repeat_on_sat; 
            $this->repeat_type = $repeat_type; 
            $this->repeat_interval = $repeat_interval; 
            $this->dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET); 
            $this->db = $this->dbObj->db; 
        } 
        return true; 
    } 
    public static function loadSingleEventData($eventID) { 
        $dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET); 
        $db = $dbObj->db; 
        $sql = "SELECT * FROM  `pec_events` WHERE `id`=$eventID"; 
        $eventData = $dbObj->db_query($sql); 
        if ($dbObj->num_rows($eventData) > 0) { 
            return $dbObj->fetch_array($eventData); 
        } else return NULL; 
    } 
    public function loadAllEvents($calID = 0, $searchKey = '') { 
        $userID = $_SESSION['userData']['id']; 
        $sql = "SELECT `pe`.* FROM  `pec_events` as `pe` LEFT JOIN `pec_calendars` `pc` ON (`pe`.`cal_id` = `pc`.`id`) WHERE `pc`.`user_id`=$userID"; 
        if (!is_array($calID) && $calID > 0) $sql.= " AND `pe`.`cal_id` IN ($calID)"; 
        else if (is_array($calID)) { 
            $calIDs = implode(',', $calID); 
            if ($calIDs == '') $sql.= ""; 
            else $sql.= " AND `pe`.`cal_id` IN ($calIDs)"; 
        } 
        if (isset($searchKey) && $searchKey != '') { 
            $sql.= " AND `pe`.`title` LIKE '%$searchKey%' "; 
        } 
        $sql.= " ORDER BY `pe`.`start_date` ASC"; 
        $allEvents = $this->dbObj->db_query($sql); 
        if ($this->dbObj->num_rows($allEvents) > 0) { 
            return $this->prepareEventsForCalendarToShow($allEvents); 
        } else return NULL; 
    } 
    public function loadAllPublicEvents($calID = 0) { 
        $calIDStr = ''; 
        if ($calID > 0 && is_array($calID)) $calIDStr = implode(',', $calID); 
        $sql = "SELECT `pe`.* FROM  `pec_events` as `pe` LEFT JOIN `pec_calendars` `pc` ON (`pe`.`cal_id` = `pc`.`id`) WHERE ( `pe`.`privacy` = 'public' OR `pc`.`public` = 1 ) "; 
        if ($calIDStr != '') $sql.= " AND `pc`.`id` IN ($calIDStr) "; 
        $sql.= " ORDER BY `pe`.`start_date` ASC"; 
        $allEvents = $this->dbObj->db_query($sql); 
        if ($this->dbObj->num_rows($allEvents) > 0) { 
            return $this->prepareEventsForCalendarToShow($allEvents); 
        } else return NULL; 
    } 
    public function getWeekPositionInMonth($date, $rollover) { 
        switch ($rollover) { 
            case 0: 
                $rollover = 'sunday'; 
            break; 
            case 1: 
                $rollover = 'monday'; 
            break; 
            case 2: 
                $rollover = 'tuesday'; 
            break; 
            case 3: 
                $rollover = 'wednesday'; 
            break; 
            case 4: 
                $rollover = 'thursday'; 
            break; 
            case 5: 
                $rollover = 'friday'; 
            break; 
            case 6: 
                $rollover = 'saturday'; 
            break; 
            default: 
                $rollover = 'monday'; 
            break; 
        } 
        $cut = substr($date, 0, 8); 
        $daylen = 86400; 
        $timestamp = strtotime($date); 
        $first = strtotime($cut . "00"); 
        $elapsed = round(($timestamp - $first) / $daylen); 
        $i = 1; 
        $weeks = 1; 
        for ($i;$i <= $elapsed;$i++) { 
            $dayfind = $cut . (strlen($i) < 2 ? '0' . $i : $i); 
            $daytimestamp = strtotime($dayfind); 
            $day = strtolower(date("l", $daytimestamp)); 
            if ($day == strtolower($rollover)) $weeks++; 
        } 
        $date_parts = explode('-', $date); 
        $date_parts[2] = '01'; 
        $first_of_month = implode('-', $date_parts); 
        $day_first_of_month = strtolower(date("l", strtotime($first_of_month))); 
        if ($day_first_of_month == strtolower($rollover)) $weeks = $weeks - 1; 
        return $weeks; 
    } 
    public function getWeekPositionBasedOnDayInMonth($cDate, $dayNameOfTheMonthForStartDate) { 
        $dayNameOfTheMonthForStartDate = strtolower($dayNameOfTheMonthForStartDate); 
        $repeatLoop = strtotime($cDate); 
        $dayFromDate = (int)date('j', $repeatLoop); 
        $date_parts = explode('-', $cDate); 
        $date_parts[2] = '01'; 
        $first_of_month = implode('-', $date_parts); 
        $loopDTTime = strtotime($first_of_month); 
        $weekCounter = 0; 
        for ($i = $loopDTTime;$i <= $loopDTTime + ((int)date('t', $repeatLoop)) * 60 * 60 * 24;$i = $i + 60 * 60 * 24) { 
            $cDayName = strtolower(date("l", $i)); 
            $loopDay = (int)date('j', $i); 
            if ($loopDay > $dayFromDate) { 
                break; 
            } 
            if ($dayNameOfTheMonthForStartDate == $cDayName) $weekCounter++; 
        } 
        return $weekCounter; 
    } 
    public function handleRepeatEvents($res, $eventValues, $start_time = '', $end_time = '') { 
        if (!isset($this->eventIndex)) $this->eventIndex = 0; 
        $repeatEvent = false; 
        $myEvents = NULL; 
        if ($end_time == NULL) $end_time = ''; 
        if (!isset($res['repeat_type'])) $res['repeat_type'] = 'none'; 
        if ($res['repeat_type'] != 'none' && !is_null($res['repeat_type'])) { 
            $repeatEvent = true; 
            $repeatParams[$res['id']]['repeat_type'] = isset($res['repeat_type']) ? $res['repeat_type'] : ''; 
            $repeatParams[$res['id']]['repeat_interval'] = isset($res['repeat_interval']) ? $res['repeat_interval'] : ''; 
            $repeatParams[$res['id']]['repeat_count'] = isset($res['repeat_count']) ? $res['repeat_count'] : ''; 
            $repeatParams[$res['id']]['repeat_start_date'] = isset($res['repeat_start_date']) ? $res['repeat_start_date'] : ''; 
            $repeatParams[$res['id']]['repeat_end_on'] = isset($res['repeat_end_on']) ? $res['repeat_end_on'] : ''; 
            $repeatParams[$res['id']]['repeat_end_after'] = isset($res['repeat_end_after']) ? $res['repeat_end_after'] : ''; 
            $repeatParams[$res['id']]['repeat_never'] = isset($res['repeat_never']) ? $res['repeat_never'] : ''; 
            $repeatParams[$res['id']]['repeat_on_sun'] = isset($res['repeat_on_sun']) ? $res['repeat_on_sun'] : ''; 
            $repeatParams[$res['id']]['repeat_on_mon'] = isset($res['repeat_on_mon']) ? $res['repeat_on_mon'] : ''; 
            $repeatParams[$res['id']]['repeat_on_tue'] = isset($res['repeat_on_tue']) ? $res['repeat_on_tue'] : ''; 
            $repeatParams[$res['id']]['repeat_on_wed'] = isset($res['repeat_on_wed']) ? $res['repeat_on_wed'] : ''; 
            $repeatParams[$res['id']]['repeat_on_thu'] = isset($res['repeat_on_thu']) ? $res['repeat_on_thu'] : ''; 
            $repeatParams[$res['id']]['repeat_on_fri'] = isset($res['repeat_on_fri']) ? $res['repeat_on_fri'] : ''; 
            $repeatParams[$res['id']]['repeat_on_sat'] = isset($res['repeat_on_sat']) ? $res['repeat_on_sat'] : ''; 
            $repeatParams[$res['id']]['repeat_deleted_indexes'] = isset($res['repeat_deleted_indexes']) ? $res['repeat_deleted_indexes'] : ''; 
            $repeatStartDate = strtotime($res['repeat_start_date']); 
            $monthlyInterval = 1; 
            $yearlyInterval = 1; 
            $repeatInterval = 1; 
            switch ($res['repeat_type']) { 
                case 'weekly': 
                    $sault = 0; 
                    $repeatInterval = $res['repeat_interval']; 
                    if (@$res['repeat_never'] == 1) { 
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime('+6 year'))); 
                    } else if (@$res['repeat_end_after'] > 0) { 
                        $intervals = $res['repeat_interval'] * $res['repeat_end_after']; 
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime("+$intervals day"))); 
                    } else if (@$res['repeat_end_on'] != '0000-01-01') { 
                        $repeatEndDate = strtotime($res['repeat_end_on']); 
                    } 
                    break; 
                case 'everyTTDay': 
                    if ($res['repeat_type'] == 'everyTTDay') $repeatInterval = $res['repeat_interval']; 
                case 'everyMWFDay': 
                    if ($res['repeat_type'] == 'everyMWFDay') $repeatInterval = $res['repeat_interval']; 
                case 'everyWeekDay': 
                    if ($res['repeat_type'] == 'everyWeekDay') $repeatInterval = $res['repeat_interval']; 
                case 'daily': 
                    if ($res['repeat_type'] == 'daily') $repeatInterval = $res['repeat_interval']; 
                    $sault = 24 * 60 * 60; 
                    if (@$res['repeat_never'] == 1) { 
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime('+6 year'))); 
                    } else if (@$res['repeat_end_after'] > 0) { 
                        $startDate = $repeatParams[$res['id']]['repeat_start_date']; 
                        $startDateRaw = strtotime($startDate); 
                        $intervals = $repeatInterval * $res['repeat_end_after']; 
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime("+10 years"))); 
                    } else if (@$res['repeat_end_on'] != '0000-01-01') { 
                        $repeatEndDate = strtotime($res['repeat_end_on']); 
                        $repeatEndDate = $repeatEndDate - $sault; 
                    } 
                    break; 
                case 'monthly': 
                    $sault = 0; 
                    $repeatInterval = $res['repeat_interval']; 
                    $repeatBy = $res['repeat_by']; 
                    $stdOfMonth = date('j', strtotime($res['repeat_start_date'])); 
                    $stdNameOfMonth = date('D', strtotime($res['repeat_start_date'])); 
                    if ($repeatBy == 'repeat_by_day_of_the_month') { 
                    } else if ($repeatBy == 'repeat_by_day_of_the_week') { 
                        $dayNameOfTheMonthForStartDate = strtolower(date("l", strtotime($res['repeat_start_date']))); 
                        $weekNumberOfMonth = $this->getWeekPositionBasedOnDayInMonth($res['repeat_start_date'], $dayNameOfTheMonthForStartDate); 
                    } 
                    if (@$res['repeat_never'] == 1) { 
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime('+6 year'))); 
                    } else if (@$res['repeat_end_after'] > 0) { 
                        $intervals = $res['repeat_interval'] * $res['repeat_end_after']; 
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime("+$intervals month"))); 
                    } else if (@$res['repeat_end_on'] != '0000-01-01') { 
                        $repeatEndDate = strtotime($res['repeat_end_on']); 
                    } 
                    break; 
                case 'yearly': 
                    $sault = 24 * 60 * 60; 
                    $repeatInterval = $res['repeat_interval']; 
                    if (@$res['repeat_never'] == 1) { 
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime('+6 year'))); 
                    } else if (@$res['repeat_end_after'] > 0) { 
                        $intervals = $res['repeat_interval'] * $res['repeat_end_after']; 
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime("+$intervals year"))); 
                    } else if (@$res['repeat_end_on'] != '0000-01-01') { 
                        $repeatEndDate = strtotime($res['repeat_end_on']); 
                    } 
                    break; 
                } 
            } 
            if ($repeatEvent) { 
                if ($eventValues['end'] == '') $eventDurationDifference = 0; 
                else $eventDurationDifference = strtotime($eventValues['end']) - strtotime($eventValues['start']); 
                $repeatLoop = 0; 
                $repeatCount = 0; 
                if (isset($_SESSION['calendarData']['properties']['start_day'])) $weekStartDayFromSettings = $_SESSION['calendarData']['properties']['start_day']; 
                else $weekStartDayFromSettings = 0; 
                switch ($weekStartDayFromSettings) { 
                    case 0: 
                        $weekStartDay = 'sunday'; 
                    break; 
                    case 1: 
                        $weekStartDay = 'monday'; 
                    break; 
                    case 2: 
                        $weekStartDay = 'tuesday'; 
                    break; 
                    case 3: 
                        $weekStartDay = 'wednesday'; 
                    break; 
                    case 4: 
                        $weekStartDay = 'thursday'; 
                    break; 
                    case 5: 
                        $weekStartDay = 'friday'; 
                    break; 
                    case 6: 
                        $weekStartDay = 'saturday'; 
                    break; 
                } 
                for ($repeatLoop = $repeatStartDate;$repeatLoop <= @$repeatEndDate + $sault;) { 
                    $repeatLoopDay = date('D', $repeatLoop); 
                    $repeatLoopMonth = date('m', $repeatLoop); 
                    $repeatLoopYear = date('Y', $repeatLoop); 
                    $rSTDate = date('Y-m-d', $repeatLoop) . ' ' . $start_time; 
                    $rENDate = date('Y-m-d', $repeatLoop + $eventDurationDifference) . ' ' . $end_time; 
                    switch ($res['repeat_type']) { 
                        case 'weekly': 
                            if (@$res['repeat_on_mon'] == 0 && @$res['repeat_on_tue'] == 0 && @$res['repeat_on_wed'] == 0 && @$res['repeat_on_thu'] == 0 && @$res['repeat_on_fri'] == 0 && @$res['repeat_on_sat'] == 0 && @$res['repeat_on_sun'] == 0) { 
                                break; 
                            } 
                            if (isset($res['repeat_end_after']) && $res['repeat_end_after'] > 0) { 
                                if (isset($res['repeat_end_after']) && $repeatCount > $res['repeat_end_after']) continue; 
                                $weekStart = date('d', strtotime("last $weekStartDay", $repeatLoop)); 
                                $weekStartTime = strtotime(date("Y-m-d", mktime(0, 0, 0, date("m", $repeatLoop), $weekStart, date("Y", $repeatLoop)))); 
                                $weekEnd = strtotime(date('Y-m-d', mktime(0, 0, 0, date("m", $repeatLoop), $weekStart + 6, date("Y", $repeatLoop)))); 
                                $repeatWeekly = $weekStartTime; 
                                for ($repeatCount = 0;$repeatCount < @$res['repeat_end_after'];) { 
                                    $repeatWeekly = $repeatWeekly + 24 * 60 * 60; 
                                    $repeatLoopIntegerDayWeek = date('d', $repeatWeekly); 
                                    $repeatLoopDayWeek = date('D', $repeatWeekly); 
                                    $rSTDateWeek = date('Y-m-d', $repeatWeekly) . ' ' . $start_time; 
                                    $rENDateWeek = date('Y-m-d', $repeatWeekly + $eventDurationDifference) . ' ' . $end_time; 
                                    if ($repeatLoopDayWeek == 'Mon' && @$res['repeat_on_mon'] == 1 || $repeatLoopDayWeek == 'Tue' && @$res['repeat_on_tue'] == 1 || $repeatLoopDayWeek == 'Wed' && @$res['repeat_on_wed'] == 1 || $repeatLoopDayWeek == 'Thu' && @$res['repeat_on_thu'] == 1 || $repeatLoopDayWeek == 'Fri' && @$res['repeat_on_fri'] == 1 || $repeatLoopDayWeek == 'Sat' && @$res['repeat_on_sat'] == 1 || $repeatLoopDayWeek == 'Sun' && @$res['repeat_on_sun'] == 1) { 
                                        $eventValues['start'] = $rSTDateWeek; 
                                        $eventValues['end'] = $rENDateWeek; 
                                        $myEvents[$this->eventIndex] = $eventValues; 
                                        $this->eventIndex++; 
                                        $repeatCount++; 
                                    } 
                                } 
                                $repeatLoop = $repeatLoop + (24 * 60 * 60) * 7 * $repeatInterval; 
                            } else { 
                                if ($repeatLoopDay == 'Mon' && @$res['repeat_on_mon'] == 1 || $repeatLoopDay == 'Tue' && @$res['repeat_on_tue'] == 1 || $repeatLoopDay == 'Wed' && @$res['repeat_on_wed'] == 1 || $repeatLoopDay == 'Thu' && @$res['repeat_on_thu'] == 1 || $repeatLoopDay == 'Fri' && @$res['repeat_on_fri'] == 1 || $repeatLoopDay == 'Sat' && @$res['repeat_on_sat'] == 1 || $repeatLoopDay == 'Sun' && @$res['repeat_on_sun'] == 1) { 
                                    $eventValues['start'] = $rSTDate; 
                                    $eventValues['end'] = $rENDate; 
                                    $myEvents[$this->eventIndex] = $eventValues; 
                                    $this->eventIndex++; 
                                } 
                                $repeatLoop = $repeatLoop + (24 * 60 * 60) * $repeatInterval; 
                            } 
                            break; 
                        case 'daily': 
                            $eventValues['start'] = $rSTDate; 
                            $eventValues['end'] = $rENDate; 
                            $myEvents[$this->eventIndex] = $eventValues; 
                            $this->eventIndex++; 
                            $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * 1; 
                            $repeatCount++; 
                            break; 
                        case 'everyWeekDay': 
                            if ($repeatLoopDay == 'Mon' || $repeatLoopDay == 'Tue' || $repeatLoopDay == 'Wed' || $repeatLoopDay == 'Thu' || $repeatLoopDay == 'Fri') { 
                                $eventValues['start'] = $rSTDate; 
                                $eventValues['end'] = $rENDate; 
                                $myEvents[$this->eventIndex] = $eventValues; 
                                $repeatCount++; 
                                $this->eventIndex++; 
                            } 
                            $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * 1; 
                            break; 
                        case 'everyMWFDay': 
                            if ($repeatLoopDay == 'Mon' || $repeatLoopDay == 'Wed' || $repeatLoopDay == 'Fri') { 
                                $eventValues['start'] = $rSTDate; 
                                $eventValues['end'] = $rENDate; 
                                $myEvents[$this->eventIndex] = $eventValues; 
                                $repeatCount++; 
                                $this->eventIndex++; 
                            } 
                            $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * 1; 
                            break; 
                        case 'everyTTDay': 
                            if ($repeatLoopDay == 'Tue' || $repeatLoopDay == 'Thu') { 
                                $eventValues['start'] = $rSTDate; 
                                $eventValues['end'] = $rENDate; 
                                $myEvents[$this->eventIndex] = $eventValues; 
                                $repeatCount++; 
                                $this->eventIndex++; 
                            } 
                            $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * 1; 
                            break; 
                        case 'monthly': 
                            $totalDaysInTheMonth = (int)date('t', $repeatLoop); 
                            if ($repeatBy == 'repeat_by_day_of_the_month') { 
                                if ((int)$stdOfMonth <= $totalDaysInTheMonth) { 
                                    $rSTDateMonth = date("Y-m-d", mktime(0, 0, 0, date("m", $repeatLoop), $stdOfMonth, date("Y", $repeatLoop))) . ' ' . $start_time; 
                                    $rENDateMonth = date("Y-m-d", mktime(0, 0, 0, date("m", $repeatLoop), $stdOfMonth, date("Y", $repeatLoop))) . ' ' . $end_time; 
                                    $eventValues['start'] = $rSTDateMonth; 
                                    $eventValues['end'] = $rENDateMonth; 
                                    $myEvents[$this->eventIndex] = $eventValues; 
                                    $this->eventIndex++; 
                                    $repeatCount++; 
                                } 
                                $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * $totalDaysInTheMonth; 
                            } else if ($repeatBy == 'repeat_by_day_of_the_week') { 
                                $dayNameOfTheMonthForStartDate = strtolower($dayNameOfTheMonthForStartDate); 
                                $cDate = date('Y-m-d', $repeatLoop); 
                                $date_parts = explode('-', $cDate); 
                                $date_parts[2] = '01'; 
                                $first_of_month = implode('-', $date_parts); 
                                $loopDTTime = strtotime($first_of_month); 
                                $weekCounter = 0; 
                                for ($i = $loopDTTime;$i <= $loopDTTime + ((int)date('t', $repeatLoop)) * 60 * 60 * 24;$i = $i + 60 * 60 * 24) { 
                                    $cDayName = strtolower(date("l", $i)); 
                                    if ($dayNameOfTheMonthForStartDate == $cDayName) $weekCounter++; 
                                    if ($weekCounter == $weekNumberOfMonth) { 
                                        $rSTDateMonth = date("Y-m-d", mktime(0, 0, 0, date("m", $i), date("d", $i), date("Y", $repeatLoop))) . ' ' . $start_time; 
                                        $rENDateMonth = date("Y-m-d", mktime(0, 0, 0, date("m", $i), date("d", $i), date("Y", $repeatLoop))) . ' ' . $end_time; 
                                        break; 
                                    } 
                                } 
                                $eventValues['start'] = $rSTDateMonth; 
                                $eventValues['end'] = $rENDateMonth; 
                                $myEvents[$this->eventIndex] = $eventValues; 
                                $this->eventIndex++; 
                                $repeatCount++; 
                                $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * $totalDaysInTheMonth; 
                            } 
                            break; 
                        case 'yearly': 
                            $eventValues['start'] = $rSTDate; 
                            $eventValues['end'] = $rENDate; 
                            $myEvents[$this->eventIndex] = $eventValues; 
                            $this->eventIndex++; 
                            $repeatCount++; 
                            $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * 365; 
                            break; 
                        default: 
                            $repeatLoop = $repeatLoop + ($sault); 
                        } 
                        if (isset($res['repeat_end_after']) && $res['repeat_end_after'] > 0) { 
                            if ($repeatCount == $res['repeat_end_after']) break; 
                        } 
                    } 
                } 
                return $myEvents; 
            } 
            public function prepareEventsForCalendarToShow($events) { 
                if ($this->dbObj->num_rows($events) <= 0) return NULL; 
                $myEvents = false; 
                $repeatParams = NULL; 
                $this->eventIndex = 0; 
                while ($res = $this->dbObj->fetch_array_assoc($events)) { 
                    $id = $res['id']; 
                    $title = stripslashes($res['title']); 
                    $url = $res['url']; 
                    $location = stripslashes($res['location']); 
                    $image = stripslashes($res['image']); 
                    $start_date = $res['start_date']; 
                    $start_time = $res['start_time']; 
                    $start_timestamp = $res['start_timestamp']; 
                    $start = $start_date . ' ' . $start_time; 
                    $end = ''; 
                    if ($res['end_date'] != NULL) { 
                        $end_date = $res['end_date']; 
                        $end_time = $res['end_time']; 
                        $end_timestamp = $res['end_timestamp']; 
                        $end = $end_date . ' ' . $end_time; 
                    } 
                    $url = $res['url']; 
                    $borderColor = $res['borderColor']; 
                    $textColor = $res['textColor']; 
                    $backgroundColor = $res['backgroundColor']; 
                    $allDay = isset($res['allDay']) ? $res['allDay'] : ''; 
                    $desc = stripslashes($res['description']); 
                    $eventValues = array('id' => $id, 'title' => $title, 'location' => $location, 'image' => $image, 'start' => '', 'end' => '', 'borderColor' => $borderColor, 'textColor' => $textColor, 'backgroundColor' => $backgroundColor, 'allDay' => $allDay, 'description' => $desc); 
                    if (!isset($end_time) || is_null($end_time)) $end_time = ''; 
                    $repeatEvents = $this->handleRepeatEvents($res, $eventValues, $start_time, $end_time); 
                    $eventValues['start'] = $start; 
                    $eventValues['end'] = $end; 
                    if (is_null($repeatEvents)) $myEvents[$this->eventIndex] = $eventValues; 
                    else $myEvents[$this->eventIndex] = array(); 
                    if (!is_null($repeatEvents)) { 
                        if (count($myEvents[$this->eventIndex]) <= 0) unset($myEvents[$this->eventIndex]); 
                        $myEvents = array_merge($myEvents, $repeatEvents); 
                    } 
                    $this->eventIndex++; 
                } 
                function fixem($a, $b) { 
                    if ($a["start"] == $b["start"]) { 
                        return 0; 
                    } 
                    return ($a["start"] < $b["start"]) ? -1 : 1; 
                } 
                usort($myEvents, "fixem"); 
                $this->myEvents = $myEvents; 
            } 
            public function saveEvent($params = array()) { 
                return ($this->db->AutoExecute('pec_events', $params, 'INSERT') && isset($this->db->_connectionID->insert_id)) ? $this->db->_connectionID->insert_id : $this->db->Insert_ID(); 
            } 
            public function editEvent($params = array(), $id) { 
                return ($this->db->AutoExecute('pec_events', $params, 'UPDATE', "id=$id")) ? $id : false; 
            } 
            public static function removeEvent($eventID) { 
                if (!isset($_SESSION['userData'])) return false; 
                $dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET); 
                $db = $dbObj->db; 
                $sql = "DELETE FROM `pec_events` WHERE `id`=$eventID"; 
                return $isDelete = $dbObj->db_query($sql); 
            } 
            public static function findExternalURLForCalendars($calIds = '') { 
                if (!isset($_SESSION['userData'])) return false; 
                $dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET); 
                $db = $dbObj->db; 
                $activeExternalURLForCalendars = false; 
                if ($calIds == '' || (int)$calIds == 0 || $calIds[0] == '') $sql = "SELECT `id`,`type`,`description`,`color` FROM `pec_calendars` WHERE `type` = 'url'"; 
                else { 
                    $calIds = implode(',', $calIds); 
                    $sql = "SELECT `id`,`type`,`description`,`color` FROM `pec_calendars` WHERE `id` IN ($calIds) AND `type` = 'url'"; 
                } 
                $activeExternalURLForCalendarsData = $dbObj->db_query($sql); 
                if ($dbObj->num_rows($activeExternalURLForCalendarsData) > 0) { 
                    $activeExternalURLForCalendars = $activeExternalURLForCalendarsData; 
                } else $activeExternalURLForCalendars = false; 
                return $activeExternalURLForCalendars; 
            } 
        } 
?>

Did this file decode correctly?

Original Code

<?php function IhhUZgPkuiPgODHtsTtt($XZUvhntnJp) {
    $r = base64_decode("Z3ppbmZsYXRlKGJhc2U2NF9kZWNvZGUoJFhaVXZobnRuSnApKQ==");
    return eval("return $r;");
} ?><?php function IhhUZgPkuiPgODHtsTtt($XZUvhntnJp) {
    $r = base64_decode("Z3ppbmZsYXRlKGJhc2U2NF9kZWNvZGUoJFhaVXZobnRuSnApKQ==");
    return eval("return $r;");
}
eval('?>' . IhhUZgPkuiPgODHtsTtt('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') . '<?php '); ?><?php ?><?php
class C_Events extends C_Calendar {
    public $id;
    public $title;
    public $allDay;
    public $start;
    public $start_date;
    public $start_time;
    public $start_timestamp;
    public $end_date;
    public $end_time;
    public $end_timestamp;
    public $end;
    public $url;
    public $className;
    public $editable;
    public $startEditable;
    public $durationEditable;
    public $source;
    public $color;
    public $backgroundColor;
    public $borderColor;
    public $textColor;
    public $description;
    public $free_busy;
    public $location;
    public $privacy;
    public $image;
    public $reminder_type;
    public $repeat_start_date;
    public $repeat_end_on;
    public $repeat_end_after;
    public $repeat_never;
    public $repeat_by;
    public $reminder_time;
    public $reminder_time_unit;
    public $repeat;
    public $repeat_type;
    public $repeat_on_sun;
    public $repeat_on_mon;
    public $repeat_on_tue;
    public $repeat_on_wed;
    public $repeat_on_thu;
    public $repeat_on_fri;
    public $repeat_on_sat;
    public $repeat_interval;
    public $calendar_selected;
    public $errorNo;
    public $errMsg = false;
    public $errMsgList = array(0 => 'Required params are missing', 1 => 'DB Error', 2 => 'Method Not Found');
    public $db;
    public $dbObj;
    public $myEvents;
    protected $eventIndex;
    protected $loadEventsOnPageLoad = false;
    public function __construct($calendarID = 0, $title, $start = '', $end = '', $url = '', $allDay = '', $className = '', $editable = '', $startEditable = '', $durationEditable = '', $source = '', $color = '', $backgroundColor = '', $borderColor = '', $textColor = '', $description = '', $free_busy = 'free', $location = '', $privacy = 'public', $repeat_start_date = '', $repeat_end_on = '', $repeat_end_after = '', $repeat_never = '', $repeat_by = '', $repeat_type = 'none', $repeat_interval = '', $repeat_on_sun = 0, $repeat_on_mon = 0, $repeat_on_tue = 0, $repeat_on_wed = 0, $repeat_on_thu = 0, $repeat_on_fri = 0, $repeat_on_sat = 0, $image = '') {
        if ($title == 'LOAD_MY_EVENTS') {
            if ($calendarID == 0) $this->loadEventsOnPageLoad = true;
            $this->dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET);
            $this->db = $this->dbObj->db;
            if ($calendarID > 0) $calID = $calendarID;
            else if (isset($_SESSION['userData']['active_calendar_id'])) $calID = $_SESSION['userData']['active_calendar_id'];
            else $calID = 0;
            return $allEvents = $this->loadAllEvents($calID);
        }
        if ($title == 'LOAD_MY_EVENTS_BASED_SEARCH_KEY') {
            $this->dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET);
            $this->db = $this->dbObj->db;
            $calID = 0;
            $searchKey = $calendarID;
            return $allEvents = $this->loadAllEvents($calID, $searchKey);
        }
        if ($title == 'LOAD_PUBLIC_EVENTS') {
            if ($calendarID == 0) $this->loadEventsOnPageLoad = true;
            $this->dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET);
            $this->db = $this->dbObj->db;
            if ($calendarID > 0) $calID = $calendarID;
            else if (isset($_SESSION['userData']['active_calendar_id'])) $calID = $_SESSION['userData']['active_calendar_id'];
            else $calID = 0;
            return $allEvents = $this->loadAllPublicEvents($calID);
        }
        if ($title == 'LOAD_GUEST_EVENTS') {
            if ($calendarID == 0) $this->loadEventsOnPageLoad = true;
            $this->dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET);
            $this->db = $this->dbObj->db;
            if ($calendarID > 0) $calID = $calendarID;
            return $allEvents = $this->loadAllPublicEvents($calID);
        }
        if ($title == 'GENERAL_PURPOSE') {
            $this->dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET);
            $this->db = $this->dbObj->db;
            return NULL;
        } else {
            if ($title == '' || $start == '') {
                $this->errorNo = 0;
                $this->errMsg = $this->errMsgList[$this->errorNo];
                return false;
            } else $this->errMsg = false;
            $this->title = $title;
            $this->calendar_selected = false;
            $this->start = $start;
            $this->start_timestamp = strtotime($start);
            $this->start_date = date('Y-m-d', $this->start_timestamp);
            $this->start_time = date('H:i', $this->start_timestamp);
            $this->end = $end;
            $this->end_timestamp = strtotime($end);
            $this->end_date = date('Y-m-d', $this->end_timestamp);
            $this->end_time = date('H:i', $this->end_timestamp);
            $this->url = $url;
            $this->allDay = $allDay;
            $this->className = $className;
            $this->editable = $editable;
            $this->startEditable = $startEditable;
            $this->durationEditable = $durationEditable;
            $this->source = $source;
            $this->color = $color;
            $this->backgroundColor = $backgroundColor;
            $this->borderColor = $borderColor;
            $this->textColor = $textColor;
            $this->description = $description;
            $this->description = $description;
            $this->free_busy = $free_busy;
            $this->location = $location;
            $this->privacy = $privacy;
            $this->image = $image;
            $this->repeat_start_date = $repeat_start_date;
            $this->repeat_end_on = $repeat_end_on;
            $this->repeat_end_after = $repeat_end_after;
            $this->repeat_never = $repeat_never;
            $this->repeat_by = $repeat_by;
            $this->repeat_on_sun = $repeat_on_sun;
            $this->repeat_on_mon = $repeat_on_mon;
            $this->repeat_on_tue = $repeat_on_tue;
            $this->repeat_on_wed = $repeat_on_wed;
            $this->repeat_on_thu = $repeat_on_thu;
            $this->repeat_on_fri = $repeat_on_fri;
            $this->repeat_on_sat = $repeat_on_sat;
            $this->repeat_type = $repeat_type;
            $this->repeat_interval = $repeat_interval;
            $this->dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET);
            $this->db = $this->dbObj->db;
        }
        return true;
    }
    public static function loadSingleEventData($eventID) {
        $dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET);
        $db = $dbObj->db;
        $sql = "SELECT * FROM  `pec_events` WHERE `id`=$eventID";
        $eventData = $dbObj->db_query($sql);
        if ($dbObj->num_rows($eventData) > 0) {
            return $dbObj->fetch_array($eventData);
        } else return NULL;
    }
    public function loadAllEvents($calID = 0, $searchKey = '') {
        $userID = $_SESSION['userData']['id'];
        $sql = "SELECT `pe`.* FROM  `pec_events` as `pe` LEFT JOIN `pec_calendars` `pc` ON (`pe`.`cal_id` = `pc`.`id`) WHERE `pc`.`user_id`=$userID";
        if (!is_array($calID) && $calID > 0) $sql.= " AND `pe`.`cal_id` IN ($calID)";
        else if (is_array($calID)) {
            $calIDs = implode(',', $calID);
            if ($calIDs == '') $sql.= "";
            else $sql.= " AND `pe`.`cal_id` IN ($calIDs)";
        }
        if (isset($searchKey) && $searchKey != '') {
            $sql.= " AND `pe`.`title` LIKE '%$searchKey%' ";
        }
        $sql.= " ORDER BY `pe`.`start_date` ASC";
        $allEvents = $this->dbObj->db_query($sql);
        if ($this->dbObj->num_rows($allEvents) > 0) {
            return $this->prepareEventsForCalendarToShow($allEvents);
        } else return NULL;
    }
    public function loadAllPublicEvents($calID = 0) {
        $calIDStr = '';
        if ($calID > 0 && is_array($calID)) $calIDStr = implode(',', $calID);
        $sql = "SELECT `pe`.* FROM  `pec_events` as `pe` LEFT JOIN `pec_calendars` `pc` ON (`pe`.`cal_id` = `pc`.`id`) WHERE ( `pe`.`privacy` = 'public' OR `pc`.`public` = 1 ) ";
        if ($calIDStr != '') $sql.= " AND `pc`.`id` IN ($calIDStr) ";
        $sql.= " ORDER BY `pe`.`start_date` ASC";
        $allEvents = $this->dbObj->db_query($sql);
        if ($this->dbObj->num_rows($allEvents) > 0) {
            return $this->prepareEventsForCalendarToShow($allEvents);
        } else return NULL;
    }
    public function getWeekPositionInMonth($date, $rollover) {
        switch ($rollover) {
            case 0:
                $rollover = 'sunday';
            break;
            case 1:
                $rollover = 'monday';
            break;
            case 2:
                $rollover = 'tuesday';
            break;
            case 3:
                $rollover = 'wednesday';
            break;
            case 4:
                $rollover = 'thursday';
            break;
            case 5:
                $rollover = 'friday';
            break;
            case 6:
                $rollover = 'saturday';
            break;
            default:
                $rollover = 'monday';
            break;
        }
        $cut = substr($date, 0, 8);
        $daylen = 86400;
        $timestamp = strtotime($date);
        $first = strtotime($cut . "00");
        $elapsed = round(($timestamp - $first) / $daylen);
        $i = 1;
        $weeks = 1;
        for ($i;$i <= $elapsed;$i++) {
            $dayfind = $cut . (strlen($i) < 2 ? '0' . $i : $i);
            $daytimestamp = strtotime($dayfind);
            $day = strtolower(date("l", $daytimestamp));
            if ($day == strtolower($rollover)) $weeks++;
        }
        $date_parts = explode('-', $date);
        $date_parts[2] = '01';
        $first_of_month = implode('-', $date_parts);
        $day_first_of_month = strtolower(date("l", strtotime($first_of_month)));
        if ($day_first_of_month == strtolower($rollover)) $weeks = $weeks - 1;
        return $weeks;
    }
    public function getWeekPositionBasedOnDayInMonth($cDate, $dayNameOfTheMonthForStartDate) {
        $dayNameOfTheMonthForStartDate = strtolower($dayNameOfTheMonthForStartDate);
        $repeatLoop = strtotime($cDate);
        $dayFromDate = (int)date('j', $repeatLoop);
        $date_parts = explode('-', $cDate);
        $date_parts[2] = '01';
        $first_of_month = implode('-', $date_parts);
        $loopDTTime = strtotime($first_of_month);
        $weekCounter = 0;
        for ($i = $loopDTTime;$i <= $loopDTTime + ((int)date('t', $repeatLoop)) * 60 * 60 * 24;$i = $i + 60 * 60 * 24) {
            $cDayName = strtolower(date("l", $i));
            $loopDay = (int)date('j', $i);
            if ($loopDay > $dayFromDate) {
                break;
            }
            if ($dayNameOfTheMonthForStartDate == $cDayName) $weekCounter++;
        }
        return $weekCounter;
    }
    public function handleRepeatEvents($res, $eventValues, $start_time = '', $end_time = '') {
        if (!isset($this->eventIndex)) $this->eventIndex = 0;
        $repeatEvent = false;
        $myEvents = NULL;
        if ($end_time == NULL) $end_time = '';
        if (!isset($res['repeat_type'])) $res['repeat_type'] = 'none';
        if ($res['repeat_type'] != 'none' && !is_null($res['repeat_type'])) {
            $repeatEvent = true;
            $repeatParams[$res['id']]['repeat_type'] = isset($res['repeat_type']) ? $res['repeat_type'] : '';
            $repeatParams[$res['id']]['repeat_interval'] = isset($res['repeat_interval']) ? $res['repeat_interval'] : '';
            $repeatParams[$res['id']]['repeat_count'] = isset($res['repeat_count']) ? $res['repeat_count'] : '';
            $repeatParams[$res['id']]['repeat_start_date'] = isset($res['repeat_start_date']) ? $res['repeat_start_date'] : '';
            $repeatParams[$res['id']]['repeat_end_on'] = isset($res['repeat_end_on']) ? $res['repeat_end_on'] : '';
            $repeatParams[$res['id']]['repeat_end_after'] = isset($res['repeat_end_after']) ? $res['repeat_end_after'] : '';
            $repeatParams[$res['id']]['repeat_never'] = isset($res['repeat_never']) ? $res['repeat_never'] : '';
            $repeatParams[$res['id']]['repeat_on_sun'] = isset($res['repeat_on_sun']) ? $res['repeat_on_sun'] : '';
            $repeatParams[$res['id']]['repeat_on_mon'] = isset($res['repeat_on_mon']) ? $res['repeat_on_mon'] : '';
            $repeatParams[$res['id']]['repeat_on_tue'] = isset($res['repeat_on_tue']) ? $res['repeat_on_tue'] : '';
            $repeatParams[$res['id']]['repeat_on_wed'] = isset($res['repeat_on_wed']) ? $res['repeat_on_wed'] : '';
            $repeatParams[$res['id']]['repeat_on_thu'] = isset($res['repeat_on_thu']) ? $res['repeat_on_thu'] : '';
            $repeatParams[$res['id']]['repeat_on_fri'] = isset($res['repeat_on_fri']) ? $res['repeat_on_fri'] : '';
            $repeatParams[$res['id']]['repeat_on_sat'] = isset($res['repeat_on_sat']) ? $res['repeat_on_sat'] : '';
            $repeatParams[$res['id']]['repeat_deleted_indexes'] = isset($res['repeat_deleted_indexes']) ? $res['repeat_deleted_indexes'] : '';
            $repeatStartDate = strtotime($res['repeat_start_date']);
            $monthlyInterval = 1;
            $yearlyInterval = 1;
            $repeatInterval = 1;
            switch ($res['repeat_type']) {
                case 'weekly':
                    $sault = 0;
                    $repeatInterval = $res['repeat_interval'];
                    if (@$res['repeat_never'] == 1) {
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime('+6 year')));
                    } else if (@$res['repeat_end_after'] > 0) {
                        $intervals = $res['repeat_interval'] * $res['repeat_end_after'];
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime("+$intervals day")));
                    } else if (@$res['repeat_end_on'] != '0000-01-01') {
                        $repeatEndDate = strtotime($res['repeat_end_on']);
                    }
                    break;
                case 'everyTTDay':
                    if ($res['repeat_type'] == 'everyTTDay') $repeatInterval = $res['repeat_interval'];
                case 'everyMWFDay':
                    if ($res['repeat_type'] == 'everyMWFDay') $repeatInterval = $res['repeat_interval'];
                case 'everyWeekDay':
                    if ($res['repeat_type'] == 'everyWeekDay') $repeatInterval = $res['repeat_interval'];
                case 'daily':
                    if ($res['repeat_type'] == 'daily') $repeatInterval = $res['repeat_interval'];
                    $sault = 24 * 60 * 60;
                    if (@$res['repeat_never'] == 1) {
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime('+6 year')));
                    } else if (@$res['repeat_end_after'] > 0) {
                        $startDate = $repeatParams[$res['id']]['repeat_start_date'];
                        $startDateRaw = strtotime($startDate);
                        $intervals = $repeatInterval * $res['repeat_end_after'];
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime("+10 years")));
                    } else if (@$res['repeat_end_on'] != '0000-01-01') {
                        $repeatEndDate = strtotime($res['repeat_end_on']);
                        $repeatEndDate = $repeatEndDate - $sault;
                    }
                    break;
                case 'monthly':
                    $sault = 0;
                    $repeatInterval = $res['repeat_interval'];
                    $repeatBy = $res['repeat_by'];
                    $stdOfMonth = date('j', strtotime($res['repeat_start_date']));
                    $stdNameOfMonth = date('D', strtotime($res['repeat_start_date']));
                    if ($repeatBy == 'repeat_by_day_of_the_month') {
                    } else if ($repeatBy == 'repeat_by_day_of_the_week') {
                        $dayNameOfTheMonthForStartDate = strtolower(date("l", strtotime($res['repeat_start_date'])));
                        $weekNumberOfMonth = $this->getWeekPositionBasedOnDayInMonth($res['repeat_start_date'], $dayNameOfTheMonthForStartDate);
                    }
                    if (@$res['repeat_never'] == 1) {
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime('+6 year')));
                    } else if (@$res['repeat_end_after'] > 0) {
                        $intervals = $res['repeat_interval'] * $res['repeat_end_after'];
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime("+$intervals month")));
                    } else if (@$res['repeat_end_on'] != '0000-01-01') {
                        $repeatEndDate = strtotime($res['repeat_end_on']);
                    }
                    break;
                case 'yearly':
                    $sault = 24 * 60 * 60;
                    $repeatInterval = $res['repeat_interval'];
                    if (@$res['repeat_never'] == 1) {
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime('+6 year')));
                    } else if (@$res['repeat_end_after'] > 0) {
                        $intervals = $res['repeat_interval'] * $res['repeat_end_after'];
                        $repeatEndDate = strtotime(date('Y-m-d', strtotime("+$intervals year")));
                    } else if (@$res['repeat_end_on'] != '0000-01-01') {
                        $repeatEndDate = strtotime($res['repeat_end_on']);
                    }
                    break;
                }
            }
            if ($repeatEvent) {
                if ($eventValues['end'] == '') $eventDurationDifference = 0;
                else $eventDurationDifference = strtotime($eventValues['end']) - strtotime($eventValues['start']);
                $repeatLoop = 0;
                $repeatCount = 0;
                if (isset($_SESSION['calendarData']['properties']['start_day'])) $weekStartDayFromSettings = $_SESSION['calendarData']['properties']['start_day'];
                else $weekStartDayFromSettings = 0;
                switch ($weekStartDayFromSettings) {
                    case 0:
                        $weekStartDay = 'sunday';
                    break;
                    case 1:
                        $weekStartDay = 'monday';
                    break;
                    case 2:
                        $weekStartDay = 'tuesday';
                    break;
                    case 3:
                        $weekStartDay = 'wednesday';
                    break;
                    case 4:
                        $weekStartDay = 'thursday';
                    break;
                    case 5:
                        $weekStartDay = 'friday';
                    break;
                    case 6:
                        $weekStartDay = 'saturday';
                    break;
                }
                for ($repeatLoop = $repeatStartDate;$repeatLoop <= @$repeatEndDate + $sault;) {
                    $repeatLoopDay = date('D', $repeatLoop);
                    $repeatLoopMonth = date('m', $repeatLoop);
                    $repeatLoopYear = date('Y', $repeatLoop);
                    $rSTDate = date('Y-m-d', $repeatLoop) . ' ' . $start_time;
                    $rENDate = date('Y-m-d', $repeatLoop + $eventDurationDifference) . ' ' . $end_time;
                    switch ($res['repeat_type']) {
                        case 'weekly':
                            if (@$res['repeat_on_mon'] == 0 && @$res['repeat_on_tue'] == 0 && @$res['repeat_on_wed'] == 0 && @$res['repeat_on_thu'] == 0 && @$res['repeat_on_fri'] == 0 && @$res['repeat_on_sat'] == 0 && @$res['repeat_on_sun'] == 0) {
                                break;
                            }
                            if (isset($res['repeat_end_after']) && $res['repeat_end_after'] > 0) {
                                if (isset($res['repeat_end_after']) && $repeatCount > $res['repeat_end_after']) continue;
                                $weekStart = date('d', strtotime("last $weekStartDay", $repeatLoop));
                                $weekStartTime = strtotime(date("Y-m-d", mktime(0, 0, 0, date("m", $repeatLoop), $weekStart, date("Y", $repeatLoop))));
                                $weekEnd = strtotime(date('Y-m-d', mktime(0, 0, 0, date("m", $repeatLoop), $weekStart + 6, date("Y", $repeatLoop))));
                                $repeatWeekly = $weekStartTime;
                                for ($repeatCount = 0;$repeatCount < @$res['repeat_end_after'];) {
                                    $repeatWeekly = $repeatWeekly + 24 * 60 * 60;
                                    $repeatLoopIntegerDayWeek = date('d', $repeatWeekly);
                                    $repeatLoopDayWeek = date('D', $repeatWeekly);
                                    $rSTDateWeek = date('Y-m-d', $repeatWeekly) . ' ' . $start_time;
                                    $rENDateWeek = date('Y-m-d', $repeatWeekly + $eventDurationDifference) . ' ' . $end_time;
                                    if ($repeatLoopDayWeek == 'Mon' && @$res['repeat_on_mon'] == 1 || $repeatLoopDayWeek == 'Tue' && @$res['repeat_on_tue'] == 1 || $repeatLoopDayWeek == 'Wed' && @$res['repeat_on_wed'] == 1 || $repeatLoopDayWeek == 'Thu' && @$res['repeat_on_thu'] == 1 || $repeatLoopDayWeek == 'Fri' && @$res['repeat_on_fri'] == 1 || $repeatLoopDayWeek == 'Sat' && @$res['repeat_on_sat'] == 1 || $repeatLoopDayWeek == 'Sun' && @$res['repeat_on_sun'] == 1) {
                                        $eventValues['start'] = $rSTDateWeek;
                                        $eventValues['end'] = $rENDateWeek;
                                        $myEvents[$this->eventIndex] = $eventValues;
                                        $this->eventIndex++;
                                        $repeatCount++;
                                    }
                                }
                                $repeatLoop = $repeatLoop + (24 * 60 * 60) * 7 * $repeatInterval;
                            } else {
                                if ($repeatLoopDay == 'Mon' && @$res['repeat_on_mon'] == 1 || $repeatLoopDay == 'Tue' && @$res['repeat_on_tue'] == 1 || $repeatLoopDay == 'Wed' && @$res['repeat_on_wed'] == 1 || $repeatLoopDay == 'Thu' && @$res['repeat_on_thu'] == 1 || $repeatLoopDay == 'Fri' && @$res['repeat_on_fri'] == 1 || $repeatLoopDay == 'Sat' && @$res['repeat_on_sat'] == 1 || $repeatLoopDay == 'Sun' && @$res['repeat_on_sun'] == 1) {
                                    $eventValues['start'] = $rSTDate;
                                    $eventValues['end'] = $rENDate;
                                    $myEvents[$this->eventIndex] = $eventValues;
                                    $this->eventIndex++;
                                }
                                $repeatLoop = $repeatLoop + (24 * 60 * 60) * $repeatInterval;
                            }
                            break;
                        case 'daily':
                            $eventValues['start'] = $rSTDate;
                            $eventValues['end'] = $rENDate;
                            $myEvents[$this->eventIndex] = $eventValues;
                            $this->eventIndex++;
                            $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * 1;
                            $repeatCount++;
                            break;
                        case 'everyWeekDay':
                            if ($repeatLoopDay == 'Mon' || $repeatLoopDay == 'Tue' || $repeatLoopDay == 'Wed' || $repeatLoopDay == 'Thu' || $repeatLoopDay == 'Fri') {
                                $eventValues['start'] = $rSTDate;
                                $eventValues['end'] = $rENDate;
                                $myEvents[$this->eventIndex] = $eventValues;
                                $repeatCount++;
                                $this->eventIndex++;
                            }
                            $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * 1;
                            break;
                        case 'everyMWFDay':
                            if ($repeatLoopDay == 'Mon' || $repeatLoopDay == 'Wed' || $repeatLoopDay == 'Fri') {
                                $eventValues['start'] = $rSTDate;
                                $eventValues['end'] = $rENDate;
                                $myEvents[$this->eventIndex] = $eventValues;
                                $repeatCount++;
                                $this->eventIndex++;
                            }
                            $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * 1;
                            break;
                        case 'everyTTDay':
                            if ($repeatLoopDay == 'Tue' || $repeatLoopDay == 'Thu') {
                                $eventValues['start'] = $rSTDate;
                                $eventValues['end'] = $rENDate;
                                $myEvents[$this->eventIndex] = $eventValues;
                                $repeatCount++;
                                $this->eventIndex++;
                            }
                            $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * 1;
                            break;
                        case 'monthly':
                            $totalDaysInTheMonth = (int)date('t', $repeatLoop);
                            if ($repeatBy == 'repeat_by_day_of_the_month') {
                                if ((int)$stdOfMonth <= $totalDaysInTheMonth) {
                                    $rSTDateMonth = date("Y-m-d", mktime(0, 0, 0, date("m", $repeatLoop), $stdOfMonth, date("Y", $repeatLoop))) . ' ' . $start_time;
                                    $rENDateMonth = date("Y-m-d", mktime(0, 0, 0, date("m", $repeatLoop), $stdOfMonth, date("Y", $repeatLoop))) . ' ' . $end_time;
                                    $eventValues['start'] = $rSTDateMonth;
                                    $eventValues['end'] = $rENDateMonth;
                                    $myEvents[$this->eventIndex] = $eventValues;
                                    $this->eventIndex++;
                                    $repeatCount++;
                                }
                                $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * $totalDaysInTheMonth;
                            } else if ($repeatBy == 'repeat_by_day_of_the_week') {
                                $dayNameOfTheMonthForStartDate = strtolower($dayNameOfTheMonthForStartDate);
                                $cDate = date('Y-m-d', $repeatLoop);
                                $date_parts = explode('-', $cDate);
                                $date_parts[2] = '01';
                                $first_of_month = implode('-', $date_parts);
                                $loopDTTime = strtotime($first_of_month);
                                $weekCounter = 0;
                                for ($i = $loopDTTime;$i <= $loopDTTime + ((int)date('t', $repeatLoop)) * 60 * 60 * 24;$i = $i + 60 * 60 * 24) {
                                    $cDayName = strtolower(date("l", $i));
                                    if ($dayNameOfTheMonthForStartDate == $cDayName) $weekCounter++;
                                    if ($weekCounter == $weekNumberOfMonth) {
                                        $rSTDateMonth = date("Y-m-d", mktime(0, 0, 0, date("m", $i), date("d", $i), date("Y", $repeatLoop))) . ' ' . $start_time;
                                        $rENDateMonth = date("Y-m-d", mktime(0, 0, 0, date("m", $i), date("d", $i), date("Y", $repeatLoop))) . ' ' . $end_time;
                                        break;
                                    }
                                }
                                $eventValues['start'] = $rSTDateMonth;
                                $eventValues['end'] = $rENDateMonth;
                                $myEvents[$this->eventIndex] = $eventValues;
                                $this->eventIndex++;
                                $repeatCount++;
                                $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * $totalDaysInTheMonth;
                            }
                            break;
                        case 'yearly':
                            $eventValues['start'] = $rSTDate;
                            $eventValues['end'] = $rENDate;
                            $myEvents[$this->eventIndex] = $eventValues;
                            $this->eventIndex++;
                            $repeatCount++;
                            $repeatLoop = $repeatLoop + $repeatInterval * (24 * 60 * 60) * 365;
                            break;
                        default:
                            $repeatLoop = $repeatLoop + ($sault);
                        }
                        if (isset($res['repeat_end_after']) && $res['repeat_end_after'] > 0) {
                            if ($repeatCount == $res['repeat_end_after']) break;
                        }
                    }
                }
                return $myEvents;
            }
            public function prepareEventsForCalendarToShow($events) {
                if ($this->dbObj->num_rows($events) <= 0) return NULL;
                $myEvents = false;
                $repeatParams = NULL;
                $this->eventIndex = 0;
                while ($res = $this->dbObj->fetch_array_assoc($events)) {
                    $id = $res['id'];
                    $title = stripslashes($res['title']);
                    $url = $res['url'];
                    $location = stripslashes($res['location']);
                    $image = stripslashes($res['image']);
                    $start_date = $res['start_date'];
                    $start_time = $res['start_time'];
                    $start_timestamp = $res['start_timestamp'];
                    $start = $start_date . ' ' . $start_time;
                    $end = '';
                    if ($res['end_date'] != NULL) {
                        $end_date = $res['end_date'];
                        $end_time = $res['end_time'];
                        $end_timestamp = $res['end_timestamp'];
                        $end = $end_date . ' ' . $end_time;
                    }
                    $url = $res['url'];
                    $borderColor = $res['borderColor'];
                    $textColor = $res['textColor'];
                    $backgroundColor = $res['backgroundColor'];
                    $allDay = isset($res['allDay']) ? $res['allDay'] : '';
                    $desc = stripslashes($res['description']);
                    $eventValues = array('id' => $id, 'title' => $title, 'location' => $location, 'image' => $image, 'start' => '', 'end' => '', 'borderColor' => $borderColor, 'textColor' => $textColor, 'backgroundColor' => $backgroundColor, 'allDay' => $allDay, 'description' => $desc);
                    if (!isset($end_time) || is_null($end_time)) $end_time = '';
                    $repeatEvents = $this->handleRepeatEvents($res, $eventValues, $start_time, $end_time);
                    $eventValues['start'] = $start;
                    $eventValues['end'] = $end;
                    if (is_null($repeatEvents)) $myEvents[$this->eventIndex] = $eventValues;
                    else $myEvents[$this->eventIndex] = array();
                    if (!is_null($repeatEvents)) {
                        if (count($myEvents[$this->eventIndex]) <= 0) unset($myEvents[$this->eventIndex]);
                        $myEvents = array_merge($myEvents, $repeatEvents);
                    }
                    $this->eventIndex++;
                }
                function fixem($a, $b) {
                    if ($a["start"] == $b["start"]) {
                        return 0;
                    }
                    return ($a["start"] < $b["start"]) ? -1 : 1;
                }
                usort($myEvents, "fixem");
                $this->myEvents = $myEvents;
            }
            public function saveEvent($params = array()) {
                return ($this->db->AutoExecute('pec_events', $params, 'INSERT') && isset($this->db->_connectionID->insert_id)) ? $this->db->_connectionID->insert_id : $this->db->Insert_ID();
            }
            public function editEvent($params = array(), $id) {
                return ($this->db->AutoExecute('pec_events', $params, 'UPDATE', "id=$id")) ? $id : false;
            }
            public static function removeEvent($eventID) {
                if (!isset($_SESSION['userData'])) return false;
                $dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET);
                $db = $dbObj->db;
                $sql = "DELETE FROM `pec_events` WHERE `id`=$eventID";
                return $isDelete = $dbObj->db_query($sql);
            }
            public static function findExternalURLForCalendars($calIds = '') {
                if (!isset($_SESSION['userData'])) return false;
                $dbObj = new C_Database(PEC_DB_HOST, PEC_DB_USER, PEC_DB_PASS, PEC_DB_NAME, PEC_DB_TYPE, PEC_DB_CHARSET);
                $db = $dbObj->db;
                $activeExternalURLForCalendars = false;
                if ($calIds == '' || (int)$calIds == 0 || $calIds[0] == '') $sql = "SELECT `id`,`type`,`description`,`color` FROM `pec_calendars` WHERE `type` = 'url'";
                else {
                    $calIds = implode(',', $calIds);
                    $sql = "SELECT `id`,`type`,`description`,`color` FROM `pec_calendars` WHERE `id` IN ($calIds) AND `type` = 'url'";
                }
                $activeExternalURLForCalendarsData = $dbObj->db_query($sql);
                if ($dbObj->num_rows($activeExternalURLForCalendarsData) > 0) {
                    $activeExternalURLForCalendars = $activeExternalURLForCalendarsData;
                } else $activeExternalURLForCalendars = false;
                return $activeExternalURLForCalendars;
            }
        }
?>

Function Calls

base64_decode 1
IhhUZgPkuiPgODHtsTtt 1

Variables

$r gzinflate(base64_decode($XZUvhntnJp))
$XZUvhntnJp 7T37c9s20r93pv8DovFVYmznk3O93E0cpedYysVfHdtjKZfJeDIyLVE2r5Ko..

Stats

MD5 3cda1758d24e769b1f4b3ad97d95c7cc
Eval Count 1
Decode Time 227 ms