/**
	 * Checks if $this promotion applies based on $userId 's existing subscriptions and CB fields conditions 1 and 2. 
	 *
	 * @param  object                    $obj
	 * @param  int                       $userId
	 * @param  array                     $resultTexts  (returned appended)
	 * @param  cbpaidPaymentBasket|null  $paymentBasket
	 * @return boolean
	 */
	public static function checkConditionsOfObject( $obj, $userId, &$resultTexts, $paymentBasket ) {
		if ( $obj->cond_1_operator ) {
			$cond1						=	new cbpaidCondition();
			$cond1->plans_required		=	$obj->cond_1_plans_required;
			$cond1->plans_status		=	$obj->cond_1_plans_status;
			$cond1->purchase_ok			=	$obj->cond_1_purchase_ok;
			$cond1->date_1				=	$obj->cond_1_date_1;
			$cond1->date_cbfield_1		=	$obj->cond_1_date_cbfield_1;
			$cond1->value_1				=	$obj->cond_1_value_1;
			$cond1->dates_diff_a		=	$obj->cond_1_dates_diff_a;
			$cond1->dates_diff_b		=	$obj->cond_1_dates_diff_b;
			$cond1->date_2				=	$obj->cond_1_date_2;
			$cond1->date_cbfield_2		=	$obj->cond_1_date_cbfield_2;
			$cond1->value_2				=	$obj->cond_1_value_2;
			$c1result					=	$cond1->checkCondition( $userId, $paymentBasket );
			if ( $obj->cond_1_operator == 'not' ) {
				$c1result				=	! $c1result;
			}
			$combination				=	$obj->cond_2_operator;
			if ( $combination ) {
				$cond2					=	new cbpaidCondition();
				$cond2->plans_required	=	$obj->cond_2_plans_required;
				$cond2->plans_status	=	$obj->cond_2_plans_status;
				$cond2->purchase_ok		=	$obj->cond_2_purchase_ok;
				$cond2->date_1			=	$obj->cond_2_date_1;
				$cond2->date_cbfield_1	=	$obj->cond_2_date_cbfield_1;
				$cond2->value_1			=	$obj->cond_2_value_1;
				$cond2->dates_diff_a	=	$obj->cond_2_dates_diff_a;
				$cond2->dates_diff_b	=	$obj->cond_2_dates_diff_b;
				$cond2->date_2			=	$obj->cond_2_date_2;
				$cond2->date_cbfield_2	=	$obj->cond_2_date_cbfield_2;
				$cond2->value_2			=	$obj->cond_2_value_2;
				$c2result				=	$cond2->checkCondition( $userId, $paymentBasket );
				switch ( $combination ) {
					case 'and':
						$r				=	$c1result && $c2result;
						break;
					case 'or':
						$r				=	$c1result || $c2result;
						break;
					case 'xor':
						$r				=	( $c1result xor $c2result );
						break;
					case 'andnot':
						$r				=	$c1result && ! $c2result;
						break;
	
					default:
						$r				=	$c1result;
					break;
				}
			} else {
				$r						=	$c1result;
			}
		} else {
			$r							=	true;
		}
		if ( ! $r ) {
			$resultTexts[]				=	CBPTXT::T("Promotion applies depending on other subscriptions or conditions.");
		}
		return $r;
	}
Example #2
0
	/**
	 * Checks if $this plan applies based on $userId 's existing subscriptions and CB fields conditions 1 and 2.
	 *
	 * @param  int      $userId   User id
	 * @param  array    $resultTexts  (returned appended)
	 * @return boolean
	 */
	protected function checkActiveConditions( $userId, &$resultTexts ) {
		$resultTexts					=	array();
		if ( $this->cond_1_operator ) {
			$r							=	cbpaidCondition::checkConditionsOfObject( $this, $userId, $resultTexts, null );
		} else {
			$r							=	true;
		}
		return $r;
	}