Merge remote branch 'canonical/master' into merge-forward
[civicrm-core.git] / CRM / Core / PseudoConstant.php
index f0df9aac3757f7cf1488cc5d71ed769c4250e293..c7aa357a6684526a9d59ec3e3c02770e43d520bc 100644 (file)
@@ -202,6 +202,13 @@ class CRM_Core_PseudoConstant {
    */
   private static $accountOptionValues;
 
+  /**
+   * Tax Rates
+   * @var array
+   * @static
+   */
+  private static $taxRates;
+
   /**
    * Low-level option getter, rarely accessed directly.
    * NOTE: Rather than calling this function directly use CRM_*_BAO_*::buildOptions()
@@ -599,8 +606,7 @@ class CRM_Core_PseudoConstant {
    * @access public
    * @static
    *
-   * @param boolean $name pseudoconstant to be flushed
-   *
+   * @param bool|string $name pseudoconstant to be flushed
    */
   public static function flush($name = 'cache') {
     if (isset(self::$$name)) {
@@ -618,7 +624,7 @@ class CRM_Core_PseudoConstant {
    *
    * The static array activityType is returned
    *
-   * @param boolean $all - get All Activity  types - default is to get only active ones.
+   * @internal param bool $all - get All Activity  types - default is to get only active ones.
    *
    * @access public
    * @static
@@ -698,10 +704,11 @@ class CRM_Core_PseudoConstant {
    * @access public
    * @static
    *
-   * @param int $id -  Optional id to return
+   * @param bool|int $id -  Optional id to return
    *
-   * @return array - array reference of all State/Provinces.
+   * @param bool $limit
    *
+   * @return array - array reference of all State/Provinces.
    */
   public static function &stateProvince($id = FALSE, $limit = TRUE) {
     if (($id && !CRM_Utils_Array::value($id, self::$stateProvince)) || !self::$stateProvince || !$id) {
@@ -753,7 +760,9 @@ class CRM_Core_PseudoConstant {
    * @access public
    * @static
    *
-   * @param int $id  -     Optional id to return
+   * @param bool|int $id -     Optional id to return
+   *
+   * @param bool $limit
    *
    * @return array - array reference of all State/Province abbreviations.
    */
@@ -819,10 +828,11 @@ WHERE  id = %1";
    * @access public
    * @static
    *
-   * @param int $id - Optional id to return
+   * @param bool|int $id - Optional id to return
    *
-   * @return array - array reference of all countries.
+   * @param bool $applyLimit
    *
+   * @return array - array reference of all countries.
    */
   public static function country($id = FALSE, $applyLimit = TRUE) {
     if (($id && !CRM_Utils_Array::value($id, self::$country)) || !self::$country || !$id) {
@@ -896,8 +906,9 @@ WHERE  id = %1";
    * @access public
    * @static
    *
-   * @return array - array reference of all country ISO codes.
+   * @param bool $id
    *
+   * @return array - array reference of all country ISO codes.
    */
   public static function &countryIsoCode($id = FALSE) {
     if (!self::$countryIsoCode) {
@@ -925,14 +936,13 @@ WHERE  id = %1";
    *
    * Note: any database errors will be trapped by the DAO.
    *
-   * @param string $groupType     type of group(Access/Mailing)
-   * @param boolen $excludeHidden exclude hidden groups.
+   * @param string $groupType type of group(Access/Mailing)
+   * @param bool|\boolen $excludeHidden exclude hidden groups.
    *
    * @access public
    * @static
    *
    * @return array - array reference of all groups.
-   *
    */
   public static function &allGroup($groupType = NULL, $excludeHidden = TRUE) {
     $condition = CRM_Contact_BAO_Group::groupTypeCondition($groupType, $excludeHidden);
@@ -961,8 +971,9 @@ WHERE  id = %1";
    * @access public
    * @static
    *
-   * @return mixed - instance of CRM_Contact_BAO_GroupNesting
+   * @param bool $styledLabels
    *
+   * @return mixed - instance of CRM_Contact_BAO_GroupNesting
    */
   public static function &groupIterator($styledLabels = FALSE) {
     if (!self::$groupIterator) {
@@ -986,14 +997,13 @@ WHERE  id = %1";
    *
    * Note: any database errors will be trapped by the DAO.
    *
-   * @param string $groupType     type of group(Access/Mailing)
-   * @param boolen $excludeHidden exclude hidden groups.
-
+   * @param string $groupType type of group(Access/Mailing)
+   * @param bool|\boolen $excludeHidden exclude hidden groups.
+   *
    * @access public
    * @static
    *
    * @return array - array reference of all groups.
-   *
    */
   public static function group($groupType = NULL, $excludeHidden = TRUE) {
     return CRM_Core_Permission::group($groupType, $excludeHidden);
@@ -1011,8 +1021,11 @@ WHERE  id = %1";
    * @access public
    * @static
    *
-   * @return array - array reference of all groups.
+   * @param bool $onlyPublic
+   * @param null $groupType
+   * @param bool $excludeHidden
    *
+   * @return array - array reference of all groups.
    */
   public static function &staticGroup($onlyPublic = FALSE, $groupType = NULL, $excludeHidden = TRUE) {
     if (!self::$staticGroup) {
@@ -1379,10 +1392,9 @@ WHERE  id = %1";
    * @access public
    * @static
    *
-   * @param int $id -  Optional id to return
+   * @param bool|int $id -  Optional id to return
    *
    * @return array - array reference of all Counties
-   *
    */
   public static function &county($id = FALSE) {
     if (!self::$county) {
@@ -1411,11 +1423,12 @@ WHERE  id = %1";
    * @access public
    * @static
    *
-   * @param boolean $all  - get payment processors     - default is to get only active ones.
+   * @param boolean $all - get payment processors     - default is to get only active ones.
    * @param boolean $test - get test payment processors
    *
-   * @return array - array of all payment processors
+   * @param null $additionalCond
    *
+   * @return array - array of all payment processors
    */
   public static function &paymentProcessor($all = FALSE, $test = FALSE, $additionalCond = NULL) {
     $condition = "is_test = ";
@@ -1445,10 +1458,12 @@ WHERE  id = %1";
    * @access public
    * @static
    *
-   * @param boolean $all  - get payment processors     - default is to get only active ones.
+   * @param boolean $all - get payment processors     - default is to get only active ones.
    *
-   * @return array - array of all payment processor types
+   * @param null $id
+   * @param string $return
    *
+   * @return array - array of all payment processor types
    */
   public static function &paymentProcessorType($all = FALSE, $id = NULL, $return = 'title') {
     $cacheKey = $id . '_' .$return;
@@ -1466,6 +1481,8 @@ WHERE  id = %1";
    *
    * @access public
    *
+   * @param bool $id
+   *
    * @return array - array reference of all World Regions
    * @static
    */
@@ -1496,6 +1513,8 @@ WHERE  id = %1";
    * @access public
    * @static
    *
+   * @param string $column
+   *
    * @return array - array reference of all activity statuses
    */
   public static function &activityStatus($column = 'label') {
@@ -1521,8 +1540,9 @@ WHERE  id = %1";
    * @access public
    * @static
    *
-   * @return array - array reference of all Visibility levels.
+   * @param string $column
    *
+   * @return array - array reference of all Visibility levels.
    */
   public static function &visibility($column = 'label') {
     if (!isset(self::$visibility)) {
@@ -1536,6 +1556,12 @@ WHERE  id = %1";
     return self::$visibility[$column];
   }
 
+  /**
+   * @param $countryID
+   * @param string $field
+   *
+   * @return array
+   */
   public static function &stateProvinceForCountry($countryID, $field = 'name') {
     static $_cache = NULL;
 
@@ -1585,6 +1611,11 @@ ORDER BY name";
     return $result;
   }
 
+  /**
+   * @param $stateID
+   *
+   * @return array
+   */
   public static function &countyForState($stateID) {
     if (is_array($stateID)) {
       $states = implode(", ", $stateID);
@@ -1673,8 +1704,9 @@ WHERE  id = %1
    *
    * @param $filter - get All Email Greetings - default is to get only active ones.
    *
-   * @return array - array reference of all greetings.
+   * @param string $columnName
    *
+   * @return array - array reference of all greetings.
    */
   public static function greeting($filter, $columnName = 'label') {
     $index = $filter['greeting_type'] . '_' . $columnName;
@@ -1784,8 +1816,10 @@ WHERE  id = %1
    *
    * @param boolean $optionGroupName - get All  Option Group values- default is to get only active ones.
    *
-   * @return array - array reference of all Option Group Name
+   * @param null $id
+   * @param null $condition
    *
+   * @return array - array reference of all Option Group Name
    */
   public static function accountOptionValues($optionGroupName, $id = null, $condition = null) {
     $cacheKey = $optionGroupName . '_' . $condition;
@@ -1811,5 +1845,38 @@ WHERE  id = %1
   public static function getModuleExtensions($fresh = FALSE) {
     return CRM_Extension_System::singleton()->getMapper()->getActiveModuleFiles($fresh);
   }
+
+
+  /**
+   * Get all tax rates
+   *
+   * The static array tax rates is returned
+   *
+   * @access public
+   * @static
+   *
+   * @return array - array list of tax rates with the financial type
+   */
+  public static function getTaxRates() {
+    if (!self::$taxRates) {
+      self::$taxRates = array();
+      $sql = "
+        SELECT fa.tax_rate, efa.entity_id
+        FROM civicrm_entity_financial_account efa
+        INNER JOIN civicrm_financial_account fa ON fa.id = efa.financial_account_id
+        INNER JOIN civicrm_option_value cov ON cov.value = efa.account_relationship
+        INNER JOIN civicrm_option_group cog ON cog.id = cov.option_group_id
+        WHERE efa.entity_table = 'civicrm_financial_type'
+        AND cov.name = 'Sales Tax Account is'
+        AND cog.name = 'account_relationship'
+        AND fa.is_active = 1";
+      $dao = CRM_Core_DAO::executeQuery($sql);
+      while ($dao->fetch()) {
+        self::$taxRates[$dao->entity_id] = $dao->tax_rate;
+      }
+    }
+
+    return self::$taxRates;
+  }
 }