我修改了我的PHP网络应用程序,以便将事件添加到Google日历中。目前,它成功添加。
但是,现在我希望删除和编辑事件。这似乎很容易做到,除了我不知道哪个事件URL与每个事件相关联。
我是否应该在添加活动时设置此事件网址(或ID?)?我怎么知道它是什么?
我似乎无法在其他地方找到这些信息......
谢谢!
编辑:
我一直在使用Zend Framework(Gdata包)......
编辑:
$newIncludePath = array();
$newIncludePath[] = '../ZendGdata-1.8.4PL1/library';
$newIncludePath = implode($newIncludePath);
set_include_path($newIncludePath);
// load classes
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');
Zend_Loader::loadClass('Zend_Http_Client');
// connect to service
$gcal = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$user = "********@gmail.com";
$pass = "*****";
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $gcal);
$gcal = new Zend_Gdata_Calendar($client);
// construct event object
// save to server
try {
$event = $gcal->newEventEntry();
$event->title = $gcal->newTitle($title);
$event->content = $gcal->newContent($desc);
$when = $gcal->newWhen();
$when->startTime = $date;
$when->endTime = $date;
$event->when = array($when);
$gcal->insertEvent($event);
echo $event->getEditLink()->href;
} catch (Zend_Gdata_App_Exception $e) {
echo "Error: Unable to add event to Google Calendar" . $e->getResponse();
}
答案 0 :(得分:1)
您可以查看Zend_Gdata
和Zend_Gdata_Calendar
:这些可能有助于所有的努力工作 - 如果您不必花费代码与Google的API进行通信,它会给出你有更多的时间来开发其他东西; - )
它似乎可以在Zend FRamework之外使用:它甚至可以单独下载:http://framework.zend.com/download/gdata
(如果你真的想亲自去做,你仍然可以尝试理解Zend_Gdata
如何做到这一点^^)
答案 1 :(得分:1)
Zend_Gdata文档中明确记录了这一点:
http://framework.zend.com/manual/en/zend.gdata.calendar.html#zend.gdata.calendar.deleting_events
// Option 1: Events can be deleted directly
$event->delete();
或
// Option 2: Events can be deleted supplying the edit URL of the event
// to the calendar service, if known
$service->delete($event->getEditLink()->href);
听起来你需要后者。
修改强>
从$ event获取编辑链接。它显示在上面的代码中:
$event->getEditLink()->href;
这将在已保存的活动中提供。 e.g。
$newEvent = $service->insertEvent($event);
echo $newEvent->getEditLink()->href;
答案 2 :(得分:0)
这是一个很好的资源来帮助你: Integrate your PHP application with Google Calendar
以下是我使用newEventEntry发布事件后获取日历事件的唯一ID的方法。我将$ id值存储在数据库中,以防我以后需要通过更新或删除进行编辑。
try {
$event = $gcal->newEventEntry();
$event->title = $gcal->newTitle($title);
$when = $gcal->newWhen();
$when->startTime = $start;
$when->endTime = $end;
$event->when = array($when);
$gcal->insertEvent($event);
$id = substr($event->id, strrpos($event->id, '/')+1); // trim off everything but the id
} catch (Zend_Gdata_App_Exception $e) {
echo "Error: " . $e->getResponse();
}
// Do mysql Insert functions here to store the record in db (removed for clarity)
echo 'Event '. $id. 'successfully added!';
然后,当我需要访问该特定事件时,我可以使用它来定位 该事件以使用ID的$ _POST进行更新/删除:
try {
$event = $gcal->getCalendarEventEntry('http://www.google.com/calendar/feeds/default/private/full/' . $_POST['id']);
$event->title = $gcal->newTitle($title);
$when = $gcal->newWhen();
$when->startTime = $start;
$when->endTime = $end;
$event->when = array($when);
$event->save();
} catch (Zend_Gdata_App_Exception $e) {
die("Error: " . $e->getResponse());
}
echo 'Event successfully modified!';
希望这能回答你的问题 - 我努力让这项工作成功,但在这里与你分享我的发现,如果它有帮助我很乐意帮助你。
斯科特
答案 3 :(得分:0)
好吧,如果您不想在本地数据库中存储事件ID,这里有另一个删除事件的好方法,如果您有关于开始时间,结束时间和日历ID的信息(要在开始时间和之间删除事件的特定日历)结束时间)
function deleteEvent($client,$startDate,$endDate,$startTime,$endTime,$tzOffset,$cal_id)
{
$gdataCal = new Zend_Gdata_Calendar($client);
$query = $gdataCal->newEventQuery();
$query->setUser($cal_id);
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setStartMin("{$startDate}T{$startTime}:00.000{$tzOffset}");
$query->setStartMax("{$endDate}T{$endTime}:00.000{$tzOffset}");
$eventFeed = $gdataCal->getCalendarEventFeed($query);
foreach ($eventFeed as $event) {
$event->delete();
}
}
希望对某人有所帮助,就像对我一样。