File: /var/www/lcc.kaunokolegija.lt/wp-content/plugins/envira-gallery-lite/includes/admin/settings.php
<?php
/**
* Envira Gallery Settings
*
* @package Envira Gallery Lite
*/
use Envira\Admin\Envira_Permissions;
/**
* Settings Class
*
* @since 1.8.7
*/
class Envira_Settings {
/**
* Holds the submenu pagehook.
*
* @since 1.7.0
*
* @var string
*/
public $hook;
/**
* Class Hooks
*
* @since 1.8.7
*
* @return void
*/
public function hooks() {
add_action( 'admin_menu', [ $this, 'admin_menu' ], 11 );
add_action( 'envira_gallery_tab_settings_general', [ $this, 'settings_general_tab' ] );
add_action( 'envira_gallery_tab_settings_permissions', [ $this, 'settings_permissions_tab' ] );
add_action( 'envira_gallery_tab_settings_licensing', [ $this, 'settings_licensing_tab' ] );
add_action( 'envira_gallery_tab_settings_convert_to_envira', [ $this, 'settings_convert_to_envira_tab' ] );
}
/**
* Adds admin menus
*
* @since 1.8.7
*
* @return void
*/
public function admin_menu() {
global $submenu;
$whitelabel = apply_filters( 'envira_whitelabel', false ) ? '' : __( 'Envira Gallery ', 'envira-gallery-lite' );
// Register the submenus.
$this->hook = add_submenu_page(
'edit.php?post_type=envira',
esc_html__( 'Settings', 'envira-gallery-lite' ),
esc_html__( 'Settings', 'envira-gallery-lite' ),
apply_filters( 'envira_gallery_menu_cap', 'manage_options' ),
'envira-gallery-settings',
[ $this, 'page' ]
);
// If successful, load admin assets only on that page and check for tabs refresh.
if ( ! $this->hook ) {
return;
}
add_action( 'load-' . $this->hook, [ $this, 'permissions_settings_save' ] );
}
/**
* Callback for getting all the settings tabs for Envira lite.
*
* @since 1.8.9
*
* @return array Array of tab information.
*/
public function get_envira_settings_tab_nav() {
$tabs = [
'general' => __( 'General', 'envira-gallery-lite' ), // This tab is required. DO NOT REMOVE VIA FILTERING.
'permissions' => __( 'Permissions', 'envira-gallery-lite' ),
'licensing' => __( 'Image Licensing', 'envira-gallery-lite' ),
'convert_to_envira' => __( 'Convert to Envira', 'envira-gallery-lite' ),
];
$tabs = apply_filters( 'envira_gallery_settings_tab_nav', $tabs );
return $tabs;
}
/**
* Settings Page.
*
* @since 1.8.7
*
* @return void
*/
public function page() {
?>
<!-- Tabs -->
<h2 id="envira-tabs-nav" class="envira-tabs-nav" data-container="#envira-gallery-settings" data-update-hashbang="1">
<?php
$i = 0;
foreach ( (array) $this->get_envira_settings_tab_nav() as $id => $title ) {
$class = ( 0 === $i ? 'envira-active' : '' );
?>
<a class="nav-tab <?php echo esc_html( $class ); ?>" href="#envira-tab-<?php echo esc_attr( $id ); ?>" title="<?php echo esc_attr( $title ); ?>">
<?php echo wp_kses( $title, [ 'span' => [ 'class' => [] ] ] ); ?>
</a>
<?php
++$i;
}
?>
</h2>
<!-- Tab Panels -->
<div id="envira-gallery-settings" class="wrap">
<h1 class="envira-hideme"></h1>
<div class="envira-gallery envira-clear">
<div id="envira-tabs" class="envira-clear" data-navigation="#envira-tabs-nav">
<?php
$i = 0;
foreach ( (array) $this->get_envira_settings_tab_nav() as $id => $title ) {
$class = ( 0 === $i ? 'envira-active' : '' );
?>
<div id="envira-tab-<?php echo esc_attr( $id ); ?>" class="envira-tab envira-clear <?php echo esc_attr( $class ); ?>">
<?php do_action( 'envira_gallery_tab_settings_' . $id ); ?>
</div>
<?php
++$i;
}
?>
</div>
</div>
</div>
<?php
}
/**
* Callback for displaying the UI for general settings tab.
*
* @since 1.8.9
*/
public function settings_general_tab() {
?>
<div id="envira-settings-general">
<div class="envira-settings-tab">
<table class="form-table">
<tbody>
<tr id="envira-image-gallery-settings-title">
<th scope="row" colspan="2">
<h3><?php esc_html_e( 'License', 'envira-gallery-lite' ); ?></h3>
<p><?php esc_html_e( 'Your license key provides access to updates and add-ons.', 'envira-gallery-lite' ); ?></p>
</th>
</tr>
<tr id="envira-settings-key-box" class="title">
<th scope="row">
<label for="envira-settings-key"><?php esc_html_e( ' License Key', 'envira-gallery-lite' ); ?></label>
</th>
<td>
<p><?php esc_html_e( "You're using Envira Gallery Lite - no license needed. Enjoy! 🙂", 'envira-gallery-lite' ); ?></p>
<p>
<?php
printf(
// Translators: %1$s - Opening anchor tag, do not translate. %2$s - Closing anchor tag, do not translate.
esc_html__( 'To unlock more features consider %1$supgrading to PRO%2$s.', 'envira-gallery-lite' ),
'<strong><a href="' . esc_url( Envira_Gallery_Common_Admin::get_instance()->get_upgrade_link( 'https://enviragallery.com/pricing', 'settingspage', 'upgradingtopro' ) ) . '" target="_blank" rel="noopener noreferrer">',
'</a></strong>'
);
?>
</p>
<p>
<?php
printf(
// Translators: %1$s - Opening span tag, do not translate. %2$s - Closing span tag, do not translate.
esc_html__( 'As a valued Envira Gallery Lite user you receive %1$s 50%% off%2$s, automatically applied at checkout', 'envira-gallery-lite' ),
'<span class="envira-green"><strong>',
'</strong></span>'
);
?>
</p>
<hr />
<form id="envira-settings-verify-key" method="post">
<p class="description"><?php esc_html_e( 'Already purchased? Simply enter your license key below to enable Envira Gallery PRO!', 'envira-gallery-lite' ); ?></p>
<input placeholder="<?php esc_attr_e( 'Paste license key here', 'envira-gallery-lite' ); ?>" type="password" name="envira-license-key" id="envira-settings-key" value="" />
<button type="button " class="button envira-button-dark envira-gallery-verify-submit primary" id="envira-gallery-settings-connect-btn">
<?php esc_html_e( 'Verify Key', 'envira-gallery-lite' ); ?>
</button>
</form>
</td>
</tr>
<tr>
<th><?php esc_html_e( 'Setup Wizard', 'envira-gallery-lite' ); ?></th>
<td><a href="<?php echo esc_url( '/wp-admin/index.php?page=envira-setup-wizard' ); ?>" title="<?php esc_html_e( 'Setup Wizard', 'envira-gallery-lite' ); ?>" class="button envira-button-dark envira-button-primary" ><?php esc_html_e( 'Launch Setup Wizard', 'envira-gallery-lite' ); ?></a></td>
</tr>
</tbody>
</table>
<!-- <hr /> -->
</div>
</div>
<?php
}
/**
* Permissions Setting function.
*
* @since 1.8.9
*
* @access public
* @return void
*/
public function permissions_settings_save() {
// Check nonce is valid.
if ( empty( $_POST ) ) {
return;
}
if ( ! isset( $_POST['envira-permissions-nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['envira-permissions-nonce'] ), 'envira-permissions-nonce' ) ) {
add_action( 'envira_gallery_settings_permissions_tab_notice', [ $this, 'permissions_settings_nonce_notice' ] );
return;
}
$permissions = new Envira_Permissions();
$fields = $permissions->get_fields();
foreach ( $fields as $field ) {
// The method sanitize_field_data() is already sanitizing the data.
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$permissions_data[ $field ] = isset( $_POST[ $field ] ) ? $permissions->sanitize_field_data( wp_unslash( $_POST[ $field ] ) ) : '';
if ( empty( $permissions_data[ $field ] ) ) {
continue;
}
$permissions->add_capabilities_by_permissions( $field, $permissions_data[ $field ] );
update_option( $field, maybe_serialize( $permissions_data[ $field ] ) );
}
do_action( 'envira_permissions_mapper' );
// Output success notice.
add_action( 'envira_gallery_settings_permissions_tab_notice', [ $this, 'permissions_settings_saved_notice' ] );
}
/**
* Outputs a message to tell the user that the nonce field is invalid
*
* @since 1.9.11
*/
public function permissions_settings_nonce_notice() {
?>
<div class="notice error below-h2">
<p><?php esc_html_e( 'The nonce field is invalid.', 'envira-gallery-lite' ); ?></p>
</div>
<?php
}
/**
* Outputs a message to tell the user that the permissions has been saved
*
* @since 1.8.9
*/
public function permissions_settings_saved_notice() {
?>
<div class="notice updated below-h2">
<p><?php esc_html_e( 'Permissions updated successfully!', 'envira-gallery-lite' ); ?></p>
</div>
<?php
}
/**
* Callback for displaying the UI for permissions settings tab.
*
* @since 1.8.9
*/
public function settings_permissions_tab() {
$permissions = new Envira_Permissions();
$default_permissions = get_option( 'envira_permissions_set_default', false );
?>
<div id="envira-settings-permissions" class="envira-settings-tab">
<?php
// Output notices.
do_action( 'envira_gallery_settings_permissions_tab_notice' );
?>
<form action="edit.php?post_type=envira&page=envira-gallery-settings#!envira-tab-permissions" method="post">
<table class="form-table">
<tbody>
<tr id="envira-settings-permissions-create" class="envira-settings-roles-select">
<th scope="row">
<label for="envira_permissions_create"><?php esc_html_e( 'Create Galleries', 'envira-gallery-lite' ); ?></label>
</th>
<td>
<?php $permissions->render_permissions_field( 'envira_permissions_create' ); ?>
<p class="description"><?php esc_html_e( 'Users that have at least one of these roles will be able to create galleries.', 'envira-gallery-lite' ); ?></p>
</td>
</tr>
<tr id="envira-settings-permissions-edit" class="envira-settings-roles-select">
<th scope="row">
<label for="envira_permissions_edit"><?php esc_html_e( 'Edit Galleries', 'envira-gallery-lite' ); ?></label>
</th>
<td>
<?php $permissions->render_permissions_field( 'envira_permissions_edit' ); ?>
<p class="description"><?php esc_html_e( 'Users that have at least one of these roles will be able to edit/update galleries.', 'envira-gallery-lite' ); ?></p>
</td>
</tr>
<tr id="envira-settings-permissions-delete" class="envira-settings-roles-select">
<th scope="row">
<label for="envira-permissions-delete"><?php esc_html_e( 'Delete Galleries', 'envira-gallery-lite' ); ?></label>
</th>
<td>
<?php $permissions->render_permissions_field( 'envira_permissions_delete' ); ?>
<p class="description"><?php esc_html_e( 'Users that have at least one of these roles will be able to delete galleries.', 'envira-gallery-lite' ); ?></p>
</td>
</tr>
<tr id="envira-settings-permissions-edit-others" class="envira-settings-roles-select">
<th scope="row">
<label for="envira_permissions_edit_others"><?php esc_html_e( 'Edit Other\'s Galleries', 'envira-gallery-lite' ); ?></label>
</th>
<td>
<?php $permissions->render_permissions_field( 'envira_permissions_edit_others' ); ?>
<p class="description"><?php esc_html_e( 'Users that have at least one of these roles will be able to edit other\'s galleries.', 'envira-gallery-lite' ); ?></p>
</td>
</tr>
<?php do_action( 'envira_permissions_addons_tab' ); ?>
<tr>
<?php wp_nonce_field( 'envira-permissions-nonce', 'envira-permissions-nonce' ); ?>
<th scope="row"><?php submit_button( __( 'Save', 'envira-gallery-lite' ), 'primary', 'envira-gallery-verify-submit', false ); ?></th>
<td> </td>
</tr>
</tbody>
</table>
</form>
<div
class="dialog-container envira-dialog-container"
aria-hidden="true"
id="envira-permissions-dialog-id"
role="alertdialog"
>
<div class="dialog-overlay"></div>
<div class="dialog-content" role="document">
<h3 id="envira-permissions-dialog-title-id">Heads up!</h3>
<div id="envira-permissions-alert">Permissions message here</div>
<div class="envira-dialog-actions clear">
<button type="button" class="envira-dialog-btn primary envira-permissions-yes" data-a11y-dialog-hide aria-label="Close dialog">OK</button>
<button type="button" class="envira-dialog-btn envira-permissions-cancel" data-a11y-dialog-hide aria-label="Cancel">Cancel</button>
</div>
</div>
</div>
</div>
<?php
}
/**
* Outputs settings screen for the licensing tab.
*
* @since 1.8.12-0
*/
public function settings_licensing_tab() {
// get instance of the plugin.
$envira = Envira_Gallery_Lite::get_instance();
$envira->load_admin_partial( 'licensing' );
}
/**
* Outputs settings screen for the convert to envira tab.
*
* @return void
*/
public function settings_convert_to_envira_tab() {
?>
<div class="envira-convert-to-envira-tab">
<div class="envira-settings-tab">
<table class="form-table">
<tbody>
<tr id="convert-to-envira-tab-content">
<th scope="row" colspan="2">
<h3><?php esc_html_e( 'Convert Galleries', 'envira-gallery-lite' ); ?></h3>
<p><?php esc_html_e( 'With a single click, easily convert all of your website’s WordPress galleries to Envira Galleries! This will let you get features like drag and drop ordering, image layouts, and much more.', 'envira-gallery-lite' ); ?></p>
<p class="envira-convert-important-note"><?php echo wp_kses( __( 'Important: Converting your galleries to Envira Gallery is not reversible. <em>We strongly recommend making a full backup of your website first before making changes.</em>', 'envira-gallery-lite' ), [ 'em' => [] ] ); ?></p>
<?php
Envira_Gallery_Common_Admin::get_instance()->envira_render_post_types_dropdown();
$convert_button = __( 'Convert Galleries', 'envira-gallery-lite' );
?>
<a href="javascript:void(0);" title="<?php echo esc_attr( $convert_button ); ?>" class="button button-primary convert-envira-gallery-tab-btn" data-converting="<?php esc_attr_e( 'Converting...', 'envira-gallery-lite' ); ?>"><?php echo esc_attr( $convert_button ); ?></a>
<p class="envira-convert-gallery-message"></p>
<div class="envira-convert-process-logs"></div>
</th>
</tr>
</tbody>
</table>
</div>
</div>
<?php
}
}