#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");