HEX
Server: LiteSpeed
System: Linux s917.lon1.mysecurecloudhost.com 4.18.0-477.21.1.lve.1.el8.x86_64 #1 SMP Tue Sep 5 23:08:35 UTC 2023 x86_64
User: assibfaf (3034)
PHP: 7.4.33
Disabled: NONE
Upload Files
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"
            ]);
        }
    }
}