/**
* 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
Usa, Trump è presidente: "Ha vinto la preoccupazione per i confini" - il giornale news Milano ultime notizie
E’ un risveglio a stelle e strisce quello italiano e ligure perché, tra le notizie locali, spicca l’aggiornamento internazionale più atteso: il risultato ormai considerato ufficiale delle elezioni presidenziali statunitensi. Già prima delle 8 di mattina infatti arriva la conferma: Donald Trump sarà il 47esimo presidente degli Stati Uniti d’America. Decisivo il voto popolare, ma anche quei temi che rassicurano gli statunitensi, questo il commento a caldo a Primocanale del docente di storia contemporanea dell’ateneo genovese Ferdinando Fasce. Per Kamala Harris la sconfitta: la vicepresidente sarebbe diventata la prima presidente donna degli Stati Uniti.
Ha vinto la preoccupazione per economia e difesa confini
“Ha inciso molto la situazione economica, l’inflazione, la percezione di una difficoltà enorme che viene attribuita quasi automaticamente all’amministrazione in carica. La preoccupazione delle migrazioni è stata fondamentale: noi vogliamo difendere i nostri confini, ha detto subito Trump”, spiega il docente a Primocanale. Nel discorso pronunciato a Palm Beach alle 8 di mattina ora italiana,Trump ha parlato subito della sua famiglia, è riemersa una first lady che non avevamo più visto, Trump ha anche ringraziato il cosiddetto “movimento” che l’ha sostenuto.
Il presidente dei record
“E’ il secondo caso di un presidente che vince una elezione, ne perde un’altra e poi rivince una seconda volta. Era successo solo una volta nel 1892 ed era un democratico”, spiega il professore genovese. E tra le motivazioni della sconfitta di Kamala Harris arriva anche una constatazione storica: “Biden-Harris si sono trovati per l’ennesima volta in una situazione di guerra e con l’eccezione di Roosvelt raramente i presidenti che si sono trovati in guerra hanno poi vinto le elezioni”.
Verso l’insediamento di Trump a gennaio 2025
“Ora i prossimi passaggi: a dicembre ci sarà un incontro ufficiale dei grandi elettori scelti dai due partiti che si sono già impegnati a votare e a questo punto a votare saranno tutti quelli che hanno sostenuto Trump. Ci sarà dunque questo riconoscimento ufficiale e a gennaio ci sarà l’insediamento”, spiega ancora il prof Fasce.
“Caro Matteo, con grande rispetto per la nostra amicizia che rimane immutata, ti vedo molto coinvolto nelle questioni genovesi. Io sono civico perché lavoro per il territorio, le sue esigenze e il suo futuro. Non è civico chi si allea con i signori del no e della decrescita felice. Spero che tu sappia quello che stai facendo. Nel baseball il rischio di oscillare troppo tra le basi è di finire fuori gioco”.
Il presidente della Regione Marco Bucci risponde al leader di Italia Viva Matteo Renzi che questa mattina intervistato a Primocanale ha ribadito il suo sostegno alla candidata della coalizione progressista Silvia Salis. Renzi si trovava a Genova per la presentazione del suo libro ‘L’Influencer’ alla Feltrinelli di via Ceccardi.
Sono state le parole di Renzi a far scaldare gli animi in vista del voto di maggio: “Bucci è un amico, ha governato Genova con il principio del civismo, ma ha scelto di diventare organico alla destra, attribuendo il merito di quanto fatto alla Meloni. Penso che oggi il civismo a Genova si riconosca in Silvia Salis. La conosco da molti anni, vuole portare Genova sul podio. Noi saremo al suo fianco e credo che sarà un’ottima sindaca”.
Dopo la replica di Ilaria Cavo, candidata a vicesindaco, è arrivata anche quella del presidente della Regione Marco Bucci che Italia Viva aveva appoggiato nella corsa a sindaco nel 2022.
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 Facebookfrana
“Salis per Renzi campionessa di civismo? Forse siamo stati vittime di un’allucinazione collettiva quando abbiamo visto la candidata di Pd scegliere di iniziare la sua campagna elettorale sotto il simbolo di falce e martello nello storico circolo Pd di Sestri Ponente, fare professione di origini di sinistra, ostentare un pedigree di sinistra ad ogni occasione per cercare di accreditarsi alla base dei compagni. Più probabile è che sia stato Matteo Renzi, l’influencer, a non aver visto quelle foto e quei social in cui nulla è mai stato lasciato al caso”, è il commento di Ilaria Cavo, candidata vice sindaco del centrodestra alle parole di Matteo Renzi”.
“Noi abbiamo le liste civiche forti”
“Dal veto dei Cinque Stelle alle regionali (quando Italia Viva era stata esclusa) alle fronde dei profondi circoli del Pd. Non capiamo cosa c’entri quella foto col civismo predicato oggi. Quale civismo? Noi abbiamo le liste civiche forti che saranno determinanti affianco ai partiti. Da noi nessuno vuole prendersi il merito di fare la differenza, perché noi diversamente da loro siamo una squadra che unisce civiche e partiti. E anche la vittoria di Marco Bucci, al contrario di quanto sosteneva Renzi, dimostra che per noi la parte civica è imprescindibile e ora è più che mai attiva per il candidato sindaco Piciocchi e per la sottoscritta, non a caso capolista di Noi Moderati – Bucci – Orgoglio Genova”, continua Ilaria Cavo. “Renzi oggi ha persino sconfessato la candidata (presunta) renziana Silvia Salis sulle infrastrutture, sostenendo che il tema vero è la Gronda. Ma come? Appena due settimane fa la sua candidata aveva letteralmente detto che la Gronda è un non tema e oggi ha reso evidente un’altra contraddizione della sua coalizione, dicendo che il nuovo Galliera si farà. Attendiamo la reazione dei Cinque Stelle e di tutti i signori del no che in questi mesi hanno firmato appelli e ricorsi contro il nuovo ospedale che noi sì che vogliamo. Senza distinzioni”, conclude Cavo.
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 Facebookfrana
Ci riprova Antonella Marras, già candidata a sindaco alle Comunali del 2022, scende in campo per la poltrona di primo cittadino a Genova per Sinistra Alternativa.
La sinistra di Marras
Marras è da anni una dei volti storici delle battaglie della Valpolcevera, è già stata portavoce dei comitati di Fegino e Borzoli e da sempre porta avanti il suo impegno per le periferie. In passato era stata già candidata con Potere al Popolo e Chiamami Genova. Antonella Marras sarà sostenuta da Rifondazione Comunista, Partito Comunista Italiano e Sinistra Anticapitalista. A questi partiti, negli scorsi giorni, si era affiancato anche il nome di Filippo Biolé, dopo l’annuncio del suo passo indietro. Rc, Pci e Sa hanno provato a insistere sull’avvocato genovese ma senza riuscire a convincerlo. A quel punto, senza troppe difficoltà, hanno incassato il “sì” di Marras.
Contro i partiti tradizionali
Marras, da anni critica, ovviamente con il centrodestra, ha messo però nel mirino anche le scelte del centrosinistra, contestando da subito la candidatura di Silvia Salis. Nel programma si dice innanzitutto “no al riarmo e alla guerra”, ma sul territorio genovese si insiste sul diritto alla casa, la lotta al lavoro povero, il blocco di qualsiasi forma di privatizzazione. Insomma, una candidatura soprattutto contro il sistema. E la politica, di centrodestra e di centrosinistra.
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