94, 'max' => 97, 'filesize' => 4194304 /*1024*1024*4*/); # If enabled, URLs will be of the form: # http://host/image/00112233445566778899aabbccddeeff/12345 tag tag2 tag3.jpg # # This allows images to be saved with a useful filename, and hides the MD5 hierarchy (if # any). This does not break old links; links to the old URLs are still valid. This # requires URL rewriting (not redirection!) in your webserver. public $use_pretty_image_urls = false; # If use_pretty_image_urls is true, sets a prefix to prepend to all filenames. This # is only present in the generated URL, and is useful to allow your downloaded files # to be distinguished from other sites; for example, "moe 12345 tags.jpg" vs. # "kc 54321 tags.jpg". public $download_filename_prefix = "myimouto"; # Files over this size will always generate a sample, even if already within # the above dimensions. public $sample_always_generate_size = 524288; // 512*1024 # After a post receives this many comments, new comments will no longer bump the post in comment/index. public $comment_threshold = 9999; # Members cannot post more than X posts in a day. public $member_post_limit = 16; # This sets the minimum and maximum value a user can record as a vote. public $vote_record_min = 0; public $vote_record_max = 3; # This allows posts to have parent-child relationships. However, this requires manually updating the post counts stored in table_data by periodically running the script/maintenance script. public $enable_parent_posts = true; # Show only the first page of post/index to visitors. public $show_only_first_page = false; # Defines the various user levels. public $user_levels = [ "Unactivated" => 0, "Blocked" => 10, "Member" => 20, "Privileged" => 30, "Contributor" => 33, "Janitor" => 35, "Mod" => 40, "Admin" => 50 ]; # Defines the various tag types. You can also define shortcuts. public $tag_types = [ "General" => 0, "general" => 0, "Artist" => 1, "artist" => 1, "art" => 1, "Copyright" => 3, "copyright" => 3, "copy" => 3, "Character" => 4, "character" => 4, "char" => 4, "Circle" => 5, "circle" => 5, "cir" => 5, "Faults" => 6, "faults" => 6, "fault" => 6, "flt" => 6 ]; # Tag type ordering in various locations. public $tag_order = [ 'circle', 'artist', 'copyright', 'character', 'general' ]; # Tag type IDs to not list in recent tag summaries, such as on the side of post/index: public $exclude_from_tag_sidebar = array(0, 6); # Determine who can see a post. public function can_see_post(\User $user, \Post $post) { # By default, no posts are hidden. return true; # Some examples: # # Hide post if user isn't privileged and post is not safe: # if ($post->rating == 'e' && $user->is_privileged_or_higher()) return true; # # Hide post if user isn't a mod and post has the loli tag: # if ($post->has_tag('loli') && $user->is_mod_or_higher()) return true; } # Determines who can see ads. public function can_see_ads($user) { return $user->is_member_or_lower(); } # Defines the default blacklists for new users. public $default_blacklists = array ( "rating:q", "rating:e" ); # Enable the artists interface. public $enable_artists = true; # Users cannot search for more than X regular tags at a time. public $tag_query_limit = 6; # Set this to true to hand off time consuming tasks (downloading files, resizing images, any sort of heavy calculation) to a separate process. # @see $active_job_tasks # @see is_job_task_active() public $enable_asynchronous_tasks = false; public $avatar_max_width = 125; public $avatar_max_height = 125; # The number of posts a privileged_or_lower can have pending at one time. Any # further posts will be rejected. public $max_pending_images = null; # If set, posts by privileged_or_lower accounts below this size will be set to # pending. public $min_mpixels = null; # If true, pending posts act like hidden posts: they're hidden from the index unless # pending:all is used, and posts are bumped to the front of the index when they're # approved. public $hide_pending_posts = true; # The image service name of this host, if any. public $local_image_service = ""; # List of image services available for similar image searching. public $image_service_list = [ "danbooru.donmai.us" => "http://iqdb.org/index.xml", "yande.re" => "http://iqdb.org/index.xml", "konachan.com" => "http://iqdb.org/index.xml" ]; public $dupe_check_on_upload = false; # Members cannot post more than X comments in an hour. public $member_comment_limit = 20; # (Next 2 arrays will be filled when including config/languages.php) public $language_names = []; # Languages that we're aware of. This is what we show in "Secondary languages", to let users # select which languages they understand and that shouldn't be translated. public $known_languages = []; # Languages that we support translating to. We'll translate each comment into all of these # languages. Set this to array() to disable translation. public $translate_languages = []; // array('en', 'ja', 'zh-CN', 'zh-TW', 'es'): public $available_locales = ['de', 'en', 'es', 'ja', 'ru', 'zh_CN']; # The default name to use for anyone who isn't logged in. public $default_guest_name = "Anonymous"; public $admin_contact = 'admin@myimouto'; # Background color when resizing transparent PNG/GIF images. # Using RGB values. # Default: [126, 126, 126] (gray) public $bgcolor = [126, 126, 126]; # Default language. public $default_locale = 'en'; # Use this config to enable Google Analytics. Fill in the GA Tracking ID (like 'UA-XXXXX-X') public $ga_tracking_id = ''; # Max number of posts to cache public $tag_subscription_post_limit = 200; # Max number of fav tags per user public $max_tag_subscriptions = 5; /** * ******************************* * MyImouto-specific configuration * ******************************* */ # Default limit for /post public $post_index_default_limit = 16; # Default limit for /pool public $pool_index_default_limit = 20; # For /post tag left-sidebar, show tags of posts that were posted N days ago. # This value will be passed to strtotime(). Check out http://php.net/manual/en/function.strtotime.php # for more info. # The leading minus sign (-) will be added automatically, therefore must be omitted. public $post_index_tags_limit = '1 day'; # Default rating for upload (e, q or s). public $default_rating_upload = 'q'; # Default rating for import (e, q or s). public $default_rating_import = 'q'; # Automatically add "gif" tag to GIF files. public $add_gif_tag_to_gif = true; # Automatically add "flash" tag to SWF files. public $add_flash_tag_to_swf = true; # Enables the E/R hotkeys to jump to the edit/reply forms respectevely in post#show. public $post_show_hotkeys = true; # Max number of dmails users can send in one hour. public $max_dmails_per_hour = 10; # Only Job tasks listed here will be active. # @see $enable_asynchronous_tasks # @see is_job_task_active() public $active_job_tasks = [ 'periodic_maintenance', 'external_data_search', 'upload_batch_posts', 'approve_tag_implication', 'approve_tag_alias', 'calculate_tag_subscriptions' ]; # Javascripts assets manifest files. public $asset_javascripts = [ 'application', 'moe-legacy/application' ]; # Stylesheets assets manifest files. public $asset_stylesheets = [ 'application' ]; # Adds delete option to Post Mode menu in post#index, only available for admins. # Be careful with this. public $delete_post_mode = false; # When deleting a post, it will be deleted completely at once. # Be careful with this. public $delete_posts_permanently = false; # Enables post#search_external_data, available for any user. public $enable_find_external_data = true; # Enables manual tag deletion. public $enable_tag_deletion = true; # Enables manual tax fix count. public $enable_tag_fix_count = true; # Show homepage or redirect to /post otherwise. public $skip_homepage = false; # Show moe imoutos (post count) in homepage. public $show_homepage_imoutos = true; # Creates a fake sample_url for posts without a sample, so they can be zoomed-in in browse mode. # This is specifically useful if you're not creating image samples. public $fake_sample_url = true; # Parse moe imouto filenames upon post creation # These only work if filename is like "moe|yande.re 123 tag_1 tag_2" by default. # You can modify how the filenames are parsed in the # app/models/post/filename_parsing_methods.php file, the # _parse_filename_tags and _parse_filename_source methods. # Take tags from filename. public $tags_from_filename = true; # Automatically create source for images. public $source_from_filename = true; # Enable resizing image in post#show by double-clicking on it. public $dblclick_resize_image = true; # Enable news bar on the top of the page. public $enable_news_ticker = true; # Menu wiki link parameters. # By default it links to "help:home" wiki, but not all boorus will have a wiki called # like that. Set the value to false or null if you want to link to the wiki index instead. public $menu_wiki_link = ['title' => "help:home"]; # By default, filenames in pool zips are named after the pool order of the post. # The following option will show an option in pool#show that will let users # keep pretty filenames instead (with id and tags, like in post#show). public $allow_pool_zip_pretty_filenames = true; # Makes the results in post#similar open in a new window. public $similar_image_results_on_new_window = true; # When clicking "Add translation" in post#show, instead of creating a note, a notice will # show with info on how to create a note using the new functionality. # Setting this to false will cause the link to create a note like before, but the new # functionality will stay. public $disable_old_note_creation = true; # Only users with level equal or higher than this can see posts. # Unless they have higher level, users won't be able to view posts or access the Post Browser, # download pool zips and also direct-links in post lists (post#index, pool#show) will be disabled for them. # It's recommended to combine this with anti-directlink rules in the .htaccess. public $user_min_level_can_see_posts = 0; # Enables tag autocomplete in various input fields. public $enable_tag_completion = true; # Enables tag autocomplete in the home page. # Requires $enable_tag_completion. public $tag_completion_in_homepage = false; # Configuration for External Data Search job task. # Only the needed values to be changed can be copied over the # custom config class. public $external_data_search_config = [ # List of server names to search data in. # The server names listed here are just a reference to the list in the # image_service_list option; i.e., the names listed here must also be # listed in image_service_list. 'servers' => [ "danbooru.donmai.us" ], # Interval between requests, in seconds. 'interval' => 3, # True to grab post source from the first result with source. # Otherwise, source is not touched. 'source' => true, # True to merge found tags with current tags. # False to replace current tags with found ones. 'merge_tags' => true, # Max post updates per job call. # 0 = no limit = find data non-stop for all posts till end or error. 'limit' => 100, # Automatically sets rating from the first similar post with rating (usually # the best match). 'set_rating' => false, # Exclude these tags from result tags. 'exclude_tags' => [], # Image similarity threshold. Images with lower similarity ratio # will be ignored. # Set to 0 for automatic threshold. 'similarity' => 90 ]; /** * Active advertisements spots. * Remove one of them from the list and the ads in that * page/place won't show. * The ones commented are new, extra spots. */ public $active_ad_spots = [ 'post#index-sidebar', 'post#show-sidebar', 'post#show-top', 'post#index-top', // 'post#index-bottom', // 'post#show-bottom' ]; # Timeout for Danbooru::http_get_streaming() (used by batch upload, similar images, etc.). # If this limit is reached, the file that's being downloaded will be invalid. # Set to 0 to wait indefinitely. public $http_streaming_timeout = 10; /** * Don't process tag subscriptions again within this time. * Set to null to process tag subscriptions asap. * * @param string */ public $tag_subscription_delay = '360 minutes'; public function __get($prop) { return null; } # Just enabling tasks won't assure a certain task is active. # This will tell us if job tasks are enabled and if a specific task is active. public function is_job_task_active($name) { return $this->enable_asynchronous_tasks && in_array($name, $this->active_job_tasks); } /** * Does a couple of checks: * - If $user can see ads. * - If $spot is active. * * @return bool */ public function can_show_ad($spot, $user) { return in_array($spot, $this->active_ad_spots) && $this->can_see_ads($user); } /** * Parses image filename into tags. * Must return an array with tags or an empty value. */ public function filename_to_tags($filename) { if (preg_match("/^(?:yande\.re|moe) \d+ (.*)$/", $filename, $m)) { return array_filter(array_unique(explode(' ', $m[1]))); } } /** * Parses image filename into source. * Must return a string or an empty value. */ public function filename_to_source($filename) { if (preg_match("/^(?:moe|yande\.re) (\d+) /", $filename, $m)) { return 'https://yande.re/post/show/'.$m[1]; } } }