Your IP : 216.73.216.224


Current Path : /var/www/html/administrator/components/com_osmembership/table/
Upload File :
Current File : /var/www/html/administrator/components/com_osmembership/table/subscriber.php

<?php
/**
 * @package        Joomla
 * @subpackage     Membership Pro
 * @author         Tuan Pham Ngoc
 * @copyright      Copyright (C) 2012 - 2026 Ossolution Team
 * @license        GNU/GPL, see LICENSE.php
 */

defined('_JEXEC') or die;

/**
 * Subscriber table
 *
 * @property $id
 * @property $plan_id
 * @property $user_id
 * @property $coupon_id
 * @property $avatar
 * @property $first_name
 * @property $last_name
 * @property $organization
 * @property $address
 * @property $address2
 * @property $city
 * @property $state
 * @property $zip
 * @property $country
 * @property $phone
 * @property $fax
 * @property $email
 * @property $comment
 * @property $created_date
 * @property $payment_date
 * @property $from_date
 * @property $to_date
 * @property $invoice_number
 * @property $is_profile
 * @property $profile_id
 * @property $membership_id
 * @property $act
 * @property $published
 * @property $setup_fee
 * @property $tax_rate
 * @property $amount
 * @property $tax_amount
 * @property $discount_amount
 * @property $gross_amount
 * @property $payment_processing_fee
 * @property $payment_method
 * @property $transaction_id
 * @property $language
 * @property $plan_main_record
 * @property $plan_subscription_from_date
 * @property $plan_subscription_to_date
 * @property $plan_subscription_status
 * @property $subscription_id
 * @property $upgrade_option_id
 * @property $renew_option_id
 * @property $payment_currency
 * @property $trial_payment_amount
 * @property $payment_amount
 * @property $params
 * @property $group_admin_id
 * @property $first_reminder_sent
 * @property $second_reminder_sent
 * @property $third_reminder_sent
 * @property $is_free_trial
 * @property $receiver_email
 * @property $payment_made
 * @property $gateway_customer_id
 * @property $auto_subscribe_processed
 * @property $parent_id
 * @property $refunded
 * @property $process_payment_for_subscription
 */

use Joomla\CMS\Filter\InputFilter;
use Joomla\CMS\Table\Table;
use Joomla\Database\DatabaseDriver;

class OSMembershipTableSubscriber extends Table
{
	/**
	 * Constructor
	 *
	 * @param   DatabaseDriver  $db  Database connector object
	 */
	public function __construct($db)
	{
		parent::__construct('#__osmembership_subscribers', 'id', $db);

		// Handle searchable field which are checkboxes
		$db = $this->getDbo();

		$query = $db->getQuery(true)
			->select('name')
			->from('#__osmembership_fields')
			->where('is_searchable = 1')
			->where('(fieldtype = "Checkboxes" OR (fieldtype="List" AND multiple = 1))');
		$db->setQuery($query);

		$this->_jsonEncode = $db->loadColumn();
	}

	public function bind($src, $ignore = [])
	{
		foreach ($this->_jsonEncode as $field)
		{
			if (isset($src[$field]) && is_array($src[$field]))
			{
				$src[$field] = json_encode($src[$field], JSON_UNESCAPED_UNICODE);
			}
		}

		$ret = parent::bind($src, $ignore);

		$inputFilter = InputFilter::getInstance();

		$amountFields = [
			'amount',
			'tax_amount',
			'discount_amount',
			'gross_amount',
			'tax_rate',
			'setup_fee',
			'payment_processing_fee',
		];

		foreach ($amountFields as $field)
		{
			$this->$field = $inputFilter->clean($this->$field, 'FLOAT');
		}

		return $ret;
	}
}