r/** * Adds a simple meta entry to the repository filter schema. * * @since 4.9.5 * * @param string $key The filter key, the one that will be used in `by` and `where` calls. * @param string|array $meta_key The meta key(s) to use for the meta lookup. * @param string|null $by The ->by() lookup to use (defaults to meta_regexp_or_like). */h!- !-q/** * Adds a simple taxonomy entry to the repository filter schema. * * @since 4.9.5 * * @param string $key The filter key, the one that will be used in `by` and `where` calls. * @param string|array $taxonomy The taxonomy/taxonomies to use for the tax lookup. * @param string|null $by The ->by() lookup to use (defaults to term_in). */--x----` -/** * Builds a meta query entry. * * @since 4.7.19 * * @param string $meta_key * @param string|array $meta_value * @param string $compare * @param string $type_or_format The type of value to compare * * @return array|null * @throws Tribe__Repository__Usage_Error If trying to compare multiple values with a single * comparison operator. *//** * Validates that a comparison operator is used with the correct type of values. * * This is just a wrap to signal this kind of code error not in bad SQL error but * with a visible exception. * * @since 4.7.19 * * @param string $compare A SQL comparison operator * @param string|array $meta_key * @param mixed $meta_value * * @throws Tribe__Repository__Usage_Error */i/** * Returns the delete callback function or method to use to delete posts. * * @since 4.9.5 * * @param int|array $to_delete The post ID to delete or an array of post IDs to delete. * @param bool $background Whether the callback will be used in background delete operations or not. * * @return callable The callback to use. */@(-p(-@R@i/** * Returns the update callback function or method to use to update posts. * * @since 4.9.5 * * @param int|array $to_update The post ID to update or an array of post IDs to update. * @param bool $background Whether the callback will be used in background update operations or not. * * @return callable The callback to use. */-@z H*-@`(/** * Returns a value trying to fetch it from an array first and then * reading it from the meta. * * @since 4.9.5 * * @param array $postarr The array to look into. * @param string $key The key to retrieve. * @param int|null $post_id The post ID to fetch the value for. * @param mixed $default The default value to return if nothing was found. * * @return mixed The found value if any. */ldrP?^r``@_"rrp"r @-r G5r H]6r vD9rp w_r <,r >%8rP >@M(yZ+f.7ldrP/?Zr%h@0prP`0B_rp0<}1rp(0p_r0<,r0>%8rp1>yZyZ՜ F Ff.7/- /-`0-p0-=D\ eventDisplayD-set_viewlugct⟚sql_slugE85Fw eventDatergsafeaturedz  (\d{4}-\d{2})E85Fw eventDateer {{ day }}{{ featured }}=D\ eventDisplayeVD&ebuild_tax_query viewOption8^Clis_single_event=D\ eventDisplay postMessagest6VЧ max_font_sizeru%bx widget_in_use eventDisplaye,i ate {{ list }}eafeatured[,t section_slugd-Rl template_varsyj[yNLo alias-slugst_=D\ eventDisplay{{ featured }}0l-l-1 ?queue_priority separatorlshydy {{ month }}HM-W9 5r tribe-notice-\Cinjected_posts=D\ eventDisplay {{ month }}<-Xȭk get_view_htmlt sanitize_keyteXȭk get_view_html eventDisplayyɼup disable_v1bel organizersxtafeaturedZ,>g䔔get_view_labelYUDw is_activeport@ =l  {{ page }}e{{ featured }} eventDisplay tribe_vieweC&Xq has_filterE85Fw eventDatergs=D\ eventDisplay {{ page }}ters{{ featured }}=D\ eventDisplayE85Fw eventDateltersafeaturedilters=D\ eventDisplayr(Ii( tribe-theme- eventDisplay tribe_view~~registerhemeafeaturedomise=D\ eventDisplay{{ featured }}F<8gget_admin_data end_date_utcP-BG? button_colort9-L async_delete=D\ eventDisplaystart_date_utc Uuw add_hooksrsectC-D4Yr/delete_callbackClis_single_evento-ZQ)@Q get_arguments_e inject_postsE{{ featured }}{{page}}gafeaturedmeТ-.(c _deprecatedCEafeaturedomise@f 0c'p['w @6-{{ featured }}hQ,H; _template_vars=D\ eventDisplayE85Fw eventDatee_,E|s> title_coloronsE-Dkday_datetersjafeaturedtersP[cr٧primary_id_base=D\ eventDisplayE85Fw eventDateeF-&option_widget_:args_to_context{{ featured }}W,+;w mock_pagers=D\ eventDisplayE85Fw eventDatee start_date|>register_assets=D\ eventDisplayIM# should_displayE85Fw eventDateers (\d{4}-\d{2})O-WŁ matches_regexL async_deleteV,erATribe\Widget\__>phget_mocked_pageafeaturedomise permalink_all8^,,wE enabled_views7_oJp get_methoderh (\d{4}-\d{2})ߢ>b __constructtrx%&widget_location^'@k (o-p^'g- tribe-common=D\ eventDisplay {{ today }}st~~registers accent_colorrsnprioritytns{{ featured }}=D\ eventDisplayM-l p event-pastxt@Q,ON- displays_onons@έk get_view_slug8D-J9`ڦget_filter_nameJ9`ڦget_filter_name {{ today }}-IaJEW is_renderedt = DISABLED_arg1-$r set_noticeces {{ list }}rs{{ featured }}Q[canonical_args eventDisplay tribe_view=D\ eventDisplayafeaturedme@'` 8-e!_ *contentsek,,\venue_post_typenpriorityntsdVL async_update tribe-commontg-h噁url_componentsO-@`{6&(p%W8 Ps s 0< pa'@8,W =l `{6(&(@Qr pa'@8,g՜r[s s r[^`\'@| *w y c='=' s p%EW8 Pв*^'^' =l W =l  =l (/k (/k  (@s %0%(/k (/k tR ^'^`?`k `m @ƛ ̛8^,`^Nk hQ6pa'P/k P/k @$w 8k 8k  ̛ ̛@k @k pm,pm,@s @s  L@s @k s pa'pa'@XS p;`6l PE-@t =U, ̛Zr!,Xp_rX<}rPXITrPZpRZrPZtRZrp`Zt_rZ<}r`Zr` \rp\ArP!_2r_c:r_+ZrXi8`p_r`<}r `Vr0bc:r0@b+%8r c>?rpf+ Yr`Hf=rPfC[r@fITrPhipRZrPitRZr`itF`ri< YrPxr=W$rPr6$rEh rR-rr7 .rr8ArPrArP`ruF`rr<ITrPtp_rt<}rtITrPPvpRZrPPvt8>r``vBF`rv<Vrxc:r@x+%8ry>?rp|+ Yr`|=rP|C[r |%8r0}>33y )'  L''@M( v, , , v,EEy (*k `0($88EEy@M( v, , , v,f.7ZrH~ p_r<}rPITrPpRZrPtRZrp`t_r<}r`r` rpArP!2rc:r+ZrXi8p_r<}r Vr0c:r0@+%8r >?rp+ Yr`H=rPC[r@ $fields ) ); } /** * @deprecated 3.0 * @return string */ function woocommerce_product_post_type_link( $permalink, $post ) { wc_deprecated_function( __FUNCTION__, '3.0', 'wc_product_post_type_link' ); return wc_product_post_type_link( $permalink, $post ); } /** * @deprecated 3.0 * @return string */ function woocommerce_placeholder_img_src() { wc_deprecated_function( __FUNCTION__, '3.0', 'wc_placeholder_img_src' ); return wc_placeholder_img_src(); } /** * @deprecated 3.0 * @return string */ function woocommerce_placeholder_img( $size = 'woocommerce_thumbnail' ) { wc_deprecated_function( __FUNCTION__, '3.0', 'wc_placeholder_img' ); return wc_placeholder_img( $size ); } /** * @deprecated 3.0 * @return string */ function woocommerce_get_formatted_variation( $variation = '', $flat = false ) { wc_deprecated_function( __FUNCTION__, '3.0', 'wc_get_formatted_variation' ); return wc_get_formatted_variation( $variation, $flat ); } /** * @deprecated 3.0 * @return void */ function woocommerce_scheduled_sales() { wc_deprecated_function( __FUNCTION__, '3.0', 'wc_scheduled_sales' ); wc_scheduled_sales(); } /** * @deprecated 3.0 * @return array */ function woocommerce_get_attachment_image_attributes( $attr ) { wc_deprecated_function( __FUNCTION__, '3.0', 'wc_get_attachment_image_attributes' ); return wc_get_attachment_image_attributes( $attr ); } /** * @deprecated 3.0 * @return array */ function woocommerce_prepare_attachment_for_js( $response ) { wc_deprecated_function( __FUNCTION__, '3.0', 'wc_prepare_attachment_for_js' ); return wc_prepare_attachment_for_js( $response ); } /** * @deprecated 3.0 * @return void */ function woocommerce_track_product_view() { wc_deprecated_function( __FUNCTION__, '3.0', 'wc_track_product_view' ); wc_track_product_view(); } /** * @deprecated 2.3 has no replacement * @return void */ function woocommerce_compile_less_styles() { wc_deprecated_function( 'woocommerce_compile_less_styles', '2.3' ); } /** * woocommerce_calc_shipping was an option used to determine if shipping was enabled prior to version 2.6.0. This has since been replaced with wc_shipping_enabled() function and * the woocommerce_ship_to_countries setting. * @deprecated 2.6.0 * @return string */ function woocommerce_calc_shipping_backwards_compatibility( $value ) { if ( Constants::is_defined( 'WC_UPDATING' ) ) { return $value; } return 'disabled' === get_option( 'woocommerce_ship_to_countries' ) ? 'no' : 'yes'; } add_filter( 'pre_option_woocommerce_calc_shipping', 'woocommerce_calc_shipping_backwards_compatibility' ); /** * @deprecated 3.0.0 * @see WC_Structured_Data class * * @return string */ function woocommerce_get_product_schema() { wc_deprecated_function( 'woocommerce_get_product_schema', '3.0' ); global $product; $schema = "Product"; // Downloadable product schema handling if ( $product->is_downloadable() ) { switch ( $product->download_type ) { case 'application' : $schema = "SoftwareApplication"; break; case 'music' : $schema = "MusicAlbum"; break; default : $schema = "Product"; break; } } return 'http://schema.org/' . $schema; } /** * Save product price. * * This is a private function (internal use ONLY) used until a data manipulation api is built. * * @deprecated 3.0.0 * @param int $product_id * @param float $regular_price * @param float $sale_price * @param string $date_from * @param string $date_to * @return void */ function _wc_save_product_price( $product_id, $regular_price, $sale_price = '', $date_from = '', $date_to = '' ) { wc_doing_it_wrong( '_wc_save_product_price()', 'This function is not for developer use and is deprecated.', '3.0' ); $product_id = absint( $product_id ); $regular_price = wc_format_decimal( $regular_price ); $sale_price = '' === $sale_price ? '' : wc_format_decimal( $sale_price ); $date_from = wc_clean( $date_from ); $date_to = wc_clean( $date_to ); update_post_meta( $product_id, '_regular_price', $regular_price ); update_post_meta( $product_id, '_sale_price', $sale_price ); // Save Dates update_post_meta( $product_id, '_sale_price_dates_from', $date_from ? strtotime( $date_from ) : '' ); update_post_meta( $product_id, '_sale_price_dates_to', $date_to ? strtotime( $date_to ) : '' ); if ( $date_to && ! $date_from ) { $date_from = strtotime( 'NOW', current_time( 'timestamp' ) ); update_post_meta( $product_id, '_sale_price_dates_from', $date_from ); } // Update price if on sale if ( '' !== $sale_price && '' === $date_to && '' === $date_from ) { update_post_meta( $product_id, '_price', $sale_price ); } else { update_post_meta( $product_id, '_price', $regular_price ); } if ( '' !== $sale_price && $date_from && strtotime( $date_from ) < strtotime( 'NOW', current_time( 'timestamp' ) ) ) { update_post_meta( $product_id, '_price', $sale_price ); } if ( $date_to && strtotime( $date_to ) < strtotime( 'NOW', current_time( 'timestamp' ) ) ) { update_post_meta( $product_id, '_price', $regular_price ); update_post_meta( $product_id, '_sale_price_dates_from', '' ); update_post_meta( $product_id, '_sale_price_dates_to', '' ); } } /** * Return customer avatar URL. * * @deprecated 3.1.0 * @since 2.6.0 * @param string $email the customer's email. * @return string the URL to the customer's avatar. */ function wc_get_customer_avatar_url( $email ) { // Deprecated in favor of WordPress get_avatar_url() function. wc_deprecated_function( 'wc_get_customer_avatar_url()', '3.1', 'get_avatar_url()' ); return get_avatar_url( $email ); } /** * WooCommerce Core Supported Themes. * * @deprecated 3.3.0 * @since 2.2 * @return string[] */ function wc_get_core_supported_themes() { wc_deprecated_function( 'wc_get_core_supported_themes()', '3.3' ); return array( 'twentyseventeen', 'twentysixteen', 'twentyfifteen', 'twentyfourteen', 'twentythirteen', 'twentyeleven', 'twentytwelve', 'twentyten' ); } /** * Get min/max price meta query args. * * @deprecated 3.6.0 * @since 3.0.0 * @param array $args Min price and max price arguments. * @return array */ function wc_get_min_max_price_meta_query( $args ) { wc_deprecated_function( 'wc_get_min_max_price_meta_query()', '3.6' ); $current_min_price = isset( $args['min_price'] ) ? floatval( $args['min_price'] ) : 0; $current_max_price = isset( $args['max_price'] ) ? floatval( $args['max_price'] ) : PHP_INT_MAX; return apply_filters( 'woocommerce_get_min_max_price_meta_query', array( 'key' => '_price', 'value' => array( $current_min_price, $current_max_price ), 'compare' => 'BETWEEN', 'type' => 'DECIMAL(10,' . wc_get_price_decimals() . ')', ), $args ); } /** * When a term is split, ensure meta data maintained. * * @deprecated 3.6.0 * @param int $old_term_id Old term ID. * @param int $new_term_id New term ID. * @param string $term_taxonomy_id Term taxonomy ID. * @param string $taxonomy Taxonomy. * @return void */ function wc_taxonomy_metadata_update_content_for_split_terms( $old_term_id, $new_term_id, $term_taxonomy_id, $taxonomy ) { wc_deprecated_function( 'wc_taxonomy_metadata_update_content_for_split_terms', '3.6' ); } /** * WooCommerce Term Meta API. * * WC tables for storing term meta are deprecated from WordPress 4.4 since 4.4 has its own table. * This function serves as a wrapper, using the new table if present, or falling back to the WC table. * * @deprecated 3.6.0 * @param int $term_id Term ID. * @param string $meta_key Meta key. * @param mixed $meta_value Meta value. * @param string $prev_value Previous value. (default: ''). * @return bool */ function update_woocommerce_term_meta( $term_id, $meta_key, $meta_value, $prev_value = '' ) { wc_deprecated_function( 'update_woocommerce_term_meta', '3.6', 'update_term_meta' ); return function_exists( 'update_term_meta' ) ? update_term_meta( $term_id, $meta_key, $meta_value, $prev_value ) : update_metadata( 'woocommerce_term', $term_id, $meta_key, $meta_value, $prev_value ); } /** * WooCommerce Term Meta API. * * WC tables for storing term meta are deprecated from WordPress 4.4 since 4.4 has its own table. * This function serves as a wrapper, using the new table if present, or falling back to the WC table. * * @deprecated 3.6.0 * @param int $term_id Term ID. * @param string $meta_key Meta key. * @param mixed $meta_value Meta value. * @param bool $unique Make meta key unique. (default: false). * @return bool */ function add_woocommerce_term_meta( $term_id, $meta_key, $meta_value, $unique = false ) { wc_deprecated_function( 'add_woocommerce_term_meta', '3.6', 'add_term_meta' ); return function_exists( 'add_term_meta' ) ? add_term_meta( $term_id, $meta_key, $meta_value, $unique ) : add_metadata( 'woocommerce_term', $term_id, $meta_key, $meta_value, $unique ); } /** * WooCommerce Term Meta API * * WC tables for storing term meta are deprecated from WordPress 4.4 since 4.4 has its own table. * This function serves as a wrapper, using the new table if present, or falling back to the WC table. * * @deprecated 3.6.0 * @param int $term_id Term ID. * @param string $meta_key Meta key. * @param mixed $meta_value Meta value (default: ''). * @param bool $deprecated Deprecated param (default: false). * @return bool */ function delete_woocommerce_term_meta( $term_id, $meta_key, $meta_value = '', $deprecated = false ) { wc_deprecated_function( 'delete_woocommerce_term_meta', '3.6', 'delete_term_meta' ); return function_exists( 'delete_term_meta' ) ? delete_term_meta( $term_id, $meta_key, $meta_value ) : delete_metadata( 'woocommerce_term', $term_id, $meta_key, $meta_value ); } /** * WooCommerce Term Meta API * * WC tables for storing term meta are deprecated from WordPress 4.4 since 4.4 has its own table. * This function serves as a wrapper, using the new table if present, or falling back to the WC table. * * @deprecated 3.6.0 * @param int $term_id Term ID. * @param string $key Meta key. * @param bool $single Whether to return a single value. (default: true). * @return mixed */ function get_woocommerce_term_meta( $term_id, $key, $single = true ) { wc_deprecated_function( 'get_woocommerce_term_meta', '3.6', 'get_term_meta' ); return function_exists( 'get_term_meta' ) ? get_term_meta( $term_id, $key, $single ) : get_metadata( 'woocommerce_term', $term_id, $key, $single ); } /** * Registers the default log handler. * * @deprecated 8.6.0 * @since 3.0 * @param array $handlers Handlers. * @return array */ function wc_register_default_log_handler( $handlers = array() ) { wc_deprecated_function( 'wc_register_default_log_handler', '8.6.0' ); $default_handler = wc_get_container()->get( Settings::class )->get_default_handler(); array_push( $handlers, new $default_handler() ); return $handlers; } /** * Get a log file path. * * @deprecated 8.6.0 * @since 2.2 * * @param string $handle name. * @return string the log file path. */ function wc_get_log_file_path( $handle ) { wc_deprecated_function( 'wc_get_log_file_path', '8.6.0' ); $directory = LoggingUtil::get_log_directory(); $file_id = LoggingUtil::generate_log_file_id( $handle, null, time() ); $hash = LoggingUtil::generate_log_file_hash( $file_id ); return "{$directory}{$file_id}-{$hash}.log"; } /** * Get a log file name. * * @since 3.3 * * @param string $handle Name. * @return string The log file name. */ function wc_get_log_file_name( $handle ) { wc_deprecated_function( 'wc_get_log_file_name', '8.6.0' ); $file_id = LoggingUtil::generate_log_file_id( $handle, null, time() ); $hash = LoggingUtil::generate_log_file_hash( $file_id ); return "{$file_id}-{$hash}"; } /** * Load the persistent cart. * * @param string $user_login User login. * @param WP_User $user User data. * @deprecated 2.3 * @return void */ function wc_load_persistent_cart( $user_login, $user ) { if ( ! $user || ! apply_filters( 'woocommerce_persistent_cart_enabled', true ) ) { return; } $saved_cart = get_user_meta( $user->ID, '_woocommerce_persistent_cart_' . get_current_blog_id(), true ); if ( ! $saved_cart ) { return; } $cart = WC()->session->cart; if ( empty( $cart ) || ! is_array( $cart ) || 0 === count( $cart ) ) { WC()->session->cart = $saved_cart['cart']; } } if ( ! function_exists( 'woocommerce_product_subcategories' ) ) { /** * This is a legacy function which used to check if we needed to display subcats and then output them. It was called by templates. * * From 3.3 onwards this is all handled via hooks and the woocommerce_maybe_show_product_subcategories function. * * Since some templates have not updated compatibility, to avoid showing incorrect categories this function has been deprecated and will * return nothing. Replace usage with woocommerce_output_product_categories to render the category list manually. * * This is a legacy function which also checks if things should display. * Themes no longer need to call these functions. It's all done via hooks. * * @deprecated 3.3.1 @todo Add a notice in a future version. * @param array $args Arguments. * @return null|boolean */ function woocommerce_product_subcategories( $args = array() ) { $defaults = array( 'before' => '', 'after' => '', 'force_display' => false, ); $args = wp_parse_args( $args, $defaults ); if ( $args['force_display'] ) { // We can still render if display is forced. woocommerce_output_product_categories( array( 'before' => $args['before'], 'after' => $args['after'], 'parent_id' => is_product_category() ? get_queried_object_id() : 0, ) ); return true; } else { // Output nothing. woocommerce_maybe_show_product_subcategories will handle the output of cats. $display_type = woocommerce_get_loop_display_mode(); if ( 'subcategories' === $display_type ) { // This removes pagination and products from display for themes not using wc_get_loop_prop in their product loops. @todo Remove in future major version. global $wp_query; if ( $wp_query->is_main_query() ) { $wp_query->post_count = 0; $wp_query->max_num_pages = 0; } } return 'subcategories' === $display_type || 'both' === $display_type; } } } /** * Products RSS Feed. * * @deprecated 2.6 * @return void */ function wc_products_rss_feed() { wc_deprecated_function( 'wc_products_rss_feed', '2.6' ); } if ( ! function_exists( 'woocommerce_reset_loop' ) ) { /** * Reset the loop's index and columns when we're done outputting a product loop. * * @deprecated 3.3 * @return void */ function woocommerce_reset_loop() { wc_reset_loop(); } } if ( ! function_exists( 'woocommerce_product_reviews_tab' ) ) { /** * Output the reviews tab content. * * @deprecated 2.4.0 Unused. * @return void */ function woocommerce_product_reviews_tab() { wc_deprecated_function( 'woocommerce_product_reviews_tab', '2.4' ); } } /** * Get the URL to the WooCommerce Legacy REST API. * * Note that as of WooCommerce 9.0 the WooCommerce Legacy REST API has been moved to a dedicated extension, * and the implementation of its root endpoint in WooCommerce core is now just a stub that will always return an error. * See the setup_legacy_api_stub method in includes/class-woocommerce.php and: * https://developer.woocommerce.com/2023/10/03/the-legacy-rest-api-will-move-to-a-dedicated-extension-in-woocommerce-9-0/ * * @deprecated 9.0.0 The Legacy REST API has been removed from WooCommerce core. * * @since 2.1 * @param string $path an endpoint to include in the URL. * @return string the URL. */ function get_woocommerce_api_url( $path ) { $url = get_home_url( null, 'wc-api/v3/', is_ssl() ? 'https' : 'http' ); if ( ! empty( $path ) && is_string( $path ) ) { $url .= ltrim( $path, '/' ); } return $url; } BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Glasser Canada - ECPv6.16.3//NONSGML v1.0//EN CALSCALE:GREGORIAN METHOD:PUBLISH X-WR-CALNAME:Glasser Canada X-ORIGINAL-URL:https://glassercanada.com X-WR-CALDESC:Events for Glasser Canada REFRESH-INTERVAL;VALUE=DURATION:PT1H X-Robots-Tag:noindex X-PUBLISHED-TTL:PT1H BEGIN:VTIMEZONE TZID:America/Toronto BEGIN:DAYLIGHT TZOFFSETFROM:-0500 TZOFFSETTO:-0400 TZNAME:EDT DTSTART:20250309T070000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:-0400 TZOFFSETTO:-0500 TZNAME:EST DTSTART:20251102T060000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:-0500 TZOFFSETTO:-0400 TZNAME:EDT DTSTART:20260308T070000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:-0400 TZOFFSETTO:-0500 TZNAME:EST DTSTART:20261101T060000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:-0500 TZOFFSETTO:-0400 TZNAME:EDT DTSTART:20270314T070000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:-0400 TZOFFSETTO:-0500 TZNAME:EST DTSTART:20271107T060000 END:STANDARD END:VTIMEZONE BEGIN:VTIMEZONE TZID:America/Regina BEGIN:STANDARD TZOFFSETFROM:-0600 TZOFFSETTO:-0600 TZNAME:CST DTSTART:20250101T000000 END:STANDARD END:VTIMEZONE BEGIN:VTIMEZONE TZID:America/Moncton BEGIN:DAYLIGHT TZOFFSETFROM:-0400 TZOFFSETTO:-0300 TZNAME:ADT DTSTART:20250309T060000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:-0300 TZOFFSETTO:-0400 TZNAME:AST DTSTART:20251102T050000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:-0400 TZOFFSETTO:-0300 TZNAME:ADT DTSTART:20260308T060000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:-0300 TZOFFSETTO:-0400 TZNAME:AST DTSTART:20261101T050000 END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:-0400 TZOFFSETTO:-0300 TZNAME:ADT DTSTART:20270314T060000 END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:-0300 TZOFFSETTO:-0400 TZNAME:AST DTSTART:20271107T050000 END:STANDARD END:VTIMEZONE BEGIN:VEVENT DTSTART;TZID=America/Toronto:20260805T180000 DTEND;TZID=America/Toronto:20260805T200000 DTSTAMP:20260615T024243 CREATED:20260601T135201Z LAST-MODIFIED:20260601T135201Z UID:60832-1785952800-1785960000@glassercanada.com SUMMARY:Masterclass Series: Calm Your Inner Critic DESCRIPTION:Reduce the noise of self-doubt and trust yourself so you can move through life with more freedom\nIf you’ve ever felt stuck in your own head…\nHeld yourself back because you weren’t quite sure you were ready…\nExperienced that quiet but persistent voice telling you to do more\, be better\, or not mess it up…\nOr simply wished you could quiet the constant commentary that keeps you from fully being yourself… \nThen you already know how much this inner dynamic shapes your confidence\, your decisions\, and the way you show up in your life. \nAnd if you’ve been on your personal development journey for a while\, you may have noticed that trying to push past it\, override it\, or “think more positively” only takes you so far… and often leaves you feeling stuck in the same patterns. \nThat’s exactly why the Expanding You team\, Lynn Sumida\, Jeff Brown\, and Leslie Brown\, have designed a different approach. They move beyond trying to control or override your thoughts because that’s not the root cause. Instead\, they work with the nervous system and the body\, where your inner critic is shaped\, so the shift toward confidence and self-trust feels grounded\, sustainable\, and true to you. \nGlasser Canada is excited to host this NEW masterclass series facilitated by Lynn Sumida and in partnership with the Expanding You team\, designed to help you understand what’s really driving that inner voice and shift your relationship with it in a way that creates real relief. \nInside this experience\, you will: \n\nDevelop a deeper understanding of how your inner critic operates and the role it’s been trying to play\, so you can begin to transform your relationship with your inner critic.\nUnlock the key to self-compassion so you can relate to yourself with more understanding instead of pressure. Moving beyond intellectual understanding\, you’ll learn how to access self-compassion in real moments\, so it becomes something you can feel and rely on without your inner critic taking over.\nBuild the internal capacity to access your best self\, even in moments of doubt or challenge\, so your confidence is no longer dependent on pushing through or “faking it\,” but instead grows from a more grounded\, consistent way of showing up over time.\n\nYou’ll also receive a guided workbook that walks you through a proven process to uncover the inner workings of your inner critic and begin designing your own pathway to freedom between sessions. \nAnd because we are serious about partnering with you to create meaningful change in your life\, you can expect to walk away with: \n\nA growing sense of ease as you release from your whole being the constant push\, perfectionism\, and need to control every outcome\nA deeper feeling of peace within (regardless of the chaos outside) as you quiet the voice that once sabotaged you\nMore access to joy as expectations soften and you begin to experience life with more freedom and self-assurance in your authentic self\n\nMasterclass Series Details:\n3 live sessions (2 hours each)\nOn August 5\, 12\, and 19\nAt 3:00 PM Pacific / 6:00 PM Eastern \nCan’t join us live for all 3 sessions? You’ll get access to the recording so you get full access regardless of what’s going on in your calendar. \nInvestment:\nEarly Bird: $247 (ends July 22)\nRegular: $297 \nRegister on EventBrite \nMeet Your Facilitator Lynn Sumida\nLynn is a senior faculty member with the William Glasser International and a leader in the application of Choice Theory and Reality Therapy. With over 30 years of experience in counselling\, training\, and facilitation\, she has worked extensively with individuals\, educators\, and organizations to support meaningful personal and relational change. Her work focuses on helping people understand the internal choices driving their behavior\, while integrating emotional awareness and body-based insight to create deep\, sustainable transformation. URL:https://glassercanada.com/evt/masterclass-series-calm-your-inner-critic-2026-08/ LOCATION:Saskatchewan CATEGORIES:Online Virtual ATTACH;FMTTYPE=image/png:https://glassercanada.com/wp-content/uploads/2026/06/GC-Website_CalmYourInnerCritic.png ORGANIZER;CN="Expanding You":MAILTO:hello@expandingyou.com END:VEVENT BEGIN:VEVENT DTSTART;TZID=America/Regina:20260727T090000 DTEND;TZID=America/Regina:20260727T170000 DTSTAMP:20260615T024243 CREATED:20260601T143330Z LAST-MODIFIED:20260601T143330Z UID:60836-1785142800-1785171600@glassercanada.com SUMMARY:Certification DESCRIPTION:Certification recognizes your demonstrated ability to apply Choice Theory® and Reality Therapy® with skill\, responsibility\, and respect for human dignity across contexts within your field of expertise \nYou earn international recognition\, professional credibility\, and a clear marker of commitment to ethical\, relationship-centered practice within the global WGI community. \n\nCertification is the final stage of the Choice Theory and Reality Therapy (CTRT) credentialing process established by the William Glasser Institute. Participants engage in a 30-hour program to demonstrate their practical competence in using Choice Theory® psychology and Reality Therapy® techniques with both familiar and unfamiliar clients. \n\nInstructor\nSheila Wignes-Paton \nPracticum Supervisor\nAnn Marie Piniach URL:https://glassercanada.com/evt/certification-2026-07/ LOCATION:Hill Centre Tower II\, 1881 Scarth St\, Regina\, Saskatchewan\, S4P 4K9\, Canada CATEGORIES:Certification,in person Training ATTACH;FMTTYPE=image/jpeg:https://glassercanada.com/wp-content/uploads/2026/06/Certification.jpg ORGANIZER;CN="Mrs. Sheila Wignes-Paton":MAILTO:swpaton@sasktel.net END:VEVENT BEGIN:VEVENT DTSTART;TZID=America/Toronto:20260618T090000 DTEND;TZID=America/Toronto:20260620T170000 DTSTAMP:20260615T024243 CREATED:20260527T134058Z LAST-MODIFIED:20260527T140321Z UID:60824-1781773200-1781974800@glassercanada.com SUMMARY:Advanced Intensive DESCRIPTION:The Advanced Intensive deepens understanding of Choice Theory® by exploring more complex applications\, ethical considerations\, and systemic dynamics. Learning expands beyond self and individual interactions to groups\, organizations\, and classrooms. \nYou develop greater flexibility and insight\, allowing you to respond effectively to resistance\, complexity\, and emotionally charged situations with confidence and care. \n\nThe Glasser Advanced Intensive Training is the third step toward full Choice Theory® and Reality Therapy (CT/RT) certification. It is an experiential\, in-depth 20- to 30-hour workshop that helps participants master Choice Theory concepts\, refine practical counselling and leadership skills\, and actively process role-plays. \n\nInstructors\nSenior Faculty: Jean Seville Suffield\, DNM.\, and Nancy D. Herrick\, M.ED. URL:https://glassercanada.com/evt/advanced-intensive-2026-06/ LOCATION:Saskatchewan CATEGORIES:Online Virtual ATTACH;FMTTYPE=image/jpeg:https://glassercanada.com/wp-content/uploads/2026/05/Advanced-Intensive.jpg ORGANIZER;CN="Choice-Makers":MAILTO:jeanseville@hotmail.com END:VEVENT BEGIN:VEVENT DTSTART;TZID=America/Toronto:20260427T190000 DTEND;TZID=America/Toronto:20260427T203000 DTSTAMP:20260615T024243 CREATED:20260422T134210Z LAST-MODIFIED:20260422T135807Z UID:60779-1777316400-1777321800@glassercanada.com SUMMARY:Ventures “The Show” - 2026-04-27 DESCRIPTION:JOIN US FOR AN INTERACTIVE PRESENTATION ON \nPROMOTING CHOICE THEORY\nThe use of chat-based tools can play a powerful role in promoting the ideas of Choice Theory. In this interactive presentation\, Pat will discuss how Chat can generate useful “starting points” designed to engage interest from people unfamiliar with Glasser’s work. \nEvent Details\nMonday\, April 27\, 2026 \n16:00 PT | 19:00pm ET \nRegistration\nRegister in advance for this event to get link for this online event. \nRegister \nPrior to this presentation\nPlease go to ChatGPT (https://chatgpt.com/) and ask chat to – \nProvide a paragraph on the benefits of applying Choice theory to (a topic of your area of interest). \nYou will have an opportunity to share your results. As a group we will discuss the usefulness of this process in supporting the future of WG International and the Member organizations. \nAbout the Presenter\nDR. PATRICIA ROBEY\nPatricia Robey\, Ed.D.\, LPC is a Professor of Counseling at Governors State University and a Licensed Professional Counselor. Dr. Robey is also a Senior faculty member of William Glasser International and has provided training and mentorship on applications of Choice Theory internationally for over 20 years. In addition to teaching\, she has contributed to professional literature\, videos\, and interviews focusing on counseling\, education\, and Glasser-based approaches. Her collaborative work has explored how Choice Theory principles can be applied to schools and leadership contexts with a goal of fostering positive environments and effective interpersonal relationships. URL:https://glassercanada.com/evt/ventures-the-show-2026-04-27/ LOCATION:Online Virtual CATEGORIES:Online Virtual ATTACH;FMTTYPE=image/png:https://glassercanada.com/wp-content/uploads/2026/04/Ventures-The-Show-2026-04-27.png END:VEVENT BEGIN:VEVENT DTSTART;VALUE=DATE:20260417 DTEND;VALUE=DATE:20260418 DTSTAMP:20260615T024244 CREATED:20260103T164301Z LAST-MODIFIED:20260220T142715Z UID:60758-1776384000-1776470399@glassercanada.com SUMMARY:Inner Balance — April 2026 Registration Deadline | Online DESCRIPTION:Build an Unshakeable Foundation\nMost of us know what we “should” do\, but when stress hits\, our system still takes over. Old patterns run the show. Presence disappears. Reactions happen before we can redirect them. \nInner Balance helps you understand why this happens\, and teaches you how to shift it from the inside out. \nInstead of pushing harder or relying on willpower\, you’ll learn to work with your mind\, emotions and nervous system in a way that restores clarity\, steadiness\, and real choice. \nInner Balance is for anyone who feels the strain of doing life the old way and knows something deeper is calling them forward. \nIn Inner Balance\, you’ll learn how to: \n\nRecognize the moment you slip out of center\nSteady your nervous system so you don’t get swept into old reactions\nAccess your values and show up as the person you intend to be\nStrengthen the relationships that matter most\nCreate your life from clarity instead of coping\n\nThis program helps you understand how your internal ecosystem works so you can stay aligned even when life gets challenging. \nUpcoming Program\nApril 21\, to May 26\, 2026 \nLive Coaching Sessions:\nEvery Tuesday at 6:30 PM PST\nCan’t make the live session? We got you covered. Each session is recorded for you. \nRegister now to start building the skills\, gaining clarity\, and inner stability that make meaningful change possible. \nA portion of the fees are donated to Glasser Canada. URL:https://glassercanada.com/evt/inner-balance-april-2026-registration-deadline-online/ LOCATION:Online Virtual CATEGORIES:Online Virtual ATTACH;FMTTYPE=image/jpeg:https://glassercanada.com/wp-content/uploads/2025/03/Woman-practicing-yoga-at-sunset-min-erqo.jpg ORGANIZER;CN="Expanding You":MAILTO:hello@expandingyou.com END:VEVENT END:VCALENDAR