Создайте частное событие с помощью PHP-фреймворка Zend Google Calendar API

#php #google-calendar-api

#php #google-calendar-api

Вопрос:

Я пытаюсь использовать библиотеку Zend_Gdata_Calendar для создания нового события в API Календаря Google и изо всех сил пытаюсь понять, как настроить видимость — есть ли у кого-нибудь идеи, как это сделать на самом деле?

Конструкция моего класса имеет

 $this->calendar_client = Zend_Gdata_ClientLogin::getHttpClient($this->user_name, $this->password, Zend_Gdata_Calendar::AUTH_SERVICE_NAME);
  

Где имя пользователя и пароль — это данные для входа в учетную запись, которая может выполнять запись в календарь. Работает следующее

 $gdataCal = new Zend_Gdata_Calendar($this->calendar_client);

$newEvent = $gdataCal->newEventEntry();
$newEvent->title = $gdataCal->newTitle($title);
$newEvent->where = array($gdataCal->newWhere($where));
$newEvent->content = $gdataCal->newContent($content);
$newEvent->visibility = 'private';
$when = $gdataCal->newWhen();
 $when->startTime   = $start_time;
 $when->endTime     = $end_time;
$newEvent->when = array($when);
$createdEvent = $gdataCal->insertEvent($newEvent,"https://www.google.com/calendar/feeds/{$email}/private/full");
  

($title, $where и $content — текстовые строки, передаваемые в функцию)

Однако видимость не позволяет привыкнуть.

Я попробовал видимость, показанную выше, а также каждое из следующих,

 $newEvent->setVisibility($gdataCal->newVisibility('private'));
$newEvent->setVisibility($gdataCal->newVisibility(true));
$newEvent->setVisibility($gdataCal->newVisibility(false));
  

И хотя все это работает (т. Е. Событие создается в нужное время), флаг private никогда не устанавливается!

Ответ №1:

Отвечая на мой собственный вопрос, вам нужно использовать URI для этого!

 $newEvent->visibility   = $gdataCal->newVisibility("http://schemas.google.com/g/2005#event.public");

$newEvent->visibility   = $gdataCal->newVisibility("http://schemas.google.com/g/2005#event.private");