Google Takvim PHP - Olay URL / ID?

4 Cevap php

Ben bir Google Takvim etkinlikleri eklemek benim PHP web uygulaması değiştirdiniz. Şu anda, başarılı bir şekilde ekler.

Ancak, şimdi ben olayları silmek ve düzenlemek istiyoruz. Bu benim olay URL her olay ile ilgili ne bilmiyorum aslında haricinde yapmak kolay görünüyor.

Ben bu olayı URL'yi ayarlamak gerekiyor (veya kimliği?) Bir olay ekleme üzerine? Nasıl ne olduğunu anlamaya gerekiyordu?

Ben başka bir yerde bu bilgileri bulmak için görünmüyor olabilir ...

Teşekkürler!

EDIT:

Bunun için Zend Framework (Gdata paket) kullanıyorum ...

EDIT:

$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();

  }

4 Cevap

Bu açıkça Zend_Gdata belgelerinde belgelenmiştir:

http://framewveyak.zend.com/manual/en/zend.gdata.calendar.html#zend.gdata.calendar.deleting_events

// Option 1: Events can be deleted directly
$event->delete();

veya

// Option 2: Events can be deleted supplying the edit URL of the event
// to the calendar service, if known
$service->delete($event->getEditLink()->href);

Eğer sonuncusunu duyduğunuz gibi geliyor.

Edit:

Lütfen $ olaydan düzenle bağlantısını alın. Yukarıdaki kodda da gösterildiği oluyor:

$event->getEditLink()->href;

Bu kaydedilmiş bir olay mevcut olacaktır. örneğin

$newEvent = $service->insertEvent($event);
echo $newEvent->getEditLink()->href;

Here's a GREAT resource to help you with this: Integrate your PHP application with Google Calendar

İşte newEventEntry ile olay yayımladıktan sonra takvim olayın benzersiz kimliğini edinme nasıl. Ben, veritabanında $ id değerini saklamak durumunda ben güncelleme ile daha sonra düzenlemek veya silmek zorunda.

    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!';  

Ben o olayı erişmek gerektiğinde Sonra, ben kimliğinin bir $ _POST kullanarak silme / güncelleme için just bu olay hedeflemek için kullanabilirsiniz:

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!';

Bu sorunuza cevap umut - Ben bu çalışma alma ile mücadele etti, ama ben yardım için mutluyum yardımcı olur, burada sizinle benim bulguları paylaşmak.

Scott

Peki, yerel veritabanında start zaman hakkında infomration, bitiş zamanı ve takvim id (eğer başlangıç ​​ve bitiş zamanlarını arasındaki olayı silmek istediğiniz belirli takvim) varsa olayı silme burada başka iyi bir yol bir olay kimlikleri saklamak istemiyorsanız

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();
    }
}

Bana yaptığı gibi, birine yardımcı olur umarım.