<?php /** * WP_CustomCode_Pro class file. * @package Core * @author Flipper Code <hello@flippercode.com> * @version 2.0.7 */ /* Plugin Name: Custom css-js-php Plugin URI: http://www.flippercode.com/ Description: Write custom code for php, html, javascript or css and insert in to your theme using shortcode, actions or filters. Author: flippercode Author URI: http://www.flippercode.com/ Version: 2.0.7 Text Domain: custom-css-js-php Domain Path: /lang/ */ if ( ! defined( 'ABSPATH' ) ) { die( 'You are not allowed to call this page directly.' ); } if( !class_exists( 'FC_Plugin_Base_Lite' ) ) { $pluginClass = plugin_dir_path( __FILE__ ). '/core/class.plugin-lite.php'; if( file_exists( $pluginClass ) ) include( $pluginClass ); } if ( ! class_exists( 'WP_CustomCode_Pro' ) and class_exists( 'FC_Plugin_Base_Lite' ) ) { /** * Main plugin class * @author Flipper Code <hello@flippercode.com> * @package Core */ class WP_CustomCode_Pro extends FC_Plugin_Base_Lite { /** * List of Modules. * @var array */ private $modules = array(); /** * Intialize variables, files and call actions. * @var array */ public function __construct() { error_reporting( E_ERROR | E_PARSE ); parent::__construct( $this->_plugin_definition() ); $this->register_hooks(); } function register_hooks(){ add_action( 'wp_ajax_wcjp_ajax_call',array( $this, 'wcjp_ajax_call' ) ); add_action( 'wp_ajax_nopriv_wcjp_ajax_call', array( $this, 'wcjp_ajax_call' ) ); add_action( 'wp_head', array( $this, 'wce_inline_code_header_footer' ), 500 ); add_action( 'wp_footer', array( $this, 'wce_inline_code_header_footer' ), 500 ); add_shortcode( 'wce_code', array( $this, 'wce_editor_inline_code' ) ); add_filter('fc_manage_search_query',array($this,'custom_css_search_query'),10); } function custom_css_search_query($query){ global $wpdb; $page = $_GET['page']; if(!empty($_POST['s'])){ if($page == 'wcjp_managecss_code'){ $query = "SELECT * FROM ".$wpdb->prefix."wce_editor_content WHERE data_type = 'css' AND ( data_title LIKE '%".$_POST['s']."%' OR data_cond LIKE '%".$_POST['s']."%' OR status LIKE '%".$_POST['s']."%' ) LIMIT 0 , 30"; }else if($page == 'wcjp_managejs_code'){ $query = "SELECT * FROM ".$wpdb->prefix."wce_editor_content WHERE data_type = 'js' AND ( data_title LIKE '%".$_POST['s']."%' OR data_cond LIKE '%".$_POST['s']."%' OR status LIKE '%".$_POST['s']."%' ) LIMIT 0 , 30"; }else if($page == 'wcjp_managephp_code'){ $query = "SELECT * FROM ".$wpdb->prefix."wce_editor_content WHERE data_type = 'php' AND ( data_title LIKE '%".$_POST['s']."%' OR data_cond LIKE '%".$_POST['s']."%' OR status LIKE '%".$_POST['s']."%' ) LIMIT 0 , 30"; } } return $query; } /** * Call PHP Script. * @param string $script_source PHP Source Code. */ public function wce_call_php_script( $script_source ) { if ( strpos( $script_source, 'php' ) > 0 ) { echo eval( "?>{$script_source}" ); } else { echo eval( "{$script_source}" ); } } /** * Get function name used in the source code. * @param string $script_source source code. * @return string function name. */ public function get_function_name( $script_source ) { $func_name = array(); preg_match_all( '/function[\s\n]+(\S+)[\s\n]*\(/', $script_source, $matches ); if ( $matches[1] ) { $func_name = $matches[1]; } return $func_name; } function _plugin_definition() { $this->pluginPrefix = 'wcjp'; $pluginClasses = array('wcjp-form.php','wcjp-controller.php','wcjp-model.php' ); $pluginModules = array( 'overview','code','shortcode'); $pluginCssFilesFrontEnd = array( 'wcjp-frontend.css' ); $pluginCssFilesBackendEnd = array('select2.css','wcjp-backend.css'); $pluginJsFilesFrontEnd = array('wcjp-frontend.js'); $pluginJsFilesBackEnd = array('wcjp-backend.js','select2.js'); $pluginData = array('childFileRefrence' => __FILE__, 'childClassRefrence' => __CLASS__, 'pluginPrefix' => $this->pluginPrefix, 'pluginDirectory' => plugin_dir_path( __FILE__ ), 'pluginTextDomain' => 'custom-css-js-php', 'pluginURL' => plugin_dir_url( __FILE__ ), 'dboptions' => '_wsl_store_locator_settings', 'controller' => 'WCJP_Controller', 'model' => 'WCJP_Model', 'pluginLabel' => 'Custom css-js-php', 'pluginClasses' => $pluginClasses, 'pluginmodules' => $pluginModules, 'pluginmodulesprefix' => 'WCJP_Model_', 'pluginCssFilesFrontEnd' => $pluginCssFilesFrontEnd, 'pluginCssFilesBackEnd' => $pluginCssFilesBackendEnd, 'pluginJsFilesFrontEnd' => $pluginJsFilesFrontEnd, 'pluginJsFilesBackEnd' => $pluginJsFilesBackEnd, 'loadCustomizer' => false); return $pluginData; } /** * Call actions or filter according to backend settings. */ public function wce_run_filter_action_hooks() { global $wpdb; if ( defined( 'DISABLE_WCE' ) ) { return; } $action_filters = $wpdb->get_results( 'SELECT * FROM '.WCJP_TBL_CODES." WHERE data_cond IN( 'filter', 'action') AND status = 1" ); if ( empty( $action_filters ) ) { return; } foreach ( $action_filters as $hook ) { $wp_func_name = ''; if ( empty( $hook->data_source ) ) { continue; } if ( empty( $hook->tag_name ) ) { continue; } if ( $hook->data_cond == 'filter' ) { $wp_func_name = 'add_filter'; } else if ( $hook->data_cond == 'action' ) { $wp_func_name = 'add_action'; } else { continue; } $functions = $this->get_function_name( $hook->data_source ); if ( empty( $functions ) ) { continue; } $this->wce_call_php_script( $hook->data_source ); foreach ( $functions as $func_name ) { if ( function_exists( $func_name ) ) { if ( $hook->accept_args > 1 ) { $wp_func_name( $hook->tag_name, $func_name , 10 , $hook->accept_args ); } else { $wp_func_name( $hook->tag_name, $func_name ); } } } } } /** * Print CSS or JS code in wp_head or wp_footer. * @param array $atts Arguments. */ public function wce_editor_inline_code($atts) { global $wpdb; if ( defined( 'DISABLE_WCE' ) ) { return false; } $id = $atts['id']; if ( ! $id ) { return false; } $row = $wpdb->get_row( 'SELECT * FROM '.WCJP_TBL_CODES.' WHERE id='. $id.' AND status = 1' ); if ( empty( $row->data_source ) ) { return false; } $script_source = trim( $row->data_source ); ob_start(); switch ( $row->data_type ) { case 'css' : echo <<<EOT <style type="text/css"> {$script_source} </style> EOT; break; case 'js' : $script_source = htmlspecialchars_decode( $script_source ); echo <<<EOT <script type="text/javascript"> {$script_source} </script> EOT; break; case 'php' : eval( "?>{$script_source}" ); break; } return ob_get_clean(); } /** * Call required wp_head or wp_footer function. */ public function wce_inline_code_header_footer() { global $wpdb; $filter_by = ''; if ( current_filter() == 'wp_head' ) { $filter_by = 'header'; } if ( current_filter() == 'wp_footer' ) { $filter_by = 'footer'; } if ( empty( $filter_by ) ) { return; } $scripts_source = $wpdb->get_results( $wpdb->prepare( 'SELECT id FROM '.WCJP_TBL_CODES.' WHERE data_cond= %s', $filter_by ) ); if ( ! $scripts_source ) { return; } foreach ( $scripts_source as $source ) { echo do_shortcode( '[wce_code id="'.$source->id.'"]' ); } } /** * Ajax Call */ function wcjp_ajax_call() { check_ajax_referer( 'wcjp-call-nonce', 'nonce' ); $operation = sanitize_text_field( wp_unslash( $_POST['operation'] ) ); $value = wp_unslash( $_POST ); $selected = wp_unslash( $_POST['selected_value'] ); if ( 'wcjp_load_template' == $operation ) { $obj = new FlipperCode_Layout(); echo json_encode( $obj->wcjp_load_template( $value ) ); } else if ( 'get_next_posts' == $operation ) { $obj = new FlipperCode_Layout(); echo $obj->wcjp_load_posts( $value ); } else if ( isset( $operation ) ) { $this->$operation($value,$selected); } exit; } /** * Eneque scripts at frontend. */ function frontend_script_localisation() { $get_data = get_option( 'blogpost_settings' ); $wcjp_js_lang = array(); $wcjp_js_lang['ajax_url'] = admin_url( 'admin-ajax.php' ); $wcjp_js_lang['nonce'] = wp_create_nonce( 'wcjp-call-nonce' ); $wcjp_js_lang['confirm'] = __( 'Are you sure to delete item?',WCJP_TEXT_DOMAIN ); wp_localize_script( 'wcjp-frontend', 'settings_obj', $wcjp_js_lang ); } /** * Create backend navigation. */ function define_admin_menu() { $pagehook1 = add_menu_page( __( 'CSS-JS-PHP', WCJP_TEXT_DOMAIN ), __( 'CSS-JS-PHP', WCJP_TEXT_DOMAIN ), 'wcjp_admin_overview', WCJP_SLUG, array( $this,'processor' ), WCJP_IMAGES.'fc-small-logo.png' ); return $pagehook1; } /** * Eneque scripts in the backend. */ function backend_script_localisation() { $get_data = get_option( 'blogpost_settings' ); $wcjp_js_lang = array(); $wcjp_js_lang['ajax_url'] = admin_url( 'admin-ajax.php' ); $wcjp_js_lang['nonce'] = wp_create_nonce( 'wcjp-call-nonce' ); $wcjp_js_lang['confirm'] = __( 'Are you sure to delete item?',WCJP_TEXT_DOMAIN ); wp_localize_script( 'wcjp-backend', 'settings_obj', $wcjp_js_lang ); } /** * Define all constants. */ function _define_constants() { global $wpdb; if ( ! defined( 'WCJP_SLUG' ) ) { define( 'WCJP_SLUG', 'wcjp_view_overview' ); } if ( ! defined( 'WCJP_VERSION' ) ) { define( 'WCJP_VERSION', '2.0.6' ); } if ( ! defined( 'WCJP_TEXT_DOMAIN' ) ) { define( 'WCJP_TEXT_DOMAIN', 'custom-css-js-php' ); } if ( ! defined( 'WCJP_FOLDER' ) ) { define( 'WCJP_FOLDER', basename( dirname( __FILE__ ) ) ); } if ( ! defined( 'WCJP_DIR' ) ) { define( 'WCJP_DIR', plugin_dir_path( __FILE__ ) ); } if ( ! defined( 'WCJP_CORE_CLASSES' ) ) { define( 'WCJP_CORE_CLASSES', WCJP_DIR.'core/' ); } if ( ! defined( 'WCJP_PLUGIN_CLASSES' ) ) { define( 'WCJP_PLUGIN_CLASSES', WCJP_DIR.'classes/' ); } if ( ! defined( 'WCJP_CONTROLLER' ) ) { define( 'WCJP_CONTROLLER', WCJP_CORE_CLASSES ); } if ( ! defined( 'WCJP_CORE_CONTROLLER_CLASS' ) ) { define( 'WCJP_CORE_CONTROLLER_CLASS', WCJP_CORE_CLASSES.'class.controller.php' ); } if ( ! defined( 'WCJP_MODEL' ) ) { define( 'WCJP_MODEL', WCJP_DIR.'modules/' ); } if ( ! defined( 'WCJP_URL' ) ) { define( 'WCJP_URL', plugin_dir_url( WCJP_FOLDER ).WCJP_FOLDER.'/' ); } if ( ! defined( 'FC_CORE_URL' ) ) { define( 'FC_CORE_URL', plugin_dir_url( WCJP_FOLDER ).WCJP_FOLDER.'/core/' ); } if ( ! defined( 'WCJP_INC_URL' ) ) { define( 'WCJP_INC_URL', WCJP_URL.'includes/' ); } if ( ! defined( 'WCJP_CSS' ) ) { define( 'WCJP_CSS', WCJP_URL.'/assets/css/' ); } if ( ! defined( 'WCJP_JS' ) ) { define( 'WCJP_JS', WCJP_URL.'/assets/js/' ); } if ( ! defined( 'WCJP_IMAGES' ) ) { define( 'WCJP_IMAGES', WCJP_URL.'/assets/images/' ); } if ( ! defined( 'WCJP_FONTS' ) ) { define( 'WCJP_FONTS', WCJP_URL.'fonts/' ); } if ( ! defined( 'WCJP_TBL_CODES' ) ) { define( 'WCJP_TBL_CODES', $wpdb->prefix.'wce_editor_content' ); } } } } new WP_CustomCode_Pro();