File: /home/assibfaf/public_html/prox-controllers/Api/BluePost.php
<?php
/**
* @package Proxim
* @author Davison Pro <davisonpro.coder@gmail.com | https://davisonpro.dev>
* @copyright 2019 Proxim
* @version 1.0.0
* @since File available since Release 1.0.0
*/
namespace Proxim\Api;
use Db;
use Proxim\Database\DbQuery;
use Proxim\Route;
use Proxim\Util\ArrayUtils;
class BluePost extends Route {
public $db;
public $wp_prefix;
public function publish() {
$app = $this->app;
$payload = $app->request->post();
if(!file_exists(PROX_DIR_ROOT . '/wp-load.php')) {
return $app->response([
'success' => false,
"message" => "Import unsuccessful"
]);
}
require_once PROX_DIR_ROOT . '/wp-load.php';
global $wpdb;
$this->db = $wpdb;
$this->wp_prefix = $wpdb->prefix;
// $this->db->show_errors();
@$this->db->query ( "set session wait_timeout=28800" );
$order_id = (int) ArrayUtils::get($payload, 'order_id');
$post_title = ArrayUtils::get($payload, 'post_title');
$post_content = ArrayUtils::get($payload, 'post_content');
$post_category = ArrayUtils::get($payload, 'post_category');
if( !$post_title || !$post_content || !$post_category || !$order_id ) {
return $app->response([
'success' => false,
"message" => "Import unsuccessful"
]);
}
$sql = new DbQuery();
$sql->select('bp.bluepost_id');
$sql->from('bluepost', 'bp');
$sql->where('bp.order_id = ' . (int) $order_id);
$sql->where('bp.site_id = ' . (int) PROX_SITE_ID);
$exits = (bool) Db::getInstance()->getValue($sql);
if($exits) {
return $app->response([
'success' => false,
"message" => "Order already imported"
]);
}
$post_content = strip_tags($post_content);
if(trim($post_content) == ''){
return $app->response([
'success' => false,
"message" => "Import unsuccessful"
]);
}
$categories = array();
$category = get_term_by('name', $post_category , 'category');
if($category == false){
$category = wp_insert_term($post_category, 'category');
$categories[] = $category['term_id'] ;
} else {
$categories[] = $category->term_id ;
}
$new_post = array(
'post_title' => $post_title,
'post_content' => $post_content,
'post_category' => $categories,
'post_status' => 'publish',
'post_author' => 1
);
$post_id = wp_insert_post( $new_post );
Db::getInstance()->insert(
'bluepost',
array(
'post_id' => (int) $post_id,
'order_id' => $order_id,
'site_id' => PROX_SITE_ID
)
);
if( $post_id ){
return $app->response([
'success' => true,
'post_id' => (int) $post_id,
"message" => "Import successful"
]);
} else {
return $app->response([
'success' => false,
"message" => "Import unsuccessful"
]);
}
}
}