Beispiel #1
0
function churchcal_updateICalSource($id)
{
    // Set modified date to not load this calendar each cron job
    //db_query("UPDATE {cc_calcategory} SET modified_date = now() WHERE id = :id", (array(":id"=>$id)));
    $cat = db_query("SELECT * FROM {cc_calcategory}\n                    WHERE id = :id", array(":id" => $id))->fetch();
    if (!$cat) {
        throw new CTException("No calcategory found");
    }
    include_once ASSETS . '/ics-parser/class.iCalReader.php';
    $ical = new ICal($cat->ical_source_url);
    $events = $ical->events();
    if (!$events) {
        ct_log("iCal Source from {$cat->bezeichnung} could not readed and processed!", 2, "calcategory", $id);
    } else {
        db_query("DELETE FROM {cc_cal} WHERE category_id = :id", array(":id" => $id));
        include_once CHURCHCAL . '/churchcal_db.php';
        foreach ($events as $event) {
            $data = array();
            $data["startdate"] = churchcore_icalToDate($event["DTSTART"]);
            if (isset($event["DTEND"])) {
                $data["enddate"] = churchcore_icalToDate($event["DTEND"]);
            }
            $data["bezeichnung"] = utf8_encode(getVar("SUMMARY", "", $event));
            $data["category_id"] = $id;
            $data["repeat_id"] = 0;
            $data["intern_yn"] = 0;
            $data["modified_pid"] = -1;
            $data["notizen"] = getVar("SUMMARY", "", $event) . " " . getVar("DESCRIPTION", "", $event);
            $data["link"] = getVar("URL", "", $event);
            $data["ort"] = "";
            if ($data["startdate"] != "") {
                // Substract one day if it is a whole day date
                $sd = new Datetime($data["startdate"]);
                if (!isset($data["enddate"])) {
                    $ed = new Datetime($data["startdate"]);
                } else {
                    $ed = new Datetime($data["enddate"]);
                    if (isFullDay($sd, $ed)) {
                        $ed->modify("-1 DAY");
                    }
                }
                $data["startdate"] = $sd->format("Y-m-d H:i");
                $data["enddate"] = $ed->format("Y-m-d H:i");
                churchcal_createEvent($data, null, true);
            }
        }
        ct_log("iCal Source from {$cat->bezeichnung} readed and processed!", 2, $id, "category");
    }
}
/**
 * check if two dates conflict with each other
 * TODO: seems like $_enddate/$_enddate2 is not really needed
 *
 * @param DateTime $startdate
 * @param DateTime $enddate
 * @param DateTime $startdate2
 * @param DateTime $enddate2
 *
 * @return boolean
 */
function datesInConflict($startdate, $enddate, $startdate2, $enddate2)
{
    $_enddate = $enddate;
    $_enddate2 = $enddate2;
    if (isFullDay($startdate, $enddate)) {
        $_enddate->modify("+1 day");
        $_enddate->modify("-1 second");
    }
    if (isFullDay($startdate2, $enddate2)) {
        $_enddate2->modify("+1 day");
        $_enddate2->modify("-1 second");
    }
    // enddate2 inside date
    //TODO: not tested, but > is higher in the operator list then && :-)
    if ($_enddate2 > $startdate && $_enddate2 < $_enddate || $startdate2 > $startdate && $startdate2 < $_enddate || $startdate2 <= $startdate && $_enddate2 >= $_enddate || $startdate2 >= $startdate && $_enddate2 <= $_enddate) {
        return true;
    }
    return false;
}
function datesInConflict($startdate, $enddate, $startdate2, $enddate2)
{
    $_enddate = $enddate;
    $_enddate2 = $enddate2;
    if (isFullDay($startdate, $enddate)) {
        $_enddate->modify("+1 day");
        $_enddate->modify("-1 second");
    }
    if (isFullDay($startdate2, $enddate2)) {
        $_enddate2->modify("+1 day");
        $_enddate2->modify("-1 second");
    }
    // enddate2 inside date
    if ($_enddate2 > $startdate && $_enddate2 < $_enddate || $startdate2 > $startdate && $startdate2 < $_enddate || $startdate2 <= $startdate && $_enddate2 >= $_enddate || $startdate2 >= $startdate && $_enddate2 <= $_enddate) {
        return true;
    }
    return false;
}