3 months of events & don't check payment for past events
authorAndrew Hunt <andrew@aghstrategies.com>
Wed, 7 Aug 2013 23:54:40 +0000 (19:54 -0400)
committerAndrew Hunt <andrew@aghstrategies.com>
Wed, 7 Aug 2013 23:54:40 +0000 (19:54 -0400)
CRM/Activity/BAO/Activity.php
CRM/Contact/Form/Search/Custom/EventAggregate.php
CRM/Event/BAO/Event.php
CRM/Event/Form/EventFees.php
CRM/Event/Form/Participant.php
CRM/Event/Page/AJAX.php
templates/CRM/Event/Form/Participant.tpl

index 09af16d78b8d85062a5b10df16194102649183f9..e9e5e5ad9fd6036d9057093f4b36cc0141981da9 100644 (file)
@@ -1788,7 +1788,7 @@ SELECT  display_name
       $component = 'Membership';
     }
     elseif ($activity->__table == 'civicrm_participant') {
-      $event = CRM_Event_BAO_Event::getEvents(TRUE, $activity->event_id, TRUE, FALSE);
+      $event = CRM_Event_BAO_Event::getEvents(1, $activity->event_id, TRUE, FALSE);
 
       $roles = CRM_Event_PseudoConstant::participantRole();
       $status = CRM_Event_PseudoConstant::participantStatus();
index b7b86ca725e7c545dd00d04dca58c2a97e943c7f..f6e1230e61aa716af9adacd3c7c2614fb5242541 100644 (file)
@@ -74,7 +74,7 @@ class CRM_Contact_Form_Search_Custom_EventAggregate extends CRM_Contact_Form_Sea
     foreach ($event_type as $eventId => $eventName) {
       $form->addElement('checkbox', "event_type_id[$eventId]", 'Event Type', $eventName);
     }
-    $events = CRM_Event_BAO_Event::getEvents(TRUE);
+    $events = CRM_Event_BAO_Event::getEvents(1);
     $form->add('select', 'event_id', ts('Event Name'), array('' => ts('- select -')) + $events);
 
     $form->addDate('start_date', ts('Payments Date From'), FALSE, array('formatType' => 'custom'));
index 97d35cbdc4bb4d6561b56fd80ed4db6555e67ed3..f399d2dcea677befac29490cd8413e897879218e 100644 (file)
@@ -254,14 +254,16 @@ class CRM_Event_BAO_Event extends CRM_Event_DAO_Event {
   /**
    * Function to get current/future Events
    *
-   * @param $all              boolean true if events all are required else returns current and future events
+   * @param $all              int     0 returns current and future events
+   *                                  1 if events all are required
+   *                                  2 returns events since 3 months ago
    * @param $id               int     id of a specific event to return
    * @param $isActive         boolean true if you need only active events
    * @param $checkPermission  boolean true if you need to check permission else false
    *
    * @static
    */
-  static function getEvents($all = FALSE,
+  static function getEvents($all = 0,
     $id              = FALSE,
     $isActive        = TRUE,
     $checkPermission = TRUE
@@ -274,10 +276,16 @@ WHERE  ( civicrm_event.is_template IS NULL OR civicrm_event.is_template = 0 )";
     if ($id) {
       $query .= " AND `id` = {$id}";
     }
-    elseif (!$all) {
+    elseif ($all == 0) {
+      // find only events ending in the future
       $endDate = date('YmdHis');
       $query .= " AND ( `end_date` >= {$endDate} OR end_date IS NULL )";
     }
+    elseif ($all == 2) {
+      // find only events starting in the last 3 months
+      $startDate = date('YmdHis', strtotime('3 months ago'));
+      $query .= " AND ( `start_date` >= {$startDate} OR start_date IS NULL )";
+    }
     if ($isActive) {
       $query .= " AND civicrm_event.is_active = 1";
     }
index 303933f8b8e8e4d5e2e3cf7a97e1ba40afe69e01..f0890fc5be89a13d975186d6ecbf8b62396a7563 100644 (file)
@@ -78,7 +78,7 @@ class CRM_Event_Form_EventFees {
 
     if ($form->_eventId) {
       //get receipt text and financial type
-      $returnProperities = array( 'confirm_email_text', 'financial_type_id', 'campaign_id' );
+      $returnProperities = array( 'confirm_email_text', 'financial_type_id', 'campaign_id', 'start_date' );
       $details = array();
       CRM_Core_DAO::commonRetrieveAll('CRM_Event_DAO_Event', 'id', $form->_eventId, $details, $returnProperities);
       if ( CRM_Utils_Array::value( 'financial_type_id', $details[$form->_eventId] ) ) {
@@ -121,7 +121,8 @@ class CRM_Event_Form_EventFees {
 
     //CRM-11601 we should keep the record contribution
     //true by default while adding participant
-     if ($form->_action == CRM_Core_Action::ADD && !$form->_mode && $form->_isPaidEvent) {
+     if ($form->_action == CRM_Core_Action::ADD && !$form->_mode && $form->_isPaidEvent
+       && strtotime(CRM_Utils_Array::value('start_date', $details[$form->_eventId])) >= time()) {
       $defaults[$form->_pId]['record_contribution'] = 1;
     }
 
index bf4823d3846c19c1ea6309b42d6aaa700cb35920..3f9a0d6d9c19bed8b09365efdff2e4d4949b15ae 100644 (file)
@@ -751,13 +751,14 @@ SELECT civicrm_custom_group.name as name,
     if ( $this->_eID ) {
       $eventEndDate = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $this->_eID,'end_date');
     }
-    $this->assign('past', FALSE);
+    $this->assign('past', 0);
     if ($this->_action & CRM_Core_Action::UPDATE) {
-      $events = CRM_Event_BAO_Event::getEvents(TRUE, FALSE, FALSE);
+      $events = CRM_Event_BAO_Event::getEvents(1, FALSE, FALSE);
     }
     elseif ($this->getElementValue('past_event') || (isset($eventEndDate) && (CRM_Utils_Date::currentDBDate() > CRM_Utils_Date::processDate($eventEndDate)))) {
-      $events = CRM_Event_BAO_Event::getEvents(TRUE);
-      $this->assign('past', TRUE);
+      $pastval = $this->getElementValue('past_event');
+      $events = CRM_Event_BAO_Event::getEvents($pastval);
+      $this->assign('past', $pastval);
     }
     else {
       $events = CRM_Event_BAO_Event::getEvents();
index bbc4bf6e8d16b42b18a5cac5d2bd7e3b396e50c0..77672acc09cd0aaa5e234e38fdca13d30a23db46 100644 (file)
@@ -119,7 +119,8 @@ GROUP BY cv.label";
   }
 
   function eventList() {
-    $events = CRM_Event_BAO_Event::getEvents(TRUE);
+    $listparams = CRM_Utils_Array::value('listall', $_REQUEST, 1);
+    $events = CRM_Event_BAO_Event::getEvents($listparams);
 
     $elements = array(array('name' => ts('- select -'),
         'value' => '',
index 2e1d685999a4690a7ac48c3aad21a25768e49d48..34135b1b67b2309fb3dac422ebd0f2dc2996fcbf 100644 (file)
           {/if}
           <tr class="crm-participant-form-block-event_id">
             <td class="label">{$form.event_id.label}</td><td class="view-value bold">{$form.event_id.html}&nbsp;
-            {if $action eq 1 && !$past }
-              <br /><a href="#" onclick="buildSelect('event_id'); return false;"
-                       id='past-event'>&raquo; {ts}Include past event(s) in this select list.{/ts}</a>
+            {if $action eq 1 && $past neq 1 }<span id='past-event-section'>
+              <br />&raquo; {ts}Include past event(s) in this select list:{/ts}
+              {if !$past}<a href="#" onclick="buildSelect('event_id', 2); return false;" class='3-mo-past-event'>{ts}past three months{/ts}</a> <span class='3-mo-past-event'>|</span>{/if}
+              <a href="#" onclick="buildSelect('event_id', 1); return false;">{ts}all{/ts}</a></span>
             {/if}
             {if $is_test}
               {ts}(test){/ts}
     {literal}
     <script type="text/javascript">
     // event select
-    function buildSelect( selectID ) {
+    function buildSelect( selectID, listallVal ) {
       var elementID = '#' + selectID;
       cj( elementID ).html('');
       var postUrl = "{/literal}{crmURL p='civicrm/ajax/eventlist' h=0}{literal}";
-      cj.post( postUrl, null, function ( response ) {
+      cj.post( postUrl, {listall:listallVal}, function ( response ) {
         response = eval( response );
         for (i = 0; i < response.length; i++) {
           cj( elementID ).get(0).add(new Option(response[i].name, response[i].value), document.all ? i : null);
         }
-        cj('#past-event').hide( );
-        cj('input[name="past_event"]').val(1);
+        if (listallVal == 1) {
+          cj('#past-event-section').hide( );
+        }
+        else {
+          cj('.3-mo-past-event').hide( );
+        }
+        cj('input[name="past_event"]').val(listallVal);
         cj("#feeBlock").html( '' );
       });
     }