Changeset 3473467
- Timestamp:
- 03/03/2026 09:55:52 AM (4 weeks ago)
- Location:
- eventilla-events
- Files:
-
- 197 added
- 4 edited
-
tags/2.2.1 (added)
-
tags/2.2.1/LICENSE.txt (added)
-
tags/2.2.1/README.txt (added)
-
tags/2.2.1/admin (added)
-
tags/2.2.1/admin/class-eventilla-wp-admin.php (added)
-
tags/2.2.1/admin/class-eventilla-wp-logger-admin.php (added)
-
tags/2.2.1/admin/css (added)
-
tags/2.2.1/admin/css/eventilla-wp-admin.css (added)
-
tags/2.2.1/admin/index.php (added)
-
tags/2.2.1/admin/js (added)
-
tags/2.2.1/admin/js/event-list-block.js (added)
-
tags/2.2.1/admin/js/event-registration-block.js (added)
-
tags/2.2.1/admin/js/eventilla-wp-admin.js (added)
-
tags/2.2.1/admin/partials (added)
-
tags/2.2.1/admin/partials/eventilla-save-settings-button.php (added)
-
tags/2.2.1/admin/partials/eventilla-wp-admin-display.php (added)
-
tags/2.2.1/admin/partials/eventilla-wp-admin-submitbox.php (added)
-
tags/2.2.1/admin/partials/eventilla-wp-admin-update-status.php (added)
-
tags/2.2.1/admin/partials/logs (added)
-
tags/2.2.1/admin/partials/logs/eventilla-wp-logger-log-list.php (added)
-
tags/2.2.1/admin/partials/logs/eventilla-wp-logger-single-log.php (added)
-
tags/2.2.1/admin/settings (added)
-
tags/2.2.1/admin/settings/class-eventilla-opt-chosen-event-fields.php (added)
-
tags/2.2.1/admin/settings/class-eventilla-opt.php (added)
-
tags/2.2.1/data (added)
-
tags/2.2.1/data/country_codes.json (added)
-
tags/2.2.1/eventilla-wp.php (added)
-
tags/2.2.1/includes (added)
-
tags/2.2.1/includes/api (added)
-
tags/2.2.1/includes/api/class-eventilla-wp-api-client.php (added)
-
tags/2.2.1/includes/api/class-eventilla-wp-api-request.php (added)
-
tags/2.2.1/includes/api/class-eventilla-wp-api-response.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-activator.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-api-request-legacy.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-common.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-cpt.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-deactivator.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-form-builder.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-form-options.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-form-type.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-html-builder-shortcode.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-i18n.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-loader.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-option-processing.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-polylang.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-response-validation.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-rest-api.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-router.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-scheduled-actions.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-shortcode.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-taxonomy.php (added)
-
tags/2.2.1/includes/class-eventilla-wp-updater.php (added)
-
tags/2.2.1/includes/class-eventilla-wp.php (added)
-
tags/2.2.1/includes/index.php (added)
-
tags/2.2.1/includes/logger (added)
-
tags/2.2.1/includes/logger/class-eventilla-wp-log-file-controller.php (added)
-
tags/2.2.1/includes/logger/class-eventilla-wp-logger.php (added)
-
tags/2.2.1/includes/logger/class-psr-log-level.php (added)
-
tags/2.2.1/includes/logger/interface-psr-logger-interface.php (added)
-
tags/2.2.1/includes/logger/trait-psr-logger-trait.php (added)
-
tags/2.2.1/includes/model (added)
-
tags/2.2.1/includes/model/class-eventilla-event.php (added)
-
tags/2.2.1/includes/model/class-eventilla-image.php (added)
-
tags/2.2.1/index.php (added)
-
tags/2.2.1/languages (added)
-
tags/2.2.1/languages/eventilla-wp-fi.mo (added)
-
tags/2.2.1/languages/eventilla-wp-fi_FI.mo (added)
-
tags/2.2.1/languages/eventilla-wp-fi_FI.po (added)
-
tags/2.2.1/languages/eventilla-wp.pot (added)
-
tags/2.2.1/libraries (added)
-
tags/2.2.1/libraries/action-scheduler (added)
-
tags/2.2.1/libraries/action-scheduler/action-scheduler.php (added)
-
tags/2.2.1/libraries/action-scheduler/changelog.txt (added)
-
tags/2.2.1/libraries/action-scheduler/classes (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_ActionClaim.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_ActionFactory.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_AdminView.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_AsyncRequest_QueueRunner.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_Compatibility.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_DataController.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_DateTime.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_Exception.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_FatalErrorMonitor.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_InvalidActionException.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_ListTable.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_LogEntry.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_NullLogEntry.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_OptionLock.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_QueueCleaner.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_QueueRunner.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_RecurringActionScheduler.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_SystemInformation.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_Versions.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_WPCommentCleaner.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/ActionScheduler_wcSystemStatus.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/Action (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/Action/Cancel_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/Action/Create_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/Action/Delete_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/Action/Generate_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/Action/Get_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/Action/List_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/Action/Next_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/Action/Run_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_Clean_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_QueueRunner.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_Scheduler_command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/Action_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/Migration_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/ProgressBar.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/WP_CLI/System_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/abstracts (added)
-
tags/2.2.1/libraries/action-scheduler/classes/abstracts/ActionScheduler.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_QueueRunner.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_RecurringSchedule.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_Schedule.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_Schema.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/abstracts/ActionScheduler_Lock.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/abstracts/ActionScheduler_Logger.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/abstracts/ActionScheduler_Store.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/abstracts/ActionScheduler_TimezoneHelper.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/abstracts/ActionScheduler_WPCLI_Command.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/actions (added)
-
tags/2.2.1/libraries/action-scheduler/classes/actions/ActionScheduler_Action.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/actions/ActionScheduler_CanceledAction.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/actions/ActionScheduler_FinishedAction.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/actions/ActionScheduler_NullAction.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/data-stores (added)
-
tags/2.2.1/libraries/action-scheduler/classes/data-stores/ActionScheduler_DBLogger.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/data-stores/ActionScheduler_HybridStore.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/data-stores/ActionScheduler_wpCommentLogger.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore_PostStatusRegistrar.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore_PostTypeRegistrar.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore_TaxonomyRegistrar.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/migration (added)
-
tags/2.2.1/libraries/action-scheduler/classes/migration/ActionMigrator.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/migration/ActionScheduler_DBStoreMigrator.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/migration/BatchFetcher.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/migration/Config.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/migration/Controller.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/migration/DryRun_ActionMigrator.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/migration/DryRun_LogMigrator.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/migration/LogMigrator.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/migration/Runner.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/migration/Scheduler.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/schedules (added)
-
tags/2.2.1/libraries/action-scheduler/classes/schedules/ActionScheduler_CanceledSchedule.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/schedules/ActionScheduler_CronSchedule.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/schedules/ActionScheduler_IntervalSchedule.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/schedules/ActionScheduler_NullSchedule.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/schedules/ActionScheduler_Schedule.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/schedules/ActionScheduler_SimpleSchedule.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/schema (added)
-
tags/2.2.1/libraries/action-scheduler/classes/schema/ActionScheduler_LoggerSchema.php (added)
-
tags/2.2.1/libraries/action-scheduler/classes/schema/ActionScheduler_StoreSchema.php (added)
-
tags/2.2.1/libraries/action-scheduler/deprecated (added)
-
tags/2.2.1/libraries/action-scheduler/deprecated/ActionScheduler_Abstract_QueueRunner_Deprecated.php (added)
-
tags/2.2.1/libraries/action-scheduler/deprecated/ActionScheduler_AdminView_Deprecated.php (added)
-
tags/2.2.1/libraries/action-scheduler/deprecated/ActionScheduler_Schedule_Deprecated.php (added)
-
tags/2.2.1/libraries/action-scheduler/deprecated/ActionScheduler_Store_Deprecated.php (added)
-
tags/2.2.1/libraries/action-scheduler/deprecated/functions.php (added)
-
tags/2.2.1/libraries/action-scheduler/functions.php (added)
-
tags/2.2.1/libraries/action-scheduler/lib (added)
-
tags/2.2.1/libraries/action-scheduler/lib/WP_Async_Request.php (added)
-
tags/2.2.1/libraries/action-scheduler/lib/cron-expression (added)
-
tags/2.2.1/libraries/action-scheduler/lib/cron-expression/CronExpression.php (added)
-
tags/2.2.1/libraries/action-scheduler/lib/cron-expression/CronExpression_AbstractField.php (added)
-
tags/2.2.1/libraries/action-scheduler/lib/cron-expression/CronExpression_DayOfMonthField.php (added)
-
tags/2.2.1/libraries/action-scheduler/lib/cron-expression/CronExpression_DayOfWeekField.php (added)
-
tags/2.2.1/libraries/action-scheduler/lib/cron-expression/CronExpression_FieldFactory.php (added)
-
tags/2.2.1/libraries/action-scheduler/lib/cron-expression/CronExpression_FieldInterface.php (added)
-
tags/2.2.1/libraries/action-scheduler/lib/cron-expression/CronExpression_HoursField.php (added)
-
tags/2.2.1/libraries/action-scheduler/lib/cron-expression/CronExpression_MinutesField.php (added)
-
tags/2.2.1/libraries/action-scheduler/lib/cron-expression/CronExpression_MonthField.php (added)
-
tags/2.2.1/libraries/action-scheduler/lib/cron-expression/CronExpression_YearField.php (added)
-
tags/2.2.1/libraries/action-scheduler/lib/cron-expression/LICENSE (added)
-
tags/2.2.1/libraries/action-scheduler/license.txt (added)
-
tags/2.2.1/libraries/action-scheduler/readme.txt (added)
-
tags/2.2.1/public (added)
-
tags/2.2.1/public/build (added)
-
tags/2.2.1/public/build/index-rtl.css (added)
-
tags/2.2.1/public/build/index.asset.php (added)
-
tags/2.2.1/public/build/index.css (added)
-
tags/2.2.1/public/build/index.js (added)
-
tags/2.2.1/public/class-eventilla-wp-public.php (added)
-
tags/2.2.1/public/css (added)
-
tags/2.2.1/public/css/eventilla-wp-public.css (added)
-
tags/2.2.1/public/index.php (added)
-
tags/2.2.1/public/js (added)
-
tags/2.2.1/public/js/eventilla-wp-public.js (added)
-
tags/2.2.1/public/partials (added)
-
tags/2.2.1/public/partials/eventilla-wp-public-display.php (added)
-
tags/2.2.1/uninstall.php (added)
-
trunk/README.txt (modified) (2 diffs)
-
trunk/eventilla-wp.php (modified) (1 diff)
-
trunk/includes/model/class-eventilla-event.php (modified) (3 diffs)
-
trunk/includes/model/class-eventilla-image.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
eventilla-events/trunk/README.txt
r3468873 r3473467 6 6 Tested up to: 6.8.2 7 7 Requires PHP: 7.4 8 Stable tag: 2.2. 08 Stable tag: 2.2.1 9 9 License: GPLv2 or later 10 10 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 54 54 55 55 === Changelog == 56 = 2.2.1 = 57 - Fix: Tag filter dropdown now works correctly with extended tags enabled 58 - Fix: Prevent duplicate attachment posts when syncing event images 56 59 = 2.2.0 = 57 60 - Polylang support! -
eventilla-events/trunk/eventilla-wp.php
r3468873 r3473467 16 16 * Plugin URI: https://www.eventilla.com/ 17 17 * Description: Eventilla Events brings your event information from eventilla.com to WordPress as custom posts. 18 * Version: 2.2. 018 * Version: 2.2.1 19 19 * Author: Eventilla 20 20 * Author URI: http://www.eventilla.com -
eventilla-events/trunk/includes/model/class-eventilla-event.php
r3468873 r3473467 281 281 if( ! $image_url ) { 282 282 $this->logger->debug( 'No image URL found for event', [ 'eventilla_uid' => $this->eventilla_uid ] ); 283 return false; 283 return false; 284 } 285 286 // Skip if the current thumbnail already matches the expected image. 287 // Compare by filename stem (without extension) to account for WP suffixes 288 // like '-scaled' (big image threshold) that WordPress adds to _wp_attached_file. 289 $expected_stem = pathinfo( basename( $image_url ), PATHINFO_FILENAME ); 290 if( has_post_thumbnail( $this->post->ID ) ) { 291 $thumbnail_id = get_post_thumbnail_id( $this->post->ID ); 292 $attached_file = get_post_meta( $thumbnail_id, '_wp_attached_file', true ); 293 $attached_stem = pathinfo( basename( $attached_file ), PATHINFO_FILENAME ); 294 // Match if the attached file starts with the expected stem (covers -scaled, -1, etc.) 295 if( $attached_file && str_starts_with( $attached_stem, $expected_stem ) ) { 296 $this->logger->debug( 'Thumbnail already matches, skipping', [ 'eventilla_uid' => $this->eventilla_uid, 'filename' => $expected_stem ] ); 297 return true; 298 } 284 299 } 285 300 … … 371 386 $tags = $event['tags']; 372 387 } elseif( array_key_exists('tags_extended', $event) ) { 373 $tags = $this->extended_tags_to_simple_tags( $event['tags_extended'] ); 388 $tags = array_map( fn( $tag ) => $tag['key'] ?? '', $event['tags_extended'] ); 389 $tags = array_filter( $tags ); 374 390 } 375 391 … … 498 514 // Format tags. 499 515 if( $this->options['extended_tags'] ) { 500 $event_tags = array_map(function($tag){ 501 return $tag['key']; 502 }, $data['event']['tags_extended']); 516 $event_tags = array_map( fn( $tag ) => $tag['key'] ?? '', $data['event']['tags_extended'] ); 517 $event_tags = array_filter( $event_tags ); 503 518 } else { 504 519 $event_tags = $data['event']['tags']; -
eventilla-events/trunk/includes/model/class-eventilla-image.php
r3447068 r3473467 38 38 * Get the attachment ID of the image. 39 39 */ 40 private function search_for_attachment_id(): int 40 private function search_for_attachment_id(): int 41 41 { 42 42 eventilla_get_logger()->debug( 'Searching for attachment ID', [ 'filename' => $this->filename ] ); … … 49 49 $filename = wp_basename( $this->filename ); 50 50 51 // Search for attachments where '_wp_attached_file' contains this filename. 52 global $wpdb; 53 $attachments = $wpdb->get_results( $wpdb->prepare( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_wp_attached_file' AND meta_value LIKE %s", '%' . $filename . '%' ) ); 51 // Search by filename without extension to account for WordPress suffixes 52 // like '-scaled' (big image threshold, WP 5.3+) or '-1', '-2' (duplicate uploads). 53 $name_without_ext = pathinfo( $filename, PATHINFO_FILENAME ); 54 55 global $wpdb; 56 $attachments = $wpdb->get_results( $wpdb->prepare( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_wp_attached_file' AND meta_value LIKE %s", '%' . $wpdb->esc_like( $name_without_ext ) . '%' ) ); 54 57 foreach( $attachments as $attachment ) { 55 58 if( ! $post = get_post( $attachment->post_id ) ) { … … 198 201 199 202 require_once( ABSPATH . 'wp-admin/includes/image.php' ); 200 wp_generate_attachment_metadata( $attachment_id, $image_path ); 203 $metadata = wp_generate_attachment_metadata( $attachment_id, $image_path ); 204 wp_update_attachment_metadata( $attachment_id, $metadata ); 201 205 eventilla_get_logger()->debug( 'Attachment created successfully', [ 'attachment_id' => $attachment_id ] ); 202 206 return $attachment_id;
Note: See TracChangeset
for help on using the changeset viewer.