예제 #1
0
 /**
  * Returns the abbreviated weekday name for the given date
  *
  * @param string year in format CCYY, default current local year
  * @param string month in format MM, default current local month
  * @param string day in format DD, default current local day
  * @param int optional length of abbreviation, default is 3
  *
  * @access public
  *
  * @return string full month name
  * @see Date_Calc::getWeekdayFullname
  */
 function getWeekdayAbbrname($day = "", $month = "", $year = "", $length = 3)
 {
     if (empty($year)) {
         $year = Date_Calc::dateNow("%Y");
     }
     if (empty($month)) {
         $month = Date_Calc::dateNow("%m");
     }
     if (empty($day)) {
         $day = Date_Calc::dateNow("%d");
     }
     return substr(Date_Calc::getWeekdayFullname($day, $month, $year), 0, $length);
 }
예제 #2
0
파일: Calc.php 프로젝트: noikiy/owaspbwa
 /**
  * Determines julian date of the given season
  * Adapted from previous work in Java by James Mark Hamilton, mhamilton@qwest.net
  *
  * @author Robert Butler <*****@*****.**>
  *
  * @param string is VERNALEQUINOX, SUMMERSOLSTICE, AUTUMNALEQUINOX, or WINTERSOLSTICE.
  * @param string year in format CCYY, must be a calendar year between -1000BC and 3000AD.
  *
  * @access public
  *
  * @return float $juliandate
  */
 function dateSeason($season, $year = '')
 {
     if ($year == '') {
         $year = Date_Calc::dateNow('%Y');
     }
     if ($year >= -1000 && $year <= 1000) {
         $y = $year / 1000.0;
         if ($season == "VERNALEQUINOX") {
             $juliandate = (((-0.00071 * $y - 0.00111) * $y + 0.06134) * $y + 365242.1374) * $y + 1721139.29189;
         } else {
             if ($season == "SUMMERSOLSTICE") {
                 $juliandate = (((0.00025 * $y + 0.00907) * $y - 0.05323) * $y + 365241.72562) * $y + 1721233.25401;
             } else {
                 if ($season == "AUTUMNALEQUINOX") {
                     $juliandate = (((0.00074 * $y - 0.00297) * $y - 0.11677) * $y + 365242.49558) * $y + 1721325.70455;
                 } else {
                     if ($season == "WINTERSOLSTICE") {
                         $juliandate = (((-6.0E-5 * $y - 0.00933) * $y - 0.00769) * $y + 365242.88257) * $y + 1721414.39987;
                     }
                 }
             }
         }
     } elseif ($year > 1000 && $year <= 3000) {
         $y = ($year - 2000) / 1000;
         if ($season == "VERNALEQUINOX") {
             $juliandate = (((-0.00057 * $y - 0.00411) * $y + 0.05169) * $y + 365242.37404) * $y + 2451623.80984;
         } else {
             if ($season == "SUMMERSOLSTICE") {
                 $juliandate = (((-0.0003 * $y + 0.008880000000000001) * $y + 0.00325) * $y + 365241.62603) * $y + 2451716.56767;
             } else {
                 if ($season == "AUTUMNALEQUINOX") {
                     $juliandate = (((0.00078 * $y + 0.00337) * $y - 0.11575) * $y + 365242.01767) * $y + 2451810.21715;
                 } else {
                     if ($season == "WINTERSOLSTICE") {
                         $juliandate = (((0.00032 * $y - 0.008229999999999999) * $y - 0.06223) * $y + 365242.74049) * $y + 2451900.05952;
                     }
                 }
             }
         }
     }
     return $juliandate;
 }
예제 #3
0
 /**
  * Determines if given date is a past date from now
  *
  * @param int $day   the day of the month
  * @param int $month the month
  * @param int $year  the year.  Use the complete year instead of the
  *                    abbreviated version.  E.g. use 2005, not 05.
  *            
  * @return   boolean
  * @access   public
  * @static
  */
 function isPastDate($day, $month, $year)
 {
     $this_year = Date_Calc::dateNow('%Y');
     $this_month = Date_Calc::dateNow('%m');
     $this_day = Date_Calc::dateNow('%d');
     if ($year < $this_year) {
         return true;
     } elseif ($year == $this_year) {
         if ($month < $this_month) {
             return true;
         } elseif ($month == $this_month) {
             if ($day < $this_day) {
                 return true;
             }
         }
     }
     return false;
 }
예제 #4
0
/**
 *  postcalendar_userapi_pcQueryEvents
 *  INPUT
 *  $args = Array of values possibly containing:
 *     $provider_id = array of provider ID numbers
 *     
 *  Returns an array containing the event's information
 *  @params array(key=>value)
 *  @params string key eventstatus
 *  @params int value -1 == hidden ; 0 == queued ; 1 == approved
 *  @return array $events[][]
 */
function &postcalendar_userapi_pcQueryEvents($args)
{
    $end = '0000-00-00';
    extract($args);
    // echo "<!-- args = "; print_r($args); echo " -->\n"; // debugging
    // $pc_username = pnVarCleanFromInput('pc_username');
    $pc_username = $_SESSION['pc_username'];
    // from Michael Brinson 2006-09-19
    if (empty($pc_username) || is_array($pc_username)) {
        $pc_username = "******";
    }
    //echo "DEBUG pc_username: $pc_username \n"; // debugging
    $topic = pnVarCleanFromInput('pc_topic');
    $category = pnVarCleanFromInput('pc_category');
    if (!empty($pc_username) && strtolower($pc_username) != 'anonymous') {
        if ($pc_username == '__PC_ALL__' || $pc_username == -1) {
            $ruserid = -1;
        } else {
            $ruserid = getIDfromUser($pc_username);
        }
    }
    if (!isset($eventstatus)) {
        $eventstatus = 1;
    }
    // sanity check on eventstatus
    if ((int) $eventstatus < -1 || (int) $eventstatus > 1) {
        $eventstatus = 1;
    }
    if (!isset($start)) {
        $start = Date_Calc::dateNow('%Y-%m-%d');
    }
    list($sy, $sm, $sd) = explode('-', $start);
    list($dbconn) = pnDBGetConn();
    $pntable = pnDBGetTables();
    // link to the events tables
    $table = $pntable['postcalendar_events'];
    $cattable = $pntable['postcalendar_categories'];
    $topictable = $pntable['postcalendar_topics'];
    $sql = "SELECT DISTINCT a.pc_eid,  a.pc_informant, a.pc_catid, " . "a.pc_title, a.pc_time, a.pc_hometext, a.pc_eventDate, a.pc_duration, " . "a.pc_endDate, a.pc_startTime, a.pc_recurrtype, a.pc_recurrfreq, " . "a.pc_recurrspec, a.pc_topic, a.pc_alldayevent, a.pc_location, " . "a.pc_conttel, a.pc_contname, a.pc_contemail, a.pc_website, a.pc_fee, " . "a.pc_sharing, a.pc_prefcatid, b.pc_catcolor, b.pc_catname, " . "b.pc_catdesc, a.pc_pid, a.pc_apptstatus, a.pc_aid, " . "concat(u.fname,' ',u.lname) as provider_name, " . "concat(pd.lname,', ',pd.fname) as patient_name, " . "concat(u2.fname, ' ', u2.lname) as owner_name, " . "DOB as patient_dob, a.pc_facility, pd.pubpid " . "FROM  ( {$table} AS a ) " . "LEFT JOIN {$cattable} AS b ON b.pc_catid = a.pc_catid " . "LEFT JOIN users as u ON a.pc_aid = u.id " . "LEFT JOIN users as u2 ON a.pc_aid = u2.id " . "LEFT JOIN patient_data as pd ON a.pc_pid = pd.pid " . "WHERE  a.pc_eventstatus = {$eventstatus} " . "AND ((a.pc_endDate >= '{$start}' AND a.pc_eventDate <= '{$end}') OR " . "(a.pc_endDate = '0000-00-00' AND a.pc_eventDate >= '{$start}' AND " . "a.pc_eventDate <= '{$end}')) ";
    //==================================
    //FACILITY FILTERING (lemonsoftware)(CHEMED)
    if ($_SESSION['pc_facility']) {
        $pc_facility = $_SESSION['pc_facility'];
        $sql .= " AND a.pc_facility = {$pc_facility} ";
        /*
                              AND u.facility_id = $pc_facility
                              AND u2.facility_id = $pc_facility "; */
    } else {
        if ($pc_facility) {
            // pc_facility could be provided in the search arguments -- JRM March 2008
            $sql .= " AND a.pc_facility = {$pc_facility} ";
            /*.
              " AND u.facility_id = $pc_facility".
              " AND u2.facility_id = $pc_facility "; */
        }
    }
    //EOS FACILITY FILTERING (lemonsoftware)
    //==================================
    // The above 3 lines replaced these:
    //   AND (a.pc_endDate >= '$start' OR a.pc_endDate = '0000-00-00')
    //   AND a.pc_eventDate <= '$end' ";
    if (!empty($providerID)) {
        $ruserid = $providerID;
    }
    // eliminate ruserid if we're trying to query by provider_id -- JRM
    if (!empty($provider_id)) {
        unset($ruserid);
    }
    if (isset($ruserid)) {
        // get all events for the specified username
        if ($ruserid == -1) {
            $sql .= "AND (a.pc_sharing = '" . SHARING_BUSY . "' ";
            $sql .= "OR a.pc_sharing = '" . SHARING_PUBLIC . "') ";
        } else {
            $sql .= "AND a.pc_aid IN (0, " . $ruserid . ") ";
        }
    } elseif (!pnUserLoggedIn()) {
        // get all events for anonymous users
        $sql .= "AND a.pc_sharing = '" . SHARING_GLOBAL . "' ";
    } elseif (!empty($provider_id)) {
        // get all events for a variety of provider IDs -- JRM
        if ($provider_id[0] != "_ALL_") {
            /**add all the events from the clinic provider id = 0*/
            $sql .= "AND a.pc_aid in (0," . implode(",", $provider_id) . ") ";
        }
    } else {
        // get all events for logged in user plus global events
        $sql .= "AND (a.pc_aid IN (0," . $_SESSION['authUserID'] . ") OR a.pc_sharing = '" . SHARING_GLOBAL . "') ";
    }
    //======================================================================
    //  START SEARCH FUNCTIONALITY
    //======================================================================
    if (!empty($s_keywords)) {
        $sql .= "AND ({$s_keywords}) ";
    }
    if (!empty($s_category)) {
        $sql .= "AND ({$s_category}) ";
    }
    if (!empty($s_topic)) {
        $sql .= "AND ({$s_topic}) ";
    }
    if (!empty($category)) {
        $sql .= "AND (a.pc_catid = '" . pnVarPrepForStore($category) . "') ";
    }
    if (!empty($topic)) {
        $sql .= "AND (a.pc_topic = '" . pnVarPrepForStore($topic) . "') ";
    }
    //======================================================================
    //  Search sort and limitation
    //======================================================================
    if (empty($sort)) {
        $sql .= "GROUP BY a.pc_eid ORDER BY a.pc_time DESC";
    } else {
        $sql .= "GROUP BY a.pc_eid ORDER BY a.{$sort}";
    }
    //======================================================================
    //  END SEARCH FUNCTIONALITY
    //======================================================================
    //echo "<br>sq: $sql<br />";
    // echo "<!-- " . $sql . " -->\n"; // debugging
    $result = $dbconn->Execute($sql);
    if ($dbconn->ErrorNo() != 0) {
        die($dbconn->ErrorMsg());
    }
    // put the information into an array for easy access
    $events = array();
    // return an empty array if we don't have any results
    if (!isset($result)) {
        return $events;
    }
    for ($i = 0; !$result->EOF; $result->MoveNext()) {
        // WHY are we using an array for intermediate storage???  -- Rod
        // get the results from the query
        if (isset($tmp)) {
            unset($tmp);
        }
        $tmp = array();
        list($tmp['eid'], $tmp['uname'], $tmp['catid'], $tmp['title'], $tmp['time'], $tmp['hometext'], $tmp['eventDate'], $tmp['duration'], $tmp['endDate'], $tmp['startTime'], $tmp['recurrtype'], $tmp['recurrfreq'], $tmp['recurrspec'], $tmp['topic'], $tmp['alldayevent'], $tmp['location'], $tmp['conttel'], $tmp['contname'], $tmp['contemail'], $tmp['website'], $tmp['fee'], $tmp['sharing'], $tmp['prefcatid'], $tmp['catcolor'], $tmp['catname'], $tmp['catdesc'], $tmp['pid'], $tmp['apptstatus'], $tmp['aid'], $tmp['provider_name'], $tmp['patient_name'], $tmp['owner_name'], $tmp['patient_dob'], $tmp['facility'], $tmp['pubpid']) = $result->fields;
        // grab the name of the topic
        $topicname = pcGetTopicName($tmp['topic']);
        // get the user id of event's author
        $cuserid = @$nuke_users[strtolower($tmp['uname'])];
        // check the current event's permissions
        // the user does not have permission to view this event
        // if any of the following evaluate as false
        if (!pnSecAuthAction(0, 'PostCalendar::Event', "{$tmp['title']}::{$tmp['eid']}", ACCESS_OVERVIEW)) {
            continue;
        } elseif (!pnSecAuthAction(0, 'PostCalendar::Category', "{$tmp['catname']}::{$tmp['catid']}", ACCESS_OVERVIEW)) {
            continue;
        } elseif (!pnSecAuthAction(0, 'PostCalendar::User', "{$tmp['uname']}::{$cuserid}", ACCESS_OVERVIEW)) {
            continue;
        } elseif (!pnSecAuthAction(0, 'PostCalendar::Topic', "{$topicname}::{$tmp['topic']}", ACCESS_OVERVIEW)) {
            continue;
        } elseif ($tmp['sharing'] == SHARING_PRIVATE && $cuserid != $userid) {
            continue;
        }
        // add event to the array if we passed the permissions check
        // this is the common information
        $events[$i]['intervals'] = $tmp['duration'] / 60 / $GLOBALS['day_calandar_interval'];
        //sets the number of rows this event should span
        $events[$i]['eid'] = $tmp['eid'];
        $events[$i]['uname'] = $tmp['uname'];
        $events[$i]['uid'] = $cuserid;
        $events[$i]['catid'] = $tmp['catid'];
        $events[$i]['time'] = $tmp['time'];
        $events[$i]['eventDate'] = $tmp['eventDate'];
        $events[$i]['duration'] = $tmp['duration'];
        // there has to be a more intelligent way to do this
        @(list($events[$i]['duration_hours'], $dmin) = @explode('.', $tmp['duration'] / 60 / 60));
        $events[$i]['duration_minutes'] = substr(sprintf('%.2f', '.' . 60 * ($dmin / 100)), 2, 2);
        //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        $events[$i]['endDate'] = $tmp['endDate'];
        $events[$i]['startTime'] = $tmp['startTime'];
        $events[$i]['recurrtype'] = $tmp['recurrtype'];
        $events[$i]['recurrfreq'] = $tmp['recurrfreq'];
        $events[$i]['recurrspec'] = $tmp['recurrspec'];
        $events[$i]['topic'] = $tmp['topic'];
        $events[$i]['alldayevent'] = $tmp['alldayevent'];
        $events[$i]['catcolor'] = $tmp['catcolor'];
        // Modified 06-2009 by BM to translate the category if applicable
        $events[$i]['catname'] = xl_appt_category($tmp['catname']);
        $events[$i]['catdesc'] = $tmp['catdesc'];
        $events[$i]['pid'] = $tmp['pid'];
        $events[$i]['apptstatus'] = $tmp['apptstatus'];
        $events[$i]['pubpid'] = $tmp['pubpid'];
        $events[$i]['patient_name'] = $tmp['patient_name'];
        $events[$i]['provider_name'] = $tmp['provider_name'];
        $events[$i]['owner_name'] = $tmp['owner_name'];
        $events[$i]['patient_dob'] = $tmp['patient_dob'];
        $events[$i]['patient_age'] = getPatientAge($tmp['patient_dob']);
        $events[$i]['facility'] = getFacility($tmp['facility']);
        $events[$i]['sharing'] = $tmp['sharing'];
        $events[$i]['prefcatid'] = $tmp['prefcatid'];
        $events[$i]['aid'] = $tmp['aid'];
        $events[$i]['topictext'] = $topicname;
        $events[$i]['intervals'] = ceil($tmp['duration'] / 60 / $GLOBALS['calendar_interval']);
        if ($events[$i]['intervals'] == 0) {
            $events[$i]['intervals'] = 1;
        }
        // is this a public event to be shown as busy?
        if ($tmp['sharing'] == SHARING_BUSY && $cuserid != $userid) {
            // make it not display any information
            $events[$i]['title'] = _USER_BUSY_TITLE;
            $events[$i]['hometext'] = _USER_BUSY_MESSAGE;
            $events[$i]['desc'] = _USER_BUSY_MESSAGE;
            $events[$i]['conttel'] = '';
            $events[$i]['contname'] = '';
            $events[$i]['contemail'] = '';
            $events[$i]['website'] = '';
            $events[$i]['fee'] = '';
            $events[$i]['location'] = '';
            $events[$i]['street1'] = '';
            $events[$i]['street2'] = '';
            $events[$i]['city'] = '';
            $events[$i]['state'] = '';
            $events[$i]['postal'] = '';
        } else {
            $display_type = substr($tmp['hometext'], 0, 6);
            if ($display_type == ':text:') {
                $prepFunction = 'pcVarPrepForDisplay';
                $tmp['hometext'] = substr($tmp['hometext'], 6);
            } elseif ($display_type == ':html:') {
                $prepFunction = 'pcVarPrepHTMLDisplay';
                $tmp['hometext'] = substr($tmp['hometext'], 6);
            } else {
                $prepFunction = 'pcVarPrepHTMLDisplay';
            }
            unset($display_type);
            $events[$i]['title'] = $prepFunction($tmp['title']);
            $events[$i]['hometext'] = $prepFunction($tmp['hometext']);
            $events[$i]['desc'] = $events[$i]['hometext'];
            $events[$i]['conttel'] = $prepFunction($tmp['conttel']);
            $events[$i]['contname'] = $prepFunction($tmp['contname']);
            $events[$i]['contemail'] = $prepFunction($tmp['contemail']);
            $events[$i]['website'] = $prepFunction(postcalendar_makeValidURL($tmp['website']));
            $events[$i]['fee'] = $prepFunction($tmp['fee']);
            $loc = unserialize($tmp['location']);
            $events[$i]['location'] = $prepFunction($loc['event_location']);
            $events[$i]['street1'] = $prepFunction($loc['event_street1']);
            $events[$i]['street2'] = $prepFunction($loc['event_street2']);
            $events[$i]['city'] = $prepFunction($loc['event_city']);
            $events[$i]['state'] = $prepFunction($loc['event_state']);
            $events[$i]['postal'] = $prepFunction($loc['event_postal']);
        }
        $i++;
    }
    unset($tmp);
    $result->Close();
    return $events;
}
예제 #5
0
파일: Calc.php 프로젝트: mickdane/zidisha
 /**
  * Returns the abbreviated weekday name for the given date
  *
  * @param string year in format CCYY, default current local year
  * @param string month in format MM, default current local month
  * @param string day in format DD, default current local day
  * @param int optional length of abbreviation, default is 3
  *
  * @access public
  *
  * @return string full month name
  */
 function getWeekdayAbbrname($day = "", $month = "", $year = "", $length = 3)
 {
     if (empty($year)) {
         $year = Date_Calc::dateNow("%Y");
     }
     if (empty($month)) {
         $month = Date_Calc::dateNow("%m");
     }
     if (empty($day)) {
         $day = Date_Calc::dateNow("%d");
     }
     $weekday_names = array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
     $weekday = Date_Calc::dayOfWeek($day, $month, $year);
     return substr($weekday_names[$weekday], 0, $length);
 }
예제 #6
0
파일: Calendar.php 프로젝트: Artea/freebeer
 /**
  * Generate the HTML_Table object of the calendar
  *
  * @param day   day of the calendar to generate, null = today's day
  * @param month month of the calendar to generate, null = today's  month
  * @param year  year of the calendar to generate, null = today's year
  *
  * @access public
  * @return the HTML_Table object of the calendar
  */
 function generateTable($day = null, $month = null, $year = null)
 {
     if (empty($year)) {
         $year = Date_Calc::dateNow('%Y');
     }
     if (empty($month)) {
         $month = Date_Calc::dateNow('%m');
     }
     if (empty($day)) {
         $day = Date_Calc::dateNow('%d');
     }
     $year = sprintf('%04d', $year);
     $month = sprintf('%02d', $month);
     $day = sprintf('%02d', $day);
     // get month structure for generating calendar
     $month_cal = Date_Calc::getCalendarMonth($month, $year, '%E');
     $this->_todayDays = Date_Calc::dateFormat(null, null, null, '%E');
     $this->_thisMonth = Date_Calc::dateFormat($day, $month, $year, '%m');
     $row = 0;
     $table = new HTML_Table($this->_attributes['table']);
     $table->addRow(array($this->drawTitle($day, $month, $year)));
     $table->setRowAttributes($row, $this->_attributes['title']);
     $row++;
     for ($col = 0; $col < 7; $col++) {
         $table->setCellContents($row, $col, $this->drawWeekDayText($col), 'TH');
     }
     $table->setRowAttributes($row++, $this->_attributes['weekday']);
     for ($week = 0; $week < count($month_cal); $week++) {
         for ($col = 0; $col < 7; $col++) {
             $table->setCellContents($row, $col, $this->drawCell($month_cal[$week][$col], $week, $col));
             $type = $this->getType($month_cal[$week][$col]);
             $table->setCellAttributes($row, $col, $this->_attributes['cell']);
             $table->updateCellAttributes($row, $col, $this->_attributes['cell_' . $type]);
         }
         $row++;
     }
     return $table;
 }
예제 #7
0
파일: calc.php 프로젝트: MagnusA/Date
if (php_sapi_name() != 'cli') {
    echo "<pre>\n";
}
compare('20001122', Date_Calc::dateFormat(22, 11, 2000, '%Y%m%d'), 'dateFormat');
compare('20001122', Date_Calc::dateFormat('22', '11', '2000', '%Y%m%d'), 'dateFormat str');
compare('2001', Date_Calc::defaultCentury('1'), 'defaultCentury 1 str');
compare('2001', Date_Calc::defaultCentury(1), 'defaultCentury 1');
compare('1960', Date_Calc::defaultCentury(60), 'defaultCentury 2');
compare('2010', Date_Calc::defaultCentury(10), 'defaultCentury 3');
compare(2451871, Date_Calc::dateToDays('22', '11', '2000'), 'dateToDays str');
compare(2451871, Date_Calc::dateToDays(22, 11, 2000), 'dateToDays');
compare('20001122', Date_Calc::daysToDate(2451871), 'daysToDate');
compare('2000-47-3', Date_Calc::gregorianToISO('22', '11', '2000'), 'gregorianToISO str');
compare('2000-47-3', Date_Calc::gregorianToISO(22, 11, 2000), 'gregorianToISO');
compare(2451716.56767, Date_Calc::dateSeason('SUMMERSOLSTICE', 2000), 'dateSeason');
compare(date('Ymd'), Date_Calc::dateNow(), 'dateNow');
compare(date('Y'), Date_Calc::getYear(), 'getYear');
compare(date('m'), Date_Calc::getMonth(), 'getMonth');
compare(date('d'), Date_Calc::getDay(), 'getDay');
compare(327, Date_Calc::dayOfYear(22, 11, 2000), 'dayOfYear');
compare('November', Date_Calc::getMonthFullname(11), 'getMonthFullname');
compare('Nov', Date_Calc::getMonthAbbrname(11), 'getMonthAbbrname');
compare('Saturday', Date_Calc::getWeekdayFullname(1, 1, 2005), 'getWeekdayFullname');
compare('Sat', Date_Calc::getWeekdayAbbrname(1, 1, 2005), 'getWeekdayAbbrname');
compare(11, Date_Calc::getMonthFromFullName('November'), 'getMonthFromFullName');
compare(327, Date_Calc::dayOfYear('22', '11', '2000'), 'dayOfYear str');
compare('November', Date_Calc::getMonthFullname('11'), 'getMonthFullname str');
compare('Nov', Date_Calc::getMonthAbbrname('11'), 'getMonthAbbrname str');
compare('Saturday', Date_Calc::getWeekdayFullname('01', '01', '2005'), 'getWeekdayFullname str');
compare('Sat', Date_Calc::getWeekdayAbbrname('01', '01', '2005'), 'getWeekdayAbbrname str');
$exp = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');