Changeset 3385477
- Timestamp:
- 10/27/2025 09:39:43 PM (5 months ago)
- Location:
- ics-calendar
- Files:
-
- 196 added
- 5 edited
-
tags/11.7.0 (added)
-
tags/11.7.0/assets (added)
-
tags/11.7.0/assets/admin-script.js (added)
-
tags/11.7.0/assets/admin-script.min.js (added)
-
tags/11.7.0/assets/admin-style.css (added)
-
tags/11.7.0/assets/admin-style.min.css (added)
-
tags/11.7.0/assets/debug.css (added)
-
tags/11.7.0/assets/icon-mail.svg (added)
-
tags/11.7.0/assets/ics-calendar-icon-2023.svg (added)
-
tags/11.7.0/assets/ics-calendar-logo-2023.svg (added)
-
tags/11.7.0/assets/ics-calendar-pro-icon-2023.svg (added)
-
tags/11.7.0/assets/ics-calendar-pro-logo-2023.svg (added)
-
tags/11.7.0/assets/ics-events-logo.svg (added)
-
tags/11.7.0/assets/ics-mockups-2025.png (added)
-
tags/11.7.0/assets/red-purple-gradient-background.png (added)
-
tags/11.7.0/assets/room34-logo-on-white.svg (added)
-
tags/11.7.0/assets/script.js (added)
-
tags/11.7.0/assets/script.min.js (added)
-
tags/11.7.0/assets/style.css (added)
-
tags/11.7.0/assets/style.min.css (added)
-
tags/11.7.0/blocks (added)
-
tags/11.7.0/blocks/empty (added)
-
tags/11.7.0/changelog.txt (added)
-
tags/11.7.0/class-r34ics.php (added)
-
tags/11.7.0/compatibility.php (added)
-
tags/11.7.0/functions.php (added)
-
tags/11.7.0/i18n (added)
-
tags/11.7.0/i18n/languages (added)
-
tags/11.7.0/i18n/languages/ics-calendar-cs_CZ.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-cs_CZ.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-cs_CZ.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-da_DK.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-da_DK.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-da_DK.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_AT.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_AT.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_AT.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_CH.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_CH.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_CH.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_CH_informal.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_CH_informal.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_CH_informal.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_DE.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_DE.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_DE.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_DE_formal.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_DE_formal.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-de_DE_formal.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-el.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-el.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-el.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-el_GR.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-el_GR.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-el_GR.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-en_GB.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-en_GB.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-en_GB.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-es_ES.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-es_ES.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-es_ES.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-es_MX.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-es_MX.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-es_MX.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-et.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-et.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-et.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-et_EE.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-et_EE.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-et_EE.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fi.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fi.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fi.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fi_FI.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fi_FI.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fi_FI.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fr_BE.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fr_BE.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fr_BE.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fr_CA.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fr_CA.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fr_CA.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fr_CH.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fr_CH.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fr_CH.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fr_FR.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fr_FR.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-fr_FR.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-hu_HU.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-hu_HU.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-hu_HU.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-it_CH.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-it_CH.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-it_CH.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-it_IT.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-it_IT.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-it_IT.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ja.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ja.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ja.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ja_JP.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ja_JP.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ja_JP.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ko_KR.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ko_KR.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ko_KR.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-lt.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-lt.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-lt.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-lt_LT.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-lt_LT.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-lt_LT.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-lv.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-lv.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-lv.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-lv_LV.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-lv_LV.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-lv_LV.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-nb_NO.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-nb_NO.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-nb_NO.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-nl_BE.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-nl_BE.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-nl_BE.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-nl_NL.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-nl_NL.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-nl_NL.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-nl_NL_formal.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-nl_NL_formal.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-nl_NL_formal.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-pl.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-pl.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-pl.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-pl_PL.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-pl_PL.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-pl_PL.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-pt_BR.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-pt_BR.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-pt_BR.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-pt_PT.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-pt_PT.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-pt_PT.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ru.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ru.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ru.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ru_RU.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ru_RU.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-ru_RU.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-sl_SI.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-sl_SI.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-sl_SI.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-sv_SE.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-sv_SE.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-sv_SE.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar-zh_CN.l10n.php (added)
-
tags/11.7.0/i18n/languages/ics-calendar-zh_CN.mo (added)
-
tags/11.7.0/i18n/languages/ics-calendar-zh_CN.po (added)
-
tags/11.7.0/i18n/languages/ics-calendar.pot (added)
-
tags/11.7.0/ics-calendar.php (added)
-
tags/11.7.0/r34ics-ajax.php (added)
-
tags/11.7.0/readme.txt (added)
-
tags/11.7.0/templates (added)
-
tags/11.7.0/templates/admin (added)
-
tags/11.7.0/templates/admin/add-calendar-button.php (added)
-
tags/11.7.0/templates/admin/add-calendar.php (added)
-
tags/11.7.0/templates/admin/admin.php (added)
-
tags/11.7.0/templates/admin/getting-started.php (added)
-
tags/11.7.0/templates/admin/settings.php (added)
-
tags/11.7.0/templates/admin/sidebar.php (added)
-
tags/11.7.0/templates/admin/utilities.php (added)
-
tags/11.7.0/templates/calendar-basic.php (added)
-
tags/11.7.0/templates/calendar-list.php (added)
-
tags/11.7.0/templates/calendar-month.php (added)
-
tags/11.7.0/templates/calendar-week.php (added)
-
tags/11.7.0/templates/print.php (added)
-
tags/11.7.0/vendors (added)
-
tags/11.7.0/vendors/ics-parser (added)
-
tags/11.7.0/vendors/ics-parser-legacy (added)
-
tags/11.7.0/vendors/ics-parser-legacy/LICENSE (added)
-
tags/11.7.0/vendors/ics-parser-legacy/README.md (added)
-
tags/11.7.0/vendors/ics-parser-legacy/src (added)
-
tags/11.7.0/vendors/ics-parser-legacy/src/ICal (added)
-
tags/11.7.0/vendors/ics-parser-legacy/src/ICal/Event.php (added)
-
tags/11.7.0/vendors/ics-parser-legacy/src/ICal/ICal.php (added)
-
tags/11.7.0/vendors/ics-parser/LICENSE (added)
-
tags/11.7.0/vendors/ics-parser/README.md (added)
-
tags/11.7.0/vendors/ics-parser/src (added)
-
tags/11.7.0/vendors/ics-parser/src/ICal (added)
-
tags/11.7.0/vendors/ics-parser/src/ICal/Event.php (added)
-
tags/11.7.0/vendors/ics-parser/src/ICal/ICal.php (added)
-
tags/11.7.0/vendors/persist-admin-notices-dismissal (added)
-
tags/11.7.0/vendors/persist-admin-notices-dismissal/CHANGES.md (added)
-
tags/11.7.0/vendors/persist-admin-notices-dismissal/README.md (added)
-
tags/11.7.0/vendors/persist-admin-notices-dismissal/composer.json (added)
-
tags/11.7.0/vendors/persist-admin-notices-dismissal/dismiss-notice.js (added)
-
tags/11.7.0/vendors/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php (added)
-
trunk/changelog.txt (modified) (1 diff)
-
trunk/class-r34ics.php (modified) (3 diffs)
-
trunk/functions.php (modified) (1 diff)
-
trunk/ics-calendar.php (modified) (1 diff)
-
trunk/readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ics-calendar/trunk/changelog.txt
r3376428 r3385477 1 1 === ICS Calendar Changelog === 2 3 = 11.7.0 - 2025.10.27 = 4 5 * schema.org structured data: _BETA_ 6 * Added `jsonld` shortcode parameter (and related `r34ics_event2jsonld()` function) for adding [JSON-LD structured data](https://schema.org/Event) to calendar output. This is still a beta/experimental feature. We have confirmed that our generated test code passes [validation](https://validator.schema.org), but we need to observe some real-world testing to determine whether or not the output needs additional refinements to match Google's expectations for structured event data. This feature is _off_ by default. To use it, add `jsondl="true"` to your shortcode. And please send your [feedback](https://icscalendar.com/support/) on how it works for you! (See also [Google's documentation](https://developers.google.com/search/docs/appearance/structured-data/event).) 7 * Miscellaneous: 8 * Bumped 'tested up to' to 6.9. 2 9 3 10 = 11.6.0 - 2025.10.10 = -
ics-calendar/trunk/class-r34ics.php
r3376428 r3385477 97 97 'htmltagtime' => '', 98 98 'htmltagtitle' => '', 99 'jsonld' => false, 99 100 'legacyparser' => false, // Deprecated 100 101 'legendinline' => false, // Deprecated … … 1585 1586 1586 1587 public function r34ics_display_calendar_after_render_template($view, $args, $ics_data) { 1588 if (!empty($args['jsonld']) && !empty($ics_data['events'])) { 1589 ?> 1590 <script> 1591 [ 1592 <?php 1593 // @todo Find a less... "deep"... way to do this 1594 ob_start(); 1595 foreach ((array)$ics_data['events'] as $year => $months) { 1596 foreach ((array)$months as $month => $days) { 1597 foreach ((array)$days as $day => $day_events) { 1598 foreach ((array)$day_events as $time => $events) { 1599 foreach ((array)$events as $event_key => $event) { 1600 echo r34ics_event2jsonld($event) . ','; 1601 } 1602 } 1603 } 1604 } 1605 } 1606 echo rtrim(ob_get_clean(), ','); 1607 ?> 1608 ] 1609 </script> 1610 <?php 1611 } 1587 1612 return; 1588 1613 } … … 1831 1856 'hiderecurrence' => r34ics_hiderecurrence_parse($hiderecurrence), 1832 1857 'hidetimes' => r34ics_boolean_check($hidetimes), 1858 'jsonld' => r34ics_boolean_check($jsonld), 1833 1859 'legacyparser' => r34ics_boolean_check($legacyparser), // Deprecated 1834 1860 'legendinline' => false, // Deprecated -
ics-calendar/trunk/functions.php
r3364205 r3385477 529 529 530 530 531 // Convert a single parsed event array to JSON-LD structured data format 532 // Conforms to specifications at: https://schema.org/Event 533 // More info: https://developers.google.com/search/docs/appearance/structured-data/event 534 function r34ics_event2jsonld($event) { 535 // Don't return anything if this event is private or confidential 536 if (!empty($event['class']) && in_array(strtoupper($event['class']), array('PRIVATE', 'CONFIDENTIAL'))) { return ''; } 537 538 // Don't return anything if this event does not have a URL (required for Google's application of JSON-LD) 539 if (empty($event['url'])) { return ''; } 540 541 // Assemble array to be converted to JSON 542 $json_array = array( 543 '@context' => 'https://schema.org', 544 '@type' => 'Event', 545 ); 546 547 // Core fields 548 $json_array['name'] = wp_strip_all_tags($event['label']); 549 $json_array['description'] = wp_strip_all_tags($event['eventdesc']); 550 $json_array['startDate'] = r34ics_date('c', $event['dtstart']); 551 $json_array['endDate'] = r34ics_date('c', $event['dtend']); 552 $json_array['url'] = esc_url($event['url']); 553 $json_array['identifier'] = wp_strip_all_tags($event['uid']); 554 555 // Conditional fields 556 if (!empty($event['attach'])) { 557 // This is working with ICS Calendar's logic that incorporates an <img> tag 558 if (strpos($event['attach'], '<img src=') !== false) { 559 preg_match_all('/src="([^"]+)"/', $event['attach'], $img_src); 560 $json_array['image'] = $img_src[1]; 561 } 562 } 563 if (!empty($event['location'])) { 564 $json_array['location'] = array( 565 '@type' => 'Place', 566 'name' => wp_strip_all_tags(implode(', ', array_filter((array)$event['location']))), // @todo Break out address array 567 ); 568 } 569 if (!empty($event['organizer'])) { 570 $json_array['organizer'] = array( 571 '@type' => 'Organization', 572 'name' => wp_strip_all_tags(implode(', ', array_filter((array)$event['organizer']))), // @todo Break out address array 573 ); 574 } 575 if (!empty($event['status']) && strtoupper($event['status']) == 'CANCELLED') { 576 $json_array['eventStatus'] = 'https://schema.org/EventCancelled'; 577 } 578 579 // Return array, converted to JSON 580 return json_encode($json_array, JSON_UNESCAPED_SLASHES); 581 } 582 583 531 584 // Generate dynamic feed colors CSS 532 585 function r34ics_feed_colors_css($ics_data, $padding=false, $hover=false) { -
ics-calendar/trunk/ics-calendar.php
r3376428 r3385477 4 4 Plugin URI: https://icscalendar.com 5 5 Description: Turn your Google Calendar, Microsoft Office 365 or Apple iCloud Calendar into a seamlessly integrated, auto-updating, zero-maintenance WordPress experience. 6 Version: 11. 6.06 Version: 11.7.0 7 7 Requires at least: 4.9 8 8 Requires PHP: 7.2 -
ics-calendar/trunk/readme.txt
r3376428 r3385477 4 4 Tags: iCalendar, Google Calendar, Office 365, events, ICS feed 5 5 Requires at least: 4.9 6 Tested up to: 6. 86 Tested up to: 6.9 7 7 Requires PHP: 7.2 8 Stable tag: 11. 6.08 Stable tag: 11.7.0 9 9 License: GPLv2 or later 10 10 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 99 99 100 100 == Changelog == 101 102 = 11.7.0 - 2025.10.27 = 103 104 * schema.org structured data: _BETA_ 105 * Added `jsonld` shortcode parameter (and related `r34ics_event2jsonld()` function) for adding [JSON-LD structured data](https://schema.org/Event) to calendar output. This is still a beta/experimental feature. We have confirmed that our generated test code passes [validation](https://validator.schema.org), but we need to observe some real-world testing to determine whether or not the output needs additional refinements to match Google's expectations for structured event data. This feature is _off_ by default. To use it, add `jsondl="true"` to your shortcode. And please send your [feedback](https://icscalendar.com/support/) on how it works for you! (See also [Google's documentation](https://developers.google.com/search/docs/appearance/structured-data/event).) 106 * Miscellaneous: 107 * Bumped 'tested up to' to 6.9. 101 108 102 109 = 11.6.0 - 2025.10.10 =
Note: See TracChangeset
for help on using the changeset viewer.