Remove PCP pseudoconstant CRM-12464
authorColeman Watts <coleman@civicrm.org>
Sat, 4 May 2013 01:43:12 +0000 (18:43 -0700)
committerColeman Watts <coleman@civicrm.org>
Thu, 30 May 2013 05:14:04 +0000 (22:14 -0700)
----------------------------------------
* CRM-12464:
  http://issues.civicrm.org/jira/browse/CRM-12464

CRM/Core/DAO.php
CRM/Core/PseudoConstant.php
CRM/PCP/BAO/PCP.php
CRM/PCP/Form/PCP.php
CRM/PCP/Page/PCPInfo.php
CRM/PCP/PseudoConstant.php [deleted file]
tests/phpunit/CRM/Core/FieldOptionsTest.php
tests/phpunit/CRM/Core/PseudoConstantTest.php
xml/schema/Event/Event.xml
xml/schema/Event/Participant.xml
xml/schema/PCP/PCP.xml

index 23b47be3a588610fee831268135199701a6df4bd..ecf28df3fc1cc91a19045eda56b605c0f0dbdb8a 100644 (file)
@@ -1771,13 +1771,14 @@ EOS;
   /**
    * Get options for the called BAO object's field.
    * This function can be overridden by each BAO to add more logic related to context.
+   * The overriding function will generally call the lower-level CRM_Core_PseudoConstant::get
    *
    * @param String $fieldName
    * @param String $context: e.g. "search" "edit" "create" "view"
    * @param Array  $props: whatever is known about this bao object
    */
   public static function buildOptions($fieldName, $context = NULL, $props = array()) {
-    // If a given bao does not override this function, it can still be called on that bao
+    // If a given bao does not override this function
     $baoName = get_called_class();
     return CRM_Core_PseudoConstant::get($baoName, $fieldName);
   }
index e795035c221bc936bd7071a69fd83b366177940c..b9552da6efaa20692b5b3fbcb9f012e643d61062 100644 (file)
@@ -277,8 +277,11 @@ class CRM_Core_PseudoConstant {
           $output = self::$cache[$cacheKey];
         }
         else {
-          // Get list of fields for the option table
           $daoName = CRM_Core_AllCoreTables::getClassForTable($pseudoconstant['table']);
+          if (!class_exists($daoName)) {
+            return FALSE;
+          }
+          // Get list of fields for the option table
           $dao = new $daoName;
           $availableFields = array_keys($dao->fieldKeys());
           if (in_array('is_active', $availableFields)) {
index edc94d6323498736a81bea94e65063a54e728ec9..87056f815b11b2b5ff7ca8697ef7b6498752cdb9 100644 (file)
@@ -452,7 +452,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id =1 AND cc.is_test = 0";
 
     $approvedId = CRM_Core_OptionGroup::getValue('pcp_status', 'Approved', 'name');
 
-    $pcpStatus = CRM_PCP_PseudoConstant::pcpStatus();
+    $pcpStatus = CRM_Core_OptionGroup::values("pcp_status");
 
     $params = array('id' => $pcpId);
     CRM_Core_DAO::commonRetrieve('CRM_PCP_DAO_PCP', $params, $pcpInfo);
@@ -564,7 +564,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id =1 AND cc.is_test = 0";
     $pcpTitle  = CRM_Core_DAO::getFieldValue('CRM_PCP_DAO_PCP', $id, 'title');
     $pcpPageType = CRM_Core_DAO::getFieldValue( 'CRM_PCP_DAO_PCP', $id, 'page_type' );
 
-    $pcpStatus = CRM_PCP_PseudoConstant::pcpStatus();
+    $pcpStatus = CRM_Core_OptionGroup::values("pcp_status");
     $pcpStatus = $pcpStatus[$is_active];
 
     CRM_Core_Session::setStatus(ts("%1 status has been updated to %2.", array(1 => $pcpTitle, 2 => $pcpStatus)), 'Status Updated', 'success');
@@ -592,7 +592,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id =1 AND cc.is_test = 0";
    *
    */
   static function sendStatusUpdate($pcpId, $newStatus, $isInitial = FALSE, $component = 'contribute') {
-    $pcpStatus = CRM_PCP_PseudoConstant::pcpStatus();
+    $pcpStatus = CRM_Core_OptionGroup::values("pcp_status");
     $config = CRM_Core_Config::singleton();
 
     if (!isset($pcpStatus[$newStatus])) {
index 62e45cd3660ff39385d04589a5349ebb154c0a8f..a0b2e905d2192d1284fbbad1d0e1de6a01db6e58 100644 (file)
@@ -163,8 +163,12 @@ class CRM_PCP_Form_PCP extends CRM_Core_Form {
     }
     else {
 
-      $status       = array('' => ts('- select -')) + CRM_PCP_PseudoConstant::pcpStatus();
-      $types        = array('' => ts('- select -')) + CRM_PCP_PseudoConstant::pcpType();
+      $status = array('' => ts('- select -')) + CRM_Core_OptionGroup::values("pcp_status");
+      $types = array(
+        '' => ts('- select -'),
+        'contribute' => ts('Contribution'),
+        'event' => ts('Event'),
+      );
       $contribPages = array('' => ts('- select -')) + CRM_Contribute_PseudoConstant::contributionPage();
       $eventPages   = array('' => ts('- select -')) + CRM_Event_PseudoConstant::event(NULL, FALSE, "( is_template IS NULL OR is_template != 1 )");
 
index 697140e37b0b1970866459827de77bdd436b7a81..7c7095363bbe1c7770f4d522677fecae291a9ad2 100644 (file)
@@ -78,7 +78,7 @@ class CRM_PCP_Page_PCPInfo extends CRM_Core_Page {
     CRM_Utils_System::setTitle($pcpInfo['title']);
     $this->assign('pcp', $pcpInfo);
 
-    $pcpStatus = CRM_PCP_PseudoConstant::pcpStatus();
+    $pcpStatus = CRM_Core_OptionGroup::values("pcp_status");
     $approvedId = CRM_Core_OptionGroup::getValue('pcp_status', 'Approved', 'name');
 
     // check if PCP is created by anonymous user
diff --git a/CRM/PCP/PseudoConstant.php b/CRM/PCP/PseudoConstant.php
deleted file mode 100644 (file)
index 80ac08f..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | CiviCRM version 4.3                                                |
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2013                                |
- +--------------------------------------------------------------------+
- | This file is a part of CiviCRM.                                    |
- |                                                                    |
- | CiviCRM is free software; you can copy, modify, and distribute it  |
- | under the terms of the GNU Affero General Public License           |
- | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
- |                                                                    |
- | CiviCRM is distributed in the hope that it will be useful, but     |
- | WITHOUT ANY WARRANTY; without even the implied warranty of         |
- | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
- | See the GNU Affero General Public License for more details.        |
- |                                                                    |
- | You should have received a copy of the GNU Affero General Public   |
- | License and the CiviCRM Licensing Exception along                  |
- | with this program; if not, contact CiviCRM LLC                     |
- | at info[AT]civicrm[DOT]org. If you have questions about the        |
- | GNU Affero General Public License or the licensing of CiviCRM,     |
- | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
- +--------------------------------------------------------------------+
-*/
-
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC (c) 2004-2013
- * $Id$
- *
- */
-
-/**
- * This class holds all the Pseudo constants that are specific to PCP. This avoids
- * polluting the core class and isolates the Event
- */
-class CRM_PCP_PseudoConstant extends CRM_Core_PseudoConstant {
-
-  /**
-   * pcp types
-   *
-   * @var array
-   * @static
-   */
-  private static $pcpType;
-
-  /**
-   * pcp status
-   *
-   * @var array
-   * @static
-   */
-  private static $pcpStatus;
-
-  /**
-   * Get all the PCP types
-   *
-   * @access public
-   *
-   * @return array - array reference of all PCP types
-   * @static
-   */
-  public static function &pcpType() {
-    self::$pcpType = array();
-    if (!self::$pcpType) {
-      self::$pcpType = array(
-        'contribute' => 'Contribution',
-        'event' => 'Event',
-      );
-    }
-    return self::$pcpType;
-  }
-
-  /**
-   * Get all the PCP status
-   *
-   * @access public
-   *
-   * @return array - array reference of all PCP status
-   * @static
-   */
-  public static function &pcpStatus() {
-    self::$pcpStatus = array();
-    if (!self::$pcpStatus) {
-      self::$pcpStatus = CRM_Core_OptionGroup::values("pcp_status");
-    }
-    return self::$pcpStatus;
-  }
-
-  /**
-   * Flush given pseudoconstant so it can be reread from db
-   * nex time it's requested.
-   *
-   * @access public
-   * @static
-   *
-   * @param boolean $name pseudoconstant to be flushed
-   *
-   */
-  public static function flush($name) {
-   if (isset(self::$$name)) {
-      self::$$name = NULL;
-    }
-  }
-}
-
index 302947d5954d19c2a3debca545886b6816170d7c..d3441a14431ecc8a5977d22c634ea6b58943192a 100644 (file)
@@ -28,7 +28,7 @@
 require_once 'CiviTest/CiviUnitTestCase.php';
 
 /**
- * Tests for linking to resource files
+ * Tests for field options
  */
 class CRM_Core_FieldOptionsTest extends CiviUnitTestCase {
   function get_info() {
index 26360f86e4c9898eaba4604d29c48cab2e8784f7..695191f39307d7f4f2bb42b0da8a439791e31038 100644 (file)
@@ -28,7 +28,7 @@
 require_once 'CiviTest/CiviUnitTestCase.php';
 
 /**
- * Tests for linking to resource files
+ * Tests for pseudoconstant retrieval
  */
 class CRM_Core_PseudoConstantTest extends CiviUnitTestCase {
   function get_info() {
@@ -397,6 +397,28 @@ class CRM_Core_PseudoConstantTest extends CiviUnitTestCase {
           'sample' => 'Yahoo',
         ),
       ),
+      'CRM_Event_DAO_Participant' => array(
+        array(
+          'fieldName' => 'status_id',
+          'sample' => 'Registered',
+        ),
+        array(
+          'fieldName' => 'role_id',
+          'sample' => 'Speaker',
+        ),
+      ),
+      'CRM_Event_DAO_Event' => array(
+        array(
+          'fieldName' => 'event_type_id',
+          'sample' => 'Fundraiser',
+        ),
+      ),
+      'CRM_PCP_DAO_PCP' => array(
+        array(
+          'fieldName' => 'status_id',
+          'sample' => 'Approved',
+        ),
+      ),
     );
 
     foreach ($fields as $daoName => $daoFields) {
index 2e3f4aa9a57bc48822cc8134801f7aba5fa7a8dc..3a7f88801c5c7b64fc5d0b47f7806ae11477a325 100644 (file)
@@ -60,9 +60,7 @@
     <title>Event Type ID</title>
     <default>0</default>
     <pseudoconstant>
-      <name>eventType</name>
       <optionGroupName>event_type</optionGroupName>
-      <class>CRM_Event_PseudoConstant</class>
     </pseudoconstant>
     <comment>Event Type ID.Implicit FK to civicrm_option_value where option_group = event_type.</comment> 
     <add>1.7</add> 
index 1d5a9a3b6e8336f9d184047eac5534793cf95064..1d6f07bf0aced6cc1357cdc04e7b0d13ab86c8ae 100644 (file)
       <comment>Participant status ID. FK to civicrm_participant_status_type. Default of 1 should map to status = Registered.</comment>
       <add>1.7</add> 
       <pseudoconstant>
-        <name>participantStatus</name>
-        <table>civicrm_participant_status</table>
+        <table>civicrm_participant_status_type</table>
         <keyColumn>id</keyColumn>
         <labelColumn>name</labelColumn>
-        <class>CRM_Event_PseudoConstant</class>
       </pseudoconstant>
   </field>
   <foreignKey>
@@ -90,9 +88,7 @@
       <uniqueName>participant_role_id</uniqueName>
       <title>Participant Role Id</title>
       <pseudoconstant>
-        <name>participantRole</name>
         <optionGroupName>participant_role</optionGroupName>
-        <class>CRM_Event_PseudoConstant</class>
       </pseudoconstant>
       <headerPattern>/(participant.)?(role)$/i</headerPattern>
       <import>true</import>
index 5cde13f68b0c23f18ff570fce3ec3cd81866ba96..b009a5e4d721a5002daab6f2f32b2e2c77721844 100644 (file)
@@ -41,6 +41,9 @@
       <required>true</required>
       <type>int unsigned</type>
       <add>2.2</add>
+      <pseudoconstant>
+        <optionGroupName>pcp_status</optionGroupName>
+      </pseudoconstant>
   </field>
   <field>      
       <name>title</name>
       <type>varchar</type>   
       <length>64</length>
       <default>'contribute'</default>
-      <add>2.2</add>   
+      <add>2.2</add>
   </field> 
   <field>      
       <name>pcp_block_id</name>