plugin_name = $plugin_name;
$this->version = $version;
}
public function get_plugin_name() {
return $this->plugin_name;
}
/**
* Add submenu to left page in admin
*/
public function add_submenu_page() {
add_submenu_page( 'upload.php', $this->plugin_name, 'Altibox ', 'manage_options', $this->plugin_name . '-settings-page', array($this, 'render_settings_page') );
}
/**
* Render settings page for plugin
*/
public function render_settings_page() {
require plugin_dir_path( __FILE__ ) . 'views/' . $this->plugin_name . '-admin-settings-page.php';
}
/**
* prepare enqueue styles for wordpress hook
*/
public function enqueue_styles() {
wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'assets/css/altibox-admin.css', array(), $this->version, 'all' );
}
/**
* prepare enqueue scripts for wordpress hook
*/
public function enqueue_scripts() {
wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'assets/js/altibox-admin.js', array( 'jquery' ), $this->version, false );
}
/**
* add a settings link to plugin page.
* @param string $links array of links
*/
public function add_settings_link( $links ) {
$settings_link = '' . __( 'Settings' ) . '';
array_unshift($links, $settings_link);
return $links;
}
/**
* display messages manager
* @return array push array messages in to partial view
*/
public function display_messages() {
foreach ($this->messages as $name => $messages) {
foreach ($messages as $message) {
require plugin_dir_path( dirname( __FILE__ ) ) . 'admin/views/includes/altibox-admin-message.php';
}
}
}
/**
* Set selectors
*/
public function set_selectors($value) {
// escaped characters . $ ^ { [ ( | ) * + ? \
$match = preg_match('/^([a-z0-9,-_="~>#\(\)\|\\\ \.\$\^\+\*\[\]]*)$/i', $value, $matches);
if( $matches[1] != '' ) {
return stripslashes($value);
}
else {
$this->messages['file'][] = array(
'message' => 'Your selector is not valid.',
'type' => 'error',
'id' => '5'
);
return FALSE;
}
}
/**
* generate js string
*/
public function generate_js() {
if( !is_bool(self::set_selectors($_POST['altibox_selectors'])) && $jsfile_content = file_get_contents( plugin_dir_path( dirname( __FILE__ ) ) . 'public/assets/js/altibox-public.js' ) ) {
$jsfile_content = preg_replace("/\/\*custom-selectors-start\*\/'([^']*)'\/\*custom-selectors-end\*\//i", "/*custom-selectors-start*/'" . self::set_selectors($_POST['altibox_selectors']) . "'/*custom-selectors-end*/", $jsfile_content);
}
if( !empty($jsfile_content) && !file_put_contents( plugin_dir_path( dirname( __FILE__ ) ) . 'public/assets/js/altibox-public.js', $jsfile_content ) ) {
$this->messages['file'][] = array(
'message' => 'Impossible to create or modified the js file.',
'type' => 'error',
'id' => '4'
);
}
else {
update_option('altibox_selectors', self::set_selectors($_POST['altibox_selectors']));
$this->messages['file'][] = array(
'message' => 'Js file has been regenerated.',
'type' => 'updated',
'id' => ''
);
}
}
/**
* Get custom selectors from js
*/
public function get_custom_selectors() {
if( $jsfile_content = file_get_contents( plugin_dir_path( dirname( __FILE__ ) ) . 'public/assets/js/altibox-public.js' ) ) {
if( preg_match("/\/\*custom-selectors-start\*\/'([^']*)'\/\*custom-selectors-end\*\//i", $jsfile_content, $matches) ) {
return $matches[1];
}
else {
$this->messages['file'][] = array(
'message' => __('Impossible to get the CSS selector(s).', $this->plugin_name),
'type' => 'error',
'id' => '3'
);
return '';
}
}
else {
return '';
}
}
}