%PDF- %PDF-
Direktori : /proc/1857783/root/var/www/pn/wp-content/plugins/user-role-editor/includes/classes/ |
Current File : //proc/1857783/root/var/www/pn/wp-content/plugins/user-role-editor/includes/classes/base-lib.php |
<?php /* * General stuff for usage at WordPress plugins * Author: Vladimir Garagulya * Author email: vladimir@shinephp.com * Author URI: http://shinephp.com * */ /** * This class contains general stuff for usage at WordPress plugins and must be extended by child class */ class URE_Base_Lib { protected static $instance = null; // object exemplar reference protected $options_id = ''; // identifire to save/retrieve plugin options to/from wp_option DB table protected $options = array(); // plugin options data protected $multisite = false; protected $active_for_network = false; protected $main_blog_id = 0; public static function get_instance($options_id = '') { if (self::$instance===null) { self::$instance = new URE_Base_Lib($options_id); } return self::$instance; } // end of get_instance() /** * class constructor * @param string $options_id to save/retrieve plugin options to/from wp_option DB table */ protected function __construct($options_id) { $this->multisite = function_exists( 'is_multisite' ) && is_multisite(); if ( $this->multisite ) { // get Id of the 1st (main) blog $this->main_blog_id = $this->get_main_site(); } $this->init_options( $options_id ); } // end of __construct() public function get($property_name) { if (!property_exists($this, $property_name)) { syslog(LOG_ERR, 'Lib class does not have such property '. $property_name); return null; } return $this->$property_name; } // end of get_property() public function set($property_name, $property_value) { if (!property_exists($this, $property_name)) { syslog(LOG_ERR, 'Lib class does not have such property '. $property_name); } $this->$property_name = $property_value; } // end of get_property() public function get_main_site() { global $current_site; $blog_id = is_object($current_site) ? $current_site->blog_id : null; return $blog_id; } // end of get_main_site() /** * get current options for this plugin */ protected function init_options( $options_id ) { $this->options_id = $options_id; $this->options = get_option( $options_id ); } // end of init_options() /** * Return HTML formatted message * * @param string $message message text * @param string $error_style message div CSS style */ public function show_message($message, $error_style = false) { if ($message) { if ($error_style) { echo '<div id="message" class="error">'; } else { echo '<div id="message" class="updated fade">'; } echo $message . '</div>'; } } // end of show_message() /** * Returns value by name from GET/POST/REQUEST. Minimal type checking is provided * * @param string $var_name Variable name to return * @param string $request_type type of request to process get/post/request (default) * @param string $var_type variable type to provide value checking * @return mix variable value from request */ public function get_request_var($var_name, $request_type = 'request', $var_type = 'string') { $result = 0; $request_type = strtolower($request_type); switch ($request_type) { case 'get': { if (isset($_GET[$var_name])) { $result = filter_var($_GET[$var_name], FILTER_SANITIZE_STRING); } break; } case 'post': { if (isset($_POST[$var_name])) { if ($var_type!='checkbox') { $result = filter_var($_POST[$var_name], FILTER_SANITIZE_STRING); } else { $result = 1; } } break; } case 'request': { if (isset($_REQUEST[$var_name])) { $result = filter_var($_REQUEST[$var_name], FILTER_SANITIZE_STRING); } break; } default: { $result = -1; // Wrong request type value, possible mistake in a function call } } if ($result) { if ($var_type == 'int' && !is_numeric($result)) { $result = 0; } if ($var_type != 'int') { $result = esc_attr($result); } } return $result; } // end of get_request_var() /** * returns option value for option with name in $option_name */ public function get_option($option_name, $default = false) { if (isset($this->options[$option_name])) { $value = $this->options[$option_name]; } else { $value = $default; } $value = apply_filters('ure_get_option_'. $option_name, $value); return $value; } // end of get_option() /** * puts option value according to $option_name option name into options array property */ public function put_option($option_name, $option_value, $flush_options = false) { $this->options[$option_name] = $option_value; if ($flush_options) { $this->flush_options(); } } // end of put_option() /** * Delete URE option with name option_name * @param string $option_name * @param bool $flush_options */ public function delete_option($option_name, $flush_options = false) { if (array_key_exists($option_name, $this->options)) { unset($this->options[$option_name]); if ($flush_options) { $this->flush_options(); } } } // end of delete_option() /** * saves options array into WordPress database wp_options table */ public function flush_options() { update_option($this->options_id, $this->options); } // end of flush_options() /** * Check product version and stop execution if product version is not compatible * @param string $version1 * @param string $version2 * @param string $error_message * @return void */ public static function check_version($version1, $version2, $error_message, $plugin_file_name) { if (version_compare($version1, $version2, '<')) { if (is_admin() && (!defined('DOING_AJAX') || !DOING_AJAX )) { require_once ABSPATH . '/wp-admin/includes/plugin.php'; deactivate_plugins($plugin_file_name); wp_die($error_message); } else { return; } } } // end of check_version() public function get_current_url() { global $wp; $current_url = esc_url_raw(add_query_arg($wp->query_string, '', home_url($wp->request))); return $current_url; } // end of get_current_url() /** * Returns comma separated list from the first $items_count element of $full_list array * * @param array $full_list * @param int $items_count * @return string */ public function get_short_list_str($full_list, $items_count=3) { if (empty($full_list) || !is_array($full_list)) { return '...'; } $short_list = array(); $i = 0; foreach($full_list as $item) { if ($i>=$items_count) { break; } $short_list[] = $item; $i++; } $str = implode(', ', $short_list); if ($items_count<count($full_list)) { $str .= ', ...'; } return $str; } // end of get_short_list_str() /** * Prepare the list of integer or string values for usage in SQL query IN (val1, val2, ... , valN) claster * @global wpdb $wpdb * @param string $list_type: allowed values 'int', 'string' * @param array $list_values: array of integers or strings * @return string - comma separated values (CSV) */ public static function esc_sql_in_list($list_type, $list_values) { global $wpdb; if (empty($list_values) || !is_array($list_values) || count($list_values)==0) { return ''; } if ($list_type=='int') { $placeholder = '%d'; // Integer } else { $placeholder = '%s'; // String } $placeholders = array_fill(0, count($list_values), $placeholder); $format_str = implode(',', $placeholders); $result = $wpdb->prepare($format_str, $list_values); return $result; } // end of esc_sql_in_list() /** * Returns the array of multi-site WP sites/blogs IDs for the current network * @global wpdb $wpdb * @return array */ public function get_blog_ids() { global $wpdb; if (!$this->multisite) { return null; } $network = get_current_site(); $query = $wpdb->prepare( "SELECT blog_id FROM {$wpdb->blogs} WHERE site_id=%d ORDER BY blog_id ASC", array( $network->id ) ); $blog_ids = $wpdb->get_col( $query ); return $blog_ids; } // end of get_blog_ids() /** * Prevent cloning of the instance of the *Singleton* instance. * * @return void */ public function __clone() { throw new \Exception('Do not clone a singleton instance.'); } // end of __clone() /** * Prevent unserializing of the *Singleton* instance. * * @return void */ public function __wakeup() { throw new \Exception('Do not unserialize a singleton instance.'); } // end of __wakeup() } // end of URE_Base_Lib class