= ( $attributes['minutes'] ?? 0 ); $elements = $this->transform_duration_to_string( $days, $hours, $minutes ); $elements_length = \count( $elements ); switch ( $elements_length ) { case 1: return $elements[0]; case 2: return \sprintf( /* translators: %s expands to a unit of time (e.g. 1 day). */ \__( '%1$s and %2$s', 'wordpress-seo' ), ...$elements ); case 3: return \sprintf( /* translators: %s expands to a unit of time (e.g. 1 day). */ \__( '%1$s, %2$s and %3$s', 'wordpress-seo' ), ...$elements ); default: return ''; } } /** * Presents the duration text of the How-To block in the site language. * * @param array $attributes The attributes. * @param string $content The content. * * @return string The content with the duration text in the site language. */ public function present_duration_text( $attributes, $content ) { $duration = $this->build_duration_string( $attributes ); // 'Time needed:' is the default duration text that will be shown if a user doesn't add one. $duration_text = \__( 'Time needed:', 'wordpress-seo' ); if ( isset( $attributes['durationText'] ) && $attributes['durationText'] !== '' ) { $duration_text = $attributes['durationText']; } return \preg_replace( '/(

)(.*<\/span>)(.[^\/p>]*)(<\/p>)/', '

' . $duration_text . ' ' . $duration . '

', $content, 1 ); } /** * Optimizes images in the How-To blocks. * * @param array $attributes The attributes. * @param string $content The content. * * @return string The content with images optimized. */ public function optimize_how_to_images( $attributes, $content ) { if ( ! isset( $attributes['steps'] ) ) { return $content; } $content = $this->present_duration_text( $attributes, $content ); return $this->optimize_images( $attributes['steps'], 'text', $content ); } /** * Optimizes images in structured data blocks. * * @param array $elements The list of elements from the block attributes. * @param string $key The key in the data to iterate over. * @param string $content The content. * * @return string The content with images optimized. */ private function optimize_images( $elements, $key, $content ) { global $post; if ( ! $post ) { return $content; } $this->add_images_from_attributes_to_used_cache( $post->ID, $elements, $key ); // Then replace all images with optimized versions in the content. $content = \preg_replace_callback( '/]+>/', function ( $matches ) { \preg_match( '/src="([^"]+)"/', $matches[0], $src_matches ); if ( ! $src_matches || ! isset( $src_matches[1] ) ) { return $matches[0]; } $attachment_id = $this->attachment_src_to_id( $src_matches[1] ); if ( $attachment_id === 0 ) { return $matches[0]; } $image_size = 'full'; $image_style = [ 'style' => 'max-width: 100%; height: auto;' ]; \preg_match( '/style="[^"]*width:\s*(\d+)px[^"]*"/', $matches[0], $style_matches ); if ( $style_matches && isset( $style_matches[1] ) ) { $width = (int) $style_matches[1]; $meta_data = \wp_get_attachment_metadata( $attachment_id ); if ( isset( $meta_data['height'] ) && isset( $meta_data['width'] ) && $meta_data['height'] > 0 && $meta_data['width'] > 0 ) { $aspect_ratio = ( $meta_data['height'] / $meta_data['width'] ); $height = ( $width * $aspect_ratio ); $image_size = [ $width, $height ]; } $image_style = ''; } /** * Filter: 'wpseo_structured_data_blocks_image_size' - Allows adjusting the image size in structured data blocks. * * @since 18.2 * * @param string|int[] $image_size The image size. Accepts any registered image size name, or an array of width and height values in pixels (in that order). * @param int $attachment_id The id of the attachment. * @param string $attachment_src The attachment src. */ $image_size = \apply_filters( 'wpseo_structured_data_blocks_image_size', $image_size, $attachment_id, $src_matches[1] ); $image_html = \wp_get_attachment_image( $attachment_id, $image_size, false, $image_style ); if ( empty( $image_html ) ) { return $matches[0]; } return $image_html; }, $content ); if ( ! $this->registered_shutdown_function ) { \register_shutdown_function( [ $this, 'maybe_save_used_caches' ] ); $this->registered_shutdown_function = true; } return $content; } /** * If the caches of structured data block images have been changed, saves them. * * @return void */ public function maybe_save_used_caches() { foreach ( $this->used_caches as $post_id => $used_cache ) { if ( isset( $this->caches[ $post_id ] ) && $used_cache === $this->caches[ $post_id ] ) { continue; } \update_post_meta( $post_id, 'yoast-structured-data-blocks-images-cache', $used_cache ); } } /** * Converts an attachment src to an attachment ID. * * @param string $src The attachment src. * * @return int The attachment ID. 0 if none was found. */ private function attachment_src_to_id( $src ) { global $post; if ( isset( $this->used_caches[ $post->ID ][ $src ] ) ) { return $this->used_caches[ $post->ID ][ $src ]; } $cache = $this->get_cache_for_post( $post->ID ); if ( isset( $cache[ $src ] ) ) { $this->used_caches[ $post->ID ][ $src ] = $cache[ $src ]; return $cache[ $src ]; } $this->used_caches[ $post->ID ][ $src ] = $this->image_helper->get_attachment_by_url( $src ); return $this->used_caches[ $post->ID ][ $src ]; } /** * Returns the cache from postmeta for a given post. * * @param int $post_id The post ID. * * @return array The images cache. */ private function get_cache_for_post( $post_id ) { if ( isset( $this->caches[ $post_id ] ) ) { return $this->caches[ $post_id ]; } $cache = \get_post_meta( $post_id, 'yoast-structured-data-blocks-images-cache', true ); if ( ! $cache ) { $cache = []; } $this->caches[ $post_id ] = $cache; return $cache; } /** * Adds any images that have their ID in the block attributes to the cache. * * @param int $post_id The post ID. * @param array $elements The elements. * @param string $key The key in the elements we should loop over. * * @return void */ private function add_images_from_attributes_to_used_cache( $post_id, $elements, $key ) { // First grab all image IDs from the attributes. $images = []; foreach ( $elements as $element ) { if ( ! isset( $element[ $key ] ) ) { continue; } if ( isset( $element[ $key ] ) && \is_array( $element[ $key ] ) ) { foreach ( $element[ $key ] as $part ) { if ( ! \is_array( $part ) || ! isset( $part['type'] ) || $part['type'] !== 'img' ) { continue; } if ( ! isset( $part['key'] ) || ! isset( $part['props']['src'] ) ) { continue; } $images[ $part['props']['src'] ] = (int) $part['key']; } } } if ( isset( $this->used_caches[ $post_id ] ) ) { $this->used_caches[ $post_id ] = \array_merge( $this->used_caches[ $post_id ], $images ); } else { $this->used_caches[ $post_id ] = $images; } } /* DEPRECATED METHODS */ /** * Enqueue Gutenberg block assets for backend editor. * * @deprecated 22.7 * @codeCoverageIgnore * * @return void */ public function enqueue_block_editor_assets() { \_deprecated_function( __METHOD__, 'Yoast SEO 22.7' ); } } Le président Ouattara parle des missions des ministres gouverneurs - JusteInfos- Information générale

Le président Ouattara parle des missions des ministres gouverneurs

Le président Ouattara parle des missions des ministres gouverneurs
S'inscrire à la newsletter
Listen to this article

Le Président ivoirien, Alassane OUATTARA, a échangé, ce mardi 14 Septembre 2021, au Palais de la Présidence de la République, avec les quatorze (14) Ministres, Gouverneurs de Districts Autonomes nommés le 18 juin 2021.

Le Chef de l’Etat les a tous félicités et a souligné que leur nomination en tant que Ministres, Gouverneurs, est la reconnaissance non seulement de leurs compétences et expériences mais également de leur connaissance des questions de développement local. Il a aussi rappelé que cette nomination découle de la loi du 5 août 2014 portant orientation de l’organisation générale de l’Administration territoriale, qui prévoit la création de Districts Autonomes en vue de renforcer le maillage territorial de l’Administration en instituant un palier au-dessus de la Région.

Pour lui, le District Autonome est donc un véritable pôle de développement local qui doit regrouper au moins deux Régions, et qui obéit dans son fonctionnement, à la fois aux règles de la déconcentration et de la décentralisation. C’est pourquoi, la création, selon le Président Alassane OUATTARA, de douze (12) nouveaux Districts Autonomes, au mois de juin dernier, en plus des deux existants déjà (Abidjan et Yamoussoukro), vise à poursuivre le maillage territorial du pays et à relever les défis d’un développement équilibré sur l’ensemble du territoire national.

Il a tenu à souligner que les textes adoptés pour la création des Districts Autonomes, notamment les différents décrets d’application, précisent les missions et les modalités de fonctionnement de ces entités, afin d’éviter tout chevauchement dans les attributions des divers acteurs du développement local. Il les a donc invités à exécuter leurs missions dans le strict respect de ces dispositions, tout en insistant sur le fait que les missions de suivi, de coordination, de supervision doivent être au centre de leurs actions dans leurs Districts Autonomes respectifs.

Après avoir donné quelques orientations concernant notamment le cadre organique des emplois des Districts Autonomes et leur budget pour cette année 2021, le Président de la République a révélé aux Ministres, Gouverneurs qu’il présidera au moins une fois dans l’année une réunion d’évaluation et d’échanges pour faire le point de leurs activités. A la suite du Chef de l’Etat, le Ministre de l’Intérieur et de la Sécurité, le Général Vagondo DIOMANDE et le Ministre, Gouverneur du District Autonome d’Abidjan, M. Robert Beugré MAMBE, Porte- parole des Ministres, Gouverneurs, ont tous les deux exprimé leur infinie gratitude au Président Alassane OUATTARA pour sa confiance.

Le Ministre Vagondo DIOMANDE a indiqué que les personnalités choisies ont le profil idéal pour atteindre les objectifs fixés. Le Porte- parole des Ministres, Gouverneurs, M. Robert Beugré MAMBE, a, quant à lui, tenu à préciser que les entités qu’ils dirigent ne rentrent en conflit avec aucune structure ou institution de l’Etat, mais favorisent plutôt la complémentarité et l’optimisation. Notons que des membres du Gouvernement et du Cabinet présidentiel ont pris part à cette rencontre.

Info : Dircom de la Présidence ivoirienne

#Côte d'Ivoire#Ministres-gouverneurs