में 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 दिन भविष्य में सेट कर रहा है की आवश्यकता है) मिलना चाहिए यही कारण है कि।
उम्मीद है कि यह भविष्य में किसी और की मदद करेगा।
मैंने यह पूछने से पहले देखा लेकिन नाम में "ज़ेंड" से डर गया था। अब आपने कहा है कि मुझे पूरी क्लॉडिंग फ्रेमवर्क की आवश्यकता नहीं है, मैं इसे एक उचित रूप दे दूंगा। धन्यवाद। – Oli