| Server IP : 185.143.234.238 / Your IP : 185.215.232.195 Web Server : LiteSpeed System : Linux saman.shetabanhost.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64 User : behrakir ( 1361) PHP Version : 8.1.34 Disable Function : symlink,shell_exec,show_source,exec,popen,system,passthru,proc_open,proc_close,pcntl_exec,mail MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/behrakir/khanomam.com/wp-content/plugins/wp-score-gamification/app/classes/parts/ |
Upload File : |
<?php namespace Avans\parts;
use Avans\data;
use Avans\update;
use Avans\user;
use WP_Error;
class gifts
{
private $user;
private $options;
private $gift_id;
public function __construct($gift_id, $user)
{
$this->user = $user;
$this->gift_id = $gift_id;
$this->options = get_post_meta($gift_id, AVANS_PREFIX.'gift_settings', true);
}
public function add_gifts()
{
$user_score = user::get_score_valid((int)$this->user);
$stock = get_post_meta( $this->gift_id , AVANS_PREFIX.'gift_stock', true);
if( is_numeric($stock) && $stock <= 0 ){
return new WP_Error(__("The award stock is over" , AVANS_TEXT_DOMAIN));
}
if ($user_score < (int)$this->options['score_for_get_gift']) {
return false;
}
switch ($this->options['avans_type_gift']) {
case 'coupon':
$data = $this->add_gifts_coupon();
break;
case 'unique-code':
$data = $this->add_unique_code();
break;
case 'file':
$data = $this->add_gifts_downloadable_files();
break;
case 'custom':
$data = $this->add_gifts_custom();
break;
case 'product':
$data = $this->add_gifts_product();
break;
}
// $data['instructions'] = isset($this->options['instructions']) ? $this->options['instructions'] : null;
return $data;
}
public function add_unique_code(){
$used_codes = get_post_meta($this->gift_id , AVANS_PREFIX . 'gift_used_unique_codes' , true);
$used_codes = is_array($used_codes) ? $used_codes : [];
$unused_codes = get_post_meta($this->gift_id , AVANS_PREFIX . 'gift_unique_codes' , true);
$unused_codes = is_array($unused_codes) ? $unused_codes : [];
if(count($unused_codes) == 0 || empty($unused_codes[0])){
return new WP_Error(__("there is no code", AVANS_TEXT_DOMAIN));
}
array_push($used_codes , $unused_codes[0]);
array_shift($unused_codes);
update_post_meta($this->gift_id , AVANS_PREFIX . 'gift_used_unique_codes' , $used_codes);
update_post_meta($this->gift_id , AVANS_PREFIX . 'gift_unique_codes' , $unused_codes);
$data = [
'unique-code' => $unused_codes[0],
];
return $data;
}
private function add_gifts_coupon()
{
$data = $this->options;
$args = array(
'char' => $data['number_of_charecter_coupen'],
'expire_date' => $data['expire_date_coupen'],
'prefix' => $data['prefix_coupen'],
'suffix' => $data['suffix_coupen'],
'type' => $data['avans_type_coupon_gift'],
'amount' => $data['value_percent_coupen'],
'include_product' => $data['limited_custom_product_for_copon'],
'include_category' => $data['limited_custom_category_for_copon'],
'exclude_product' => $data['exclude_custom_product_for_copon'],
'exclude_category' => $data['exclude_custom_category_for_copon'],
'min_price' => $data['min_price_for_coupen'],
'max_price' => $data['max_price_for_coupen'],
'prefix' => $data['prefix_coupen'],
'exclude_sale_product' => $data['exclude_sale_product'],
'max_discount' => $data['max_discount'],
);
$coupon = data::create_coupon($args);
$data = [
'code' => $coupon,
'args' => $args,
];
return $data;
}
private function add_gifts_downloadable_files()
{
$data = [
'args' => $this->options['download_file_link_for_gift']
];
return $data;
}
private function add_gifts_product()
{
$products = $this->options['select_product_for_gift'];
global $woocommerce;
$order = wc_create_order(['customer_id' => $this->user]);
foreach ($products as $product) {
$order->add_product(wc_get_product(strval($product)), 1);
}
$order->update_status("wc-processing", 'Imported order', true);
update_post_meta($order->get_id(),AVANS_PREFIX.'is_order_prize','true');
$data = [
'order_id' => $order->get_id(),
];
return $data;
}
private function add_gifts_custom()
{
$data = [
'full_content' => $this->options['custom_content_for_gift'],
];
return $data;
}
public static function get_codes_log_csv( $gift_id , $type ){
if( !in_array( $type , ['all' , 'used' , 'unused'] ) ) return;
$used_codes = get_post_meta($gift_id , AVANS_PREFIX . 'gift_used_unique_codes' , true);
$used_codes = empty( $used_codes ) ? [] : $used_codes;
$unused_codes = get_post_meta($gift_id , AVANS_PREFIX . 'gift_unique_codes' , true);
$unused_codes = empty( $unused_codes ) ? [] : $unused_codes;
$all_codes = array_merge($used_codes,$unused_codes);
$header = [
'codes',
];
$rows = [];
if($type == 'all'){
$codes = $all_codes;
}elseif($type == 'used'){
$codes = $used_codes;
}elseif($type == 'unused'){
$codes = $unused_codes;
}
foreach($codes as $code){
$rows[] = [
$code,
];
}
self::export_csv($header , $rows);
}
public static function export_csv(array $header , array $rows){
ob_start();
$domain = $_SERVER['SERVER_NAME'];
$filename = 'avans-gift-unique-codes-' . $domain . '-' . time() . '.csv';
$file = @fopen('php://output', 'w');
fprintf($file, chr(0xEF) . chr(0xBB) . chr(0xBF));
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Description: File Transfer');
header('Content-type: text/csv');
header("Content-Disposition: attachment; filename={$filename}");
header('Expires: 0');
header('Pragma: public');
fputcsv($file, $header);
foreach ($rows as $row) {
fputcsv($file, $row);
}
fclose($file);
ob_end_flush();
}
}