CRM-15619 regreesion fix on Event's id
authormonishdeb <monish.deb@webaccessglobal.com>
Fri, 24 Apr 2015 21:36:52 +0000 (03:06 +0530)
committermonishdeb <monish.deb@webaccessglobal.com>
Fri, 24 Apr 2015 21:36:52 +0000 (03:06 +0530)
----------------------------------------
* CRM-15619: Api breaks
  https://issues.civicrm.org/jira/browse/CRM-15619

CRM/Contact/BAO/Query.php
CRM/Event/BAO/Event.php
xml/schema/Event/Event.xml

index 8a96542ce69fce0bb45d274a7804fce64c3b3b93..ef207bbb058a92f26d1c7542367592ea9ce4b5bd 100644 (file)
@@ -5658,11 +5658,17 @@ AND   displayRelType.is_active = 1
    * @return array
    */
   public static function buildQillForFieldValue($daoName, $fieldName, $fieldValue, $op, $pseduoExtraParam = array()) {
-    $pseduoOptions = CRM_Core_PseudoConstant::get($daoName, $fieldName, $pseduoExtraParam = array());
     $qillOperators = CRM_Core_SelectValues::getSearchBuilderOperators();
+
     if ($fieldName == 'activity_type_id') {
       $pseduoOptions = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'label', TRUE);
     }
+    elseif ($daoName == 'CRM_Event_DAO_Event' && $fieldName == 'id') {
+      $pseduoOptions = CRM_Event_BAO_Event::getEvents(0, $fieldValue, TRUE, TRUE, TRUE);
+    }
+    else {
+      $pseduoOptions = CRM_Core_PseudoConstant::get($daoName, $fieldName, $pseduoExtraParam = array());
+    }
 
     //For those $fieldName which don't have any associated pseudoconstant defined
     if (empty($pseduoOptions)) {
index e87dd2d235cced9f64bd44cc351c101290496cd3..84c64b4bfa08867af47781d43dc13f964072d222 100644 (file)
@@ -252,27 +252,35 @@ class CRM_Event_BAO_Event extends CRM_Event_DAO_Event {
    *   0 returns current and future events.
    *                                  1 if events all are required
    *                                  2 returns events since 3 months ago
-   * @param bool|int $id int id of a specific event to return
+   * @param int|array $id single int event id or array of multiple event ids to return
    * @param bool $isActive
    *   true if you need only active events.
    * @param bool $checkPermission
    *   true if you need to check permission else false.
+   * @param bool $titleOnly
+   *   true if you need only title not appended with start date
    *
    * @return array
    */
   public static function getEvents(
     $all = 0,
-    $id = FALSE,
+    $id = NULL,
     $isActive = TRUE,
-    $checkPermission = TRUE
+    $checkPermission = TRUE,
+    $titleOnly = FALSE
   ) {
     $query = "
 SELECT `id`, `title`, `start_date`
 FROM   `civicrm_event`
 WHERE  ( civicrm_event.is_template IS NULL OR civicrm_event.is_template = 0 )";
 
-    if ($id) {
-      $query .= " AND `id` = {$id}";
+    if (!empty($id)) {
+      if (is_array($id)) {
+        $query .= " AND `id` IN (" . implode(',', $id) . ")";
+      }
+      else {
+        $query .= " AND `id` = {$id}";
+      }
     }
     elseif ($all == 0) {
       // find only events ending in the future
@@ -303,7 +311,10 @@ WHERE  ( civicrm_event.is_template IS NULL OR civicrm_event.is_template = 0 )";
         ) &&
         $dao->title
       ) {
-        $events[$dao->id] = $dao->title . ' - ' . CRM_Utils_Date::customFormat($dao->start_date);
+        $events[$dao->id] = $dao->title;
+        if (!$titleOnly) {
+          $events[$dao->id] .= ' - ' . CRM_Utils_Date::customFormat($dao->start_date);
+        }
       }
     }
 
index fb07045f9a9505b3419bfa21c85fa5eb937cf9e4..052bba1ed4a66919da83cd3279842b9d81f627cb 100644 (file)
     <required>true</required>
     <comment>Event</comment>
     <add>1.7</add>
-   <pseudoconstant>
-      <table>civicrm_event</table>
-      <keyColumn>id</keyColumn>
-      <labelColumn>title</labelColumn>
-    </pseudoconstant>
   </field>
   <primaryKey>
     <name>id</name>