/** * REST API: WP_REST_Taxonomies_Controller class * * @package WordPress * @subpackage REST_API * @since 4.7.0 */ /** * Core class used to manage taxonomies via the REST API. * * @since 4.7.0 * * @see WP_REST_Controller */ class WP_REST_Taxonomies_Controller extends WP_REST_Controller { /** * Constructor. * * @since 4.7.0 */ public function __construct() { $this->namespace = 'wp/v2'; $this->rest_base = 'taxonomies'; } /** * Registers the routes for taxonomies. * * @since 4.7.0 * * @see register_rest_route() */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base, array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_items' ), 'permission_callback' => array( $this, 'get_items_permissions_check' ), 'args' => $this->get_collection_params(), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( 'args' => array( 'taxonomy' => array( 'description' => __( 'An alphanumeric identifier for the taxonomy.' ), 'type' => 'string', ), ), array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), 'args' => array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); } /** * Checks whether a given request has permission to read taxonomies. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ public function get_items_permissions_check( $request ) { if ( 'edit' === $request['context'] ) { if ( ! empty( $request['type'] ) ) { $taxonomies = get_object_taxonomies( $request['type'], 'objects' ); } else { $taxonomies = get_taxonomies( '', 'objects' ); } foreach ( $taxonomies as $taxonomy ) { if ( ! empty( $taxonomy->show_in_rest ) && current_user_can( $taxonomy->cap->assign_terms ) ) { return true; } } return new WP_Error( 'rest_cannot_view', __( 'Sorry, you are not allowed to manage terms in this taxonomy.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Retrieves all public taxonomies. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response Response object on success, or WP_Error object on failure. */ public function get_items( $request ) { // Retrieve the list of registered collection query parameters. $registered = $this->get_collection_params(); if ( isset( $registered['type'] ) && ! empty( $request['type'] ) ) { $taxonomies = get_object_taxonomies( $request['type'], 'objects' ); } else { $taxonomies = get_taxonomies( '', 'objects' ); } $data = array(); foreach ( $taxonomies as $tax_type => $value ) { if ( empty( $value->show_in_rest ) || ( 'edit' === $request['context'] && ! current_user_can( $value->cap->assign_terms ) ) ) { continue; } $tax = $this->prepare_item_for_response( $value, $request ); $tax = $this->prepare_response_for_collection( $tax ); $data[ $tax_type ] = $tax; } if ( empty( $data ) ) { // Response should still be returned as a JSON object when it is empty. $data = (object) $data; } return rest_ensure_response( $data ); } /** * Checks if a given request has access to a taxonomy. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access for the item, otherwise false or WP_Error object. */ public function get_item_permissions_check( $request ) { $tax_obj = get_taxonomy( $request['taxonomy'] ); if ( $tax_obj ) { if ( empty( $tax_obj->show_in_rest ) ) { return false; } if ( 'edit' === $request['context'] && ! current_user_can( $tax_obj->cap->assign_terms ) ) { return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to manage terms in this taxonomy.' ), array( 'status' => rest_authorization_required_code() ) ); } } return true; } /** * Retrieves a specific taxonomy. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_item( $request ) { $tax_obj = get_taxonomy( $request['taxonomy'] ); if ( empty( $tax_obj ) ) { return new WP_Error( 'rest_taxonomy_invalid', __( 'Invalid taxonomy.' ), array( 'status' => 404 ) ); } $data = $this->prepare_item_for_response( $tax_obj, $request ); return rest_ensure_response( $data ); } /** * Prepares a taxonomy object for serialization. * * @since 4.7.0 * @since 5.9.0 Renamed `$taxonomy` to `$item` to match parent class for PHP 8 named parameter support. * * @param WP_Taxonomy $item Taxonomy data. * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response Response object. */ public function prepare_item_for_response( $item, $request ) { // Restores the more descriptive, specific name for use within this method. $taxonomy = $item; $base = ! empty( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name; $fields = $this->get_fields_for_response( $request ); $data = array(); if ( in_array( 'name', $fields, true ) ) { $data['name'] = $taxonomy->label; } if ( in_array( 'slug', $fields, true ) ) { $data['slug'] = $taxonomy->name; } if ( in_array( 'capabilities', $fields, true ) ) { $data['capabilities'] = $taxonomy->cap; } if ( in_array( 'description', $fields, true ) ) { $data['description'] = $taxonomy->description; } if ( in_array( 'labels', $fields, true ) ) { $data['labels'] = $taxonomy->labels; } if ( in_array( 'types', $fields, true ) ) { $data['types'] = array_values( $taxonomy->object_type ); } if ( in_array( 'show_cloud', $fields, true ) ) { $data['show_cloud'] = $taxonomy->show_tagcloud; } if ( in_array( 'hierarchical', $fields, true ) ) { $data['hierarchical'] = $taxonomy->hierarchical; } if ( in_array( 'rest_base', $fields, true ) ) { $data['rest_base'] = $base; } if ( in_array( 'rest_namespace', $fields, true ) ) { $data['rest_namespace'] = $taxonomy->rest_namespace; } if ( in_array( 'visibility', $fields, true ) ) { $data['visibility'] = array( 'public' => (bool) $taxonomy->public, 'publicly_queryable' => (bool) $taxonomy->publicly_queryable, 'show_admin_column' => (bool) $taxonomy->show_admin_column, 'show_in_nav_menus' => (bool) $taxonomy->show_in_nav_menus, 'show_in_quick_edit' => (bool) $taxonomy->show_in_quick_edit, 'show_ui' => (bool) $taxonomy->show_ui, ); } $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; $data = $this->add_additional_fields_to_object( $data, $request ); $data = $this->filter_response_by_context( $data, $context ); // Wrap the data in a response object. $response = rest_ensure_response( $data ); if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) { $response->add_links( $this->prepare_links( $taxonomy ) ); } /** * Filters a taxonomy returned from the REST API. * * Allows modification of the taxonomy data right before it is returned. * * @since 4.7.0 * * @param WP_REST_Response $response The response object. * @param WP_Taxonomy $item The original taxonomy object. * @param WP_REST_Request $request Request used to generate the response. */ return apply_filters( 'rest_prepare_taxonomy', $response, $taxonomy, $request ); } /** * Prepares links for the request. * * @since 6.1.0 * * @param WP_Taxonomy $taxonomy The taxonomy. * @return array Links for the given taxonomy. */ protected function prepare_links( $taxonomy ) { return array( 'collection' => array( 'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ), ), 'https://api.w.org/items' => array( 'href' => rest_url( rest_get_route_for_taxonomy_items( $taxonomy->name ) ), ), ); } /** * Retrieves the taxonomy's schema, conforming to JSON Schema. * * @since 4.7.0 * @since 5.0.0 The `visibility` property was added. * @since 5.9.0 The `rest_namespace` property was added. * * @return array Item schema data. */ public function get_item_schema() { if ( $this->schema ) { return $this->add_additional_fields_schema( $this->schema ); } $schema = array( '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'taxonomy', 'type' => 'object', 'properties' => array( 'capabilities' => array( 'description' => __( 'All capabilities used by the taxonomy.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'description' => array( 'description' => __( 'A human-readable description of the taxonomy.' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'hierarchical' => array( 'description' => __( 'Whether or not the taxonomy should have children.' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'labels' => array( 'description' => __( 'Human-readable labels for the taxonomy for various contexts.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'name' => array( 'description' => __( 'The title for the taxonomy.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'slug' => array( 'description' => __( 'An alphanumeric identifier for the taxonomy.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'show_cloud' => array( 'description' => __( 'Whether or not the term cloud should be displayed.' ), 'type' => 'boolean', 'context' => array( 'edit' ), 'readonly' => true, ), 'types' => array( 'description' => __( 'Types associated with the taxonomy.' ), 'type' => 'array', 'items' => array( 'type' => 'string', ), 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'rest_base' => array( 'description' => __( 'REST base route for the taxonomy.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'rest_namespace' => array( 'description' => __( 'REST namespace route for the taxonomy.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'visibility' => array( 'description' => __( 'The visibility settings for the taxonomy.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, 'properties' => array( 'public' => array( 'description' => __( 'Whether a taxonomy is intended for use publicly either via the admin interface or by front-end users.' ), 'type' => 'boolean', ), 'publicly_queryable' => array( 'description' => __( 'Whether the taxonomy is publicly queryable.' ), 'type' => 'boolean', ), 'show_ui' => array( 'description' => __( 'Whether to generate a default UI for managing this taxonomy.' ), 'type' => 'boolean', ), 'show_admin_column' => array( 'description' => __( 'Whether to allow automatic creation of taxonomy columns on associated post-types table.' ), 'type' => 'boolean', ), 'show_in_nav_menus' => array( 'description' => __( 'Whether to make the taxonomy available for selection in navigation menus.' ), 'type' => 'boolean', ), 'show_in_quick_edit' => array( 'description' => __( 'Whether to show the taxonomy in the quick/bulk edit panel.' ), 'type' => 'boolean', ), ), ), ), ); $this->schema = $schema; return $this->add_additional_fields_schema( $this->schema ); } /** * Retrieves the query params for collections. * * @since 4.7.0 * * @return array Collection parameters. */ public function get_collection_params() { $new_params = array(); $new_params['context'] = $this->get_context_param( array( 'default' => 'view' ) ); $new_params['type'] = array( 'description' => __( 'Limit results to taxonomies associated with a specific post type.' ), 'type' => 'string', ); return $new_params; } } Černoch, kvůli kterému hoří USA: Krotil jsem horší gaunery a nikdo nemusel umřít. – THOR Tac
Rubriky

Černoch, kvůli kterému hoří USA: Krotil jsem horší gaunery a nikdo nemusel umřít.

Ve Spojených státech to vře. Kvůli smrti černocha Georga Floyda, který se udusil po zákroku policistů, vyrazily v desítkách amerických měst do ulic tisíce lidí. Pojďme nejdřív k samotnému zásahu. Viděl jste určitě videa, na záběrech je zřetelné, jak policista Derek Chauvin s rukama v kapsách klečí Floydovi na krku, další dva policisté mu klečí na hrudníku a nohách. Podle trestního oznámení, které bylo na Chauvina podáno, klečel policista na Floydově krku osm minut a 46 vteřin, z toho dvě minuty a 53 vteřin, kdy muž již nereagoval. Psal iRozhlas.cz. Jak hodnotíte policejní zásah? Čeho jste si všímal?

Jako bývalý policista se většinou stavím za zákroky svých kolegů, protože jsem si vědom toho, že práce na ulici je stále těžší a těžší. Roste agresivita lidí porušujících zákon, ztrácí se respekt k policii a mnoho lidí si myslí, že si může vše dovolit. Na druhou stranu, řadoví příslušníci policie velmi často nemají zastání u svých nadřízených, pokud použijí adekvátní donucovací prostředky. A tak se dostávají do situací, kdy by policisté dokázali adekvátně zakročit, ale z obav před možnými následky se na to raději vykašlou.

Ovšem případ George Floyda je opačný, tady policisté použili neadekvátní donucovací prostředky a toho chlapa v podstatě zabili. Zakleknutí krku může být jedna z technik, která se dá použít, pokud chcete zneschopnit agresivního pachatele a chcete mu nasadit pouta. V tomto případě to bylo naprosto zbytečné. Ten muž měl pouta nasazena. Z těch záběrů, co jsem viděl, není poznat, jak se choval, když se ho pokoušeli dostat do auta, ale i kdyby byl agresivní, dá se pacifikovat i jiným způsobem.

To, co jsem viděl, je ukázka policejní zvůle a ukázka toho jak může zamindrákovaný idiot poškodit práci tisíců policistů a policistek (abychom byli genderově vyvážení). Během své praxe jsem se setkal s mnohem většími gaunery, než byl Floyd. I když jsem měl vztek za to, co provedli, vždy jsem k nim přistupoval jako k lidským bytostem, a pokud jsem použil sílu, tak pouze tak, abych toho člověka dokázal zadržet. Nikdy ne k trýznění a k ponižování, tak, jak je to vidět na záběrech videa. Na tom videu je vidět, jak Floyd říká „nemohu dýchat, uvolněte koleno z mého krku“. Odpovědí je mu výsměch a slova „nastup do auta, nastup do auta, chlape“, ale nikdo mu neuvolní sevření. Ten policista na něm klečí, s rukama v kapsách, nedělá nic, pouze mu drtí krk a pozoruje chlapa, který pomalu přestává dýchat. Abych to shrnul, to, co jsem viděl, je podle mého názoru zneužití policejní pravomoci a zabití, ne-li vražda

Další zásah amerického strážce zákona pobouřil tamní veřejnost. Během pátečního protestu v Seattlu použil zasahující policista stejný chvat, který v Minneapolisu stál zatýkaného George Floyda život. Řada policejních oddělení v USA stlačení krku zakázala v šedesátých letech po masivní kritice, že zákrok vedl ke smrti zadržených. Jsou situace, kdy je tento chvat nutný, nebo si myslíte, že by se tento postup měl zakázat?

Jak už jsem se zmínil, je to jedna z technik, kterou lze použít k zadržení a k nasazení pout, ale málokdo ji používá. Tím důvodem je právě to, že může dojít k vážnému zranění. Pokud jsem měl problém při zatýkání, tak jsem na pachatele, který moc „zlobil“, použil zakleknutí hlavy. Chlapa zneschopníte, způsobujete mu bolest, takže s vámi spolupracuje. A možné zranění jsou maximálně modřiny v obličeji. Ovšem, jak jsem již uvedl, toto se používá k tomu, aby mohla být nasazena pouta. Pak to již není potřeba. Člověk se spoutanýma rukama za zády je velmi dobře ovladatelný i bez toho, aniž byste mu museli klečet na hlavě. I v případě, že bude zfetovaný a stále agresivní, dá se to řešit jinak, a ne mu kleknout na krk.

 Chybí vám něco při informování o zásahu? Je něco, na co se zapomíná?

Celkové pozadí se takto od počítače posuzuje těžko. Mohl to být problémový chlap z minulosti, může tam být něco, co nevidíme, a to mohlo umocnit agresi policistů. Každopádně to, co předvedli, je neprofesionální a neomluvitelné.

Prezident Donald Trump nařídil mobilizaci všech dostupných civilních i vojenských sil k zastavení nepokojů. Je to dobrý nápad? Měl na vybranou? 

Když se vám bouří obyvatelstvo, které rabuje, poškozuje majetek, zapaluje auta a obchody, napadá příslušníky bezpečnostních sborů, tak něco udělat musíte. A pokud to policie a Národní garda nezvládá, povoláte další síly. Asi neměl moc na výběr, jak udržet pořádek v zemi a vrátit život USA do normálních kolejí. Ten počátek protestů bych chápal a nedivím se, že lidé vyšli do ulic – bohužel se to zvrhlo v to, co můžeme vidět v médiích, a to už pouhou domluvou asi vyřešit nejde. Takže nasazení všech dostupných složek je nutnost.

Mimo jiné i server iDnes.cz psal o tom, jak se demonstranti v pátek objevili před sídlem amerického prezidenta Donalda Trumpa. Ten se pak kvůli obavám tajné služby schoval do bezpečnostního bunkru v Bílém domě. Ještě předtím protestujícím Američanům na Twitteru hrozil „těmi nejzlejšími psy a nejstrašlivějšími zbraněmi“. O čem to svědčí?

To, že schovali prezidenta do bunkru, je pochopitelné. Nevíte, kam až se to může posunout, a ohrozit život prezidenta USA nikdo z agentů neriskne. A jeho vzkazy demonstrantům… Trump je velký pozér, který má velmi často dojem, že nad něj není. A najednou je Amerika vzhůru nohama, v ulicích je „bordel“ a jeho slova nejsou vyslyšena. Někdo by o něm mohl říct, že je neschopný, slabý a neumí si udělat pořádek ani na vlastním dvorku (např. Putin). A to Trumpa určitě strašně štve, a vzteká se. A pak pouští podobné hlášky. Vy jste nikdy ve vzteku z pusy nevypustila něco, co by vás za normálních okolností ani nenapadlo? Myslím, že s Trumpem je to podobně

Zaznívají hlasy aktivistů, kteří jsou v ulicích, že bílí policisté koordinovaně postupují proti svým černošským spoluobčanům. Věří zkrátka, že smrt George Floyda není ojedinělým incidentem, ale pokračováním příběhu, ve kterém umírají černí Američané. Slyšet je i to, že obchody zapalují provokatéři placení státem, aby policie měla důvod zasáhnout proti demonstrantům. Co si o tom myslíte?

To nedokážu posoudit. Nežiju tam, neznám to. Navíc, o hlasech aktivistů z levicových hnutí, z genderových komunit nebo ochránců bůhví čeho všeho si myslím svoje, a neposlouchám je.

Protesty jistě časem skončí, buď zásahem tvrdé ruky, nebo se demonstranti unaví; jenže, co bude dál?

Co by bylo… život se vrátí do běžných kolejí, lidé se uklidní, obchody se obnoví, ulice se uklidí a vše pojede jako dříve. Rozhodně to není poprvé, kdy Amerika zažívá podobné nepokoje, a nemám dojem, že by se po ukončení těchto nepokojů něco změnilo. 

Zdroj: https://www.parlamentnilisty.cz/arena/rozhovory/Cernoch-kvuli-kteremu-hori-USA-Krotil-jsem-horsi-gaunery-Elitni-cesky-policista-drsne-k-veci-626194