'38173', 'slug' => 'multipix', 'type' => 'plugin', 'public_key' => 'pk_00344504b1ea6d2ef331085133736', 'is_premium' => false, 'premium_suffix' => 'Pro', 'has_premium_version' => true, 'has_addons' => false, 'has_paid_plans' => true, 'is_org_compliant' => true, 'menu' => array( 'slug' => 'multipix-settings', 'affiliation' => false, 'addons' => false, ), ) ); } return $multipix_fs; } multipix_fs(); do_action( 'multipix_fs_loaded' ); } define( 'MULTIPIX_VERSION', '1.0.0' ); define( 'MULTIPIX_PLUGIN_FILE', __FILE__ ); define( 'MULTIPIX_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); define( 'MULTIPIX_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); define( 'MULTIPIX_META_KEY', '_multipix_gallery_ids' ); require_once MULTIPIX_PLUGIN_DIR . 'includes/class-multipix-metabox.php'; require_once MULTIPIX_PLUGIN_DIR . 'includes/class-multipix-frontend.php'; require_once MULTIPIX_PLUGIN_DIR . 'includes/class-multipix-settings.php'; /** * Numero massimo di immagini consentite per galleria. * * Nessun limite per impostazione predefinita (0 = illimitate): il * plugin non ne applica mai uno di suo. Un sito può impostarne uno * tramite questo filtro per motivi propri (es. performance). * * @return int */ function multipix_get_max_gallery_images() { return (int) apply_filters( 'multipix_max_gallery_images', 0 ); } /** * Indica se sul sito è attiva una licenza Pro valida. * * La fonte di verità è l'SDK Freemius (multipix_fs()->is_premium()), * che riflette lo stato reale della licenza collegata a questo sito. * Come rete di sicurezza, se per qualche motivo l'SDK non fosse ancora * disponibile, ricade sulla vecchia costante MULTIPIX_PRO_VERSION. * * @return bool */ function multipix_is_pro() { if ( function_exists( 'multipix_fs' ) ) { return (bool) apply_filters( 'multipix_is_pro', multipix_fs()->is_premium() ); } return (bool) apply_filters( 'multipix_is_pro', defined( 'MULTIPIX_PRO_VERSION' ) ); } /** * URL della pagina di upgrade/checkout per passare a Multipix Pro. * * Punta al vero checkout Freemius quando l'SDK è disponibile; come * rete di sicurezza ricade sul sito, se per qualche motivo l'SDK non * fosse ancora disponibile. * * @return string */ function multipix_get_upgrade_url() { if ( function_exists( 'multipix_fs' ) ) { return multipix_fs()->get_upgrade_url(); } return 'https://michelebruno.it'; } /** * Carica la traduzione italiana inclusa nel pacchetto (languages/multipix-it_IT.mo). * * Solo per il pacchetto venduto tramite Freemius: quello gratuito su * wordpress.org non include file di traduzione, perché da WP 4.6 in poi * wordpress.org li gestisce da sé via translate.wordpress.org — per * questo la condizione sotto (esistenza della cartella 'premium/') è * false in quel pacchetto e questa funzione non fa nulla. La condizione * non dipende dallo stato della licenza: anche senza una licenza Pro * attiva, chi ha installato lo zip Pro deve comunque vedere l'interfaccia * tradotta. */ function multipix_load_premium_textdomain() { if ( ! file_exists( MULTIPIX_PLUGIN_DIR . 'premium/class-multipix-premium.php' ) ) { return; } load_plugin_textdomain( 'multipix', false, dirname( plugin_basename( MULTIPIX_PLUGIN_FILE ) ) . '/languages' ); } add_action( 'plugins_loaded', 'multipix_load_premium_textdomain', 1 ); /** * Inizializza il plugin agganciando le classi principali. */ function multipix_init() { new Multipix_Metabox(); new Multipix_Frontend(); new Multipix_Settings(); } add_action( 'plugins_loaded', 'multipix_init' ); /** * Carica le feature Pro. La cartella 'premium/' esiste solo nello zip * venduto tramite Freemius: nello zip gratuito (quello su wordpress.org) * non è presente, quindi qui non viene proprio caricata. In aggiunta, * anche quando è presente, le feature restano disattive finché * multipix_is_pro() non conferma una licenza valida. */ function multipix_init_premium() { $premium_file = MULTIPIX_PLUGIN_DIR . 'premium/class-multipix-premium.php'; if ( ! file_exists( $premium_file ) || ! multipix_is_pro() ) { return; } require_once $premium_file; require_once MULTIPIX_PLUGIN_DIR . 'premium/class-multipix-premium-settings.php'; require_once MULTIPIX_PLUGIN_DIR . 'premium/class-multipix-premium-video.php'; new Multipix_Premium(); new Multipix_Premium_Settings(); new Multipix_Premium_Video(); } add_action( 'plugins_loaded', 'multipix_init_premium', 20 ); /** * Rinomina una tantum la vecchia chiave meta '_wpmgs_gallery_ids' (usata * quando il plugin si chiamava ancora "WP Multi Gallery Slider") nella * nuova '_multipix_gallery_ids', così i siti aggiornati dalla vecchia * versione non perdono le gallerie già salvate sui post. */ function multipix_maybe_migrate_legacy_meta_key() { if ( get_option( 'multipix_legacy_meta_migrated' ) ) { return; } global $wpdb; $wpdb->update( $wpdb->postmeta, array( 'meta_key' => MULTIPIX_META_KEY ), // phpcs:ignore WordPress.DB.SlowDBQuery array( 'meta_key' => '_wpmgs_gallery_ids' ) // phpcs:ignore WordPress.DB.SlowDBQuery ); update_option( 'multipix_legacy_meta_migrated', 1 ); } add_action( 'plugins_loaded', 'multipix_maybe_migrate_legacy_meta_key', 5 ); /** * Alla disinstallazione rimuove i meta dei post e le opzioni create dal * plugin (impostazioni e flag di migrazione). */ function multipix_uninstall() { global $wpdb; $wpdb->delete( $wpdb->postmeta, array( 'meta_key' => MULTIPIX_META_KEY ) ); // phpcs:ignore WordPress.DB.SlowDBQuery $wpdb->delete( $wpdb->postmeta, array( 'meta_key' => '_multipix_video_items' ) ); // phpcs:ignore WordPress.DB.SlowDBQuery delete_option( 'multipix_settings' ); delete_option( 'multipix_premium_settings' ); delete_option( 'multipix_legacy_meta_migrated' ); } /** * Va agganciato tramite l'azione 'after_uninstall' dell'SDK Freemius * invece del register_uninstall_hook() nativo di WordPress: quest'ultimo * scatterebbe anche quando un sito passa dalla versione free a quella * Pro (Freemius disattiva/rimuove il file free durante lo switch), * cancellando per errore gallerie e impostazioni proprio a chi sta * facendo l'upgrade. 'after_uninstall' invece controlla che né la * versione free né quella Pro siano rimaste attive prima di scattare. */ if ( function_exists( 'multipix_fs' ) ) { multipix_fs()->add_action( 'after_uninstall', 'multipix_uninstall' ); } else { register_uninstall_hook( __FILE__, 'multipix_uninstall' ); }