/** * Register and add settings */ public function page_init() { add_settings_section('amber_cache_section', 'Storage Settings', array($this, 'print_cache_section_info'), 'amber-settings-admin'); add_settings_field('amber_max_file', 'Maximum file size (kB)', array($this, 'amber_max_file_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_max_disk', 'Maximum disk usage (MB)', array($this, 'amber_max_disk_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_storage_location', 'Storage location', array($this, 'amber_storage_location_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_update_strategy', 'Update strategy for captures', array($this, 'amber_update_strategy_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_excluded_sites', 'Excluded URL Patterns', array($this, 'amber_excluded_sites_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_excluded_formats', 'Excluded file formats', array($this, 'amber_excluded_formats_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_section('amber_delivery_section', 'Amber Delivery', array($this, 'print_delivery_section_info'), 'amber-settings-admin'); add_settings_field('amber_available_action', 'Available links', array($this, 'amber_available_action_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_available_action_hover', 'Hover delay (seconds)', array($this, 'amber_available_action_hover_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_unavailable_action', 'Unavailable links', array($this, 'amber_unavailable_action_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_unavailable_action_hover', 'Hover delay (seconds)', array($this, 'amber_unavailable_action_hover_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_country_id', 'Country', array($this, 'amber_country_id_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_country_available_action', 'Available links', array($this, 'amber_country_available_action_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_country_available_action_hover', 'Hover delay (seconds)', array($this, 'amber_country_available_action_hover_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_country_unavailable_action', 'Unavailable links', array($this, 'amber_country_unavailable_action_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_country_unavailable_action_hover', 'Hover delay (seconds)', array($this, 'amber_country_unavailable_action_hover_callback'), 'amber-settings-admin', 'amber_delivery_section'); register_setting('amber_option_group', 'amber_options', array($this, 'sanitize')); Amber::disk_space_purge(); }
private static function cache_link($item, $force = false) { $checker = Amber::get_checker(); $status = Amber::get_status(); $fetcher = Amber::get_fetcher(); /* Check whether the site is up */ $last_check = $status->get_check($item); if (($update = $checker->check(empty($last_check) ? array('url' => $item) : $last_check, $force)) !== false) { /* There's an updated check result to save */ $status->save_check($update); /* Now cache the item if we should */ $existing_cache = $status->get_cache($item); $strategy = Amber::get_option('amber_update_strategy', 0); if ($update['status'] && (!$strategy || !$existing_cache)) { $cache_metadata = array(); try { $cache_metadata = $fetcher->fetch($item); } catch (RuntimeException $re) { $update['message'] = $re->getMessage(); $status->save_check($update); return false; } if ($cache_metadata) { $status->save_cache($cache_metadata); Amber::disk_space_purge(); return true; } } } else { return false; } }
/** * Register and add settings */ public function page_init() { add_settings_section('amber_cache_section', 'Storage Settings', array($this, 'print_cache_section_info'), 'amber-settings-admin'); add_settings_field('amber_backend', 'Backend to use for storing snapshots', array($this, 'amber_backend_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_alternate_backends', 'Alternate backend(s) to use for storing snapshots', array($this, 'amber_alternate_backends_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_max_file', 'Maximum file size (kB)', array($this, 'amber_max_file_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_max_disk', 'Maximum disk usage (MB)', array($this, 'amber_max_disk_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_storage_location', 'Storage location', array($this, 'amber_storage_location_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_perma_api_key', 'Perma API key', array($this, 'amber_perma_api_key_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_perma_server_url', 'Perma URL', array($this, 'amber_perma_server_url_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_perma_api_server_url', 'Perma API URL', array($this, 'amber_perma_api_server_url_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_aws_access_key', 'AWS Access Key', array($this, 'amber_aws_access_key_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_aws_secret_key', 'AWS Secret Access Key', array($this, 'amber_aws_secret_key_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_aws_bucket', 'S3 Bucket', array($this, 'amber_aws_bucket_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_aws_region', 'S3 Region', array($this, 'amber_aws_region_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_post_types', 'Included post types', array($this, 'amber_post_types_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_update_strategy', 'Update strategy for snapshots', array($this, 'amber_update_strategy_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_excluded_sites', 'Excluded URL Patterns', array($this, 'amber_excluded_sites_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_field('amber_excluded_formats', 'Excluded file formats', array($this, 'amber_excluded_formats_callback'), 'amber-settings-admin', 'amber_cache_section'); add_settings_section('amber_delivery_section', 'Amber Delivery', array($this, 'print_delivery_section_info'), 'amber-settings-admin'); add_settings_field('amber_available_action', 'Available links', array($this, 'amber_available_action_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_available_action_hover', 'Hover delay (seconds)', array($this, 'amber_available_action_hover_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_unavailable_action', 'Unavailable links', array($this, 'amber_unavailable_action_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_unavailable_action_hover', 'Hover delay (seconds)', array($this, 'amber_unavailable_action_hover_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_country_id', 'Country', array($this, 'amber_country_id_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_country_available_action', 'Available links', array($this, 'amber_country_available_action_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_country_available_action_hover', 'Hover delay (seconds)', array($this, 'amber_country_available_action_hover_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_country_unavailable_action', 'Unavailable links', array($this, 'amber_country_unavailable_action_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_field('amber_country_unavailable_action_hover', 'Hover delay (seconds)', array($this, 'amber_country_unavailable_action_hover_callback'), 'amber-settings-admin', 'amber_delivery_section'); add_settings_section('amber_services_section', 'Optional Functionality', array($this, 'print_services_section_info'), 'amber-settings-admin'); if (isset($this->options['amber_enable_netclerk']) && $this->options['amber_enable_netclerk']) { add_settings_field('amber_external_availability', 'Use a third-party database to check site availability', array($this, 'amber_external_availability_callback'), 'amber-settings-admin', 'amber_services_section'); add_settings_field('amber_report_availability', 'Inform a third-party database of site availability', array($this, 'amber_report_availability_callback'), 'amber-settings-admin', 'amber_services_section'); } add_settings_field('amber_timegate', 'Check a TimeGate server for additional snapshots', array($this, 'amber_timegate_callback'), 'amber-settings-admin', 'amber_services_section'); register_setting('amber_option_group', 'amber_options', array($this, 'sanitize')); Amber::disk_space_purge(); }
private static function cache_link($item, $force = false) { $checker = Amber::get_checker(); $status = Amber::get_status(); $fetcher = Amber::get_fetcher(); $availability = Amber::get_availability(); /* Check whether the site is up */ $last_check = $status->get_check($item); if (($update = $checker->check(empty($last_check) ? array('url' => $item) : $last_check, $force)) !== false) { /* There's an updated check result to save */ $status->save_check($update); if ($availability && isset($update['details']) && Amber::get_option('amber_report_availability', AMBER_REPORT_AVAILABILITY_NONE) == AMBER_REPORT_AVAILABILITY_NETCLERK) { $availability->report_status($item, $update['details']); } /* Now cache the item if we should */ $strategy = Amber::get_option('amber_update_strategy', 0); if ($update['status'] && (!$strategy || !$status->has_cache($item))) { /* Save the item to the primary storage location */ $result = Amber::fetch_item($item, $fetcher, $status); /* Save the item to any alternate storage locations */ foreach (Amber::get_alternate_fetchers() as $alternate_fetcher) { Amber::fetch_item($item, $alternate_fetcher, $status); } if ($result) { Amber::disk_space_purge(); return true; } } } else { return false; } }