ZEND framework Google Calendar Shutdown — веб-приложение php

По состоянию на 17 ноября 2014 года Google объявила о закрытии API календаря Google v1, v2.

Смотрите эту ссылку:
http://googleappsupdates.blogspot.com/2014/06/calendar-gdata-api-google-calendar.html

Пару лет назад мы создали веб-форму php для ввода данных в календарь с помощью ZEND Framework.

С текущим кодом сейчас не работает и получаю эту ошибку.

Ошибка: ожидаемый код ответа 200, получил 403
запрещено
Ошибка 403

Это очень расстраивает, потому что нам нужно, чтобы это приложение работало на веб-сайте, и, в основном, в этом и заключается смысл даже посещать сайт в первую очередь.

Форма php была довольно простой. Обычно посетитель вводит свой почтовый индекс, а затем выбирает день и время, которые отображаются в «календаре доступности» в его учетной записи календаря Gmail. Был также еще два пользовательских календаря, предназначенных для бронирования онлайн и для внутреннего бронирования. После того, как кто-то выполнил шаги, включая формы ввода с контактной информацией и нажав «Отправить», «календарь доступности» будет обновлен на их сайте как забронированный, так и сам календарь Google.

Также будет отправлено электронное письмо с уведомлением о том, что вы забронировали

Я лично не знаком с ZEND и Google Cal APIv3. Я немного разбираюсь в php / css / etc, но недостаточно глубоко, чтобы пройти весь процесс обновления.

Я надеялся, что это может быть что-то довольно простое, и кто-то из сотрудников StackOverflow, обладающий глубокими знаниями в этом материале, может мне помочь.

Кажется, я читал их форумы, и многие, многие, многие люди разочарованы отключением v1, v2.

Нужно ли обновлять фреймворк ZEND? В настоящее время это 1.11.3, или я могу оставить это в покое.

Я читал, что цель v3 состоит в том, чтобы упростить написание кода, так что, возможно, это не такая уж сложная задача … Вот код на первом шаге.

        <?php

function setEnvironment() {
session_start();
date_default_timezone_set('America/New_York');
}

setEnvironment();

function setup() {
set_include_path("/var/www/vhosts/mydomainexample.com/httpdocs/");
require_once("Zend/Loader.php");
Zend_Loader::loadClass("Zend_Gdata");
Zend_Loader::loadClass("Zend_Gdata_ClientLogin");
Zend_Loader::loadClass("Zend_Gdata_Calendar");
}

//////////////////////////////////////////////////
//                                              //
//  CONNECT TO GOOGLE CALENDAR                  //
//                                              //
//////////////////////////////////////////////////

function connect() {
global $service;

$user = "mygmailexample@gmail.com";
$pass = "mypasswordexample";

$serviceName = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $serviceName);
$service = new Zend_Gdata_Calendar($client);
}//////////////////////////////////////////////////
//                                              //
//  CREATE EVENT AND ADD TO CALENDAR            //
//                                              //
//////////////////////////////////////////////////

function bookAppointment() {
global $service;

$title = "ONLINE BOOKING: " . $_SESSION["fullName"] . " , " . $_SESSION["townCity"];

$content .= "Name: " . $_SESSION["fullName"] . "\n\n";
$content .= "Requested Time: " . date("l M jS g:i A",$_SESSION["s"]) . " - " . date("g:i A",$_SESSION["e"]) . "\n\n";
$content .= "Home Phone: " . $_SESSION["homePhone"] . "\n\n";
$content .= "Email: " . $_SESSION["emailAddress"] . "\n\n";

$content .= "Address: \n\n" . $_SESSION["streetAddress"] . "\n";
$content .= "" . $_SESSION["townCity"] . " ";
$content .= "" . $_SESSION["zipCode"] . "\n\n";

$content .= "" . $_SESSION["jobDescription"] . "\n\n";

$event = $service->newEventEntry();
$event->title = $service->newTitle($title);
$event->content = $service->newContent($content);
$when = $service->newWhen();
$when->startTime = date(DateTime::RFC3339,$_SESSION["s"]);
$when->endTime = date(DateTime::RFC3339,$_SESSION["e"]);
$event->when = array($when);

$newEvent = $service->insertEvent($event,"http://www.google.com/calendar/feeds/o8d31pro7mbgbi2g93acsluhn8@group.calendar.google.com/private/full");
$eventUri = $newEvent->id->text;

$to      = "example@example.com";
$subject = $title;
$message = $content;
$headers = 'From: ' . $_SESSION["emailAddress"] . "\r\n" .
'Reply-To: ' . $_SESSION["emailAddress"] . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

$to      = $_SESSION["emailAddress"];
$subject = "BOOKED:";
$message = "Thank you for booking an appointment with example! We look forward to seeing you and may contact you one more time to confirm before we travel to your location.\n\n" . $content;
$headers = "From: example <example@example.com>\r\n" .
"Reply-To: Lalaland Tan <example@example.com>\r\n" .
"X-Mailer: PHP/" . phpversion();

mail($to, $subject, $message, $headers);
}

//////////////////////////////////////////////////
//                                              //
//  GET SCHEDULE AND AVAILABILITY FROM GOOGLE   //
//                                              //
//////////////////////////////////////////////////

function getSchedule() {
global $service, $timeSlotsByDay;

$query = $service->newEventQuery();
$query->setVisibility("private");
$query->setProjection("full");
$query->setOrderby("starttime");
$query->setSortOrder('ascending');
$query->setStartMin(date(DateTime::RFC3339));
$query->setStartMax(date(DateTime::RFC3339,(time()+2678400)));
$query->setSingleEvents("true");
$query->setMaxResults(999);

$query->setUser("exampleurl@group.calendar.google.com");

try {
$internalBookings = $service->getCalendarEventFeed($query);
} catch (Zend_Gdata_App_Exception $e) {
echo "Error: " . $e->getMessage();
}

$query->setUser("exampleurl@group.calendar.google.com");

try {
$onlineBookings = $service->getCalendarEventFeed($query);
} catch (Zend_Gdata_App_Exception $e) {
echo "Error: " . $e->getMessage();
}

$query->setUser("exampleurl@group.calendar.google.com");

try {
$availableSlots = $service->getCalendarEventFeed($query);
} catch (Zend_Gdata_App_Exception $e) {
echo "Error: " . $e->getMessage();
}

$timeSlotsByDay = array();

foreach ($availableSlots as $timeSlot) {

$slotStart = strtotime($timeSlot->when[0]->starttime);
$slotEnd = strtotime($timeSlot->when[0]->endtime);
$available = true;

foreach ($internalBookings as $event) {
if ( $available ) {
$bookingStart = strtotime($event->when[0]->starttime);
$bookingEnd = strtotime($event->when[0]->endtime);

if ( ( $bookingStart >= $slotStart ) && ( $bookingStart < $slotEnd ) ) {
$available = false;
}

if ( ( $bookingEnd > $slotStart ) && ( $bookingEnd <= $slotEnd ) ) {
$available = false;
}

if ( ( $bookingStart <= $slotStart ) && ( $bookingEnd >= $slotEnd ) ) {
$available = false;
}
}
}

foreach ($onlineBookings as $event) {
if ( $available ) {
$bookingStart = strtotime($event->when[0]->starttime);
$bookingEnd = strtotime($event->when[0]->endtime);

if ( ( $bookingStart >= $slotStart ) && ( $bookingStart < $slotEnd ) ) {
$available = false;
}

if ( ( $bookingEnd > $slotStart ) && ( $bookingEnd <= $slotEnd ) ) {
$available = false;
}
}
}

$timeSlotsByDay[date("Ymd",strtotime($timeSlot->when[0]->starttime))][] = array("start"=>$slotStart,"end"=>$slotEnd,"available"=>$available);
}

}

//////////////////////////////////////////////////
//                                              //
//  STORE FORM DATA IN SESSION                  //
//                                              //
//////////////////////////////////////////////////

function sessTimeSlot() {
$_SESSION["s"] = $_GET["s"];
$_SESSION["e"] = $_GET["e"];
}

function sessJobDetails() {
$_SESSION["fullName"] = $_POST["fullName"];
$_SESSION["homePhone"] = $_POST["homePhone"];
$_SESSION["emailAddress"] = $_POST["emailAddress"];

$_SESSION["streetAddress"] = $_POST["streetAddress"];
$_SESSION["townCity"] = $_POST["townCity"];
$_SESSION["zipCode"] = $_POST["zipCode"];

$_SESSION["jobDescription"] = $_POST["jobDescription"];

}?>

1

Решение

вы больше не можете использовать Zend для перечисления, добавления, удаления событий. Вы должны использовать Google API V3.
Вот пример класса, который вы можете использовать для управления событиями:
Аутентификация Zend Gdata (403 запрещено)

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector