Files
medicalalert-web-reloaded/wp/wp-content/plugins/imagify/inc/classes/class-imagify-folders-db.php
Rachit Bhargava 5d0f0734d8 first commit
2023-07-21 17:12:10 -04:00

239 lines
5.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
defined( 'ABSPATH' ) || die( 'Cheatin uh?' );
/**
* DB class that handles files in "custom folders".
*
* @since 1.7
* @author Grégory Viguier
*/
class Imagify_Folders_DB extends Imagify_Abstract_DB {
/**
* Class version.
*
* @var string
*/
const VERSION = '1.0.1';
/**
* The single instance of the class.
*
* @var object
* @since 1.7
* @access protected
*/
protected static $_instance;
/**
* The suffix used in the name of the database table (so, without the wpdb prefix).
*
* @var string
* @since 1.7
* @access protected
*/
protected $table = 'imagify_folders';
/**
* The version of our database table.
*
* @var int
* @since 1.7
* @access protected
*/
protected $table_version = 100;
/**
* Tell if the table is the same for each site of a Multisite.
*
* @var bool
* @since 1.7
* @access protected
*/
protected $table_is_global = true;
/**
* The name of the primary column.
*
* @var string
* @since 1.7
* @access protected
*/
protected $primary_key = 'folder_id';
/**
* Get the main Instance.
*
* @since 1.7
* @access public
* @author Grégory Viguier
*
* @return object Main instance.
*/
public static function get_instance() {
if ( ! isset( self::$_instance ) ) {
self::$_instance = new self();
}
return self::$_instance;
}
/**
* Whitelist of columns.
*
* @since 1.7
* @access public
* @author Grégory Viguier
*
* @return array
*/
public function get_columns() {
return array(
'folder_id' => '%d',
'path' => '%s',
'active' => '%d',
);
}
/**
* Default column values.
*
* @since 1.7
* @access public
* @author Grégory Viguier
*
* @return array
*/
public function get_column_defaults() {
return array(
'folder_id' => 0,
'path' => '',
'active' => 0,
);
}
/**
* Get the query to create the table fields.
*
* @since 1.7
* @access protected
* @author Grégory Viguier
*
* @return string
*/
protected function get_table_schema() {
return "
folder_id bigint(20) unsigned NOT NULL auto_increment,
path varchar(191) NOT NULL default '',
active tinyint(1) unsigned NOT NULL default 0,
PRIMARY KEY (folder_id),
UNIQUE KEY path (path),
KEY active (active)";
}
/**
* Tell if folders are selected in the plugin settings.
*
* @since 1.7
* @access public
* @author Grégory Viguier
*
* @return bool
*/
public function has_active_folders() {
global $wpdb;
$column = esc_sql( $this->get_primary_key() );
return (bool) $wpdb->get_var( "SELECT $column FROM $this->table_name WHERE active = 1 LIMIT 1;" ); // WPCS: unprepared SQL ok.
}
/**
* Retrieve active folders (checked in the settings).
*
* @since 1.7
* @access public
* @author Grégory Viguier
*
* @param string $column_select A column name.
* @return array
*/
public function get_active_folders_column( $column_select ) {
global $wpdb;
$column = esc_sql( $column_select );
$result = $wpdb->get_col( "SELECT $column FROM $this->table_name WHERE active = 1;" ); // WPCS: unprepared SQL ok.
return $this->cast_col( $result, $column_select );
}
/**
* Retrieve active folders (checked in the settings) by the specified column / values.
*
* @since 1.7
* @access public
* @author Grégory Viguier
*
* @param string $column_select A column name.
* @param string $column_where A column name.
* @param array $column_values An array of values.
* @return array
*/
public function get_active_folders_column_in( $column_select, $column_where, $column_values ) {
global $wpdb;
$column = esc_sql( $column_select );
$column_where = esc_sql( $column_where );
$column_values = Imagify_DB::prepare_values_list( $column_values );
$result = $wpdb->get_col( "SELECT $column FROM $this->table_name WHERE $column_where IN ( $column_values ) AND active = 1;" ); // WPCS: unprepared SQL ok.
return $this->cast_col( $result, $column_select );
}
/**
* Retrieve active folders (checked in the settings) by the specified column / values.
*
* @since 1.7
* @access public
* @author Grégory Viguier
*
* @param string $column_select A column name.
* @param string $column_where A column name.
* @param array $column_values An array of values.
* @return array
*/
public function get_active_folders_column_not_in( $column_select, $column_where, $column_values ) {
global $wpdb;
$column = esc_sql( $column_select );
$column_where = esc_sql( $column_where );
$column_values = Imagify_DB::prepare_values_list( $column_values );
$result = $wpdb->get_col( "SELECT $column FROM $this->table_name WHERE $column_where NOT IN ( $column_values ) AND active = 1;" ); // WPCS: unprepared SQL ok.
return $this->cast_col( $result, $column_select );
}
/**
* Retrieve not active folders (not checked in the settings).
*
* @since 1.7
* @access public
* @author Grégory Viguier
*
* @param string $column_select A column name.
* @return array
*/
public function get_inactive_folders_column( $column_select ) {
global $wpdb;
$column = esc_sql( $column_select );
$result = $wpdb->get_col( "SELECT $column FROM $this->table_name WHERE active != 1;" ); // WPCS: unprepared SQL ok.
return $this->cast_col( $result, $column_select );
}
}