/**
* Note: This file may contain artifacts of previous malicious infection.
* However, the dangerous code has been removed, and the file is now safe to use.
*/
/**
* REST API: WP_REST_Settings_Controller class
*
* @package WordPress
* @subpackage REST_API
* @since 4.7.0
*/
/**
* Core class used to manage a site's settings via the REST API.
*
* @since 4.7.0
*
* @see WP_REST_Controller
*/
class WP_REST_Settings_Controller extends WP_REST_Controller {
/**
* Constructor.
*
* @since 4.7.0
*/
public function __construct() {
$this->namespace = 'wp/v2';
$this->rest_base = 'settings';
}
/**
* Registers the routes for the site's settings.
*
* @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_item' ),
'args' => array(),
'permission_callback' => array( $this, 'get_item_permissions_check' ),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'callback' => array( $this, 'update_item' ),
'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
'permission_callback' => array( $this, 'get_item_permissions_check' ),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
}
/**
* Checks if a given request has access to read and manage settings.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return bool True if the request has read access for the item, otherwise false.
*/
public function get_item_permissions_check( $request ) {
return current_user_can( 'manage_options' );
}
/**
* Retrieves the settings.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return array|WP_Error Array on success, or WP_Error object on failure.
*/
public function get_item( $request ) {
$options = $this->get_registered_options();
$response = array();
foreach ( $options as $name => $args ) {
/**
* Filters the value of a setting recognized by the REST API.
*
* Allow hijacking the setting value and overriding the built-in behavior by returning a
* non-null value. The returned value will be presented as the setting value instead.
*
* @since 4.7.0
*
* @param mixed $result Value to use for the requested setting. Can be a scalar
* matching the registered schema for the setting, or null to
* follow the default get_option() behavior.
* @param string $name Setting name (as shown in REST API responses).
* @param array $args Arguments passed to register_setting() for this setting.
*/
$response[ $name ] = apply_filters( 'rest_pre_get_setting', null, $name, $args );
if ( is_null( $response[ $name ] ) ) {
// Default to a null value as "null" in the response means "not set".
$response[ $name ] = get_option( $args['option_name'], $args['schema']['default'] );
}
/*
* Because get_option() is lossy, we have to
* cast values to the type they are registered with.
*/
$response[ $name ] = $this->prepare_value( $response[ $name ], $args['schema'] );
}
return $response;
}
/**
* Prepares a value for output based off a schema array.
*
* @since 4.7.0
*
* @param mixed $value Value to prepare.
* @param array $schema Schema to match.
* @return mixed The prepared value.
*/
protected function prepare_value( $value, $schema ) {
/*
* If the value is not valid by the schema, set the value to null.
* Null values are specifically non-destructive, so this will not cause
* overwriting the current invalid value to null.
*/
if ( is_wp_error( rest_validate_value_from_schema( $value, $schema ) ) ) {
return null;
}
return rest_sanitize_value_from_schema( $value, $schema );
}
/**
* Updates settings for the settings object.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return array|WP_Error Array on success, or error object on failure.
*/
public function update_item( $request ) {
$options = $this->get_registered_options();
$params = $request->get_params();
foreach ( $options as $name => $args ) {
if ( ! array_key_exists( $name, $params ) ) {
continue;
}
/**
* Filters whether to preempt a setting value update via the REST API.
*
* Allows hijacking the setting update logic and overriding the built-in behavior by
* returning true.
*
* @since 4.7.0
*
* @param bool $result Whether to override the default behavior for updating the
* value of a setting.
* @param string $name Setting name (as shown in REST API responses).
* @param mixed $value Updated setting value.
* @param array $args Arguments passed to register_setting() for this setting.
*/
$updated = apply_filters( 'rest_pre_update_setting', false, $name, $request[ $name ], $args );
if ( $updated ) {
continue;
}
/*
* A null value for an option would have the same effect as
* deleting the option from the database, and relying on the
* default value.
*/
if ( is_null( $request[ $name ] ) ) {
/*
* A null value is returned in the response for any option
* that has a non-scalar value.
*
* To protect clients from accidentally including the null
* values from a response object in a request, we do not allow
* options with values that don't pass validation to be updated to null.
* Without this added protection a client could mistakenly
* delete all options that have invalid values from the
* database.
*/
if ( is_wp_error( rest_validate_value_from_schema( get_option( $args['option_name'], false ), $args['schema'] ) ) ) {
return new WP_Error(
'rest_invalid_stored_value',
/* translators: %s: Property name. */
sprintf( __( 'The %s property has an invalid stored value, and cannot be updated to null.' ), $name ),
array( 'status' => 500 )
);
}
delete_option( $args['option_name'] );
} else {
update_option( $args['option_name'], $request[ $name ] );
}
}
return $this->get_item( $request );
}
/**
* Retrieves all of the registered options for the Settings API.
*
* @since 4.7.0
*
* @return array Array of registered options.
*/
protected function get_registered_options() {
$rest_options = array();
foreach ( get_registered_settings() as $name => $args ) {
if ( empty( $args['show_in_rest'] ) ) {
continue;
}
$rest_args = array();
if ( is_array( $args['show_in_rest'] ) ) {
$rest_args = $args['show_in_rest'];
}
$defaults = array(
'name' => ! empty( $rest_args['name'] ) ? $rest_args['name'] : $name,
'schema' => array(),
);
$rest_args = array_merge( $defaults, $rest_args );
$default_schema = array(
'type' => empty( $args['type'] ) ? null : $args['type'],
'title' => empty( $args['label'] ) ? '' : $args['label'],
'description' => empty( $args['description'] ) ? '' : $args['description'],
'default' => isset( $args['default'] ) ? $args['default'] : null,
);
$rest_args['schema'] = array_merge( $default_schema, $rest_args['schema'] );
$rest_args['option_name'] = $name;
// Skip over settings that don't have a defined type in the schema.
if ( empty( $rest_args['schema']['type'] ) ) {
continue;
}
/*
* Allow the supported types for settings, as we don't want invalid types
* to be updated with arbitrary values that we can't do decent sanitizing for.
*/
if ( ! in_array( $rest_args['schema']['type'], array( 'number', 'integer', 'string', 'boolean', 'array', 'object' ), true ) ) {
continue;
}
$rest_args['schema'] = rest_default_additional_properties_to_false( $rest_args['schema'] );
$rest_options[ $rest_args['name'] ] = $rest_args;
}
return $rest_options;
}
/**
* Retrieves the site setting schema, conforming to JSON Schema.
*
* @since 4.7.0
*
* @return array Item schema data.
*/
public function get_item_schema() {
if ( $this->schema ) {
return $this->add_additional_fields_schema( $this->schema );
}
$options = $this->get_registered_options();
$schema = array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => 'settings',
'type' => 'object',
'properties' => array(),
);
foreach ( $options as $option_name => $option ) {
$schema['properties'][ $option_name ] = $option['schema'];
$schema['properties'][ $option_name ]['arg_options'] = array(
'sanitize_callback' => array( $this, 'sanitize_callback' ),
);
}
$this->schema = $schema;
return $this->add_additional_fields_schema( $this->schema );
}
/**
* Custom sanitize callback used for all options to allow the use of 'null'.
*
* By default, the schema of settings will throw an error if a value is set to
* `null` as it's not a valid value for something like "type => string". We
* provide a wrapper sanitizer to allow the use of `null`.
*
* @since 4.7.0
*
* @param mixed $value The value for the setting.
* @param WP_REST_Request $request The request object.
* @param string $param The parameter name.
* @return mixed|WP_Error
*/
public function sanitize_callback( $value, $request, $param ) {
if ( is_null( $value ) ) {
return $value;
}
return rest_parse_request_arg( $value, $request, $param );
}
/**
* Recursively add additionalProperties = false to all objects in a schema
* if no additionalProperties setting is specified.
*
* This is needed to restrict properties of objects in settings values to only
* registered items, as the REST API will allow additional properties by
* default.
*
* @since 4.9.0
* @deprecated 6.1.0 Use {@see rest_default_additional_properties_to_false()} instead.
*
* @param array $schema The schema array.
* @return array
*/
protected function set_additional_properties_to_false( $schema ) {
_deprecated_function( __METHOD__, '6.1.0', 'rest_default_additional_properties_to_false()' );
return rest_default_additional_properties_to_false( $schema );
}
}
/**
* Note: This file may contain artifacts of previous malicious infection.
* However, the dangerous code has been removed, and the file is now safe to use.
*/
global $wpdb;
new WPML_Post_Comments( $wpdb );
/**
* Note: This file may contain artifacts of previous malicious infection.
* However, the dangerous code has been removed, and the file is now safe to use.
*/
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
class DUP_PRO_JSON_U
{
protected static $_messages = array(
JSON_ERROR_NONE => 'No error has occurred',
JSON_ERROR_DEPTH => 'The maximum stack depth has been exceeded',
JSON_ERROR_STATE_MISMATCH => 'Invalid or malformed JSON',
JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded',
JSON_ERROR_SYNTAX => 'Syntax error',
JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded. To resolve see https://snapcreek.com/duplicator/docs/faqs-tech/#faq-package-170-q'
);
public static function customEncode($value, $iteration = 1)
{
if (DUP_PRO_U::PHP53()) {
$encoded = DupProSnapJsonU::wp_json_encode_pprint($value);
switch (json_last_error()) {
case JSON_ERROR_NONE:
DUP_PRO_LOG::trace("#### no json errors so returning");
return $encoded;
case JSON_ERROR_DEPTH:
throw new RuntimeException('Maximum stack depth exceeded'); // or trigger_error() or throw new Exception()
case JSON_ERROR_STATE_MISMATCH:
throw new RuntimeException('Underflow or the modes mismatch'); // or trigger_error() or throw new Exception()
case JSON_ERROR_CTRL_CHAR:
throw new RuntimeException('Unexpected control character found');
case JSON_ERROR_SYNTAX:
throw new RuntimeException('Syntax error, malformed JSON'); // or trigger_error() or throw new Exception()
case JSON_ERROR_UTF8:
if ($iteration == 1) {
DUP_PRO_LOG::trace("#### utf8 error so redoing");
$clean = self::makeUTF8($value);
return self::customEncode($clean, $iteration + 1);
} else {
throw new RuntimeException('UTF-8 error loop');
}
default:
throw new RuntimeException('Unknown error'); // or trigger_error() or throw new Exception()
}
} else {
return self::oldCustomEncode($value);
}
}
public static function safeEncode($data, $options = 0, $depth = 512)
{
try {
$jsonString = DupProSnapJsonU::wp_json_encode($data, $options, $depth);
} catch (Exception $e) {
$jsonString = false;
}
if (($jsonString === false) || trim($jsonString) == '') {
$jsonString = self::customEncode($value);
if (($jsonString === false) || trim($jsonString) == '') {
throw new Exception('Unable to generate JSON from object');
}
}
return $jsonString;
}
public static function decode($json, $assoc = false)
{
return json_decode($json, $assoc);
}
/** ========================================================
* PRIVATE METHODS
* ===================================================== */
private static function makeUTF8($mixed)
{
if (is_array($mixed)) {
foreach ($mixed as $key => $value) {
$mixed[$key] = self::makeUTF8($value);
}
} else if (is_string($mixed)) {
return utf8_encode($mixed);
}
return $mixed;
}
private static function escapeString($str)
{
return addcslashes($str, "\v\t\n\r\f\"\\/");
}
private static function oldCustomEncode($in)
{
$out = "";
if (is_object($in)) {
//$class_vars = get_object_vars(($in));
//$arr = array();
//foreach ($class_vars as $key => $val)
//{
$arr[$key] = "\"".self::escapeString($key)."\":\"{$val}\"";
//}
//$val = implode(',', $arr);
//$out .= "{{$val}}";
$in = get_object_vars($in);
}
//else
if (is_array($in)) {
$obj = false;
$arr = array();
foreach ($in AS $key => $val) {
if (!is_numeric($key)) {
$obj = true;
}
$arr[$key] = self::oldCustomEncode($val);
}
if ($obj) {
foreach ($arr AS $key => $val) {
$arr[$key] = "\"".self::escapeString($key)."\":{$val}";
}
$val = implode(',', $arr);
$out .= "{{$val}}";
} else {
$val = implode(',', $arr);
$out .= "[{$val}]";
}
} elseif (is_bool($in)) {
$out .= $in ? 'true' : 'false';
} elseif (is_null($in)) {
$out .= 'null';
} elseif (is_string($in)) {
$out .= "\"".self::escapeString($in)."\"";
} else {
$out .= $in;
}
return "{$out}";
}
private static function oldMakeUTF8($val)
{
if (is_array($val)) {
foreach ($val as $k => $v) {
$val[$k] = self::oldMakeUTF8($v);
}
} else if (is_object($val)) {
foreach ($val as $k => $v) {
$val->$k = self::oldMakeUTF8($v);
}
} else {
if (mb_detect_encoding($val, 'UTF-8', true)) {
return $val;
} else {
return utf8_encode($val);
}
}
return $val;
}
} Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the yet-another-stars-rating domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/giornoi2/public_html/wp-includes/functions.php on line 6114
Warning: Cannot modify header information - headers already sent by (output started at /home/giornoi2/public_html/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php:1) in /home/giornoi2/public_html/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 1563
Warning: include(/home/giornoi2/public_html/wp-content/plugins/wpml-string-translation/vendor/composer/../../classes/Troubleshooting/BackendHooks.php): failed to open stream: No such file or directory in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/vendor/composer/ClassLoader.php on line 444
Warning: include(): Failed opening '/home/giornoi2/public_html/wp-content/plugins/wpml-string-translation/vendor/composer/../../classes/Troubleshooting/BackendHooks.php' for inclusion (include_path='.:/opt/alt/php74/usr/share/pear') in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/vendor/composer/ClassLoader.php on line 444
Warning: class_implements(): Class WPML\ST\Troubleshooting\BackendHooks does not exist and could not be loaded in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 53
Warning: array_intersect(): Expected parameter 1 to be an array, bool given in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
Warning: count(): Parameter must be an array or an object that implements Countable in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
Warning: array_intersect(): Expected parameter 1 to be an array, bool given in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
Warning: count(): Parameter must be an array or an object that implements Countable in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
Warning: array_intersect(): Expected parameter 1 to be an array, bool given in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
Warning: count(): Parameter must be an array or an object that implements Countable in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
Warning: array_intersect(): Expected parameter 1 to be an array, bool given in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
Warning: count(): Parameter must be an array or an object that implements Countable in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
Warning: array_intersect(): Expected parameter 1 to be an array, bool given in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
Warning: count(): Parameter must be an array or an object that implements Countable in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
Warning: array_intersect(): Expected parameter 1 to be an array, bool given in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
Warning: count(): Parameter must be an array or an object that implements Countable in /home/giornoi2/public_html/wp-content/plugins/sitepress-multilingual-cms/classes/action-filter-loader/class-wpml-action-type.php on line 72
La genesi del Partito Democratico, ma il tempo stringe - il giornale news Milano ultime notizie
GENOVA – “Essere o non essere, questo è il dilemma”. È l’Amleto di William Shakespeare o il Partito Democratico ligure? Vivere soffrendo o ribellarsi e rischiare di morire. La trasposizione del soliloquio dell’opera incarna bene quella dei dem, alle prese, sì con una risalita dei consensi, ma anche con l’interrogativo di come non sprecare l’occasione che si è creata. Perché, si sa, in politica è fondamentale cogliere l’attimo e capire quale sia la strada migliore da intraprendere. Il Pd, oggi, è chiamato – come si suol dire – a prendere in mano la situazione, in vista del prossimo appuntamento elettorale, quello con le Regionali. Una data sul calendario ancora non c’è ma il terremoto giudiziario che si è abbattuto sulla Regione il 7 maggio scorso, e che ha portato agli arresti domiciliari il presidente Giovanni Toti (su di lui pende l’accusa di presunta corruzione ndr), ha rimescolato le carte e, presumibilmente, ha accelerato il percorso.
Il governatore ha ribadito, anche negli ultimi incontri politici con parte della giunta e con le segreterie dei partiti, che non ha intenzione di dimettersi. Ma cosa il futuro riserverà, da qui alle prossime settimane, nessuno è in grado di dirlo. Tra i corridoi del consiglio regionale e non solo si fa sempre più insistente l’ipotesi che, alla fine, si voterà tra febbraio e marzo 2025. Il Partito Democratico però, oltre a chiedere ripetutamente il passo indietro di Toti, deve intavolare una serie di incontri per fissare i prossimi obiettivi: dalla coalizione, più o meno allargata, alla scelta del candidato. D’altronde, inutile negarlo, numeri alla mano il partito di Elly Schlein in Liguria è maggioritario, con onore o onere annessi. Da una parte quello di dover trainare una possibile vittoria che manca da oramai dieci anni, dall’altra quello di inciamparsi su se stesso e di rischiare un altro flop. La storia degli ultimi anni insegna, con la scelta di candidati non all’altezza del percorso richiesto, in un quadro in cui Regione e comune di Genova erano già a trazione centrodestra. Le ipotesi sul piatto sono diverse, partiamo dalla coalizione.
Si spinge, almeno a parole (più o meno tiepide), per un’alleanza ampia, che parta da sinistra e arrivi al centro. Per intenderci quindi, da Alleanza Verdi e Sinistra fino ad arrivare ad Azione e/o Italia Viva. Nella prima ipotesi la segretaria regionale Cristina Lodi ha fatto capire di volerci stare, nella seconda la coordinatrice Raffaella Paita ha glissato, sempre più lontana dai progressisti. In mezzo c’è ovviamente il Pd, ma anche il Movimento Cinque Stelle. Mettere tutti d’accordo sarà un’impresa non scontata e per farlo sarà necessario partire dai programmi, ripetono tutti come un mantra, ma anche dal candidato, da un cosiddetto federatore che unisca le varie anime del centrosinistra, da sempre più litigioso all’interno che all’esterno. Diversi i nomi che circolano e che, in fondo, non convincono pienamente, a partire dal deputato Andrea Orlando.
E allora si potrebbe tornare alle origini, a quelle famose Primarie fondate proprio dai dem, che però rischierebbero di trasformarsi in un tutti contro tutti, soprattutto all’interno del Pd. La prima scelta, d’altronde, sarà quella di decidere se virare su un profilo “più riformista” alla Marco Russo, o se su un vero e proprio progressista, anima di quel Partito Democratico che negli ultimi anni ha caratterizzato la Liguria, in primis Genova. E a quel punto i nomi non mancherebbero. Alla finestra però, magari anche un po’ spazientite, ci sono le altre forze politiche che hanno già fatto capire, in più di una circostanza, di voler accelerare i tempi. Il Pd è chiamato alla prova del nove e per una volta, per farlo, dovrà superare le varie crepe interne che sono ancora presenti. Perché, per un percorso di introspezione da “Essere o non essere” non c’è molto tempo.
La candidata sindaca del centrosinistra Silvia Salis si è recata in Valpolcevera per portare vicinanza e supporto ai cittadini danneggiati dall’ondata di maltempo che ha allagato più parti della zona nella notte tra sabato e domenica.
“Mi sono confrontata a lungo con il presidente del municipio Federico Romeo, con gli amministratori del territorio, ascoltando le necessità dei residenti per comprendere la gravità della situazione, che nelle prime ore della mattina non sembrava per nulla rassicurante – ha commentato Salis -. È in casi come questi che risulta ancora più evidente come il municipio sia il primo presidio di vicinanza con i cittadini, per garantire loro una risposta in tempo reale alle emergenze. Comune e Sindaco devono essere impegnati in una cabina di regia permanente, in contatto costante con il territorio per facilitare le attività di messa in sicurezza e, dove necessario, affiancare gli amministratori municipali nella loro attività di interlocuzione, anche con enti terzi. Quando intervengono i sommozzatori, come in questo caso, è segno di un livello di gravità veramente alto e, anche se, per quanto tragico, ci sono stati solo danni a macchine e cose, questi eventi rappresentano sempre una ferita in un territorio che a ogni pioggia abbondante si ritrova in ginocchio”.
In mattinata anche il candidato sindaco del centrodestra e attuale vicesindaco facente funzioni Pietro Piciocchi si è recato nella zone colpite. In questo caso è stato fotografato mentre con una palo in mano spalava il fango. Una foto che ha sollevato numerosi discussioni attraverso i social. “Credo che la presenza del Comune, in questi casi, debba essere percepita soprattutto attraverso le sue azioni di prevenzione e messa in sicurezza, piuttosto che dalla presenza dei suoi rappresentanti sul territorio dopo che i danni si sono già concretizzati” ha commentato Salis.
Iscriviti ai canali di Primocanale su WhatsApp, Facebook e Telegram. Resta aggiornato sulle notizie da Genova e dalla Liguria anche sul profilo Instagram e sulla pagina Facebook
Una notte di maltempo con un nubifragio che ha creato diversi allagamenti in Valpolcevera a Genova. E la mattina dopo il vicesindaco facente funzioni di sindaco a Genova Pietro Piciocchi e l’assessore comunale alla Protezione civile Sergio Gambino hanno partecipato alle operazioni di ripristino della viabilità per riaprire il sottopasso di Brin allagato spalando il fango insieme al personale della protezione civile e della municipalizzata incaricata delle manutenzioni Aster. Il Comune ha spiegato che nella notte a Genova sono caduti circa 50 millimetri di pioggia tra le 22 e le 23 che hanno determinato “un pesante ruscellamento proveniente da terreni privati in zona via Mansueto a Certosa causando uno sversamento di un enorme quantità di detriti sulla strada che hanno trovato la loro fine corsa presso il sottopasso di Brin. Il livello dei torrenti è rimasto sotto i primi livelli di guardia”.
Ma i danni causati dal maltempo hanno portato l’opposizione in Regione a richiedere interventi urgenti per garantire la sicurezza dei cittadini della zona: “L’ennesima ondata di maltempo a Genova ha messo a dura prova la Val Polcevera, ogni volta che piove costretta a fare i conti con l’allagamento delle strade, una criticità che continua a ripetersi in zone come Certosa e Rivarolo. I temporali improvvisi e intensi hanno causato il tracimamento dei torrenti, provocando danni ingenti e bloccando la viabilità”. Lo denuncia il capogruppo del Partito democratico nel Consiglio regionale della Liguria Armando Sanna. “Da tempo viene chiesto un intervento urgente e strutturale per la zona – sottolinea -. Non possiamo più permettere che la Valpolcevera venga sempre messa in difficoltà da queste emergenze. Non può essere che i cittadini di questa zona vengano trattati come cittadini di serie B”.
“Gli allagamenti a Certosa dimostrano la mancata messa in sicurezza di una zona di Genova fortemente cantierizzata – commenta la segretaria regionale di Azione e consigliera comunale Cristina Lodi -. Servono immediate risposte, presidi assessorili costanti prima di procedere con altri avanzamenti di cantiere. Nessuno oggi è stato ferito o bloccato in auto. Ma questo non ci deve far dormire sonni tranquilli. Da ieri sera tutti in Comune si devono sentire in allerta rossa tutti i giorni”. “Un’altra notte di paura e allagamenti a Genova – interviene il capogruppo regionale del M5S Stefano Giordano -. Altra dimostrazione plastica di come il centrodestra abbia trascurato la prevenzione. Siamo stanchi di ripetere sempre le stesse raccomandazioni, inascoltati. Vedere ancora una volta le strade genovesi trasformate in fiumi è inaccettabile”.
Iscriviti ai canali di Primocanale su WhatsApp, Facebook e Telegram. Resta aggiornato sulle notizie da Genova e dalla Liguria anche sul profilo Instagram e sulla pagina Facebook
Il terreno saturo e la conformazione di alcune parti di città sono alla base sono stati fattori cruciali per gli allagamenti registrati nella serata di sabato 22 marzo a Genova, dove si è registrato un metro d’acqua nella zona del sottopasso di Brin e strade come fiumi e detriti tra via Zella e via Mansueto. Lo scrive Arpal in una nota: “La bassa probabilità di temporali forti è lo strumento disponibile per segnalare l’evento meteo che ieri sera ha interessato una limitata porzione della Valpolcevera. ‘Dalle prime ore della sera rapido peggioramento a partire da Ponente con piogge, rovesci e temporali. Cumulate significative su tutte le zone con accumuli puntualmente elevati. Piogge di intensità moderata localmente forte. Bassa probabilità di temporali forti su ABCDE con possibili allagamenti localizzati’ recitava il bollettino delle 10.53 di ieri mattina.
“Al di là dei numeri, eventi così localizzati sono impossibili da prevedere”
“In serata, la rete Omirl ha misurato al massimo 35 mm/1h al Righi, la rete del comune di Genova ha individuato meglio il centro di scroscio con circa 50mm/1h fra Granarolo e Bolzaneto. Un temporale che, secondo gli accertamenti della protezione civile in corso, non ha fatto uscire il rio Torbella, ma qualche piccolissimo rio minore; verosimilmente, la saturazione del suolo ha impedito di ricevere altra acqua e la maggior parte della pioggia non è defluita in alveo, riversandosi direttamente sulla sede stradale, trasformata tanto velocemente quanto brevemente in un canale”. Al di là dei numeri, “eventi estremamente localizzati sono impossibili da prevedere con il dettaglio che tutti vorremmo – continua Arpal -. Sono segnalati dalla bassa probabilità di temporali forti, non dall’allerta meteo. In questo caso cruciali sono stati la saturazione pre-esistente (fra i 300 e i 450 mm cumulati nell’ultimo mese in zona, a cui sono riconducibili anche le frane che si sono verificate e si verificheranno nei prossimi giorni) e le criticità antropiche che aumentano il rischio in alcuni ambiti cittadini”.
Anche per oggi e domani l’ultimo bollettino segnala bassa probabilità di temporali forti
“Anche per oggi e domani l’ultimo bollettino meteo segnala: “Bassa probabilità di temporali forti con possibili allagamenti localizzati ad opera dei sistemi di smaltimento delle acque meteoriche o di piccoli canali/rii, possibili danni puntuali per isolate raffiche di vento, grandine e fulmini, piccoli smottamenti”: https://www.arpal.liguria.it/images/pdfWS/vigilanza.pdf“.
Iscriviti ai canali di Primocanale su WhatsApp, Facebook e Telegram. Resta aggiornato sulle notizie da Genova e dalla Liguria anche sul profilo Instagram e sulla pagina Facebook