2011-06-28 36 views
8

Có ai biết lớp lịch PHP nguồn mở xử lý việc lưu trữ, truy xuất và xóa sự kiện hay không.Lịch PHP có sự kiện lặp lại

Tôi đã xem mọi nơi và tất cả những gì tôi có thể tìm thấy là các lớp sẽ tạo đầu ra HMTL cho lịch nhưng không quản lý các sự kiện lịch thực tế.

Tôi không thể sử dụng lịch Google vì dự án tôi đang thực hiện không cho phép tôi làm cho lịch có thể truy cập công khai và nó cũng cần hoạt động ngoại tuyến.

Tôi biết câu hỏi này đã được hỏi hàng nghìn lần trước nhưng tôi chưa bao giờ bắt gặp câu trả lời hoàn chỉnh.

CẬP NHẬT :: Lịch này sẽ được sử dụng trong ứng dụng thương mại nhưng tiếc là chúng tôi không có tiền để mua giấy phép phần mềm vào thời điểm hiện tại để tất cả các tập lệnh của bên thứ ba cần được phân phối miễn phí ứng dụng thương mại

Cảm ơn

+0

Lịch Google có thể được cung cấp công khai – Alex

+0

Xin lỗi tôi muốn nói với tôi không thể sử dụng lịch Google làm lịch tôi đang làm việc không hiển thị công khai –

Trả lời

5

Trong dự án tôi đang làm việc trên hiện nay, chúng ta đã có một thách thức tương tự. Chúng tôi cũng muốn hiển thị các sự kiện không phải là các mục lịch mạo hiểm, nhưng các mục xuất phát từ kế hoạch hành động.

Chúng tôi đã sử dụng Full Calander, kết hợp với lập trình PHP cung cấp nguồn cấp dữ liệu JSON. Full Calendar cũng cung cấp nhiều hook sự kiện, trong trường hợp của chúng ta kích hoạt một bài viết Ajax để lập trình PHP mà chỉnh sửa cơ sở dữ liệu.

chi tiết hơn một chút:

Chúng tôi gọi Lịch đầy đủ với:

$('#calendar').fullCalendar({ 
    events: '/pl_feed.php' 
}); 

Full Lịch sau đó lần, ví dụ:

/pl_feed.php?start=1262332800&end=1265011200&_=1263178646 

(tham số thêm được sử dụng để ngăn chặn bộ nhớ đệm)

pl_feed.php tạo sự kiện được hiển thị trong Lịch ar.

Nhân tiện: Tôi thấy rằng Lớp Ngày của David Powers (đọc cuốn sách của mình: tốt) là một niềm vui để làm việc cùng. Bạn có thể tải nó tại địa điểm của nhà xuất bản: http://www.apress.com/9781430210115

Khi hoàn thành công việc tạo ra các sự kiện được yêu cầu, pl_feed.php đặt chúng trong một mảng đa chiều và lặp lại các mảng với json_encode:

foreach ($array_events as $array_event) { 

     $array_feed_item['id'] = $array_event['id']; 
     $array_feed_item['title'] = //Whatever you like to be the title; 
     $array_feed_item['start'] = $array_event['start']; //Y-m-d H:i:s format 
     $array_feed_item['end'] = $array_event['end']; //Y-m-d H:i:s format 
     $array_feed_item['allDay'] = 0; 
     $array_feed_item['color'] = 'blue'; //Whatever you like, of course 
     $array_feed_item['borderColor'] = 'blue'; 
     //You can also a CSS class: 
     $array_feed_item['className'] = 'pl_act_rood'; 

     //Add this event to the full list of events: 
     $array_feed_items[] = $array_feed_item; 
    } 

    echo json_encode($array_feed_items); 

Full Sau đó, Lịch sẽ hiển thị cho bạn các sự kiện được tạo bởi /pl_feed.php.

Hy vọng điều này sẽ hữu ích.

+0

Tôi cũng đang tìm cách sử dụng FullCalendar nhưng không thể nhận các sự kiện định kỳ hoạt động bình thường. Liệu kịch bản bạn có chứa điều này? –

+0

Nguồn cấp dữ liệu JSON mà tôi đã tạo bằng PHP tạo ra các sự kiện định kỳ, không phải chính FullCalandar. Và thật dễ dàng để cung cấp cho các sự kiện này một chút khác biệt về giao diện, để người dùng biết rõ đó là sự kiện lặp lại. – Rick

+0

Có cơ hội nào bạn có thể chia sẻ tập lệnh bạn đã tạo không? –

0

Bạn có thể sử dụng google gdata api để quản lý sự kiện của mình. Nó có hỗ trợ sự kiện định kỳ tuyệt vời.

Họ cũng có tính năng sự kiện riêng tư, điều này làm cho sự kiện của bạn không hiển thị công khai. nó cũng được hỗ trợ bởi khung công tác zend - http://framework.zend.com/manual/en/zend.gdata.calendar.html

+0

Cảm ơn bạn đã bình luận nhưng tiếc là lịch Google không một lựa chọn cho dự án này. Bạn có biết bất kỳ thư viện lịch nguồn mở nào khác không? –

1

Tôi khuyên bạn nên làm cho ứng dụng của mình hoạt động đơn giản với giao thức như CalDAV. Sau đó, bạn có thể chỉ cần cho phép người dùng ứng dụng của bạn cung cấp bộ nhớ lịch của riêng họ. Một số người dùng có thể chọn sử dụng Lịch Google. Một số người dùng có thể có máy chủ Apple iCal hiện tại. Một số người dùng có thể thiết lập máy chủ của riêng họ cho việc này.

Để hoàn thành (và để giúp người dùng mới bắt đầu dễ dàng), bạn có thể bao gồm ví dụ: DAViCal (PHP, mã nguồn mở) làm giải pháp mặc định cho những người chưa có dịch vụ lịch.

Có thư viện PHP cho phép bạn dễ dàng kết nối đến một máy chủ CalDAV như iCalCreatoriCal Maker

+0

Tôi sống tính linh hoạt của phương pháp này nhưng có vẻ như DAViCal chỉ hoạt động với PostgreSQL. Bạn có biết về một biến thể mysql? –

+0

@James: DAViCal đang bận chuyển sang lớp truy cập cơ sở dữ liệu dựa trên PDO, điều này sẽ cho phép các phần phụ trợ cơ sở dữ liệu MySQL, SQLite và cơ sở dữ liệu khác. Có lẽ bạn có thể giúp đỡ? –

Các vấn đề liên quan