PHP Google日历Api向定期事件添加提醒

Miguel Cardoso占位符图像

我1年前开始了我的项目,从没在论坛上发帖,1星期前,我开始使用google calendar API开发,这是我的第3篇文章:s

我已经成功创建了单个事件和重复事件,并为单个事件创建了提醒,但现在我需要知道如何使用Zend Gdata API为重复事件创建提醒。

这是我用来为单个事件创建提醒的代码:

function setReminder($client, $eventId, $minutes=15, $methods)
{
    $gc = new Zend_Gdata_Calendar($client);
    $reminder_types = array();
    if ($event = getEvent($client, $eventId)) {
        $times = $event->when;
        var_dump($event);
        foreach ($times as $when) 
        {
            if(in_array('alert',$methods))
            {
                var_dump('alert');
                $reminder_alert = $gc->newReminder();
                $reminder_alert->setMinutes($minutes);
                $reminder_alert->setMethod("alert");
                array_push($reminder_types,$reminder_alert);
            }
            if(in_array('email',$methods))
            {
                var_dump('email');
                $reminder_email = $gc->newReminder();
                $reminder_email->setMinutes($minutes);
                $reminder_email->setMethod("email");
                array_push($reminder_types,$reminder_email);
            }

            $when->reminders = $reminder_types;
        }
        $eventNew = $event->save();
        //var_dump($eventNew);
        return $eventNew;
    } else {
        return null;
    }
}

问题是,对于重复事件$ event-> when为空。

提前致谢!

Miguel Cardoso占位符图像

在经过大量搜索和反复试验之后,我确定了创建带有提醒的重复事件的解决方案。

Google的Austin写道:

目前,Zend GData客户端库不提供在处理重复事件时直接添加提醒的功能。这种例外情况是由于以下事实造成的:重复事件条目中没有gd:when元素,通常在gd:when元素中将存在gd:reminder。Zend客户端库处理一般情况,因此当没有gd:when时,没有提供添加提醒的方法。

但是这里有一个hack :)这就是我的做法:

function createRecurringEvent ($client, $calendar, $title, $desc, $where, $startDate, $startTime, $endDate, $endTime, $repeat, $endRepeatDate, $endRepeatTime, $tzOffset, $minutes=15, $methods)
{
    $frequence = "";
    $recurData = null;
    $gc = new Zend_Gdata_Calendar($client);
    $newEntry = $gc->newEventEntry();
    $newEntry->title = $gc->newTitle(trim($title));
    $newEntry->where = array($gc->newWhere($where));

    $newEntry->content = $gc->newContent($desc);
    $newEntry->content->type = 'text';


    switch ($repeat) {
        case "d":
            $frequence = "DAILY";
            break;
        case "w":
            $frequence = "WEEKLY";
            break;
        case "m":
            $frequence = "MONTHLY";
            break;
        case "y":
            $frequence = "YEARLY";
            break;
    }

    $startDateTime = getIcalDate($startDate . " " . $startTime);
    $endDateTime = getIcalDate($endDate . " " . $endTime);
    $endRepeatDateTime = getIcalDate($endRepeatDate . " " . $endRepeatTime);

    if ($recurData == null) 
    {
        $recurData =
            "DTSTART:{$startDateTime}\r\n" .
            "DTEND:{$endDateTime}\r\n" .
            "RRULE:FREQ={$frequence};UNTIL={$endRepeatDateTime}\r\n";

    }

    $newEntry->recurrence = $gc->newRecurrence($recurData);

    $event_xml = simplexml_load_string($newEntry->saveXML());

    if(in_array('alert',$methods))
        $event_xml->addChild('gd:reminder  xmlns:gd="http://schemas.google.com/g/2005" minutes="15" method="alert"');
    if(in_array('email',$methods))
        $event_xml->addChild('gd:reminder  xmlns:gd="http://schemas.google.com/g/2005" minutes="15" method="email"');
    $xml = str_replace("atom:reminder","gd:reminder",$event_xml->asXML());

    $gc->post($xml, $calendar);
}

100个参数将替换为仅用于测试的对象。我希望这对其他人有所帮助,因为该API是一场噩梦。我正在考虑将来创建有关此的教程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google 日历未显示添加事件的提醒

来自分类Dev

在Laravel中为Google日历添加Google PHP API

来自分类Dev

是否可以通过编程方式添加提醒而无需在android日历中创建事件?

来自分类Dev

使用php-ews创建定期日历事件

来自分类Dev

我们如何向日历添加提醒

来自分类Dev

向Google Calendar API(PHP)添加'sendUpdates'=>'all'

来自分类Dev

按日期向通知栏添加提醒

来自分类Dev

Google Calendar API v3 PHP->尝试在单个日历中创建新事件

来自分类Dev

Google API PHP客户端-检索日历列表和事件

来自分类Dev

Google API PHP客户端-检索日历列表和事件

来自分类Dev

如何通过 PHP API 管理我自己的 Google 日历中的事件

来自分类Dev

对于某些用户来说,Google 日历 php API 全天事件丢失/不可见

来自分类Dev

PHP从日历中的数据库添加事件

来自分类Dev

如何使用PHP的客户端库让服务器将事件添加到Google日历?

来自分类Dev

如何使用php在Google日历中创建事件

来自分类Dev

谷歌日历 php api

来自分类Dev

在php日历中显示事件

来自分类Dev

向PHP添加样式

来自分类Dev

php中的日历API错误

来自分类Dev

在用户无法修改的Android日历中添加事件/提醒

来自分类Dev

使用PHP检测日历事件重叠冲突

来自分类Dev

向 Google 表格添加行时 PHP 数组异常

来自分类Dev

向PHP表单添加字段

来自分类Dev

向php函数添加参数

来自分类Dev

从PHP向json添加文字

来自分类Dev

向 PHP if 语句添加通配符 (*)

来自分类Dev

将PHP添加到JS日历

来自分类Dev

如何使用Google PHP API访问其他人的Google日历

来自分类Dev

通过API的Google日历提醒不起作用