Files
IPB/applications/core/data/furl.json
T
2025-12-19 16:00:35 -08:00

523 lines
16 KiB
JSON

/**
* Friendly URL Structure
*
* For each value in the $furl array:
* The key should be the "SEO Template" - an identifier which you'll use when displaying a URL.
* The value should be an associative array with two or three elements: 'friendly' and 'real', and optionally 'verify':
* 'friendly'
* The friendly URL to use - encase variables in {curly braces} containing a symbol, followed by the name of the parameter that matches in the "real" URL
* The symbol should be # for numbers or @ for strings
* For example, if the "real" URL contains id=XXX, where XXX is a number, you should include {#id} somewhere in the friendly URL.
* You can also use the tag {?} for the "SEO Title" (that is, any variables that shouldn't be part of the real URL, such as the name of the topipc being viewed).
* If you want to support more than one SEO Title, you can give them zero-indexed keys like so: {?0} {?1} {?2}
* 'real'
* This should be the base of the real URL. You should not include parameters which will be parsed out from the friendly URL.
* 'verify'
* This should be the name of a class that contains a loadFromUrl() and an url() method. The dynamic URL (i.e. app=core&...) will be passed to loadFromUrl(), and the url()
* method will subsequently be called to retrieve the correct URL, ideal with ActiveRecord pattern classes.
*
* IMPORTANT: Ensure values are listed with the most specific ones first. This is to ensure that non-FURL redirects are done correctly. For example, if you have these FURLs:
* /index.php?app=myapp&module=mymodule&controller=mycontroller&do=myaction -> /myfolder/myaction
* /index.php?app=myapp&module=mymodule&controller=mycontroller -> /myfolder
* They must be provided in that order, otherwise the former will redirec to /myfolder/?do=myaction rather than /myfolder/myaction
*/
{
"topLevel": "",
"pages": {
/* Login */
"login": {
"friendly": "login",
"real": "app=core&module=system&controller=login"
},
"logout": {
"friendly": "logout",
"real": "app=core&module=system&controller=login&do=logout"
},
"lostpassword": {
"friendly": "lostpassword",
"real": "app=core&module=system&controller=lostpass"
},
/* User CP */
"settings_email": {
"friendly": "settings/email",
"real": "app=core&module=system&controller=settings&area=email"
},
"settings_password": {
"friendly": "settings/password",
"real": "app=core&module=system&controller=settings&area=password"
},
"settings_devices": {
"friendly": "settings/devices",
"real": "app=core&module=system&controller=settings&area=devices"
},
"settings_secure": {
"friendly": "settings/secure-account",
"real": "app=core&module=system&controller=settings&do=secureAccount"
},
"settings_mfa": {
"friendly": "settings/account-security",
"real": "app=core&module=system&controller=settings&area=mfa"
},
"mfarecovery": {
"friendly": "account-recovery",
"real": "app=core&module=system&controller=settings&do=mfarecovery"
},
"mfarecoveryvalidate": {
"friendly": "account-recovery/validate",
"real": "app=core&module=system&controller=settings&do=mfarecoveryvalidate"
},
"settings_username": {
"friendly": "settings/username",
"real": "app=core&module=system&controller=settings&area=username"
},
"settings_links": {
"friendly": "settings/links",
"real": "app=core&module=system&controller=settings&area=links"
},
"settings_signature": {
"friendly": "settings/signature",
"real": "app=core&module=system&controller=settings&area=signature"
},
"settings_login": {
"friendly": "settings/login",
"real": "app=core&module=system&controller=settings&area=login"
},
"settings_apps": {
"friendly": "settings/apps",
"real": "app=core&module=system&controller=settings&area=apps"
},
"settings_referrals": {
"friendly": "settings/referrals",
"real": "app=core&module=system&controller=settings&area=referrals"
},
"settings": {
"friendly": "settings",
"real": "app=core&module=system&controller=settings"
},
"unsubscribe": {
"friendly": "unsubscribe",
"real": "app=core&module=system&controller=unsubscribe"
},
"privacy": {
"friendly": "privacy",
"real": "app=core&module=system&controller=privacy",
"alias": "privacypolicy"
},
"register": {
"friendly": "register",
"real": "app=core&module=system&controller=register"
},
"attachments": {
"friendly": "attachments",
"real": "app=core&module=system&controller=attachments"
},
"cookies": {
"friendly": "cookies",
"real": "app=core&module=system&controller=cookies",
"alias": "cookies"
},
/* Messenger */
"messenger_compose": {
"friendly": "messenger/compose",
"real": "app=core&module=messaging&controller=messenger&do=compose"
},
"messenger_convo": {
"friendly": "messenger/{#id}",
"real": "app=core&module=messaging&controller=messenger"
},
"messenger_unread": {
"friendly": "messenger/unread",
"real": "app=core&module=messaging&controller=messenger&folder=unread"
},
"messenger_drafts": {
"friendly": "messenger/drafts",
"real": "app=core&module=messaging&controller=messenger&folder=drafts"
},
"messaging": {
"friendly": "messenger",
"real": "app=core&module=messaging&controller=messenger"
},
/* Profiles */
"warn_add": {
"friendly": "profile/{#id}-{?}/warnings/add",
"real": "app=core&module=system&controller=warnings&do=warn",
"seoTitles": [
{
"class": "\\IPS\\Member",
"queryParam": "id",
"property": "members_seo_name"
}
]
},
"warn_view": {
"friendly": "profile/{#id}-{?}/warnings/{#w}",
"real": "app=core&module=system&controller=warnings&do=view",
"verify": "\\IPS\\core\\Warnings\\Warning"
},
"warn_list": {
"friendly": "profile/{#id}-{?}/warnings",
"real": "app=core&module=system&controller=warnings",
"seoTitles": [
{
"class": "\\IPS\\Member",
"queryParam": "id",
"property": "members_seo_name"
}
]
},
"profile_content": {
"friendly": "profile/{#id}-{?}/content",
"real": "app=core&module=members&controller=profile&do=content",
"seoPagination": true,
"seoTitles": [
{
"class": "\\IPS\\Member",
"queryParam": "id",
"property": "members_seo_name"
}
]
},
"profile_reputation": {
"friendly": "profile/{#id}-{?}/reputation",
"real": "app=core&module=members&controller=profile&do=reputation",
"seoTitles": [
{
"class": "\\IPS\\Member",
"queryParam": "id",
"property": "members_seo_name"
}
]
},
"profile_badges": {
"friendly": "profile/{#id}-{?}/badges",
"real": "app=core&module=members&controller=profile&do=badges",
"seoTitles": [
{
"class": "\\IPS\\Member",
"queryParam": "id",
"property": "members_seo_name"
}
]
},
"profile_solutions": {
"friendly": "profile/{#id}-{?}/solutions",
"real": "app=core&module=members&controller=profile&do=solutions",
"seoTitles": [
{
"class": "\\IPS\\Member",
"queryParam": "id",
"property": "members_seo_name"
}
]
},
"edit_profile": {
"friendly": "profile/{#id}-{?}/edit",
"real": "app=core&module=members&controller=profile&do=edit",
"seoTitles": [
{
"class": "\\IPS\\Member",
"queryParam": "id",
"property": "members_seo_name"
}
]
},
"edit_profile_photo": {
"friendly": "profile/{#id}-{?}/photo",
"real": "app=core&module=members&controller=profile&do=editPhoto",
"seoTitles": [
{
"class": "\\IPS\\Member",
"queryParam": "id",
"property": "members_seo_name"
}
]
},
"flag_as_spammer": {
"friendly": "profile/{#id}-{?}/spammer",
"real": "app=core&module=system&controller=moderation&do=flagAsSpammer",
"seoTitles": [
{
"class": "\\IPS\\Member",
"queryParam": "id",
"property": "members_seo_name"
}
]
},
"profile_followers": {
"friendly": "profile/{#id}-{?}/followers",
"real": "app=core&module=members&controller=profile&do=followers",
"seoTitles": [
{
"class": "\\IPS\\Member",
"queryParam": "id",
"property": "members_seo_name"
}
]
},
"profile": {
"friendly": "profile/{#id}-{?}",
"real": "app=core&module=members&controller=profile",
"verify": "\\IPS\\Member",
"alias": "user/{#id}-{?}"
},
/* Mod CP */
"modcp_announcements": {
"friendly": "modcp/announcements",
"real": "app=core&module=modcp&controller=modcp&tab=announcements"
},
"modcp_report": {
"friendly": "modcp/reports/{#id}",
"real": "app=core&module=modcp&controller=modcp&tab=reports&action=view"
},
"modcp": {
"friendly": "modcp",
"real": "app=core&module=modcp&controller=modcp"
},
"modcp_members": {
"friendly": "modcp/members",
"real": "app=core&module=modcp&controller=modcp&tab=members"
},
"modcp_reports": {
"friendly": "modcp/reports",
"real": "app=core&module=modcp&controller=modcp&tab=reports"
},
"modcp_content": {
"friendly": "modcp/content",
"real": "app=core&module=modcp&controller=modcp&tab=hidden"
},
"modcp_approval": {
"friendly": "modcp/approval-queue",
"real": "app=core&module=modcp&controller=modcp&tab=approval"
},
"modcp_recent_warnings": {
"friendly": "modcp/recent-warnings",
"real": "app=core&module=modcp&controller=modcp&tab=recent_warnings"
},
"modcp_ip_tools": {
"friendly": "modcp/ip-tools",
"real": "app=core&module=modcp&controller=modcp&tab=ip_tools"
},
"modcp_deleted": {
"friendly": "modcp/deleted",
"real": "app=core&module=modcp&controller=modcp&tab=deleted"
},
"modcp_alerts": {
"friendly": "modcp/alerts",
"real": "app=core&module=modcp&controller=modcp&tab=alerts"
},
/* Ignore */
"ignore": {
"friendly": "ignore",
"real": "app=core&module=system&controller=ignore"
},
/* Online Users */
"online": {
"friendly": "online",
"real": "app=core&module=online&controller=online"
},
/* Staff directory */
"staffdirectory": {
"friendly": "staff",
"real": "app=core&module=staffdirectory&controller=directory"
},
/* Guidelines */
"guidelines": {
"friendly": "guidelines",
"real": "app=core&module=system&controller=guidelines"
},
/* Notifications */
"notifications_options": {
"friendly": "notifications/options",
"real": "app=core&module=system&controller=notifications&do=options"
},
"notifications": {
"friendly": "notifications",
"real": "app=core&module=system&controller=notifications"
},
"terms": {
"friendly": "terms",
"real": "app=core&module=system&controller=terms"
},
"announcement": {
"friendly": "announcement/{#id}-{?}",
"real": "app=core&module=system&controller=announcement"
},
"contact": {
"friendly": "contact",
"real": "app=core&module=contact&controller=contact"
},
"followed_content": {
"friendly": "followed",
"real": "app=core&module=system&controller=followed"
},
"alert": {
"friendly": "alert/{#id}",
"real": "app=core&module=system&controller=alerts"
},
/* Search */
"search": {
"friendly": "search",
"real": "app=core&module=search&controller=search"
},
/* Discover */
"discover_unread": {
"friendly": "discover/unread",
"real": "app=core&module=discover&controller=streams&id=1"
},
"discover_istarted": {
"friendly": "discover/content-started",
"real": "app=core&module=discover&controller=streams&id=2"
},
"discover_followed": {
"friendly": "discover/followed-content",
"real": "app=core&module=discover&controller=streams&id=3"
},
"discover_following": {
"friendly": "discover/followed-members",
"real": "app=core&module=discover&controller=streams&id=4"
},
"discover_posted": {
"friendly": "discover/content-posted",
"real": "app=core&module=discover&controller=streams&id=5"
},
"discover_stream": {
"friendly": "discover/{#id}",
"real": "app=core&module=discover&controller=streams"
},
"discover_rss_all_activity": {
"friendly": "discover/all.xml",
"real": "app=core&module=discover&controller=streams&rss=1"
},
"discover_rss": {
"friendly": "discover/{#id}.xml",
"real": "app=core&module=discover&controller=streams&rss=1"
},
"discover_all": {
"friendly": "discover",
"real": "app=core&module=discover&controller=streams"
},
/* RSS */
"rss_feed": {
"friendly": "rss/{#id}-{?}.xml",
"real": "app=core&module=discover&controller=rss",
"verify": "\\IPS\\core\\Rss"
},
/* Language Selector */
"language": {
"friendly": "language",
"real": "app=core&module=system&controller=language"
},
/* Theme Selector */
"theme": {
"friendly": "theme",
"real": "app=core&module=system&controller=theme"
},
/* Mark site as read */
"mark_site_as_read": {
"friendly": "markallread",
"real": "app=core&module=system&controller=markread"
},
/* Tags */
"tags": {
"friendly": "tags/{@tags}",
"real": "app=core&module=search&controller=search"
},
/* Legacy */
"activity": {
"friendly": "activity",
"real": "app=core&module=activity&controller=activity"
},
"vnc": {
"friendly": "new-content",
"real": "app=core&module=discover&controller=vnc"
},
/* Leaderboard */
"leaderboard_leaderboard": {
"friendly": "leaderboard",
"real": "app=core&module=discover&controller=popular&tab=leaderboard"
},
"leaderboard_history": {
"friendly": "pastleaders",
"real": "app=core&module=discover&controller=popular&tab=history"
},
"leaderboard_members": {
"friendly": "topmembers",
"real": "app=core&module=discover&controller=popular&tab=members"
},
"leaderboard_trending": {
"friendly": "trending",
"real": "app=core&module=discover&controller=popular&tab=trending"
},
/* Clubs */
"clubs_list": {
"friendly": "clubs",
"real": "app=core&module=clubs&controller=directory"
},
"clubs_view": {
"friendly": "clubs/{#id}-{?}",
"real": "app=core&module=clubs&controller=view",
"verify": "\\IPS\\Member\\Club"
},
"clubs_page": {
"friendly": "clubs/page/{#id}-{?}",
"real": "app=core&module=clubs&controller=page",
"verify": "\\IPS\\Member\\Club\\Page"
},
/* Promote */
"promote_history": {
"friendly": "promote/history-{#promote_id}",
"real": "app=core&module=promote&controller=promote&do=history"
},
"promote_manage": {
"friendly": "promote/manage",
"real": "app=core&module=promote&controller=promote&do=view"
},
"promote_show": {
"friendly": "ourpicks",
"real": "app=core&module=promote&controller=ourpicks"
},
"promote": {
"friendly": "promote",
"real": "app=core&module=promote&controller=promote"
},
/* Meta-data files */
"manifest": {
"friendly": "manifest.webmanifest",
"real": "app=core&module=system&controller=metatags&do=manifest"
},
"iebrowserconfig": {
"friendly": "browserconfig.xml",
"real": "app=core&module=system&controller=metatags&do=iebrowserconfig"
},
"referral": {
"friendly": "refer/{#id}",
"real": "app=core&module=system&controller=referrals"
},
"user_offline": {
"friendly": "offline",
"real": "app=core&module=system&controller=offline"
}
}
}