Version 4.2.0

This commit is contained in:
Neo committed 2025-12-19 05:44:59 -08:00
1 parent 0dc2aee5ed
commit 96997ddd8e
2074 files changed
+125454 -55780

No files matched your search

@@ -1,13 +1,12 @@
<?php
/**
* @brief Commission Rule Node
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 15 Aug 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -43,6 +42,11 @@ class _CommissionRule extends \IPS\Node\Model
* @brief [Node] Order Database Column
*/
public static $databaseColumnOrder = 'name';
/**
* @brief [Node] Automatically set position for new nodes
*/
public static $automaticPositionDetermination = FALSE;
/**
* @brief [Node] Sortable?
@@ -1,13 +1,12 @@
<?php
/**
* @brief Commission Rule Filter Iterator
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 18 Aug 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\CommissionRule;
+6 -7
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Coupon Node
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 11 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -350,7 +349,7 @@ class _Coupon extends \IPS\Node\Model
if ( $item instanceof \IPS\nexus\extensions\nexus\Item\Package and in_array( $item->id, $allowedProductIds ) )
{
$hasAllowedProduct = TRUE;
$productTotal = $productTotal->add( $item->price->amount );
$productTotal = $productTotal->add( $item->price->amount->multiply( new \IPS\Math\Number("{$item->quantity}") ) );
$items[] = $k;
}
@@ -376,7 +375,7 @@ class _Coupon extends \IPS\Node\Model
throw new \DomainException( 'coupon_invalid_products' );
}
}
/* How much are we taking off? */
$discount = new \IPS\nexus\Money( 0, $invoice->currency );
if ( $this->unit === 'v' )
@@ -1,13 +1,12 @@
<?php
/**
* @brief Credit card object
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Customer Address Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 11 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Customer;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Alternative Contact Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 09 May 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Customer;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Billing Agreement Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 16 Dec 2015
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Customer;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Customer Stored Card Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 12 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Customer;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Custom Customer Field Node
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 16 Apr 2013
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Customer;
@@ -91,7 +90,7 @@ class _CustomField extends \IPS\CustomField
*/
public static $databaseColumnMap = array(
'content' => 'extra',
'not_null' => 'required',
'not_null' => 'reg_require'
);
/**
@@ -113,9 +112,15 @@ class _CustomField extends \IPS\CustomField
public function form( &$form )
{
parent::form( $form );
$form->addHeader( 'customer_field_registration' );
$form->add( new \IPS\Helpers\Form\YesNo( 'f_reg_show', $this->reg_show ) );
$form->add( new \IPS\Helpers\Form\YesNo( 'f_reg_require', $this->reg_require ) );
if ( ! \IPS\Settings::i()->quick_register )
{
/* Quick register is disabled */
$form->addHeader( 'customer_field_registration' );
$form->add( new \IPS\Helpers\Form\YesNo( 'f_reg_show', $this->reg_show ) );
$form->add( new \IPS\Helpers\Form\YesNo( 'f_reg_require', $this->reg_require ) );
}
$form->addHeader( 'customer_field_purchase' );
$form->add( new \IPS\Helpers\Form\YesNo( 'f_purchase_show', $this->purchase_show ) );
$form->add( new \IPS\Helpers\Form\YesNo( 'f_purchase_require', $this->purchase_require ) );
@@ -166,6 +171,14 @@ class _CustomField extends \IPS\CustomField
{
parent::delete();
static::recountCustomerFields();
if ( isset( static::$multitons[ $this->id ] ) )
{
unset( static::$multitons[ $this->id ] );
}
/* Do we need to do stuff with profile steps? */
\IPS\Member\ProfileStep::resync();
}
/**
@@ -180,4 +193,18 @@ class _CustomField extends \IPS\CustomField
\IPS\Settings::i()->customer_fields = $count;
unset( \IPS\Data\Store::i()->settings );
}
/**
* [Node] Format form values from add/edit form for save
*
* @param array $values Values from the form
* @return array
*/
public function formatFormValues( $values )
{
$values['allow_attachments'] = $values['pf_allow_attachments'];
unset( $values['pf_allow_attachments'] );
return parent::formatFormValues( $values );
}
}
@@ -1,13 +1,12 @@
<?php
/**
* @brief Customer Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 11 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -232,7 +231,7 @@ class _Customer extends \IPS\Member
*/
public function get_cm_profiles()
{
return $this->_data['cm_profiles'] ? json_decode( $this->_data['cm_profiles'], TRUE ) : array();
return ( isset( $this->_data['cm_profiles'] ) and $this->_data['cm_profiles'] ) ? json_decode( $this->_data['cm_profiles'], TRUE ) : array();
}
/**
@@ -383,22 +382,7 @@ class _Customer extends \IPS\Member
*/
public function log( $type, $extra=NULL, $by=NULL )
{
if ( $this->member_id )
{
if ( $by === NULL )
{
$by = \IPS\Member::loggedIn();
}
\IPS\Db::i()->insert( 'nexus_customer_history', array(
'log_member' => (int) $this->member_id,
'log_by' => $by ? $by->member_id : NULL,
'log_type' => $type,
'log_data' => json_encode( $extra ),
'log_date' => microtime( TRUE ),
'log_ip_address' => \IPS\Request::i()->ipAddress()
) );
}
$this->logHistory( 'nexus', $type, $extra, $by, TRUE );
}
/**
@@ -1,699 +0,0 @@
<?php
/**
* @brief Customer History Table
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @subpackage Nexus
* @since 18 Sep 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Customer;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}
/**
* Customer Model
*/
class _History extends \IPS\Helpers\Table\Db
{
/**
* Constructor
*
* @param \IPS\Http\Url $url The URL the table will be displayed on
* @param mixed $where WHERE clause
* @param bool $showIp If the IP address column should be included
* @param bool $showCustomer If the customer column should show
* @return void
*/
public function __construct( \IPS\Http\Url $url, $where, $showIp=TRUE, $showCustomer=FALSE )
{
parent::__construct( 'nexus_customer_history', $url, $where );
$this->tableTemplate = array( \IPS\Theme::i()->getTemplate( 'customers', 'nexus' ), 'historyTable' );
$this->rowsTemplate = array( \IPS\Theme::i()->getTemplate( 'customers', 'nexus' ), 'historyRows' );
$this->include = array( 'log_type', 'log_date', 'log_data' );
if ( $showIp )
{
$this->include[] = 'log_ip_address';
}
if ( $showCustomer )
{
$this->include[] = 'log_member';
}
$this->sortBy = $this->sortBy ?: 'log_date';
$this->noSort = array( 'log_type', 'log_ip_address', 'log_data' );
$this->parsers = array(
'log_type' => function( $val )
{
return \IPS\Theme::i()->getTemplate('customers', 'nexus')->logType( $val );
},
'log_date' => function( $val )
{
return \IPS\DateTime::ts( $val );
},
'log_ip_address' => function( $val )
{
return "<a href='" . \IPS\Http\Url::internal( "app=core&module=members&controller=ip&ip={$val}" ) . "'>{$val}</a>";
},
'log_member'=> function( $val )
{
return \IPS\nexus\Customer::load( $val )->link();
},
'log_data' => function( $val, $row )
{
$val = json_decode( $val, TRUE );
$byCustomer = '';
$byStaff = '';
if ( $row['log_by'] )
{
if ( $row['log_by'] === $row['log_member'] )
{
$byCustomer = \IPS\Member::loggedIn()->language()->addToStack('history_by_customer');
}
$byStaff = \IPS\Member::loggedIn()->language()->addToStack('history_by_staff', FALSE, array( 'sprintf' => array( \IPS\Member::load( $row['log_by'] )->name ) ) );
}
switch ( $row['log_type'] )
{
case 'invoice':
try
{
$invoice = \IPS\Theme::i()->getTemplate('invoices', 'nexus')->link( \IPS\nexus\Invoice::load( $val['id'] ) );
}
catch ( \OutOfRangeException $e )
{
$invoice = $val['title'];
}
if ( isset( $val['type'] ) )
{
switch ( $val['type'] )
{
case 'status':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_invoice_status', FALSE, array( 'htmlsprintf' => array( $invoice, mb_strtolower( \IPS\Member::loggedIn()->language()->addToStack( 'istatus_' . $val['new'] ) ), $byStaff ) ) );
case 'resend':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_invoice_resend', FALSE, array( 'htmlsprintf' => array( $invoice, $byStaff, isset( $val['email'] ) ? \IPS\Member::loggedIn()->language()->addToStack( $val['email'] ? 'history_invoice_resend_email' : 'history_invoice_resend_no_email' ) : '' ) ) );
case 'delete':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_invoice_delete', FALSE, array( 'htmlsprintf' => array( $invoice, $byStaff ) ) );
case 'expire':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_invoice_expired', FALSE, array( 'htmlsprintf' => array( $invoice ) ) );
}
}
else
{
if ( isset( $val['system'] ) and $val['system'] )
{
return \IPS\Member::loggedIn()->language()->addToStack( 'history_invoice_generated', FALSE, array( 'htmlsprintf' => array( $invoice, '' ) ) );
}
else
{
return \IPS\Member::loggedIn()->language()->addToStack( 'history_invoice_generated', FALSE, array( 'htmlsprintf' => array( $invoice, $byCustomer ?: $byStaff ) ) );
}
}
break;
case 'transaction':
try
{
$transaction = \IPS\Theme::i()->getTemplate('transactions', 'nexus')->link( \IPS\nexus\Transaction::load( $val['id'] ) );
}
catch ( \OutOfRangeException $e )
{
$transaction = \IPS\Member::loggedIn()->language()->addToStack( 'transaction_number', FALSE, array( 'htmlsprintf' => array( $val['id'] ) ) );
}
switch ( $val['type'] )
{
case 'paid':
try
{
$invoice = \IPS\Theme::i()->getTemplate('invoices', 'nexus')->link( \IPS\nexus\Invoice::load( $val['invoice_id'] ), TRUE );
}
catch ( \OutOfRangeException $e )
{
$invoice = \IPS\Member::loggedIn()->language()->addToStack( 'invoice_number', FALSE, array( 'sprintf' => array( $val['id'] ) ) );
}
if ( isset( $val['automatic'] ) and $val['automatic'] )
{
return \IPS\Member::loggedIn()->language()->addToStack( 'history_transaction_auto', FALSE, array( 'htmlsprintf' => array( $transaction, $invoice, \IPS\Member::loggedIn()->language()->addToStack( 'history_transaction_status_' . $val['status'] ) ) ) );
}
else
{
return \IPS\Member::loggedIn()->language()->addToStack( 'history_transaction_paid', FALSE, array( 'htmlsprintf' => array( $transaction, $invoice, $byStaff, \IPS\Member::loggedIn()->language()->addToStack( 'history_transaction_status_' . $val['status'] ) ) ) );
}
case 'status':
if ( $val['status'] === \IPS\nexus\Transaction::STATUS_REFUNDED or $val['status'] === \IPS\nexus\Transaction::STATUS_PART_REFUNDED )
{
if ( $val['refund'] === 'gateway' )
{
$refundedTo = ( is_object( $transaction ) and $transaction->method ) ? $transaction->method->_title : \IPS\Member::loggedIn()->language()->addToStack('history_transaction_refunded_gateway');
}
else
{
$refundedTo = mb_strtolower( \IPS\Member::loggedIn()->language()->addToStack( 'refund_method_credit' ) );
}
if ( $val['status'] === \IPS\nexus\Transaction::STATUS_REFUNDED )
{
return \IPS\Member::loggedIn()->language()->addToStack( 'history_transaction_refunded', FALSE, array( 'htmlsprintf' => array( $transaction, $refundedTo, $byStaff ) ) );
}
else
{
return \IPS\Member::loggedIn()->language()->addToStack( 'history_transaction_part_refunded', FALSE, array( 'htmlsprintf' => array( new \IPS\nexus\Money( $val['amount'], $val['currency'] ), $transaction, $refundedTo, $byStaff ) ) );
}
}
else
{
return \IPS\Member::loggedIn()->language()->addToStack( 'history_transaction_status', FALSE, array( 'htmlsprintf' => array( $transaction, \IPS\Member::loggedIn()->language()->addToStack( 'history_transaction_status_' . $val['status'] ), $byStaff ) ) );
}
case 'delete':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_transaction_delete', FALSE, array( 'htmlsprintf' => array( $transaction, $byStaff ) ) );
}
break;
case 'shipping':
try
{
$shipment = \IPS\Theme::i()->getTemplate('shiporders', 'nexus')->link( \IPS\nexus\Shipping\Order::load( $val['id'] ) );
}
catch ( \OutOfRangeException $e )
{
$shipment = \IPS\Member::loggedIn()->language()->addToStack( 'shipment_number', FALSE, array( 'sprintf' => array( $val['id'] ) ) );
}
if ( isset( $val['type'] ) )
{
if ( $val['type'] === 'new' )
{
try
{
$invoice = \IPS\Theme::i()->getTemplate('invoices', 'nexus')->link( \IPS\nexus\Invoice::load( $val['invoice_id'] ), TRUE );
}
catch ( \OutOfRangeException $e )
{
$invoice = \IPS\Member::loggedIn()->language()->addToStack('invoice_number', FALSE, array( 'sprintf' => array( $val['id'] ) ) );
}
return \IPS\Member::loggedIn()->language()->addToStack( 'history_shipping_new', FALSE, array( 'htmlsprintf' => array( $shipment, $invoice ) ) );
}
elseif ( $val['type'] === 'canc' )
{
return \IPS\Member::loggedIn()->language()->addToStack( 'history_shipping_canc', FALSE, array( 'htmlsprintf' => array( $shipment, $byStaff ) ) );
}
}
elseif ( isset( $val['deleted'] ) and $val['deleted'] )
{
return \IPS\Member::loggedIn()->language()->addToStack( 'history_shipping_deleted', FALSE, array( 'htmlsprintf' => array( $shipment, $byStaff ) ) );
}
else
{
return \IPS\Member::loggedIn()->language()->addToStack( 'history_shipping_ship', FALSE, array( 'htmlsprintf' => array( $shipment, $byStaff ) ) );
}
break;
case 'purchase':
try
{
$purchase = \IPS\Theme::i()->getTemplate('purchases', 'nexus')->link( \IPS\nexus\Purchase::load( $val['id'] ), $val['type'] === 'change' );
}
catch ( \OutOfRangeException $e )
{
$purchase = $val['name'];
}
switch ( $val['type'] )
{
case 'new':
case 'renew':
try
{
$invoice = \IPS\Theme::i()->getTemplate('invoices', 'nexus')->link( \IPS\nexus\Invoice::load( $val['invoice_id'] ), TRUE );
}
catch ( \OutOfRangeException $e )
{
$invoice = \IPS\Member::loggedIn()->language()->addToStack('invoice_number', FALSE, array( 'sprintf' => array( $val['invoice_id'] ) ) );
}
if ( $val['type'] === 'new' )
{
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_created', FALSE, array( 'htmlsprintf' => array( $purchase, $invoice ) ) );
}
else
{
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_renewed', FALSE, array( 'htmlsprintf' => array( $purchase, $invoice ) ) );
}
break;
case 'info':
if ( isset( $val['info'] ) )
{
switch ( $val['info'] )
{
case 'change_renewals':
/* A bug in an older version logged this wrong... */
if ( !isset( $val['to']['currency'] ) )
{
foreach ( $val['to']['cost'] as $currency => $amount )
{
$to = new \IPS\nexus\Purchase\RenewalTerm( new \IPS\nexus\Money( $amount['amount'], $currency ), new \DateInterval( 'P' . $val['to']['term'] . mb_strtoupper( $val['to']['unit'] ) ) );
break;
}
}
/* This is the correct way */
else
{
$to = new \IPS\nexus\Purchase\RenewalTerm( new \IPS\nexus\Money( $val['to']['cost'], $val['to']['currency'] ), new \DateInterval( 'P' . $val['to']['term']['term'] . mb_strtoupper( $val['to']['term']['unit'] ) ) );
}
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_renewals_changed', FALSE, array( 'htmlsprintf' => array( $purchase, ( isset( $val['system'] ) and $val['system'] ) ? '' : $byStaff, $to ) ) );
case 'remove_renewals':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_renewals_removed', FALSE, array( 'htmlsprintf' => array( $purchase, ( isset( $val['system'] ) and $val['system'] ) ? '' : $byStaff ) ) );
}
}
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_edited', FALSE, array( 'htmlsprintf' => array( $purchase, ( isset( $val['system'] ) and $val['system'] ) ? '' : $byStaff ) ) );
case 'transfer_from':
try
{
$to = \IPS\Theme::i()->getTemplate('global', 'nexus')->userLink( \IPS\nexus\Customer::load( $val['to'] ) );
}
catch( \OutOfRangeException $e )
{
$to = \IPS\Member::loggedIn()->language()->addToStack( 'deleted_member' );
}
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_transfer_from', FALSE, array( 'htmlsprintf' => array( $purchase, $to, $byStaff ) ) );
case 'transfer_to':
try
{
$from = \IPS\Theme::i()->getTemplate('global', 'nexus')->userLink( \IPS\nexus\Customer::load( $val['from'] ) );
}
catch( \OutOfRangeException $e )
{
$from = \IPS\Member::loggedIn()->language()->addToStack( 'deleted_member' );
}
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_transfer_to', FALSE, array( 'htmlsprintf' => array( $purchase, $from, $byStaff ) ) );
case 'cancel':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_canceled', FALSE, array( 'htmlsprintf' => array( $purchase, $byStaff ) ) );
case 'uncancel':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_reactivated', FALSE, array( 'htmlsprintf' => array( $purchase, $byStaff ) ) );
case 'delete':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_deleted', FALSE, array( 'htmlsprintf' => array( $purchase, $byStaff ) ) );
case 'expire':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_expired', FALSE, array( 'htmlsprintf' => array( $purchase ) ) );
case 'change':
$by = ( isset( $val['system'] ) and $val['system'] ) ? '' : $byCustomer;
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_changed', FALSE, array( 'htmlsprintf' => array( $purchase, $val['old'], $val['name'], $by ) ) );
case 'group':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_grouped', FALSE, array( 'htmlsprintf' => array( $purchase, $byStaff ) ) );
case 'ungroup':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_purchase_ungrouped', FALSE, array( 'htmlsprintf' => array( $purchase, $byStaff ) ) );
}
break;
case 'comission':
switch ( $val['type'] )
{
case 'purchase':
case 'purchase_refund':
try
{
$purchase = \IPS\Theme::i()->getTemplate('purchases', 'nexus')->link( \IPS\nexus\Purchase::load( $val['id'] ) );
}
catch ( \OutOfRangeException $e )
{
$purchase = $val['name'];
}
return \IPS\Member::loggedIn()->language()->addToStack( "history_commission_{$val['type']}", FALSE, array( 'htmlsprintf' => array( new \IPS\nexus\Money( $val['amount'], $val['currency'] ), $purchase ) ) );
case 'invoice':
case 'invoice_refund':
try
{
$invoice = \IPS\Theme::i()->getTemplate('invoices', 'nexus')->link( \IPS\nexus\Invoice::load( $val['invoice_id'] ), TRUE );
}
catch ( \OutOfRangeException $e )
{
$invoice = \IPS\Member::loggedIn()->language()->addToStack('invoice_number', FALSE, array( 'sprintf' => array( $val['invoice_id'] ) ) );
}
return \IPS\Member::loggedIn()->language()->addToStack( "history_commission_{$val['type']}", FALSE, array( 'htmlsprintf' => array( new \IPS\nexus\Money( $val['amount'], $val['currency'] ), $invoice ) ) );
case 'bought':
try
{
$invoice = \IPS\Theme::i()->getTemplate('invoices', 'nexus')->link( \IPS\nexus\Invoice::load( $val['invoice_id'] ), TRUE );
}
catch ( \OutOfRangeException $e )
{
$invoice = \IPS\Member::loggedIn()->language()->addToStack( 'invoice_number', FALSE, array( 'sprintf' => array( $val['invoice_id'] ) ) );
}
return \IPS\Member::loggedIn()->language()->addToStack( 'history_commission_bought', FALSE, array( 'htmlsprintf' => array( new \IPS\nexus\Money( $val['new_amount'], $val['currency'] ), $invoice, new \IPS\nexus\Money( $val['amount'], $val['currency'] ) ) ) );
case 'manual':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_commission_manual', FALSE, array( 'sprintf' => array( $byStaff, new \IPS\nexus\Money( $val['new'], $val['currency'] ), new \IPS\nexus\Money( $val['old'], $val['currency'] ) ) ) );
}
case 'giftvoucher':
$currency = isset( $val['currency'] ) ? $val['currency'] : \IPS\nexus\Customer::load( $val['by'] )->defaultCurrency();
switch ( $val['type'] )
{
case 'used':
/* If the customer who used this gift card no longer exists, then we need to load up a guest customer object to avoid an OutOfRangeException */
try
{
$customer = \IPS\nexus\Customer::load( $val['by'] );
}
catch( \OutOfRangeException $e )
{
$customer = new \IPS\nexus\Customer;
}
return
\IPS\Member::loggedIn()->language()->addToStack( 'history_giftvoucher_used', FALSE, array( 'htmlsprintf' => array(
new \IPS\nexus\Money( $val['amount'], $currency ),
$val['code'],
\IPS\Theme::i()->getTemplate('global', 'nexus')->userLink( $customer )
) ) );
break;
case 'redeemed':
/* If the customer who redeemed this gift card no longer exists, then we need to load up a guest customer object to avoid an OutOfRangeException */
try
{
$customer = \IPS\nexus\Customer::load( $val['ps_member'] );
}
catch( \OutOfRangeException $e )
{
$customer = new \IPS\nexus\Customer;
}
return
\IPS\Member::loggedIn()->language()->addToStack( 'history_giftvoucher_redeemed', FALSE, array( 'htmlsprintf' => array(
new \IPS\nexus\Money( $val['amount'], $currency ),
$val['code'],
\IPS\Theme::i()->getTemplate('global', 'nexus')->userLink( $customer ),
new \IPS\nexus\Money( $val['newCreditAmount'], $currency )
) ) );
break;
}
break;
case 'info':
$changes = array( \IPS\Member::loggedIn()->language()->addToStack('history_info_change', FALSE, array( 'sprintf' => array( $byCustomer ?: $byStaff ) ) ) );
if ( isset( $val['name'] ) )
{
$name = is_array( $val['name'] ) ? implode( ' ', array_values( $val['name'] ) ) : $val['name'];
$changes[] = \IPS\Member::loggedIn()->language()->addToStack('history_name_changed_from', FALSE, array( 'sprintf' => array( $name ) ) );
}
if ( isset( $val['email'] ) )
{
$changes[] = \IPS\Member::loggedIn()->language()->addToStack('history_email_changed_from', FALSE, array( 'sprintf' => array( $val['email'] ) ) );
}
if ( isset( $val['password'] ) )
{
$changes[] = \IPS\Member::loggedIn()->language()->addToStack('history_password_changed');
}
if ( isset( $val['other'] ) )
{
foreach ( $val['other'] as $change )
{
/* Older versions may not have stored the display value, so we need to account for that */
if( mb_strpos( $change['name'], 'nexus_ccfield_' ) !== FALSE AND is_array( $change['value'] ) )
{
try
{
/* If it's an array, we will start first by assuming it is probably an address */
$value = \IPS\GeoLocation::buildFromJson( json_encode( $change['value'] ) )->toString( ', ' );
/* A bad address will return an empty string */
if( !$value )
{
throw new \BadFunctionCallException;
}
$change['value'] = $value;
}
/* Maybe it wasn't an address or geoip support is disabled */
catch( \BadFunctionCallException $e )
{
$_value = array();
/* We will just loop and implode so we have a string */
foreach( $change['value'] as $k => $v )
{
if( is_array( $v ) )
{
foreach( $v as $_k => $_v )
{
$_value[] = $_k . ': ' . $_v;
}
}
else
{
$_value[] = $k . ': ' . $v;
}
}
$value = implode( ', ', $_value );
$change['value'] = htmlspecialchars( $value, \IPS\HTMLENTITIES, 'UTF-8', FALSE );
}
}
if ( isset( $change['old'] ) )
{
$changes[] = \IPS\Member::loggedIn()->language()->addToStack('history_field_changed_from', FALSE, array( 'sprintf' => array( \IPS\Member::loggedIn()->language()->addToStack( $change['name'] ), $change['old'], $change['value'] ) ) );
}
else
{
$changes[] = \IPS\Member::loggedIn()->language()->addToStack('history_field_changed', FALSE, array( 'sprintf' => array( \IPS\Member::loggedIn()->language()->addToStack( $change['name'] ), $change['value'] ) ) );
}
}
}
return implode( '<br>', $changes );
case 'address':
switch ( $val['type'] )
{
case 'add':
return \IPS\Member::loggedIn()->language()->addToStack('history_address_add', FALSE, array( 'sprintf' => array( (string) \IPS\GeoLocation::buildFromJson( $val['details'] ), $byCustomer ) ) );
case 'edit':
return \IPS\Member::loggedIn()->language()->addToStack('history_address_edit', FALSE, array( 'sprintf' => array( (string) \IPS\GeoLocation::buildFromJson( $val['old'] ), (string) \IPS\GeoLocation::buildFromJson( $val['new'] ), $byCustomer ) ) );
case 'primary_billing':
return \IPS\Member::loggedIn()->language()->addToStack('history_address_primary_billing', FALSE, array( 'sprintf' => array( (string) \IPS\GeoLocation::buildFromJson( $val['details'] ), $byCustomer ) ) );
case 'primary_shipping':
return \IPS\Member::loggedIn()->language()->addToStack('history_address_primary_shipping', FALSE, array( 'sprintf' => array( (string) \IPS\GeoLocation::buildFromJson( $val['details'] ), $byCustomer ) ) );
case 'delete':
return \IPS\Member::loggedIn()->language()->addToStack('history_address_delete', FALSE, array( 'sprintf' => array( (string) \IPS\GeoLocation::buildFromJson( $val['details'] ), $byCustomer ) ) );
}
break;
case 'card':
switch ( $val['type'] )
{
case 'add':
return \IPS\Member::loggedIn()->language()->addToStack('history_card_add', FALSE, array( 'sprintf' => array( $val['number'], $byCustomer ) ) );
case 'delete':
return \IPS\Member::loggedIn()->language()->addToStack('history_card_delete', FALSE, array( 'sprintf' => array( $val['number'], $byCustomer ) ) );
}
break;
case 'alternative':
$altContact = \IPS\nexus\Customer::load( $val['alt_id'] );
$altContact = $altContact->member_id ? $altContact->link() : $val['alt_name'];
switch ( $val['type'] )
{
case 'add':
return \IPS\Member::loggedIn()->language()->addToStack('history_altcontact_add', FALSE, array( 'htmlsprintf' => array( $altContact, $byCustomer ) ) );
case 'edit':
return \IPS\Member::loggedIn()->language()->addToStack('history_altcontact_edit', FALSE, array( 'htmlsprintf' => array( $altContact, $byCustomer ) ) );
case 'delete':
return \IPS\Member::loggedIn()->language()->addToStack('history_altcontact_delete', FALSE, array( 'htmlsprintf' => array( $altContact, $byCustomer ) ) );
}
break;
case 'payout':
try
{
if ( !isset( $val['payout_id'] ) )
{
throw new \OutOfRangeException;
}
$payout = \IPS\Theme::i()->getTemplate('payouts', 'nexus')->link( \IPS\nexus\Payout::load( $val['payout_id'] ) );
}
catch ( \OutOfRangeException $e )
{
if ( isset( $va['currency'] ) )
{
$payout = new \IPS\nexus\Money( $val['amount'], $val['currency'] );
}
else
{
$payout = $val['amount'];
}
}
switch ( $val['type'] )
{
case 'autoprocess':
return \IPS\Member::loggedIn()->language()->addToStack('history_payout_autoprocess', FALSE, array( 'htmlsprintf' => array( $payout ) ) );
case 'request':
return \IPS\Member::loggedIn()->language()->addToStack('history_payout_request', FALSE, array( 'htmlsprintf' => array( $payout ) ) );
case 'cancel':
return \IPS\Member::loggedIn()->language()->addToStack('history_payout_cancel', FALSE, array( 'htmlsprintf' => array( $payout, $byCustomer ?: $byStaff ) ) );
case 'processed':
return \IPS\Member::loggedIn()->language()->addToStack('history_payout_processed', FALSE, array( 'htmlsprintf' => array( $payout, $byStaff ) ) );
case 'dismissed':
return \IPS\Member::loggedIn()->language()->addToStack('history_payout_dismissed', FALSE, array( 'htmlsprintf' => array( $payout, $byStaff ) ) );
}
break;
case 'lkey':
try
{
$purchase = \IPS\Theme::i()->getTemplate('purchases', 'nexus')->link( \IPS\nexus\Purchase::load( $val['ps_id'] ) );
}
catch ( \OutOfRangeException $e )
{
if ( isset( $val['ps_name'] ) )
{
$purchase = $val['ps_name'];
}
else
{
$purchase = \IPS\Member::loggedIn()->language()->addToStack( 'purchase_number', FALSE, array( 'sprintf' => array( $val['ps_id'] ) ) );
}
}
switch ( $val['type'] )
{
case 'activated':
return \IPS\Member::loggedIn()->language()->addToStack('history_lkey_activated', FALSE, array( 'htmlsprintf' => array( $purchase ) ) );
case 'reset':
return \IPS\Member::loggedIn()->language()->addToStack('history_lkey_reset', FALSE, array( 'htmlsprintf' => array( $purchase, $byStaff, $val['new'], $val['key'] ) ) );
}
break;
case 'download':
switch ( $val['type'] )
{
case 'idm':
try
{
if ( \IPS\Application::appIsEnabled( 'downloads' ) === FALSE )
{
/* If the app is disabled, bubble up to avoid an \IPS\Db\Exception for missing tables - we still want to show the log */
throw new \OutOfRangeException;
}
$options = array( 'htmlsprintf' => array( \IPS\Theme::i()->getTemplate( 'customers', 'nexus' )->downloadsLink( \IPS\downloads\File::load( $val['id'] ) ) ) );
}
catch ( \OutOfRangeException $e )
{
$options = array( 'sprintf' => array( $val['name'] ) );
}
return \IPS\Member::loggedIn()->language()->addToStack( 'history_download', FALSE, $options );
case 'attach':
$file = \IPS\Theme::i()->getTemplate( 'editor', 'core', 'global' )->attachedFile( \IPS\Settings::i()->base_url . "applications/core/interface/file/attachment.php?id=" . $val['id'], $val['name'], FALSE );
if ( isset( $val['ps_id'] ) and $val['ps_id'] )
{
try
{
$options = array( 'htmlsprintf' => array( $file, \IPS\Theme::i()->getTemplate('purchases', 'nexus')->link( \IPS\nexus\Purchase::load( $val['ps_id'] ) ) ) );
}
catch ( \OutOfRangeException $e )
{
$options = array( 'htmlsprintf' => array( $file, htmlspecialchars( $val['ps_name'], ENT_QUOTES | \IPS\HTMLENTITIES, 'UTF-8', FALSE ) ) );
}
return \IPS\Member::loggedIn()->language()->addToStack( 'history_download_with_purchase', FALSE, $options );
}
return \IPS\Member::loggedIn()->language()->addToStack( 'history_download', FALSE, array( 'htmlsprintf' => $file ) );
}
break;
case 'support':
if ( isset( $val['type'] ) and $val['type'] == 'email' )
{
$by = \IPS\Member::loggedIn()->language()->addToStack( 'history_support_by_email' );
}
else
{
$by = $byCustomer ?: $byStaff;
}
try
{
$options = array( 'htmlsprintf' => array( \IPS\Theme::i()->getTemplate( 'support', 'nexus' )->link( \IPS\nexus\Support\Request::load( $val['id'] ), FALSE ), $by ) );
}
catch ( \OutOfRangeException $e )
{
$options = array( 'sprintf' => array( $val['title'] ), 'htmlsprintf' => array( $by ) );
}
return \IPS\Member::loggedIn()->language()->addToStack( 'history_support', FALSE, $options );
case 'billingagreement':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_billingagreement_' . $val['type'], FALSE, array( 'sprintf' => array( $val['id'], $val['gw_id'], $byCustomer ?: $byStaff ) ) );
break;
case 'note':
return \IPS\Member::loggedIn()->language()->addToStack( 'history_' . $val . '_note', FALSE, array( 'sprintf' => $byStaff ) );
break;
case 'custom':
return $val['message'];
break;
}
return '';
}
);
}
}
@@ -1,13 +1,12 @@
<?php
/**
* @brief Domain Name Lookup
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 11 Oct 2016
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -1,13 +1,12 @@
<?php
/**
* @brief eNom Domain Registrar
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 08 Aug 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\DomainRegistrar;
+28 -6
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Donation Goal Node
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 17 Jun 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Donation;
@@ -126,6 +125,11 @@ class _Goal extends \IPS\Node\Model
if( isset( $values['d_name'] ) )
{
\IPS\Lang::saveCustom( 'nexus', "nexus_donategoal_{$this->id}", $values['d_name'] );
/* Save the SEO name */
$this->name_seo = \IPS\Http\Url\Friendly::seoTitle( $values[ 'd_name' ][ \IPS\Lang::defaultLanguage() ] );
$this->save();
unset( $values['d_name'] );
}
@@ -178,6 +182,11 @@ class _Goal extends \IPS\Node\Model
\IPS\Settings::i()->donation_goals = $count;
unset( \IPS\Data\Store::i()->settings );
}
/**
* @brief Generated URL storage
*/
protected $_url;
/**
* Get URL
@@ -186,6 +195,19 @@ class _Goal extends \IPS\Node\Model
*/
public function url( $action=NULL )
{
return \IPS\Http\Url::internal( 'app=nexus&module=clients&controller=donations&id=' . $this->_id, 'front', 'clientsdonate', array(), \IPS\Settings::i()->nexus_https );
/* self-heal missing seo titles */
if( $this->name_seo === null )
{
$language = \IPS\Lang::load( \IPS\Lang::defaultLanguage() );
$this->name_seo = \IPS\Http\Url\Friendly::seoTitle( $language->get( 'nexus_donategoal_' . $this->_id ) );
$this->save();
}
if( $this->_url === null )
{
$this->_url = \IPS\Http\Url::internal( 'app=nexus&module=clients&controller=donations&id=' . $this->_id, 'front', 'clientsdonate', array( $this->name_seo ), \IPS\Settings::i()->nexus_https );
}
return $this->_url;
}
}
@@ -1,13 +1,12 @@
<?php
/**
* @brief Credit card input class for Form Builder
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Form;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Bulk discount input class for Form Builder
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 2 May 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Form;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Loyalty discount input class for Form Builder
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 2 May 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Form;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Usergroup discount input class for Form Builder
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 2 May 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Form;
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Ftp input class for Form Builder
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 17 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Form;
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Length input class for Form Builder
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 19 Jun 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Form;
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Money input class for Form Builder
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 12 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Form;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Renewal Term input class for Form Builder
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 25 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Form;
@@ -129,6 +128,19 @@ class _RenewalTerm extends \IPS\Helpers\Form\FormAbstract
}
$costs = new \IPS\nexus\Money( $this->value['amount'], $currency );
}
/* Perform some sanity checks */
if ( $this->value['term'] < 1 )
{
$this->value = new \IPS\nexus\Purchase\RenewalTerm( $costs, new \DateInterval( 'P' . 1 . mb_strtoupper( $this->value['unit'] ) ), NULL, $this->options['addToBase'] ? isset( $this->value['add'] ) : FALSE );
throw new \LengthException( \IPS\Member::loggedIn()->language()->addToStack('form_number_min', FALSE, array( 'sprintf' => array( 0 ) ) ) );
}
if ( !in_array( $this->value['unit'], array( 'd', 'm', 'y' ) ) )
{
$this->value = new \IPS\nexus\Purchase\RenewalTerm( $costs, new \DateInterval( 'P' . $this->value['term'] . 'D' ), NULL, $this->options['addToBase'] ? isset( $this->value['add'] ) : FALSE );
throw new \OutOfRangeException( 'form_bad_value' );
}
return new \IPS\nexus\Purchase\RenewalTerm( $costs, new \DateInterval( 'P' . $this->value['term'] . mb_strtoupper( $this->value['unit'] ) ), NULL, $this->options['addToBase'] ? isset( $this->value['add'] ) : FALSE );
}
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Shipping method input class for Form Builder
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 19 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Form;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Country/State input class for Form Builder
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 12 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Form;
+28 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Username & Password input class for Form Builder
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 17 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Form;
@@ -32,9 +31,33 @@ class _UserPass extends \IPS\Helpers\Form\FormAbstract
public function html()
{
$value = is_array( $this->value ) ? $this->value : json_decode( \IPS\Text\Encrypt::fromTag( $this->value )->decrypt(), TRUE );
$defaultValue = is_array( $this->defaultValue ) ? $this->defaultValue : json_decode( \IPS\Text\Encrypt::fromTag( $this->defaultValue )->decrypt(), TRUE );
if ( isset( $value['pw'] ) and isset( $defaultValue['pw'] ) and $value['pw'] and $value['pw'] === $defaultValue['pw'] and !$this->error )
{
$value['pw'] = '********';
}
return \IPS\Theme::i()->getTemplate( 'forms', 'nexus', 'global' )->usernamePassword( $this->name, $value );
}
/**
* Get Value
*
* @return mixed
*/
public function getValue()
{
$value = parent::getValue();
if ( isset( $value['pw'] ) and $value['pw'] === '********' )
{
$defaultValue = is_array( $this->defaultValue ) ? $this->defaultValue : json_decode( \IPS\Text\Encrypt::fromTag( $this->defaultValue )->decrypt(), TRUE );
$value['pw'] = $defaultValue['pw'];
}
return $value;
}
/**
* String Value
*
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Weight input class for Form Builder
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 14 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Form;
@@ -1,13 +1,12 @@
<?php
/**
* @brief MaxMind Request
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 07 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Fraud\MaxMind;
@@ -1,13 +1,12 @@
<?php
/**
* @brief MaxMind Response
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 07 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Fraud\MaxMind;
File diff suppressed because it is too large. Load diff
@@ -1,13 +1,12 @@
<?php
/**
* @brief Authorize.Net Gateway
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 17 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway;
@@ -127,13 +126,13 @@ class _AuthorizeNet extends \IPS\nexus\Gateway
/**
* Payment Screen Fields
*
* @param \IPS\nexus\Invoice $invoice Invoice
* @param \IPS\nexus\Money $amount The amount to pay now
* @param \IPS\Member $member The member the payment screen is for (if in the ACP charging to a member's card) or NULL for currently logged in member
* @param array $recurrings Details about recurring costs
* @param \IPS\nexus\Invoice $invoice Invoice
* @param \IPS\nexus\Money $amount The amount to pay now
* @param \IPS\nexus\Customer $member The member the payment screen is for (if in the ACP charging to a member's card) or NULL for currently logged in member
* @param array $recurrings Details about recurring costs
* @return array
*/
public function paymentScreen( \IPS\nexus\Invoice $invoice, \IPS\nexus\Money $amount, \IPS\Member $member = NULL, $recurrings = array() )
public function paymentScreen( \IPS\nexus\Invoice $invoice, \IPS\nexus\Money $amount, \IPS\nexus\Customer $member = NULL, $recurrings = array() )
{
\IPS\Output::i()->jsFiles = array_merge( \IPS\Output::i()->jsFiles, \IPS\Output::i()->js( 'global_gateways.js', 'nexus', 'global' ) );
@@ -209,10 +208,10 @@ class _AuthorizeNet extends \IPS\nexus\Gateway
}
/* If we're using AIM, we might be able to save */
elseif ( $this->canStoreCards() and \IPS\Member::loggedIn()->member_id )
elseif ( $this->canStoreCards() )
{
$options['save'] = $this;
$options['member'] = $invoice->member;
$options['member'] = $member;
}
/* And then return the card field */
@@ -294,6 +293,13 @@ class _AuthorizeNet extends \IPS\nexus\Gateway
/* Save? */
if ( $card->save )
{
if ( !$transaction->member->member_id )
{
$transaction->member = $transaction->invoice->createAccountForGuest();
\IPS\Session::i()->setMember( $transaction->member );
\IPS\Member\Device::loadOrCreate( $transaction->member, FALSE )->updateAfterAuthentication( NULL );
}
try
{
$storedCard = new \IPS\nexus\Gateway\AuthorizeNet\CreditCard;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Authorize.Net CIM Stored Card
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 17 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway\AuthorizeNet;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Authorize.Net Exception
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 17 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway\AuthorizeNet;
+9 -10
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Gateway Node
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -355,13 +354,13 @@ class _Gateway extends \IPS\Node\Model
/**
* Payment Screen Fields
*
* @param \IPS\nexus\Invoice $invoice Invoice
* @param \IPS\nexus\Money $amount The amount to pay now
* @param \IPS\Member $member The member the payment screen is for (if in the ACP charging to a member's card) or NULL for currently logged in member
* @param array $recurrings Details about recurring costs
* @param \IPS\nexus\Invoice $invoice Invoice
* @param \IPS\nexus\Money $amount The amount to pay now
* @param \IPS\nexus\Customer $member The member the payment screen is for (if in the ACP charging to a member's card) or NULL for currently logged in member
* @param array $recurrings Details about recurring costs
* @return array
*/
public function paymentScreen( \IPS\nexus\Invoice $invoice, \IPS\nexus\Money $amount, \IPS\Member $member = NULL, $recurrings = array() )
public function paymentScreen( \IPS\nexus\Invoice $invoice, \IPS\nexus\Money $amount, \IPS\nexus\Customer $member = NULL, $recurrings = array() )
{
return array();
}
@@ -1,13 +1,12 @@
<?php
/**
* @brief Manual Gateway
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 18 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Manual Pay Out Gateway
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 7 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway\Manual;
@@ -1,13 +1,12 @@
<?php
/**
* @brief PayPal Billing Agreement
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 16 Dec 2015
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway\PayPal;
@@ -1,13 +1,12 @@
<?php
/**
* @brief PayPal Stored Card
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway\PayPal;
@@ -92,7 +91,7 @@ class _CreditCard extends \IPS\nexus\Customer\CreditCard
'type' => $cardType,
'expire_month' => intval( $card->expMonth ),
'expire_year' => intval( $card->expYear ),
'cvv2' => intval( $card->ccv ),
'cvv2' => $card->ccv,
'first_name' => $this->member->cm_first_name,
'last_name' => $this->member->cm_last_name,
) );
@@ -1,13 +1,12 @@
<?php
/**
* @brief PayPal Exception
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway\PayPal;
@@ -34,6 +33,11 @@ class _Exception extends \DomainException
*/
protected $details = array();
/**
* @brief Full Response
*/
protected $fullResponse = '';
/**
* Constructor
*
@@ -43,6 +47,7 @@ class _Exception extends \DomainException
*/
public function __construct( \IPS\Http\Response $response, $refund=FALSE )
{
$this->fullResponse = (string) $response;
\IPS\Log::debug( (string) $response, 'paypal' );
$details = $response->decodeJson();
@@ -112,4 +117,14 @@ class _Exception extends \DomainException
{
return $this->name;
}
/**
* Extra Log Data
*
* @return string
*/
public function extraLogData()
{
return $this->fullResponse;
}
}
@@ -1,13 +1,12 @@
<?php
/**
* @brief PayPal Gateway
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway;
@@ -115,7 +114,7 @@ class _PayPal extends \IPS\nexus\Gateway
}
break;
case 'ILS':
if ( $amount->amount->compare( new \IPS\Math\Number( '40000 ' ) ) !== -1 )
if ( $amount->amount->compare( new \IPS\Math\Number( '40000' ) ) !== -1 )
{
return FALSE;
}
@@ -256,20 +255,20 @@ class _PayPal extends \IPS\nexus\Gateway
/**
* Payment Screen Fields
*
* @param \IPS\nexus\Invoice $invoice Invoice
* @param \IPS\nexus\Money $amount The amount to pay now
* @param \IPS\Member $member The member the payment screen is for (if in the ACP charging to a member's card) or NULL for currently logged in member
* @param array $recurrings Details about recurring costs
* @param \IPS\nexus\Invoice $invoice Invoice
* @param \IPS\nexus\Money $amount The amount to pay now
* @param \IPS\nexus\Customer $member The member the payment screen is for (if in the ACP charging to a member's card) or NULL for currently logged in member
* @param array $recurrings Details about recurring costs
* @return array
*/
public function paymentScreen( \IPS\nexus\Invoice $invoice, \IPS\nexus\Money $amount, \IPS\Member $member = NULL, $recurrings = array() )
public function paymentScreen( \IPS\nexus\Invoice $invoice, \IPS\nexus\Money $amount, \IPS\nexus\Customer $member = NULL, $recurrings = array() )
{
$settings = json_decode( $this->settings, TRUE );
if ( $settings['type'] === 'card' )
{
return array( 'card' => new \IPS\nexus\Form\CreditCard( $this->id . '_card', NULL, FALSE, array(
'types' => array( \IPS\nexus\CreditCard::TYPE_VISA, \IPS\nexus\CreditCard::TYPE_MASTERCARD, \IPS\nexus\CreditCard::TYPE_DISCOVER, \IPS\nexus\CreditCard::TYPE_AMERICAN_EXPRESS ),
'save' => ( $settings['vault'] and \IPS\Member::loggedIn()->member_id ) ? $this : NULL,
'save' => $settings['vault'] ? $this : NULL,
'member' => $member
) ) );
}
@@ -346,6 +345,13 @@ class _PayPal extends \IPS\nexus\Gateway
/* New Card */
else
{
if ( $card->save and !$transaction->member->member_id )
{
$transaction->member = $transaction->invoice->createAccountForGuest();
\IPS\Session::i()->setMember( $transaction->member );
\IPS\Member\Device::loadOrCreate( $transaction->member, FALSE )->updateAfterAuthentication( NULL );
}
if ( $maxMind )
{
$maxMind->setCard( $card );
@@ -376,7 +382,7 @@ class _PayPal extends \IPS\nexus\Gateway
'type' => $cardType,
'expire_month' => intval( $card->expMonth ),
'expire_year' => intval( $card->expYear ),
'cvv2' => intval( $card->ccv ),
'cvv2' => $card->ccv,
'first_name' => $this->_getFirstName( $transaction ),
'last_name' => $this->_getLastName( $transaction ),
'billing_address' => $this->_getAddress( $transaction->invoice->billaddress, $transaction->member )
@@ -402,7 +408,7 @@ class _PayPal extends \IPS\nexus\Gateway
/* Save the card first if the user wants */
if ( $card->save )
{
{
try
{
$storedCard = new \IPS\nexus\Gateway\PayPal\CreditCard;
@@ -1,13 +1,12 @@
<?php
/**
* @brief PayPal Pay Out Gateway
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 7 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway\PayPal;
@@ -1,13 +1,12 @@
<?php
/**
* @brief PayPal Stored Card
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway\Stripe;
@@ -87,7 +86,13 @@ class _CreditCard extends \IPS\nexus\Customer\CreditCard
if ( !isset( $profiles[ $this->method->id ] ) )
{
$response = $this->method->api( 'customers', array( 'metadata' => array( 'id' => $this->member->member_id ) ) );
$response = $this->method->api( 'customers', array(
'description' => $this->member->cm_name,
'email' => $this->member->email,
'metadata' => array(
"Customer ID" => $this->member->member_id
)
) );
$profiles[ $this->method->id ] = $response['id'];
$this->member->cm_profiles = $profiles;
$this->member->save();
@@ -1,13 +1,12 @@
<?php
/**
* @brief Stripe Exception
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway\Stripe;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Stripe Pay Out Gateway
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 7 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway\Stripe;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Stripe Gateway
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 13 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway;
@@ -104,13 +103,13 @@ class _Stripe extends \IPS\nexus\Gateway
/**
* Payment Screen Fields
*
* @param \IPS\nexus\Invoice $invoice Invoice
* @param \IPS\nexus\Money $amount The amount to pay now
* @param \IPS\Member $member The member the payment screen is for (if in the ACP charging to a member's card) or NULL for currently logged in member
* @param array $recurrings Details about recurring costs
* @param \IPS\nexus\Invoice $invoice Invoice
* @param \IPS\nexus\Money $amount The amount to pay now
* @param \IPS\nexus\Customer $member The member the payment screen is for (if in the ACP charging to a member's card) or NULL for currently logged in member
* @param array $recurrings Details about recurring costs
* @return array
*/
public function paymentScreen( \IPS\nexus\Invoice $invoice, \IPS\nexus\Money $amount, \IPS\Member $member = NULL, $recurrings = array() )
public function paymentScreen( \IPS\nexus\Invoice $invoice, \IPS\nexus\Money $amount, \IPS\nexus\Customer $member = NULL, $recurrings = array() )
{
\IPS\Output::i()->jsFiles = array_merge( \IPS\Output::i()->jsFiles, \IPS\Output::i()->js( 'global_gateways.js', 'nexus', 'global' ) );
@@ -134,11 +133,18 @@ class _Stripe extends \IPS\nexus\Gateway
'data-controller' => 'nexus.global.gateways.stripe',
'data-id' => $this->id,
'class' => 'ipsHide',
'data-key' => $settings['publishable_key']
'data-key' => $settings['publishable_key'],
'data-name' => $member ? $member->cm_name : $invoice->member->cm_name,
'data-address1' => ( $invoice->billaddress and isset( $invoice->billaddress->addressLines[0] ) ) ? $invoice->billaddress->addressLines[0] : NULL,
'data-address2' => ( $invoice->billaddress and isset( $invoice->billaddress->addressLines[1] ) ) ? $invoice->billaddress->addressLines[1] : NULL,
'data-city' => $invoice->billaddress ? $invoice->billaddress->city : NULL,
'data-state' => $invoice->billaddress ? $invoice->billaddress->region : NULL,
'data-zip' => $invoice->billaddress ? $invoice->billaddress->postalCode : NULL,
'data-country' => $invoice->billaddress ? $invoice->billaddress->country : NULL,
),
'jsRequired' => TRUE,
'names' => FALSE,
'save' => ( $settings['cards'] and \IPS\Member::loggedIn()->member_id ) ? $this : NULL,
'save' => ( $settings['cards'] ) ? $this : NULL,
'member' => $member,
) ) );
}
@@ -163,10 +169,32 @@ class _Stripe extends \IPS\nexus\Gateway
/* Build data */
$data = array(
'amount' => static::_amountAsCents( $transaction->amount ),
'currency' => $transaction->amount->currency,
'capture' => 'false'
'amount' => static::_amountAsCents( $transaction->amount ),
'currency' => $transaction->amount->currency,
'capture' => 'false',
'description' => $transaction->invoice->title,
'metadata' => array(
"Transaction ID" => $transaction->id,
"Invoice ID" => $transaction->invoice->id,
"Customer ID" => $transaction->member->id,
"Customer Email" => $transaction->member->email,
),
);
if ( $transaction->invoice->shipaddress )
{
$data['shipping'] = array(
'address' => array(
'city' => $transaction->invoice->shipaddress->city,
'country' => $transaction->invoice->shipaddress->country,
'line1' => isset( $transaction->invoice->shipaddress->addressLines[0] ) ? $transaction->invoice->shipaddress->addressLines[0] : NULL,
'line2' => isset( $transaction->invoice->shipaddress->addressLines[1] ) ? $transaction->invoice->shipaddress->addressLines[1] : NULL,
'postal_code' => $transaction->invoice->shipaddress->postalCode,
'state' => $transaction->invoice->shipaddress->region,
),
'name' => $transaction->invoice->member->cm_name,
'phone' => isset( $transaction->invoice->member->cm_phone ) ? $transaction->invoice->member->cm_phone : NULL
);
}
$card = $values[ $this->id . '_card' ];
/* Stored Card */
@@ -183,13 +211,20 @@ class _Stripe extends \IPS\nexus\Gateway
/* Are we saving it? */
$settings = json_decode( $this->settings, TRUE );
if ( $settings['cards'] and $card->save )
{
{
if ( !$transaction->member->member_id )
{
$transaction->member = $transaction->invoice->createAccountForGuest();
\IPS\Session::i()->setMember( $transaction->member );
\IPS\Member\Device::loadOrCreate( $transaction->member, FALSE )->updateAfterAuthentication( NULL );
}
$storedCard = new \IPS\nexus\Gateway\Stripe\CreditCard;
$storedCard->member = $transaction->member;
$storedCard->method = $this;
$storedCard->card = $card;
$storedCard->save();
$profiles = $transaction->member->cm_profiles;
$data['customer'] = $profiles[ $this->id ];
$data['card'] = $storedCard->data;
@@ -204,6 +239,15 @@ class _Stripe extends \IPS\nexus\Gateway
/* Authorize */
$response = $this->api( 'charges', $data );
$transaction->gw_id = $response['id'];
$extra = $transaction->extra;
$extra['stripe'] = array(
'risk_level' => $response['outcome']['risk_level'],
'card' => $response['source']['object'] == 'card' ? array(
'type' => $response['source']['type'],
'last4' => $response['source']['last4'],
) : NULL,
);
$transaction->extra = $extra;
/* Return */
return \IPS\DateTime::ts( $response['created'] )->add( new \DateInterval( 'P7D' ) );
@@ -256,6 +300,21 @@ class _Stripe extends \IPS\nexus\Gateway
$this->api( "charges/{$transaction->gw_id}/refund", $data );
}
/**
* Extra data to show on the ACP transaction page
*
* @param \IPS\nexus\Transaction $transaction Transaction
* @return string
*/
public function extraData( \IPS\nexus\Transaction $transaction )
{
if ( isset( $transaction->extra['stripe'] ) )
{
return \IPS\Theme::i()->getTemplate( 'transactions', 'nexus', 'admin' )->stripeData( $transaction->extra['stripe'] );
}
return NULL;
}
/* !ACP Configuration */
/**
@@ -1,13 +1,12 @@
<?php
/**
* @brief Test Gateway
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway;
@@ -40,7 +39,7 @@ class _Test extends \IPS\nexus\Gateway
* @param array $recurrings Details about recurring costs
* @return array
*/
public function paymentScreen( \IPS\nexus\Invoice $invoice, \IPS\nexus\Money $amount, \IPS\Member $member = NULL, $recurrings = array() )
public function paymentScreen( \IPS\nexus\Invoice $invoice, \IPS\nexus\Money $amount, \IPS\nexus\Customer $member = NULL, $recurrings = array() )
{
return array();
}
@@ -1,13 +1,12 @@
<?php
/**
* @brief 2Checkout Gateway
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 17 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Gateway;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Hosting Account Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 6 Aug 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Hosting;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Hosting Account Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 6 Aug 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Hosting\Cpanel;
@@ -1,13 +1,12 @@
<?php
/**
* @brief CPanel/WHM Server Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 6 Aug 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Hosting\Cpanel;
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Expected Output Monitoring Rule
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 12 Sep 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Hosting;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Hosting Exception
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 11 Aug 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Hosting;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Dummy Server Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 6 Aug 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Hosting\None;
+9 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Hosting Queue Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 6 Aug 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Hosting;
@@ -43,6 +42,11 @@ class _Queue extends \IPS\Node\Model
* @brief [Node] Order Database Column
*/
public static $databaseColumnOrder = 'name';
/**
* @brief [Node] Automatically set position for new nodes
*/
public static $automaticPositionDetermination = FALSE;
/**
* @brief [Node] Sortable?
@@ -1,13 +1,12 @@
<?php
/**
* @brief Hosting Server Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 6 Aug 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Hosting;
+133 -109
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Invoice Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -202,7 +201,7 @@ class _Invoice extends \IPS\Patterns\ActiveRecord
/**
* Get member
*
* @return \IPS\Member
* @return \IPS\nexus\Customer
*/
public function get_member()
{
@@ -598,9 +597,10 @@ class _Invoice extends \IPS\Patterns\ActiveRecord
* Add item
*
* @param \IPS\nexus\Invoice\Item $item The item
* @array int|NULL $cartKey Our cart key for this item, or NULL. Used to make sure items are properly associated with their parents if not bought yet.
* @return int
*/
public function addItem( \IPS\nexus\Invoice\Item $item )
public function addItem( \IPS\nexus\Invoice\Item $item, $cartKey = NULL )
{
/* Set basic data */
$data = array(
@@ -680,7 +680,14 @@ class _Invoice extends \IPS\Patterns\ActiveRecord
/* Add it */
$items = json_decode( $this->_data['items'], TRUE );
$items[] = $data;
if ( $cartKey !== NULL )
{
$items[ $cartKey ] = $data;
}
else
{
$items[] = $data;
}
/* Get the ID */
$ids = array_keys( $items );
@@ -1522,6 +1529,123 @@ class _Invoice extends \IPS\Patterns\ActiveRecord
}
/* !Actions */
/**
* Create account from guest checkout
*
* @return \IPS\nexus\Customer
*/
public function createAccountForGuest()
{
$profileFields = $this->guest_data['profileFields'];
$securityAnswers = isset( $this->guest_data['securityAnswers'] ) ? $this->guest_data['securityAnswers'] : array();
/* If the member has already been created (the user made two separate purchases with the same data), use that, otherwise create one */
try
{
$memberToSave = \IPS\nexus\Customer::load( $this->guest_data['member']['email'], 'email' );
}
catch ( \OutOfRangeException $e )
{
$memberToSave = new \IPS\nexus\Customer;
foreach ( $this->guest_data['member'] as $k => $v )
{
$memberToSave->_data[ $k ] = $v;
$memberToSave->changed[ $k ] = $v;
}
$memberToSave->save();
}
$this->member = $memberToSave;
$this->guest_data = NULL;
$this->save();
/* If we provided answers to security questions in check out, save those */
if ( \IPS\Settings::i()->security_questions_enabled and in_array( \IPS\Settings::i()->security_questions_prompt, array( 'register', 'optional' ) ) )
{
if ( $securityAnswers )
{
foreach ( $securityAnswers as $k => $v )
{
\IPS\Db::i()->insert( 'core_security_answers', array(
'answer_question_id' => $k,
'answer_member_id' => $this->member->member_id,
'answer_answer' => $v
) );
}
$this->member->members_bitoptions['has_security_answers'] = TRUE;
/* Log MFA Enable */
$this->member->logHistory( 'core', 'mfa', array( 'handler' => 'questions', 'enable' => TRUE ) );
}
else
{
$this->member->members_bitoptions['security_questions_opt_out'] = TRUE;
/* Log MFA Optout */
$this->member->logHistory( 'core', 'mfa', array( 'handler' => 'questions', 'enable' => FALSE, 'optout' => TRUE ) );
}
$this->member->save();
}
/* If we've entered an address during checkout, save it */
if ( $this->billaddress !== NULL )
{
$billing = new \IPS\nexus\Customer\Address;
$billing->member = $this->member;
$billing->address = $this->billaddress;
$billing->primary_billing = 1;
$billing->save();
}
if ( $this->shipaddress !== NULL )
{
$shipping = new \IPS\nexus\Customer\Address;
$shipping->member = $this->member;
$shipping->address = $this->shipaddress;
$shipping->primary_shipping = 1;
$shipping->save();
}
$profileFields['member_id'] = $memberToSave->member_id;
\IPS\Db::i()->replace( 'core_pfields_content', $profileFields );
/* Validation */
if ( \IPS\Settings::i()->nexus_checkreg_validate or !$this->total->amount->isGreaterThanZero() )
{
$this->member->postRegistration( FALSE, TRUE );
}
else if( \IPS\Settings::i()->new_reg_notify )
{
\IPS\Email::buildFromTemplate( 'core', 'registration_notify', array( $memberToSave, $profileFields ), \IPS\Email::TYPE_LIST )->send( \IPS\Settings::i()->email_in );
}
/* Update associated transactions */
\IPS\Db::i()->update( 'nexus_billing_agreements', array( 'ba_member' => $this->member->member_id ), array( 'ba_id IN(?)', \IPS\Db::i()->select( 't_billing_agreement', 'nexus_transactions', array( 't_billing_agreement>0 AND t_invoice=? AND t_member=0', $this->id ) ) ) );
\IPS\Db::i()->update( 'nexus_transactions', array( 't_member' => $this->member->member_id ), array( 't_invoice=? AND t_member=0', $this->id ) );
/* Did we use any coupons? */
foreach ( $this->items as $item )
{
if ( $item instanceof \IPS\nexus\extensions\nexus\Item\CouponDiscount )
{
$coupon = \IPS\nexus\Coupon::load( $item->id );
$uses = $coupon->used_by ? json_decode( $coupon->used_by, TRUE ) : array();
if ( isset( $uses[ $this->member->email ] ) )
{
$uses[ $this->member->member_id ] = $uses[ $this->member->email ];
unset( $uses[ $this->member->email ] );
}
else
{
$uses[ $this->member->member_id ] = 1;
}
$coupon->used_by = json_encode( $uses );
$coupon->save();
}
}
return $memberToSave;
}
/**
* Mark as paid
@@ -1539,107 +1663,7 @@ class _Invoice extends \IPS\Patterns\ActiveRecord
/* Create the member account if this was a guest */
if ( !$this->member->member_id and $this->guest_data and $this->requiresLogin() )
{
$profileFields = $this->guest_data['profileFields'];
$securityAnswers = isset( $this->guest_data['securityAnswers'] ) ? $this->guest_data['securityAnswers'] : array();
/* If the member has already been created (the user made two separate purchases with the same data), use that, otherwise create one */
try
{
$memberToSave = \IPS\nexus\Customer::load( $this->guest_data['member']['email'], 'email' );
}
catch ( \OutOfRangeException $e )
{
$memberToSave = new \IPS\nexus\Customer;
foreach ( $this->guest_data['member'] as $k => $v )
{
$memberToSave->_data[ $k ] = $v;
$memberToSave->changed[ $k ] = $v;
}
$memberToSave->save();
$return = $memberToSave;
}
$this->member = $memberToSave;
$this->guest_data = NULL;
$this->save();
/* If we provided answers to security questions in check out, save those */
if ( \IPS\Settings::i()->security_questions_enabled and in_array( \IPS\Settings::i()->security_questions_prompt, array( 'register', 'optional' ) ) )
{
if ( $securityAnswers )
{
foreach ( $securityAnswers as $k => $v )
{
\IPS\Db::i()->insert( 'core_security_answers', array(
'answer_question_id' => $k,
'answer_member_id' => $this->member->member_id,
'answer_answer' => $v
) );
}
$this->member->members_bitoptions['has_security_answers'] = TRUE;
}
else
{
$this->member->members_bitoptions['security_questions_opt_out'] = TRUE;
}
$this->member->save();
}
/* If we've entered an address during checkout, save it */
if ( $this->billaddress !== NULL )
{
$billing = new \IPS\nexus\Customer\Address;
$billing->member = $this->member;
$billing->address = $this->billaddress;
$billing->primary_billing = 1;
$billing->save();
}
if ( $this->shipaddress !== NULL )
{
$shipping = new \IPS\nexus\Customer\Address;
$shipping->member = $this->member;
$shipping->address = $this->shipaddress;
$shipping->primary_shipping = 1;
$shipping->save();
}
$profileFields['member_id'] = $memberToSave->member_id;
\IPS\Db::i()->replace( 'core_pfields_content', $profileFields );
/* Validation */
if ( \IPS\Settings::i()->nexus_checkreg_validate or !$this->total->amount->isGreaterThanZero() )
{
$this->member->postRegistration( FALSE, TRUE );
}
else if( \IPS\Settings::i()->new_reg_notify )
{
\IPS\Email::buildFromTemplate( 'core', 'registration_notify', array( $memberToSave, $profileFields ), \IPS\Email::TYPE_LIST )->send( \IPS\Settings::i()->email_in );
}
/* Update associated transactions */
\IPS\Db::i()->update( 'nexus_billing_agreements', array( 'ba_member' => $this->member->member_id ), array( 'ba_id IN(?)', \IPS\Db::i()->select( 't_billing_agreement', 'nexus_transactions', array( 't_billing_agreement>0 AND t_invoice=? AND t_member=0', $this->id ) ) ) );
\IPS\Db::i()->update( 'nexus_transactions', array( 't_member' => $this->member->member_id ), array( 't_invoice=? AND t_member=0', $this->id ) );
/* Did we use any coupons? */
foreach ( $this->items as $item )
{
if ( $item instanceof \IPS\nexus\extensions\nexus\Item\CouponDiscount )
{
$coupon = \IPS\nexus\Coupon::load( $item->id );
$uses = $coupon->used_by ? json_decode( $coupon->used_by, TRUE ) : array();
if ( isset( $uses[ $this->member->email ] ) )
{
$uses[ $this->member->member_id ] = $uses[ $this->member->email ];
unset( $uses[ $this->member->email ] );
}
else
{
$uses[ $this->member->member_id ] = 1;
}
$coupon->used_by = json_encode( $uses );
$coupon->save();
}
}
$return = $this->createAccountForGuest();
}
/* Init */
@@ -1,13 +1,12 @@
<?php
/**
* @brief Invoice Item Class for Charges
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Invoice\Item;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Invoice Abstract Item Class
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Invoice;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Invoice Item Class for Purchases
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Invoice\Item;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Invoice Item Class for Renewals
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 01 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Invoice\Item;
@@ -61,7 +60,7 @@ class _Renewal extends \IPS\nexus\Invoice\Item
$obj = new static( sprintf( $purchase->member->language()->get('renew_title'), $purchase->name ), $purchase->renewals->cost );
$obj->tax = $purchase->renewals->tax;
$obj->quantity = $cycles;
$obj->application = $purchase->app;
$obj::$application = $purchase->app;
$obj->type = $purchase->type;
$obj->id = $purchase->id;
@@ -240,4 +239,21 @@ class _Renewal extends \IPS\nexus\Invoice\Item
return NULL;
}
}
/**
* Utility method to get the purchase. Useful if we are unsure if the purchase exists, or has been removed due to a refund of the original transaction.
*
* @return \IPS\nexus\Purchase|NULL
*/
public function getPurchase()
{
try
{
return \IPS\nexus\Purchase::load( $this->id );
}
catch( \OutOfRangeException $e )
{
return NULL;
}
}
}
@@ -1,13 +1,12 @@
<?php
/**
* @brief Tax Item
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 9 Dec 2015
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Invoice\Item;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Invoice Items Iterator
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 24 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Invoice;
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Money Object
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 11 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
+4 -7
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Advertisement Package
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 29 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Package;
@@ -449,8 +448,6 @@ class _Ad extends \IPS\nexus\Package
$purchase->extra = $extra;
$purchase->save();
unset( \IPS\Data\Cache::i()->advertisements );
parent::onPurchaseGenerated( $purchase, $invoice );
}
@@ -1,13 +1,12 @@
<?php
/**
* @brief Custom Package Field Node
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 1 May 2013
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Package;
@@ -131,6 +130,7 @@ class _CustomField extends \IPS\CustomField
return !( $node instanceof \IPS\nexus\Package\Group );
} ) ), 'pf_desc' );
$form->add( new \IPS\Helpers\Form\YesNo( 'cf_sticky', $this->sticky, FALSE ), 'pf_type' );
$form->add( new \IPS\Helpers\Form\YesNo( 'cf_allow_attachments', $this->id ? $this->allow_attachments : 1, FALSE, array( ), NULL, NULL, NULL, 'pf_allow_attachments' ) );
$form->addHeader( 'display_settings' );
$form->add( new \IPS\Helpers\Form\YesNo( 'cf_purchase', $this->purchase, FALSE ) );
@@ -146,6 +146,7 @@ class _CustomField extends \IPS\CustomField
unset( $form->elements['']['pf_search_type'] );
unset( $form->elements['']['pf_search_type_on_off'] );
unset( $form->elements['']['pf_format'] );
unset( $form->elements['']['pf_allow_attachments'] );
}
/**
@@ -195,23 +196,27 @@ class _CustomField extends \IPS\CustomField
/**
* Display Value
*
* @param mixed $value The value
* @param mixed $value The value
* @param bool $showSensitiveInformation If TRUE, potentially sensitive data (like passwords) will be displayed - otherwise will be blanked out
* @return string
*/
public function displayValue( $value=NULL )
public function displayValue( $value=NULL, $showSensitiveInformation=FALSE )
{
if ( $this->type === 'UserPass' )
{
if ( is_array( $value ) )
if ( !is_array( $value ) )
{
return \IPS\Theme::i()->getTemplate( 'forms', 'nexus', 'global' )->usernamePasswordDisplay( $value );
$value = json_decode( \IPS\Text\Encrypt::fromTag( $value )->decrypt(), TRUE );
}
else
if ( !$showSensitiveInformation )
{
return \IPS\Theme::i()->getTemplate( 'forms', 'nexus', 'global' )->usernamePasswordDisplay( json_decode( \IPS\Text\Encrypt::fromTag( $value )->decrypt(), TRUE ) );
$value['pw'] = '********';
}
return \IPS\Theme::i()->getTemplate( 'forms', 'nexus', 'global' )->usernamePasswordDisplay( $value );
}
return parent::displayValue( $value );
return parent::displayValue( $value, $showSensitiveInformation );
}
}
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Dedicated Server Package
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 29 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Package;
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Package Group Node
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 29 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Package;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Hosting Package
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 29 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Package;
@@ -399,6 +398,10 @@ class _Hosting extends \IPS\nexus\Package
}
}
}
catch ( \DomainException $e )
{
throw $e;
}
catch ( \Exception $e )
{
throw new \DomainException('domain_not_valid');
+35 -8
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Nexus Package Content Item Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 29 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Package;
@@ -22,7 +21,7 @@ if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* File Model
*/
class _Item extends \IPS\Content\Item implements \IPS\Content\Featurable, \IPS\Content\Shareable, \IPS\Content\Embeddable
class _Item extends \IPS\Content\Item implements \IPS\Content\Featurable, \IPS\Content\Shareable, \IPS\Content\Embeddable, \IPS\Content\MetaData
{
/**
* @brief Application
@@ -69,7 +68,8 @@ class _Item extends \IPS\Content\Item implements \IPS\Content\Featurable, \IPS\C
'num_reviews' => 'reviews',
'unapproved_reviews' => 'unapproved_reviews',
'hidden_reviews' => 'hidden_reviews',
'rating' => 'rating'
'rating' => 'rating',
'meta_data' => 'meta_data'
);
/**
@@ -245,7 +245,24 @@ class _Item extends \IPS\Content\Item implements \IPS\Content\Featurable, \IPS\C
*/
public function embedContent( $params )
{
return \IPS\Theme::i()->getTemplate( 'global', 'nexus' )->embedProduct( $this, $this->url()->setQueryString( $params ), $this->embedImage() );
$memberCurrency = ( ( isset( $_SESSION['currency'] ) and in_array( $_SESSION['currency'], \IPS\nexus\Money::currencies() ) ) ? $_SESSION['currency'] : \IPS\nexus\Customer::loggedIn()->defaultCurrency() );
$package = \IPS\nexus\Package::load( $this->id );
/* Do we have renewal terms? */
$renewalTerm = NULL;
$renewOptions = $package->renew_options ? json_decode( $package->renew_options, TRUE ) : array();
if ( count( $renewOptions ) )
{
$renewalTerm = TRUE;
if ( count( $renewOptions ) === 1 )
{
$renewalTerm = array_pop( $renewOptions );
$renewalTerm = new \IPS\nexus\Purchase\RenewalTerm( new \IPS\nexus\Money( $renewalTerm['cost'][ $memberCurrency ]['amount'], $memberCurrency ), new \DateInterval( 'P' . $renewalTerm['term'] . mb_strtoupper( $renewalTerm['unit'] ) ), $package->tax ? \IPS\nexus\Tax::load( $package->tax ) : NULL, $renewalTerm['add'] );
}
}
\IPS\Output::i()->cssFiles = array_merge( \IPS\Output::i()->cssFiles, \IPS\Theme::i()->css( 'embed.css', 'nexus', 'front' ) );
return \IPS\Theme::i()->getTemplate( 'global', 'nexus' )->embedProduct( $this, $renewalTerm, $this->url()->setQueryString( $params ), $this->embedImage() );
}
/**
@@ -273,4 +290,14 @@ class _Item extends \IPS\Content\Item implements \IPS\Content\Featurable, \IPS\C
}
return parent::mapped($key);
}
/**
* Supported Meta Data Types
*
* @return array
*/
public static function supportedMetaDataTypes()
{
return array( 'core_FeaturedComments' );
}
}
+46 -21
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Package Node
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 29 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -376,7 +375,8 @@ class _Package extends \IPS\Node\Model
{
foreach ( $discounts['loyalty'] as $discount )
{
$count = ( ( $discount['package'] ?: $this->id ) == $this->id ) ? $initialCount : 0;
$comparingPackageId = ( $discount['package'] ?: $this->id );
$count = ( $comparingPackageId == $this->id ) ? $initialCount : 0;
if ( $discount['price'][ $currency ] < $price )
{
$count += $customer->member_id ? $customer->previousPurchasesCount( $discount['package'] ?: $this->id, $discount['active'] ) : 0;
@@ -385,7 +385,7 @@ class _Package extends \IPS\Node\Model
{
foreach ( $_SESSION['cart'] as $item )
{
if ( $item->id == $this->id )
if ( $item->id == $comparingPackageId )
{
$count += $item->quantity;
}
@@ -954,7 +954,7 @@ class _Package extends \IPS\Node\Model
'autoSaveKey' => ( $this->id ? "nexus-pkg-{$this->id}-pg" : "nexus-new-pkg-pg" ),
'attachIds' => $this->id ? array( $this->id, NULL, 'pkg-pg' ) : NULL, 'minimize' => 'p_page_placeholder'
)
), NULL, NULL, NULL, 'p_desc_editor' ) );
), NULL, NULL, NULL, 'p_page' ) );
$form->add( new \IPS\Helpers\Form\YesNo( 'p_support', $this->support, FALSE, array( 'togglesOn' => array( 'p_support_department' ) ) ) );
$form->add( new \IPS\Helpers\Form\Node( 'p_support_department', $this->support ? $this->support_department : 0, FALSE, array( 'class' => 'IPS\nexus\Support\Department', 'zeroVal' => 'none' ), NULL, NULL, NULL, 'p_support_department' ) );
$form->addHeader('package_client_area_renewals');
@@ -2238,6 +2238,11 @@ class _Package extends \IPS\Node\Model
*/
public function canRenewUntil( \IPS\nexus\Purchase $purchase, $admin )
{
if ( !$purchase->expire )
{
return FALSE;
}
if ( $admin )
{
return TRUE;
@@ -2418,7 +2423,14 @@ class _Package extends \IPS\Node\Model
/* Loop through our siblings */
$return = array();
$currency = $purchase->original_invoice->currency;
try
{
$currency = $purchase->original_invoice->currency;
}
catch ( \Exception $e )
{
$currency = $purchase->member->defaultCurrency();
}
$prices = json_decode( $this->base_price, TRUE );
$thisPrice = $prices[ $currency ]['amount'];
foreach ( $this->parent()->children() as $package )
@@ -2614,12 +2626,15 @@ class _Package extends \IPS\Node\Model
$renewalOptionsOnNewPackage = json_decode( $this->renew_options, TRUE );
if ( $purchase->renewals )
{
foreach ( $renewalOptionsOnNewPackage as $renewalOption )
if ( $renewalOptionsOnNewPackage )
{
$term = $purchase->renewals->getTerm();
if ( $renewalOption['add'] and $term['term'] == $renewalOption['term'] and $term['unit'] == $renewalOption['unit'] )
foreach ( $renewalOptionsOnNewPackage as $renewalOption )
{
$priceOfThisPackage += $renewalOption['cost'][ $currency ]['amount'];
$term = $purchase->renewals->getTerm();
if ( $renewalOption['add'] and $term['term'] == $renewalOption['term'] and $term['unit'] == $renewalOption['unit'] )
{
$priceOfThisPackage += $renewalOption['cost'][ $currency ]['amount'];
}
}
}
}
@@ -2651,11 +2666,8 @@ class _Package extends \IPS\Node\Model
{
throw new \InvalidArgumentException;
}
$oldCostPerDay = $purchase->renewals->costPerDay()->amount;
$numberOfDaysInCurrentRenewalTerm = $purchase->renewals->days();
$daysLeftUntilExpiry = new \IPS\Math\Number( (string) \IPS\DateTime::create()->diff( $purchase->expire )->days );
/* What is the closest renewal option on the new package? We'll use that one */
$renewalOptionsInDays = array();
foreach ( $renewalOptionsOnNewPackage as $optionId => $renewalTerm )
{
@@ -2672,9 +2684,20 @@ class _Package extends \IPS\Node\Model
}
$renewalTermToUse = $renewalOptionsInDays[ $closestRenewalOption ];
$newCostPerDay = $renewalTermToUse->costPerDay()->amount;
return new \IPS\nexus\Money( $newCostPerDay->multiply( $daysLeftUntilExpiry )->subtract( $oldCostPerDay->multiply( $daysLeftUntilExpiry ) ), $currency );
/* What is the difference between our current renewal term and the renewal term we're moving to? */
$diff = $purchase->renewals->diff( $renewalTermToUse );
/* Multiply that by how many days are left */
$numberOfDaysInCurrentRenewalTerm = new \IPS\Math\Number( $purchase->renewals->days() );
$daysLeftUntilExpiry = new \IPS\Math\Number( (string) ceil( ( $purchase->expire->getTimestamp() - time() ) / 86400 ) );
if ( $numberOfDaysInCurrentRenewalTerm->compare( $daysLeftUntilExpiry ) === 0 )
{
return $diff;
}
else
{
return new \IPS\nexus\Money( $diff->amount->divide( $numberOfDaysInCurrentRenewalTerm )->multiply( $daysLeftUntilExpiry ), $currency );
}
}
}
@@ -2947,7 +2970,7 @@ class _Package extends \IPS\Node\Model
if ( $this->primary_group and $this->primary_group != $purchase->member->member_group_id and !in_array( $purchase->member->member_group_id, explode( ',', \IPS\Settings::i()->cm_protected ) ) )
{
/* Hang on, are we about to boot someone out the ACP? */
if ( ! ( \IPS\Member\Group::load( $purchase->member->member_group_id )->g_access_cp and !\IPS\Member\Group::load( $this->primary_group )->g_access_cp ) )
if ( ! ( $purchase->member->isAdmin() and !in_array( $this->primary_group, array_keys( \IPS\Member::administrators()['g'] ) ) ) )
{
/* Save the current group */
$extra['old_primary_group'] = $purchase->member->member_group_id;
@@ -2960,6 +2983,7 @@ class _Package extends \IPS\Node\Model
/* And update to the new group */
$purchase->member->member_group_id = $this->primary_group;
$purchase->member->members_bitoptions['ignore_promotions'] = true;
$purchase->member->save();
}
}
@@ -3032,6 +3056,7 @@ class _Package extends \IPS\Node\Model
/* Save */
$purchase->member->cm_return_group = 0;
$purchase->member->members_bitoptions['ignore_promotions'] = false;
$purchase->member->save();
}
}
@@ -1,13 +1,12 @@
<?php
/**
* @brief Product Package
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 29 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Package;
+32 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Product Review
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 5 May 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Package;
@@ -110,4 +109,32 @@ class _Review extends \IPS\Content\Review implements \IPS\Content\ReportCenter,
{
return \IPS\Theme::i()->getTemplate( 'global', static::$application )->commentTableHeader( $this, \IPS\nexus\Package::load( $this->item()->id ), $this->item() );
}
/**
* Get content for embed
*
* @param array $params Additional parameters to add to URL
* @return string
*/
public function embedContent( $params )
{
$memberCurrency = ( ( isset( $_SESSION['currency'] ) and in_array( $_SESSION['currency'], \IPS\nexus\Money::currencies() ) ) ? $_SESSION['currency'] : \IPS\nexus\Customer::loggedIn()->defaultCurrency() );
$package = \IPS\nexus\Package::load( $this->id );
/* Do we have renewal terms? */
$renewalTerm = NULL;
$renewOptions = $package->renew_options ? json_decode( $package->renew_options, TRUE ) : array();
if ( count( $renewOptions ) )
{
$renewalTerm = TRUE;
if ( count( $renewOptions ) === 1 )
{
$renewalTerm = array_pop( $renewOptions );
$renewalTerm = new \IPS\nexus\Purchase\RenewalTerm( new \IPS\nexus\Money( $renewalTerm['cost'][ $memberCurrency ]['amount'], $memberCurrency ), new \DateInterval( 'P' . $renewalTerm['term'] . mb_strtoupper( $renewalTerm['unit'] ) ), $package->tax ? \IPS\nexus\Tax::load( $package->tax ) : NULL, $renewalTerm['add'] );
}
}
\IPS\Output::i()->cssFiles = array_merge( \IPS\Output::i()->cssFiles, \IPS\Theme::i()->css( 'embed.css', 'nexus', 'front' ) );
return \IPS\Theme::i()->getTemplate( 'global', 'nexus' )->embedProductReview( $this, $this->item(), $renewalTerm, $this->url()->setQueryString( $params ) );
}
}
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Payout Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -1,13 +1,12 @@
<?php
/**
* @brief License Key Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 30 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Purchase;
@@ -1,13 +1,12 @@
<?php
/**
* @brief License Key Model - MD5
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 30 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Purchase\LicenseKey;
@@ -1,13 +1,12 @@
<?php
/**
* @brief License Key Model - Standard
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 30 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Purchase\LicenseKey;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Purchase Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -1047,7 +1046,7 @@ class _Purchase extends \IPS\Node\Model
* @param \IPS\Member|NULL $member The member to check (NULL for currently logged in member)
* @return bool
*/
public function canView( \IPS\Member $member = NULL )
public function canView( $member = NULL )
{
$member = $member ?: \IPS\Member::loggedIn();
@@ -1,13 +1,12 @@
<?php
/**
* @brief Renewal Term Object
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 13 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Purchase;
@@ -249,6 +248,67 @@ class _RenewalTerm
return sprintf( \IPS\Member::loggedIn()->language()->get( 'renew_option'), $cost, $this->getTermUnit() );
}
/**
* Get difference between this term and another
*
* @param \IPS\nexus\Purchase\RenewalTerm $otherTerm The other term
* @param bool $returnAsPercentage If TRUE, will return percentage difference rather than money amount
* @return \IPS\nexus\Money|\IPS\Math\Number
*/
public function diff( $otherTerm, $returnAsPercentage = FALSE )
{
/* Sanity check */
if ( $this->cost->currency !== $otherTerm->cost->currency )
{
throw new \DomainException('currencies_dont_match');
}
/* Try to normalise the terms so we can work off multiplying - we want to either be dealing in days or months */
$thisTermDetails = $this->getTerm();
$otherTermDetails = $otherTerm->getTerm();
foreach ( array( 'thisTermDetails', 'otherTermDetails' ) as $t )
{
if ( $$t['unit'] === 'y' )
{
$$t['unit'] = 'm';
$$t['term'] *= 12;
}
if ( $$t['unit'] === 'w' )
{
$$t['unit'] = 'd';
$$t['term'] *= 7;
}
}
/* If the two terms are now based on the same unit of time, we can just multiply */
if ( $thisTermDetails['unit'] === $otherTermDetails['unit'] )
{
$factor = ( new \IPS\Math\Number( (string) $thisTermDetails['term'] ) )->divide( ( new \IPS\Math\Number( (string) $otherTermDetails['term'] ) ) );
$thisCostPerDivision = $this->cost->amount;
$otherCostPerDivision = $otherTerm->cost->amount->multiply( $factor );
}
/* Otherwise we have to work it out based on the cost per day */
else
{
$days = new \IPS\Math\Number( (string) $this->days() );
$thisCostPerDivision = $this->costPerDay()->amount->multiply( $days );
$otherCostPerDivision = $otherTerm->costPerDay()->amount->multiply( $days );
}
/* Work out the saving */
$saving = $otherCostPerDivision->subtract( $thisCostPerDivision );
/* Return in desired format */
if ( $returnAsPercentage )
{
return ( new \IPS\Math\Number('100') )->divide( $otherCostPerDivision, 4 )->multiply( $saving );
}
else
{
return new \IPS\nexus\Money( $saving, $this->cost->currency );
}
}
/**
* To String
*
@@ -278,7 +338,7 @@ class _RenewalTerm
if ( $quantity != 1 )
{
$cost = new \IPS\nexus\Money( $cost->amount->multiply( $quantity ), $cost->currency );
$cost = new \IPS\nexus\Money( $cost->amount->multiply( new \IPS\Math\Number( "$quantity" ) ), $cost->currency );
}
return sprintf( \IPS\Member::loggedIn()->language()->get( 'renew_option'), $cost, $this->getTermUnit() ) ;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Referral Banner Node
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 18 Aug 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -1,13 +1,12 @@
<?php
/**
* @brief EasyPost Shipping Rate
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 19 Jun 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Shipping;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Flat Shipping Rate Node
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 13 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Shipping;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Length Object
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 19 Jun 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Shipping;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Shipping Order Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 19 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Shipping;
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Shipping Rate Interface
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 19 Mar 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Shipping;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Weight Object
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 13 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Shipping;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Support Author Model - Email
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 15 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Support\Author;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Support Author Model - Member
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Support\Author;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Custom Support Field Node
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 16 Apr 2013
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Support;
@@ -140,7 +139,6 @@ class _CustomField extends \IPS\CustomField
public function form( &$form )
{
parent::form( $form );
$form->add( new \IPS\Helpers\Form\Node( 'sf_departments', $this->departments === '*' ? 0 : explode( ',', $this->departments ), TRUE, array( 'class' => 'IPS\nexus\Support\Department', 'multiple' => TRUE, 'zeroVal' => 'all' ) ), 'pf_desc' );
$form->add( new \IPS\Helpers\Form\YesNo( 'sf_validate_ftp', extension_loaded('ftp') ? $this->validate : FALSE, FALSE, array( 'disabled' => !extension_loaded('ftp') ), NULL, NULL, NULL, 'sf_validate_ftp' ), 'pf_not_null' );
@@ -152,9 +150,10 @@ class _CustomField extends \IPS\CustomField
{
\IPS\Member::loggedIn()->language()->words['sf_validate_ftp_warning'] = \IPS\Member::loggedIn()->language()->addToStack( 'sf_validate_ftp_nosftp' );
}
unset( $form->elements[''][1] );
unset( $form->elements['']['pf_search_type'] );
unset( $form->elements['']['pf_search_type_on_off'] );
unset( $form->elements['']['pf_format'] );
}
@@ -180,6 +179,12 @@ class _CustomField extends \IPS\CustomField
}
unset( $values['sf_validate_ftp'] );
}
if( array_key_exists( 'pf_allow_attachments', $values ) )
{
$values[ 'allow_attachments' ] = $values[ 'pf_allow_attachments' ];
unset( $values[ 'pf_allow_attachments' ] );
}
return parent::formatFormValues( $values );
}
@@ -208,16 +213,27 @@ class _CustomField extends \IPS\CustomField
/**
* Display Value
*
* @param mixed $value The value
* @param mixed $value The value
* @param bool $showSensitiveInformation If TRUE, potentially sensitive data (like passwords) will be displayed - otherwise will be blanked out
* @return string
*/
public function displayValue( $value=NULL )
public function displayValue( $value=NULL, $showSensitiveInformation=FALSE )
{
if ( $this->type === 'UserPass' )
{
return \IPS\Theme::i()->getTemplate( 'forms', 'nexus', 'global' )->usernamePasswordDisplay( json_decode( \IPS\Text\Encrypt::fromTag( $value )->decrypt(), TRUE ) );
if ( !is_array( $value ) )
{
$value = json_decode( \IPS\Text\Encrypt::fromTag( $value )->decrypt(), TRUE );
}
if ( !$showSensitiveInformation )
{
$value['pw'] = '********';
}
return \IPS\Theme::i()->getTemplate( 'forms', 'nexus', 'global' )->usernamePasswordDisplay( $value );
}
return parent::displayValue( $value );
return parent::displayValue( $value, $showSensitiveInformation );
}
}
@@ -1,13 +1,12 @@
<?php
/**
* @brief Support Department Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 8 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Support;
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Support Log Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 14 Nov 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Support;
+5 -6
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Support Reply Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 9 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Support;
@@ -397,7 +396,7 @@ class _Reply extends \IPS\Content\Comment implements \IPS\Content\Hideable
break;
}
$email->send( $to, $cc, $bcc, $fromEmail, $fromName );
$email->send( $to, $cc, $bcc, $fromEmail, $fromName, array( 'Message-Id' => "<IPS-{$this->id}-SR{$this->item()->id}.{$this->item()->email_key}-{$fromEmail}>" ) );
}
/**
@@ -1,13 +1,12 @@
<?php
/**
* @brief Support Request Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 8 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Support;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Support Severity Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 9 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Support;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Support Status Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 8 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Support;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Support Stock Action Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 15 Apr 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Support;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Support Requests Stream
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 11 Sep 2016
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus\Support;
+4 -5
View File
@@ -1,13 +1,12 @@
<?php
/**
* @brief Tax Rate Node
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -1,13 +1,12 @@
<?php
/**
* @brief Transaction Model
* @author <a href='http://www.invisionpower.com'>Invision Power Services, Inc.</a>
* @copyright (c) 2001 - 2016 Invision Power Services, Inc.
* @license http://www.invisionpower.com/legal/standards/
* @package IPS Community Suite
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Nexus
* @since 10 Feb 2014
* @version SVN_VERSION_NUMBER
*/
namespace IPS\nexus;
@@ -453,7 +452,7 @@ class _Transaction extends \IPS\Patterns\ActiveRecord
public function runFraudCheck( $maxMind=NULL )
{
/* Run MaxMind */
if ( \IPS\Settings::i()->maxmind_key )
if ( \IPS\Settings::i()->maxmind_key and ( !\IPS\Settings::i()->maxmind_gateways or \IPS\Settings::i()->maxmind_gateways == '*' or in_array( $this->method->id, explode( ',', \IPS\Settings::i()->maxmind_gateways ) ) ) )
{
if ( $maxMind === NULL )
{