Η Zap Cal Library είναι μια βιβλιοθήκη PHP ανοιχτού κώδικα για την ανάγνωση και τη σύνταξη αρχείων iCalendar. Η βιβλιοθήκη βρίσκεται σε ανάπτυξη για πάνω από 10 χρόνια υποστηρίζοντας το πρόγραμμα Zap Calendar, μια εφαρμογή ανοιχτού κώδικα για το Joomla CMS και πιο πρόσφατα το έργο επικύρωσης iCalendar στον ιστότοπο. Είναι πλέον διαθέσιμη ως αυτόνομη βιβλιοθήκη για προγραμματιστές PHP.

Το Zap Calendar iCalendar Library είναι μια βιβλιοθήκη PHP για την υποστήριξη του προτύπου iCalendar (RFC 5545). Στη βιβλιοθήκη περιλαμβάνονται πολλά παραδείγματα ανάγνωσης και εγγραφής αρχείων iCalendar

Αυτή η βιβλιοθήκη PHP προορίζεται για την ανάγνωση και τη σύνταξη ροών και αρχείων με μορφή iCalendar. Τα χαρακτηριστικά της βιβλιοθήκης περιλαμβάνουν:

  • Υποστήριξη ανάγνωσης ΚΑΙ εγγραφής για αρχεία iCalendar
  • Δημιουργία και χειρισμός αρχείων iCalendar βάσει αντικειμένων
  • Υποστηρίζει την επέκταση του RRULE σε μια λίστα επαναλαμβανόμενων ημερομηνιών
  • Υποστηρίζει την προσθήκη πληροφοριών ζώνης ώρας στο αρχείο iCalendar

Όλα τα δεδομένα iCalendar αποθηκεύονται σε ένα δέντρο αντικειμένων PHP. Αυτό επιτρέπει την προσθήκη οποιασδήποτε ιδιότητας στη ροή του iCalendar χωρίς να απαιτούνται κλήσεις εξειδικευμένων λειτουργιών βιβλιοθήκης. Με την εξουσία έρχεται η ευθύνη. Οι ιδιότητες που λείπουν ή δεν είναι έγκυρες μπορεί να έχουν ως αποτέλεσμα το αρχείο iCalendar που προκύπτει να μην είναι έγκυρο.

Ακολουθεί ένα παράδειγμα προγράμματος PHP για τη δημιουργία ενός αρχείου iCalendar συμβάντος:

$title = "(!LANG:Απλό συμβάν"; // date/time is in SQL datetime format $event_start = "2020-01-01 12:00:00"; $event_end = "2020-01-01 13:00:00"; // create the ical object $icalobj = new ZCiCal(); // create the event within the ical object $eventobj = new ZCiCalNode("VEVENT", $icalobj->curnode); // add title $eventobj->addNode(new ZCiCalDataNode("SUMMARY:" . $title)); // add start date $eventobj->addNode(new ZCiCalDataNode("DTSTART:" . ZCiCal::fromSqlDateTime($event_start))); // add end date $eventobj->addNode(new ZCiCalDataNode("DTEND:" . ZCiCal::fromSqlDateTime($event_end))); // UID is a required item in VEVENT, create unique string for this event // Adding your domain to the end is a good way of creating uniqueness $uid = date("Y-m-d-H-i-s") . "@demo.. $uid)); // DTSTAMP is a required item in VEVENT $eventobj->addNode(new ZCiCalDataNode("DTSTAMP:" . ZCiCal::fromSqlDateTime())); // Add description $eventobj->addNode(new ZCiCalDataNode("Description:" . ZCiCal::formatContent("This is a simple event, using the Zap Calendar PHP library. " .."))); // write iCalendar feed to stdout echo $icalobj->export();!}

Την παραμονή του νέου έτους, προέκυψε ένα πολύ ασήμαντο έργο - να δημιουργήσετε έναν ιστότοπο ημερολογίου, όπου για κάθε μήνα ήταν απαραίτητο να εμφανιστεί ένα ημερολόγιο για ένα μήνα. Το πρώτο βήμα για την επίλυση του προβλήματος ήταν η αναζήτηση έτοιμων λύσεων. Μετά από ταξινόμηση δώδεκα λύσεων που δόθηκαν στο Διαδίκτυο, η επιλογή έγινε. Ορισμένες εκδόσεις αποδείχθηκαν ότι δεν λειτουργούσαν καθόλου, μερικές ήταν πολύ δυσκίνητες - θα έπρεπε να είναι αρκετά «πριονισμένες» για να έχετε το επιθυμητό αποτέλεσμα. Λοιπόν, ας δούμε πώς να γράψουμε ένα απλό ημερολόγιο σε php.

Η βάση του σεναρίου βρέθηκε στο Διαδίκτυο, τα λάθη επιδιορθώθηκαν, κάτι ολοκληρώθηκε, συγκεκριμένα, προστέθηκε η λειτουργικότητα της επισήμανσης ημερών άδειας με ξεχωριστή τάξη css.

Μηνιαία εφαρμογή ημερολογίου σε καθαρή PHP χωρίς χρήση mySQL, jQuery κ.λπ. δίνεται παρακάτω:

"; // εμφάνιση των ημερών της εβδομάδας $headings = array("Δευτέρα","Τρίτη","Τετ","Πέμπτη","Παρασκευή","Σάββατο","Κυρ."); $calendar.= " "; for($head_day = 0; $head_day<= 6; $head_day++) { $calendar.= ""; $calendar.= "

".$headings[$head_day]."
"; $calendar.= "";) $calendar.= ""; // ορίστε την έναρξη της εβδομάδας σε Δευτέρα $running_day = ημερομηνία("w",mktime(0,0,0,$month,1,$year)); $running_day = $running_day - 1; εάν ($ run_day == -1) ( $running_day = 6; ) $days_in_month = date("t",mktime(0,0,0,$month,1,$year)); $day_counter = 0; $days_in_this_week = 1; $dates_array = array(); // πρώτη γραμμή του ημερολογίου $calendar.= " "; // εμφανίζει κενά κελιά για ($x = 0; $x< $running_day; $x++) { $calendar.= ""; $days_in_this_week++; ) // έφτασε στους αριθμούς, θα τους γράψουμε στην πρώτη γραμμή για($list_day = 1; $list_day<= $days_in_month; $list_day++) { $calendar.= ""; // γράψτε τον αριθμό στο κελί $calendar.= "
".$list_day."
"; $calendar.= ""; // έφτασε στην τελευταία ημέρα της εβδομάδας εάν ($running_day == 6) ( // κλείσετε τη γραμμή $calendar.= ""; // εάν η ημέρα δεν είναι η τελευταία του μήνα, ξεκινήστε την επόμενη γραμμή εάν (($day_counter + 1) != $days_in_month) ( $calendar.= " "; ) // επαναφορά των μετρητών $running_day = -1; $days_in_this_week = 0; ) $days_in_this_week++; $running_day++; $day_counter++; ) // εμφανίζει τα κενά κελιά στο τέλος της τελευταίας εβδομάδας εάν ($days_in_this_week< 8) { for($x = 1; $x <= (8 - $days_in_this_week); $x++) { $calendar.= " "; ) ) $calendar.= ""; $calendar.= ""; επιστροφή $calendar; ) ?>

Ως είσοδος, η συνάρτηση draw_calendar λαμβάνει τον τακτικό αριθμό του μήνα και του έτους. Το αποτέλεσμα της εκτέλεσης της συνάρτησης είναι ο κώδικας html του ημερολογίου για τον συγκεκριμένο μήνα. Η χρήση της παραπάνω συνάρτησης δεν είναι δύσκολη και μπορεί να το κάνει ακόμα και ένας αρχάριος στην ανάπτυξη ιστοσελίδων. Το παρακάτω παράδειγμα θα εμφανίσει το ημερολόγιο για τον Ιανουάριο του 2016.

Ιανουάριος "16

Η έξοδος της λεζάντας του ημερολογίου, η οποία περιλαμβάνει το όνομα του μήνα και του έτους, δεν συμπεριλήφθηκε σκόπιμα στη συνάρτηση, έτσι ώστε να μπορεί να αλλάξει ελεύθερα και ενδεχομένως να αφαιρεθεί εντελώς.

php ημερολόγιο για ένα χρόνο

Από την παραπάνω συνάρτηση, μπορείτε εύκολα να λάβετε ένα σενάριο php ημερολογίου για ένα χρόνο και για οποιοδήποτε. Για να γίνει αυτό, αρκεί να περάσετε όλους τους μήνες σε βρόχο και να καλέσετε τη συνάρτηση για την εμφάνιση ενός ημερολογίου για ένα μήνα για καθένα από αυτούς.

Ωστόσο, σε αυτήν την περίπτωση, θα χρειαστεί να δημιουργήσετε έναν πίνακα με μια λίστα ονομάτων μηνών στα ρωσικά, καθώς μπορείτε να λάβετε ονόματα μηνών μόνο από την php στα αγγλικά.

Ο κωδικός σε αυτή την περίπτωση θα είναι ο εξής:

"Ιανουάριος", 1 => "Φεβρουάριος", 2 => "Μάρτιος", 3 => "Απρίλιος", 4 => "Μάιος", 5 => "Ιούνιος", 6 => "Ιούλιος", 7 => " Αύγουστος", 8 => "Σεπτέμβριος", 9 => "Οκτώβριος", 10 => "Νοέμβριος", 11 => "Δεκέμβριος"); για ($month = 1; $month<= 12; $month++) { ?>

"16

Μπορείτε να κατεβάσετε τα παραδείγματα σε αυτήν την ανάρτηση από το github.

14 Σεπτεμβρίου 2014

Υπάρχουν περιπτώσεις όπου δεν μπορείτε να χρησιμοποιήσετε ένα στοιχείο που δημιουργήθηκε σε JavaScript. Κατά κανόνα, αυτές είναι οι περιπτώσεις που χρειάζεστε τη δυνατότητα να μην αυτοματοποιήσετε την επιλογή ημερομηνίας στη φόρμα HTML, αλλά τη δυνατότητα σύνδεσης ορισμένων προηγούμενων ή προγραμματισμένων συμβάντων με ημερομηνίες στο μέλλον. Αυτός μπορεί να είναι ο αριθμός των ειδήσεων σε μια συγκεκριμένη ημερομηνία, ο αριθμός των παραγγελθέντων αγαθών ή αγορών που πραγματοποιήθηκαν σε ένα ηλεκτρονικό κατάστημα κ.λπ. Εκείνοι. Σε τέτοιες περιπτώσεις, καθίσταται προφανές ότι υπάρχει ανάγκη για σύνδεση μεταξύ του ημερολογίου και της βάσης δεδομένων προκειμένου να ληφθούν ορισμένες πληροφορίες για μια συγκεκριμένη ημερομηνία. Φυσικά, θα ήταν δυνατό να δημιουργήσετε ένα ημερολόγιο σε JavaScript και να χρησιμοποιήσετε το Ajax για να λάβετε δεδομένα σχετικά με την παρουσία ορισμένων συμβάντων, αλλά όπως δείχνει η πρακτική, αυτή η λύση δεν είναι η βέλτιστη. Επομένως, αυτό το στοιχείο ημερολογίου θα αναπτυχθεί σε PHP.

Οι ρυθμίσεις στυλ για το ημερολόγιο περιέχονται στο αρχείο calendar.css. Και το σενάριο PHP βρίσκεται στο αρχείο τάξη ημερολογίου.

Για να εργαστείτε με το ημερολόγιο, πρέπει να προσθέσετε τον ακόλουθο κώδικα στη λειτουργική μονάδα που χρειάζεστε:

// Συμπεριλάβετε το module require_once (dirname (__FILE__) . "/calendar.class.php"); // Πίνακας με ημερομηνίες συμβάντων σε μορφή Unix $Events = πίνακας(1409778000,1409778000,1410210000,1410901200,1411592400); // Λάβετε την ημερομηνία εάν $date = (isset($_REQUEST["date"])); $_REQUEST["ημερομηνία"] : "" ; // Δημιουργία αντικειμένου ημερολογίου $calendar = new Calendar($date, $Events); // Εμφάνιση της echo του ημερολογίου $calendar->ShowCalendar();

Μπορείτε να τροποποιήσετε τον πηγαίο κώδικα αυτού του ημερολογίου σύμφωνα με τις ανάγκες σας. Μπορείτε να κάνετε λήψη του στοιχείου ημερολογίου.