Tôi đang trong quá trình tạo blog cho ai đó. Họ muốn thu thập rất nhiều dữ liệu và tích hợp nó khá chặt chẽ vào thiết kế, vì vậy các tiện ích chuẩn là không có. Đó là tốt cho đến bây giờ.Bắt các sự kiện trên Lịch Google trong PHP
Họ có quyền truy cập công khai Lịch Google với nhiều sự kiện khác nhau và tôi muốn lấy 5 sự kiện tiếp theo (từ "bây giờ" trở đi) và hiển thị tiêu đề sự kiện, khi trường hợp đó bắt đầu, vị trí của nó và liên kết đến mục gcal.
Từ những gì tôi có thể thấy, có ba tùy chọn để lấy nguồn cấp dữ liệu gcal: XML, ical hoặc HTML (có chứa một số JSON thực sự whack). XML có vẻ giống như sự lựa chọn hợp lý, đúng không?
Vâng nguồn cấp dữ liệu XML là (sau mô tả nguồn cấp dữ liệu nguyên tử) thực sự chỉ có rất nhiều HTML faffy. Phân tích cú pháp này là có thể nhưng nó là một nỗi đau lớn ở phía sau bởi vì các sự kiện định kỳ (trong đó có một số trên lịch) chỉ hiển thị trường hợp đầu tiên của sự kiện đó và (dường như) không có thông tin về trường hợp kế tiếp.
Vì vậy, tôi chỉ là một chút dày đặc? Có cách nào để hiển thị những gì tôi muốn chỉ hack thông qua API XML?
Hoặc tôi có may mắn hơn thông qua iCal không? Tôi đã không bao giờ thực hiện bất kỳ iCal với PHP vì vậy nếu bạn có, xin vui lòng đề nghị bất kỳ libs bạn đã sử dụng để làm cho mọi thứ đơn giản hơn cho chính mình.
Edit: nhờ vào câu trả lời, tôi đã tải về các gói Zend Gdata (trong đó, may mắn, là riêng biệt với phần còn lại của Zend Framework). Làm những gì tôi cần là dễ dàng như này:
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
Điều đó sẽ giúp bạn có được giá trị của một tuần các sự kiện (có setStartMax được độc quyền để thiết lập nó 8 ngày trong tương lai là cần thiết).
Hy vọng điều này sẽ giúp người khác trong tương lai.
Tôi đã thấy điều này trước khi hỏi nhưng đã bị "Zend" gây ra. Bây giờ bạn đã nói rằng tôi không cần toàn bộ khuôn khổ cludging, tôi sẽ cho nó một cái nhìn thích hợp. Cảm ơn. – Oli