[PHP/ZF] Event zoeken in specifieke Google Calendar

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • orange.x
  • Registratie: Maart 2002
  • Laatst online: 18-07 10:57
Klein beetje frustratie hier. Ik heb een probleempje. Het toevoegen van een event gaat helemaal prima via het Zend Framework en daar zijn verder geen klachten over.

Alleen wil ik in een later stadium een eerder geplaatst event wijzigen. In 1e instantie is een event een hele dag totdat er tijden gespecificeerd zijn en die moeten dan natuurlijk toegevoegd worden aan het event.

Nu is de agenda waar het om draait niet mijn default agenda en als ik ga zoeken dan zoekt hij altijd door de default agenda.

Bij het toevoegen van een event heb ik een manier gevonden om eerst door alle agenda's te loopen en zo de juiste agenda te vinden. Daarvan wordt dan de $calendar->title->src van opgeslagen en daarmee wordt het event toegevoegd aan die calendar.

Maar met het zoeken krijg ik het dus niet voor elkaar. Ik kan bij het zoeken weer door de agenda's loopen, en vervolgens de juiste agenda vinden, maar dat wordt dan niet de actieve agenda, want je moet voor je query een user meegeven wat het id moet zijn van de calendar. Nu kan ik die wel van de site plukken, erin plakken en gaan met die banaan, maar dat is totaal niet dynamisch.

Als ik door de agenda's loop en de juiste is gevonden dan kan ik het id wel uitlezen, maar ik kan helemaal niets met die gegevens doen. Ik kan er geen stuk uitknippen of wat ook.

Is er een manier om eventueel over alle agenda's van mijn google account te zoeken? Ik wil namelijk gewoon op de titel zoeken omdat deze een unieke code bevatten waardoor ik niet met de direct url's hoef te werken.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Ik snap niet helemaal je vraag. Wat probeer je nu precies te doen, een item op titel zoeken terwijl je het ID al hebt? Anyhow, heb je hier wat aan?
I'm pretty sure there's no way to query across multiple calendars with a single API call. My suggestion would be to either write your app to query each calendar (not terribly efficient) or to write one app that syncs all of your calendars with your "master" calendar and then write another app to search and query against the master.
Verder hier en hier al gekeken?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • orange.x
  • Registratie: Maart 2002
  • Laatst online: 18-07 10:57
Ik roep een functie aan, en bij de aanroep geef ik de naam van de agenda mee. In die functie wil ik dus het event zoeken met nog wat meer gegevens maar dus alleen in die agenda.

Ik haal eerst alle agenda's op en loop erdoor zodat ik de juiste kan vinden.
PHP:
1
2
3
4
5
6
7
8
$calFeed = $gcal->getCalendarListFeed();
foreach ($calFeed as $calendar)
{
    if($calendar->title->text == "Naam agenda")
    {
        $url = $calendar->content->src;
    }
}


Die $url bevat uiteindelijk de complete url van die agenda. Maar daar zit het ID in van de agenda die ik in de volgende query wil verwerken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$query = $gcal->newEventQuery();
$query->setUser('default'); // <- daar moet het id inkomen, als ik dat hard erin zet werkt het prima..
$query->setVisibility('private');
$query->setProjection('basic');

try
{
    $feed = $gcal->getCalendarEventFeed($query);
}
catch (Zend_Gdata_App_Exception $e)
{
    echo "Error: " . $e->getResponse();
}

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

En zo'n Zend_Gdata_Calendar_ListEntry heeft niet toevallig een methode getId()?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • orange.x
  • Registratie: Maart 2002
  • Laatst online: 18-07 10:57
Jawel, maar ook daar krijg ik de hele url er weer uit, en niet alleen het id. En als ik dat in een variabele opsla dan kan ik em niet exploden of wat ook. Zolang ik dat id niet helemaal los heb, is het, met het idee hoe ik het zie zeg maar, niet mogelijk...

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
PHP:
1
return end(explode('/', (string) $event->getId()));


Werkt bij mij als een zonnetje...

Acties:
  • 0 Henk 'm!

  • orange.x
  • Registratie: Maart 2002
  • Laatst online: 18-07 10:57
Cartman! schreef op vrijdag 29 oktober 2010 @ 16:55:
PHP:
1
return end(explode('/', (string) $event->getId()));


Werkt bij mij als een zonnetje...
Maar jij gebruikt het id van een $event, ik probeer het te krijgen uit de agenda..
Iedere keer als ik iets van een bewerking erop doe dan krijg ik de tekst "Object" te zien.

PHP:
1
2
3
4
5
6
7
8
9
10
foreach ($feed as $event)
{
    $id = end(explode('/', (string) $event->getId()));
    ?>
    <li>
        <h2><?=$id?></h2>
        <?=$event->summary?>
    </li>
    <?
}


Als ik dat doe, dan krijg ik als titel de tekst "Object id # 137". Zit er dan iets in de installatie verkeerd?

Edit:
Volgens mij ben ik er uit :)
Als ik dit doe, dan kan ik het wel:
PHP:
1
2
3
4
5
6
7
8
// fout
$bla = $calendar->id;
$bla = $calendar->getId();

// goed
$bla = $calendar->id->text;
$bla = $calendar->getId()->text;
echo end(explode('/', (string) $bla));

[ Voor 14% gewijzigd door orange.x op 29-10-2010 20:22 . Reden: Probleem opgelost ]

Pagina: 1