<?php
/**
* Class: wcjp_Model_Code
* @author Flipper Code <hello@flippercode.com>
* @package Core
* @version 2.0.0
*/
if ( ! class_exists( 'WCJP_Model_Code' ) ) {
/**
* Code model for CRUD operation.
* @package Core
* @author Flipper Code <hello@flippercode.com>
*/
class WCJP_Model_Code extends FlipperCode_Model_Base
{
/**
* Validations on code properies.
* @var array
*/
public $validations = array(
'data_title' => array( 'req' => 'Please enter title.' ),
'data_source' => array( 'req' => 'Please enter source code.' ),
);
/**
* Intialize rule object.
*/
public function __construct() {
$this->table = WCJP_TBL_CODES;
$this->unique = 'id';
}
/**
* Admin menu for CRUD Operation
* @return array Admin meny navigation(s).
*/
public function navigation() {
return array(
'wcjp_addcss_code' => __( 'Add CSS', WCJP_TEXT_DOMAIN ),
'wcjp_managecss_code' => __( 'Manage CSS', WCJP_TEXT_DOMAIN ),
'wcjp_addjs_code' => __( 'Add JS', WCJP_TEXT_DOMAIN ),
'wcjp_managejs_code' => __( 'Manage JS', WCJP_TEXT_DOMAIN ),
'wcjp_addphp_code' => __( 'Add PHP', WCJP_TEXT_DOMAIN ),
'wcjp_managephp_code' => __( 'Manage PHP', WCJP_TEXT_DOMAIN ),
);
}
/**
* Install table associated with Code entity.
* @return string SQL query to install wce_editor_content table.
*/
public function install() {
global $wpdb;
$sql = 'CREATE TABLE '.$wpdb->prefix.'wce_editor_content (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`data_title` varchar(100) NOT NULL,
`data_type` varchar(30) NOT NULL,
`data_source` longtext NOT NULL,
`data_cond` varchar(60) NOT NULL,
`tag_name` varchar(100) NOT NULL,
`accept_args` int(11) NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT "1",
PRIMARY KEY (`id`)
)';
return $sql;
}
/**
* Get Rule(s)
* @param array $where Conditional statement.
* @return array Array of Rule object(s).
*/
public function fetch($where = array()) {
$objects = $this->get( $this->table, $where );
if ( isset( $objects ) ) {
return $objects;
}
}
/**
* Add or Edit Operation.
*/
public function save() {
$data = array();
$entityID = '';
if ( isset( $_REQUEST['_wpnonce'] ) ) {
$nonce = sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ); }
if ( isset( $nonce ) and ! wp_verify_nonce( $nonce, 'wpgmp-nonce' ) ) {
die( 'Cheating...' );
}
$this->verify( $_POST );
if ( is_array( $this->errors ) and ! empty( $this->errors ) ) {
$this->throw_errors();
}
if ( isset( $_POST['entityID'] ) ) {
$entityID = intval( wp_unslash( $_POST['entityID'] ) );
}
if ( $entityID > 0 ) {
$where[ $this->unique ] = $entityID;
} else {
$where = '';
}
$data['data_title'] = sanitize_text_field( wp_unslash( $_POST['data_title'] ) );
$data['data_source'] = wp_unslash( $_POST['data_source'] );
$data['data_type'] = sanitize_text_field( wp_unslash( $_POST['data_type'] ) );
$data['data_cond'] = sanitize_text_field( wp_unslash( $_POST['data_cond'] ) );
$data['tag_name'] = sanitize_text_field( wp_unslash( $_POST['tag_name'] ) );
if ( isset( $_POST['status'] ) ) {
$data['status'] = 0;
} else {
$data['status'] = 1;
}
$result = FlipperCode_Database::insert_or_update( $this->table, $data, $where );
if ( false === $result ) {
$response['error'] = __( 'Something went wrong. Please try again.',WCJP_TEXT_DOMAIN );
} elseif ( $entityID > 0 ) {
$response['success'] = __( 'Code updated successfully',WCJP_TEXT_DOMAIN );
} else {
$response['success'] = __( 'Code added successfully.',WCJP_TEXT_DOMAIN );
}
return $response;
}
/**
* Delete rule object by id.
*/
public function delete() {
if ( isset( $_GET['id'] ) ) {
$id = intval( wp_unslash( $_GET['id'] ) );
$connection = FlipperCode_Database::connect();
$this->query = $connection->prepare( "DELETE FROM $this->table WHERE $this->unique='%d'", $id );
return FlipperCode_Database::non_query( $this->query, $connection );
}
}
}
}