PHP

2009-05-12 14 views
11

में Google कैलेंडर ईवेंट प्राप्त करना मैं किसी के लिए ब्लॉग बनाने की प्रक्रिया में हूं। वे बहुत सारे डेटा खींचना चाहते हैं और इसे डिजाइन में काफी कसकर एकीकृत करना चाहते हैं, इसलिए मानक विजेट्स नो-नो हैं। अब तक यह ठीक रहा है।PHP

उनके पास विभिन्न घटनाओं के साथ सार्वजनिक कैलेंडर Google कैलेंडर है और मैं अगले 5 कार्यक्रमों ("अब" से आगे) को पकड़ना चाहता हूं और ईवेंट शीर्षक प्रदर्शित करना चाहता हूं, जब ईवेंट का यह उदाहरण शुरू होता है, उसका स्थान और एक जीसीएल आइटम से लिंक करें।

जो मैं देख सकता हूं, उससे gcal फ़ीड्स को पकड़ने के लिए तीन विकल्प हैं: एक्सएमएल, ical या HTML (जिनमें कुछ वास्तव में जेएसओएन है)। एक्सएमएल तार्किक पसंद की तरह लगता है, है ना?

वैसे एक्सएमएल फ़ीड (परमाणु फ़ीड विवरण के बाद) वास्तव में बहुत सारे एफएफटी एचटीएमएल है। इसे पार करना संभव है लेकिन पीछे की ओर यह एक बड़ा दर्द है क्योंकि पुनरावर्ती घटनाएं (जिनमें से कैलेंडर पर कई हैं) केवल उस घटना का पहला उदाहरण दिखाते हैं और (जाहिर है) अगली घटना कब होती है, इस बारे में कोई जानकारी नहीं है।

तो क्या मैं बस थोड़ा घना रहा हूं? क्या एक्सएमएल एपीआई के माध्यम से मैं सिर्फ हैकिंग करना चाहता हूं यह दिखाने का कोई तरीका है?

या क्या iCal के माध्यम से मेरे पास बेहतर भाग्य होगा? मैंने PHP के साथ कभी भी iCal नहीं किया है, इसलिए यदि आपके पास है, तो कृपया अपने लिए चीजों को सरल बनाने के लिए उपयोग की गई किसी भी libs का सुझाव दें।

संपादित करें: जवाब देने के लिए धन्यवाद, मैं Zend GData पैक (जो, शुक्र, Zend फ्रेमवर्क के आराम करने के अलग है) डाउनलोड किया। ऐसा करने से मैं क्या इस के रूप में के रूप में आसान था की जरूरत है:

require_once 'Zend/Loader.php'; 
Zend_Loader::loadClass('Zend_Gdata'); 
Zend_Loader::loadClass('Zend_Gdata_HttpClient'); 
Zend_Loader::loadClass('Zend_Gdata_Calendar'); 
$service = new Zend_Gdata_Calendar(); 
$query = $service->newEventQuery(); 

$query->setUser('[email protected]'); 

$query->setVisibility('public'); 
$query->setProjection('full'); 
$query->setStartMin(date('Y-n-j')); 
$query->setStartMax(date('Y-n-j', time() + (60*60 *24*8))); 
$query->setOrderby('starttime'); 

try { $eventFeed = $service->getCalendarEventFeed($query); } 
catch (Zend_Gdata_App_Exception $e) { return; } 

foreach ($eventFeed as $event) 
    echo $event; // do something real here 

आप घटनाओं की एक सप्ताह की राशि (हाँ setStartMax अनन्य तो यह 8 दिन भविष्य में सेट कर रहा है की आवश्यकता है) मिलना चाहिए यही कारण है कि।

उम्मीद है कि यह भविष्य में किसी और की मदद करेगा।

उत्तर

8

एक अन्य विकल्प Zend गूगल कैलेंडर पुस्तकालय का उपयोग करने के, तो आप पूरे Zend फ्रेमवर्क

http://framework.zend.com/manual/en/zend.gdata.calendar.html

यह है कि मुश्किल आप एक बार नहीं है की जरूरत नहीं है यह Zend फ्रेमवर्क का एक अलग हिस्सा है उदाहरणों पर एक नज़र डालें।

+0

मैंने यह पूछने से पहले देखा लेकिन नाम में "ज़ेंड" से डर गया था। अब आपने कहा है कि मुझे पूरी क्लॉडिंग फ्रेमवर्क की आवश्यकता नहीं है, मैं इसे एक उचित रूप दे दूंगा। धन्यवाद। – Oli

1

कोड का उपयोग कर किसी भी व्यक्ति के सिर के रूप में, echo $event; ने मेरे लिए कुछ भी प्रदर्शित नहीं किया, इसलिए मैंने सोचा कि क्वेरी विफल हो रही है।

यहाँ एक टुकड़ा है कि कुछ प्रिंट चाहिए:

foreach ($eventFeed as $event) { 
    echo $event->title->text . '<br />'; 
} 
3

मामले में यह किसी और में मदद करता है, मैं पता लगा डिफ़ॉल्ट के अलावा अन्य कैलेंडर कैसे प्राप्त करें। यदि आप अपने Google कैलेंडर में जाते हैं और कैलेंडर सेटिंग्स देखते हैं, तो नीचे एक कैलेंडर आईडी है जो वास्तव में एक लंबे ईमेल पते की तरह स्वरूपित होती है। (उदाहरण: [email protected]) $ query- > उस विशिष्ट कैलेंडर का उपयोग करने के लिए setUser()।

+0

धन्यवाद ... यह कैसे करना है इसके लिए वेब को खराब कर रहा है! –