/** * Retrieves a list of events matching Twitter notification time interval * * @return array List of Ai1ec_Event objects */ protected function _get_pending_twitter_events() { global $ai1ec_settings, $ai1ec_calendar_helper, $ai1ec_events_helper; $interval = new Ai1ec_Frequency_Utility(); $interval->parse($ai1ec_settings->twitter_notice_interval); $interval = (int) $interval->to_seconds(); $events = $ai1ec_calendar_helper->get_events_between($ai1ec_events_helper->gmt_to_local(time() + $interval - 600), $ai1ec_events_helper->gmt_to_local(time() + $interval + 6600), array()); return $events; }
/** * update_settings method * * Handle settings page submit. * * @param array $params User supplied settings options * * @return bool Success */ public function update_settings(array $params) { global $ai1ec_app_helper; // Default values to use for fields if none provided. $field_defaults = array('default_categories' => array(), 'default_tags' => array()); $field_names = array('default_categories', 'default_tags', 'default_calendar_view', 'calendar_css_selector', 'week_start_day', 'exact_date', 'posterboard_events_per_page', 'posterboard_tile_min_width', 'stream_events_per_page', 'week_view_ends_at', 'week_view_starts_at', 'agenda_events_per_page', 'input_date_format', 'allow_events_posting_facebook', 'facebook_credentials', 'user_role_can_create_event', 'timezone', 'recaptcha_public_key', 'recaptcha_private_key', 'admin_mail_subject', 'admin_mail_body', 'user_mail_subject', 'user_mail_body', 'view_cache_refresh_interval', 'admin_add_new_event_mail_body', 'admin_add_new_event_mail_subject', 'user_upcoming_event_mail_body', 'user_upcoming_event_mail_subject', 'license_key', 'oauth_twitter_id', 'oauth_twitter_pass', 'twitter_notice_interval', 'disclaimer'); $checkboxes = array('disable_standard_filter_menu', 'view_posterboard_enabled', 'view_stream_enabled', 'view_month_enabled', 'view_week_enabled', 'view_oneday_enabled', 'view_agenda_enabled', 'agenda_include_entire_last_day', 'agenda_events_expanded', 'include_events_in_rss', 'show_publish_button', 'hide_maps_until_clicked', 'exclude_from_search', 'show_create_event_button', 'show_front_end_create_form', 'allow_anonymous_submissions', 'allow_anonymous_uploads', 'show_add_calendar_button', 'turn_off_subscription_buttons', 'inject_categories', 'input_24h_time', 'geo_region_biasing', 'disable_autocompletion', 'show_location_in_title', 'show_year_in_agenda_dates', 'skip_in_the_loop_check', 'ajaxify_events_in_web_widget', 'calendar_base_url_for_permalinks', 'enable_user_event_notifications', 'use_select2_widgets', 'require_disclaimer', 'use_authors_filter', 'disable_gzip_compression'); // Save the Buy Tickets Button setting. Since it's a boolean we just set the // key so that later we can use isset() instead of in_array(), which is much // slower. $this->views_enabled_ticket_button = array(); foreach ($ai1ec_app_helper->view_names() as $key => $name) { $checkbox_name = "buy_ticket_{$key}_enabled"; $this->views_enabled_ticket_button[$key] = isset($params[$checkbox_name]); } // Only super-admins have the power to change Event Platform mode. if (is_super_admin()) { $checkboxes[] = 'event_platform'; $checkboxes[] = 'event_platform_strict'; } // ===================================== // = Save the settings for the plugins = // ===================================== global $ai1ec_importer_plugin_helper; $ai1ec_importer_plugin_helper->save_plugins_settings($params); // ================================= // = Assign parameters to settings = // ================================= foreach ($field_names as $field_name) { if (isset($params[$field_name])) { $this->{$field_name} = stripslashes_deep($params[$field_name]); } elseif (isset($field_defaults[$field_name])) { $this->{$field_name} = $field_defaults[$field_name]; } } foreach ($checkboxes as $checkbox) { $this->{$checkbox} = isset($params[$checkbox]) ? true : false; } $frequency = new Ai1ec_Frequency_Utility(); $frequency->parse($this->twitter_notice_interval); $this->twitter_notice_interval = $frequency->to_string(); unset($frequency); Ai1ec_Scheduling_Utility::instance()->reschedule('ai1ec_purge_events_cache', $this->view_cache_refresh_interval); // ================================ // = Validate specific parameters = // ================================ // Posterboard events per page $this->posterboard_events_per_page = intval($this->posterboard_events_per_page); if ($this->posterboard_events_per_page <= 0) { $this->posterboard_events_per_page = 1; } // Stream events per page $this->stream_events_per_page = intval($this->stream_events_per_page); if ($this->stream_events_per_page <= 0) { $this->stream_events_per_page = 1; } // Starting time to show in the week view $this->week_view_starts_at = intval($this->week_view_starts_at); if ($this->week_view_starts_at < 0 || $this->week_view_starts_at > 24) { $this->week_view_starts_at = self::WEEK_VIEW_STARTS_AT; } // Starting time to show in the week view $this->week_view_ends_at = intval($this->week_view_ends_at); if ($this->week_view_ends_at < 0 || $this->week_view_ends_at > 24) { $this->week_view_ends_at = self::WEEK_VIEW_ENDS_AT; } // Posterboard tile minimum width $this->posterboard_tile_min_width = intval($this->posterboard_tile_min_width); if ($this->posterboard_tile_min_width <= 0) { $this->posterboard_tile_min_width = 1; } // Agenda events per page $this->agenda_events_per_page = intval($this->agenda_events_per_page); if ($this->agenda_events_per_page <= 0) { $this->agenda_events_per_page = 1; } // Calendar default start date $exact_date_valid = Ai1ec_Validation_Utility::validate_date($this->exact_date, $this->input_date_format); if (false === $exact_date_valid) { $this->exact_date = ''; } // ============================= // = Update special parameters = // ============================= $this->update_page('calendar_page_id', $params); // Flush rewrite rules to regenerate them. // Needed for the // Base permalinks of single event pages on the calendar page URL // setting flush_rewrite_rules(); return true; }
/** * Parse arbitrary frequency representation to one accepted by WP scheduler * * First check is made against available schedules map, to check whereas * frequency given matches some defined name. * If that fails - treats input as human readable offset between consequent * event runs. It might be either number of seconds, or a digit followed by * an abbreviation, one of: `s` for seconds (equal to no abbr. passed), `m` * for minutes, `h` for hours, `d` fordays, `w` for weeks. I.e. '20m' will * be parsed to `1200` seconds. * * @param string $freq Parseable frequency identifier * * @return Ai1ec_Frequency_Utility Parsed frequency object */ protected function _parse_freq($freq) { $parsed = new Ai1ec_Frequency_Utility(); if (false === $parsed->parse($freq)) { $parsed->parse('0'); } return $parsed; }