FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
ai-document-gapgpt
Edit File: ai-document-gapgpt.php
<?php /** * Plugin Name: AI Document System - GapGPT * Description: پلاگین مدیریت مدارک و اعتبارسنجی کاربران با ChatGPT (GapGPT API) و OTP ایمیل * Version: 1.0 * Author: Reza SA */ if ( ! defined( 'ABSPATH' ) ) exit; class AI_Document_GapGPT { private $option_name = 'ai_gapgpt_api_key'; private $table_name; public function __construct() { global $wpdb; $this->table_name = $wpdb->prefix . 'ai_document_gapgpt'; register_activation_hook(__FILE__, array($this, 'activate_plugin')); add_action('admin_menu', array($this, 'admin_menu')); add_shortcode('ai_document_form', array($this, 'document_form_shortcode')); add_action('init', array($this, 'handle_form_submission')); } public function activate_plugin() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE {$this->table_name} ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, first_name VARCHAR(255), last_name VARCHAR(255), email VARCHAR(255), mobile VARCHAR(50), files LONGTEXT, otp_code VARCHAR(10), verified TINYINT(1) DEFAULT 0, submitted_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } public function admin_menu() { add_menu_page('AI Document System','AI Documents','manage_options','ai-document-gapgpt',array($this,'admin_page'),'dashicons-media-document',80); } public function admin_page() { if (isset($_POST['ai_gapgpt_api_key'])) { update_option($this->option_name, sanitize_text_field($_POST['ai_gapgpt_api_key'])); echo '<div class="updated"><p>API Key saved.</p></div>'; } $api_key = get_option($this->option_name, ''); echo '<div class="wrap"><h1>AI Document System - GapGPT Settings</h1>'; echo '<form method="post" enctype="multipart/form-data">'; echo '<label>GapGPT API Key:</label> <input type="password" name="ai_gapgpt_api_key" value="'.esc_attr($api_key).'" style="width:400px;">'; echo '<p><input type="submit" value="Save" class="button button-primary"></p></form></div>'; } public function document_form_shortcode() { ob_start(); echo '<form method="post" enctype="multipart/form-data">'; echo '<h3>Personal Information</h3>'; echo '<input type="text" name="first_name" placeholder="First Name" required><br>'; echo '<input type="text" name="last_name" placeholder="Last Name" required><br>'; echo '<input type="email" name="email" placeholder="Email" required><br>'; echo '<input type="text" name="mobile" placeholder="Mobile Number" required><br>'; echo '<h3>Upload Documents</h3>'; echo '<label>Biometric Photo (JPG 50-100KB)</label><input type="file" name="biometric_photo" accept=".jpg" required><br>'; echo '<label>Passport First Page (JPG <100KB)</label><input type="file" name="passport_page" accept=".jpg" required><br>'; echo '<label>Degree Certificate (JPG <150KB)</label><input type="file" name="degree_cert" accept=".jpg" required><br>'; echo '<label>CV (PDF/DOC <200KB)</label><input type="file" name="cv_file" accept=".pdf,.doc,.docx" required><br>'; echo '<input type="submit" name="submit_ai_doc" value="Submit and Verify">'; echo '</form>'; return ob_get_clean(); } public function handle_form_submission() { if (!isset($_POST['submit_ai_doc'])) return; if (!isset($_FILES)) return; $first_name = sanitize_text_field($_POST['first_name']); $last_name = sanitize_text_field($_POST['last_name']); $email = sanitize_email($_POST['email']); $mobile = sanitize_text_field($_POST['mobile']); $files_data = array(); $upload_dir = wp_upload_dir(); $base_dir = $upload_dir['basedir'] . '/ai_documents/'; if (!file_exists($base_dir)) mkdir($base_dir, 0755, true); foreach ($_FILES as $key => $file) { if ($file['error'] === UPLOAD_ERR_OK) { $file_name = time().'_'.sanitize_file_name($file['name']); move_uploaded_file($file['tmp_name'], $base_dir . $file_name); $files_data[$key] = $upload_dir['baseurl'].'/ai_documents/'.$file_name; } } $otp_code = rand(100000, 999999); global $wpdb; $wpdb->insert($this->table_name,array('first_name'=>$first_name,'last_name'=>$last_name,'email'=>$email,'mobile'=>$mobile,'files'=>maybe_serialize($files_data),'otp_code'=>$otp_code,'verified'=>0)); wp_mail($email, 'Verification Code', "Your OTP Code: $otp_code"); $api_key = get_option($this->option_name, ''); if (empty($api_key)) return; $gap_endpoint = 'https://gapgpt.app/api/v1/gpt4o/chat'; $headers = array('Authorization' => 'Bearer ' . $api_key,'Content-Type' => 'application/json'); $file_list = implode(", ", $files_data); $payload = array('model'=>'gpt4o','messages'=>array(array('role'=>'user','content'=>'Check the uploaded documents: '.$file_list)),'temperature'=>0); $response = wp_remote_post($gap_endpoint, array('headers'=>$headers,'body'=>wp_json_encode($payload),'timeout'=>60)); if(is_wp_error($response)) return; $body = wp_remote_retrieve_body($response); $result = json_decode($body,true); echo '<h3>AI Verification Result:</h3><pre>'.esc_html(print_r($result,true)).'</pre>'; echo '<p>An OTP code has been sent to your email. Please enter it to complete the registration.</p>'; exit; } } new AI_Document_GapGPT(); ?>
Save
Back