function preProcess()
 {
     $cid = CRM_Utils_Request::retrieve('cid', 'Positive', $this, FALSE);
     $oid = CRM_Utils_Request::retrieve('oid', 'Positive', $this, FALSE);
     if ($oid) {
         $this->_id = CRM_Utils_Request::retrieve('oid', 'Positive', $this, FALSE);
     } else {
         $this->assign('hide_contact', TRUE);
         $this->_id = $cid;
     }
     if (!CRM_Utils_Rule::positiveInteger($this->_id)) {
         CRM_Core_Error::fatal('We need a valid discount ID for view');
     }
     $this->assign('id', $this->_id);
     $defaults = array();
     $params = array('id' => $this->_id);
     require_once 'CRM/CiviDiscount/BAO/Item.php';
     CRM_CiviDiscount_BAO_Item::retrieve($params, $defaults);
     require_once 'CRM/CiviDiscount/BAO/Track.php';
     if ($cid) {
         $rows = CRM_CiviDiscount_BAO_Track::getUsageByContact($this->_id);
     } else {
         $rows = CRM_CiviDiscount_BAO_Track::getUsageByOrg($this->_id);
     }
     $this->assign('rows', $rows);
     $this->assign('code_details', $defaults);
     $this->ajaxResponse['tabCount'] = count($rows);
     if (!empty($defaults['code'])) {
         CRM_Utils_System::setTitle($defaults['code']);
     }
 }
 /**
  * Constructor
  * @param string $entity
  * @param integer $entity_id
  * @param integer $contact_id
  * @param string $code
  * @param boolean $is_anonymous - ie are we trying to calculate whether it would be possible to find a discount cod
  */
 function __construct($entity, $entity_id, $contact_id, $code, $is_display_field_mode)
 {
     if (empty($code) && empty($contact_id) && !$is_display_field_mode) {
         $this->discounts = array();
     } else {
         $this->discounts = CRM_CiviDiscount_BAO_Item::getValidDiscounts();
     }
     $this->entity = $entity;
     $this->contact_id = $contact_id;
     $this->entity_id = $entity_id;
     $this->code = trim($code);
     $this->is_display_field_mode = $is_display_field_mode;
 }
 /**
  * Add the membership log record.
  *
  * @param array $params
  *   Values to use in create.
  *
  * @return CRM_CiviDiscount_DAO_Track
  */
 public static function create($params)
 {
     $hook = empty($params['id']) ? 'create' : 'edit';
     CRM_Utils_Hook::pre($hook, 'DiscountTrack', CRM_Utils_Array::value('id', $params), $params);
     $dao = new CRM_CiviDiscount_DAO_Track();
     $dao->copyValues($params);
     $dao->save();
     if ($hook == 'create') {
         CRM_CiviDiscount_BAO_Item::incrementUsage($dao->item_id);
     }
     CRM_Utils_Hook::post($hook, 'DiscountTrack', $dao->id, $dao);
     return $dao;
 }
 /**
  * Function to process the form
  *
  * @access public
  * @return None
  */
 public function postProcess()
 {
     if ($this->_action & CRM_Core_Action::DELETE) {
         CRM_CiviDiscount_BAO_Item::del($this->_id);
         CRM_Core_Session::setStatus(ts('Selected Discount has been deleted.'), ts('Deleted'), 'success');
         return;
     }
     if ($this->_action & CRM_Core_Action::COPY) {
         $params = $this->exportValues();
         $newCode = CRM_CiviDiscount_Utils::randomString('abcdefghjklmnpqrstwxyz23456789', 8);
         CRM_CiviDiscount_BAO_Item::copy($this->_cloneID, $params, $newCode);
         CRM_Core_Session::setStatus(ts('Selected Discount has been duplicated.'), ts('Copied'), 'success');
         return;
     }
     $params = $this->exportValues();
     $params['count_max'] = (int) $params['count_max'];
     if ($this->_action & CRM_Core_Action::UPDATE) {
         $params['id'] = $this->_id;
     }
     $params['multi_valued'] = $this->_multiValued;
     if (isset($params['events']) && in_array(0, $params['events']) && count($params['events']) > 1) {
         CRM_Core_Session::setStatus(ts('You selected `any event` and specific events, specific events have been unset'));
         $params['events'] = array(0);
     }
     if (!empty($params['autodiscount_membership_type_id']) && count($params['autodiscount_membership_status_id']) == 0) {
         $params['autodiscount_membership_status_id'] = array('');
     }
     $params['filters'] = $this->getFiltersFromParams($params);
     $params['autodiscount'] = $this->getAutoDiscountFromParams($params);
     if (!empty($params['advanced_autodiscount_filter_entity'])) {
         $this->addAdvancedFilterToAutodiscount($params, $params['advanced_autodiscount_filter_entity'], CRM_Utils_Array::value('advanced_autodiscount_filter_string', $params));
     }
     $item = CRM_CiviDiscount_BAO_Item::add($params);
     CRM_Core_Session::setStatus(ts('The discount \'%1\' has been saved.', array(1 => $item->description ? $item->description : $item->code)), ts('Saved'), 'success');
 }
/**
 * Returns an array of all discount codes.
 */
function _cividiscount_get_discounts()
{
    return CRM_CiviDiscount_BAO_Item::getValidDiscounts();
}
 function preProcess()
 {
     $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this, FALSE);
     require_once 'CRM/Utils/Rule.php';
     if (!CRM_Utils_Rule::positiveInteger($this->_id)) {
         CRM_Core_Error::fatal(ts('We need a valid discount ID for view'));
     }
     $this->assign('id', $this->_id);
     $defaults = array();
     $params = array('id' => $this->_id);
     require_once 'CRM/CiviDiscount/BAO/Item.php';
     CRM_CiviDiscount_BAO_Item::retrieve($params, $defaults);
     $this->assign('code_id', $defaults['id']);
     $this->assign('code', $defaults['code']);
     $this->assign('description', $defaults['description']);
     $this->assign('amount', $defaults['amount']);
     $this->assign('amount_type', $defaults['amount_type']);
     $this->assign('count_use', $defaults['count_use']);
     $this->assign('count_max', $defaults['count_max']);
     $this->assign('is_active', $defaults['is_active']);
     $this->assign('discount_term', $defaults['discount_term']);
     if (array_key_exists('expire_on', $defaults)) {
         $this->assign('expire_on', $defaults['expire_on']);
     }
     if (array_key_exists('active_on', $defaults)) {
         $this->assign('active_on', $defaults['active_on']);
     }
     if (array_key_exists('organization_id', $defaults)) {
         $this->assign('organization_id', $defaults['organization_id']);
         require_once 'CRM/Contact/BAO/Contact.php';
         $orgname = CRM_Contact_BAO_Contact::displayName($defaults['organization_id']);
         $this->assign('organization', $orgname);
     }
     $this->_multiValued = array('autodiscount' => NULL, 'memberships' => NULL, 'events' => NULL, 'pricesets' => NULL, 'pp_types' => NULL);
     foreach ($this->_multiValued as $mv => $info) {
         if (!empty($defaults[$mv])) {
             $v = substr($defaults[$mv], 1, -1);
             $values = explode(CRM_Core_DAO::VALUE_SEPARATOR, $v);
             $defaults[$mv] = array();
             if (!empty($values)) {
                 foreach ($values as $val) {
                     $defaults[$mv][] = $val;
                 }
             }
         }
     }
     require_once 'CRM/CiviDiscount/Utils.php';
     require_once 'CRM/Member/BAO/MembershipType.php';
     if (array_key_exists('pp_types', $defaults)) {
         $pp_types = CRM_CiviDiscount_Utils::getPaymentProcessorTypes();
         $defaults['pp_types'] = CRM_CiviDiscount_Utils::getIdsTitles($defaults['pp_types'], $pp_types);
         $this->assign('pp_types', $defaults['pp_types']);
     }
     if (array_key_exists('events', $defaults)) {
         $events = CRM_CiviDiscount_Utils::getEvents();
         $defaults['events'] = CRM_CiviDiscount_Utils::getIdsTitles($defaults['events'], $events);
         $this->assign('events', $defaults['events']);
     }
     $membershipTypes = CRM_Member_BAO_MembershipType::getMembershipTypes(FALSE);
     if (array_key_exists('memberships', $defaults)) {
         $defaults['memberships'] = CRM_CiviDiscount_Utils::getIdsTitles($defaults['memberships'], $membershipTypes);
         $this->assign('memberships', $defaults['memberships']);
     }
     if (array_key_exists('autodiscount', $defaults)) {
         $defaults['autodiscount'] = CRM_CiviDiscount_Utils::getIdsTitles($defaults['autodiscount'], $membershipTypes);
         $this->assign('autodiscount', $defaults['autodiscount']);
     }
     if (array_key_exists('pricesets', $defaults)) {
         $priceSets = CRM_CiviDiscount_Utils::getPriceSets();
         $defaults['pricesets'] = CRM_CiviDiscount_Utils::getIdsTitles($defaults['pricesets'], $priceSets);
         $this->assign('pricesets', $defaults['pricesets']);
     }
     CRM_Utils_System::setTitle($defaults['code']);
 }
Example #7
0
 static function isValid($code)
 {
     if (!CRM_CiviDiscount_BAO_Item::isExpired($code) && CRM_CiviDiscount_BAO_Item::isActive($code) && CRM_CiviDiscount_BAO_Item::isEnabled($code) && ($code['count_max'] == 0 || $code['count_max'] > $code['count_use'])) {
         return TRUE;
     }
     return FALSE;
 }
 function preProcess()
 {
     $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this, FALSE);
     require_once 'CRM/Utils/Rule.php';
     if (!CRM_Utils_Rule::positiveInteger($this->_id)) {
         CRM_Core_Error::fatal(ts('We need a valid discount ID for view'));
     }
     $this->assign('id', $this->_id);
     $defaults = array();
     $params = array('id' => $this->_id);
     require_once 'CRM/CiviDiscount/BAO/Item.php';
     CRM_CiviDiscount_BAO_Item::retrieve($params, $defaults);
     require_once 'CRM/CiviDiscount/BAO/Track.php';
     $rows = CRM_CiviDiscount_BAO_Track::getUsageByCode($this->_id);
     $this->assign('rows', $rows);
     $this->assign('code_details', $defaults);
     CRM_Utils_System::setTitle($defaults['code']);
 }