4 +--------------------------------------------------------------------+
5 | Copyright CiviCRM LLC. All rights reserved. |
7 | This work is published under the GNU AGPLv3 license with some |
8 | permitted exceptions and without any warranty. For full license |
9 | and copyright information, see https://civicrm.org/licensing |
10 +--------------------------------------------------------------------+
16 * @copyright CiviCRM LLC https://civicrm.org/licensing
22 namespace Civi\Api4\Service\Schema\Joinable
;
24 class OptionValueJoinable
extends Joinable
{
28 protected $optionGroupName;
31 * @param string $optionGroup
32 * Can be either the option group name or ID
33 * @param string|null $alias
35 * @param string $keyColumn
36 * Which column to use to join, defaults to "value"
38 public function __construct($optionGroup, $alias = NULL, $keyColumn = 'value') {
39 $this->optionGroupName
= $optionGroup;
40 $optionValueTable = 'civicrm_option_value';
42 // default join alias to option group name, e.g. activity_type
43 if (!$alias && !is_numeric($optionGroup)) {
44 $alias = $optionGroup;
47 parent
::__construct($optionValueTable, $keyColumn, $alias);
49 if (!is_numeric($optionGroup)) {
50 $subSelect = 'SELECT id FROM civicrm_option_group WHERE name = "%s"';
51 $subQuery = sprintf($subSelect, $optionGroup);
52 $condition = sprintf('%s.option_group_id = (%s)', $alias, $subQuery);
55 $condition = sprintf('%s.option_group_id = %d', $alias, $optionGroup);
58 $this->addCondition($condition);
62 * The existing condition must also be re-aliased
64 * @param string $alias
68 public function setAlias($alias) {
69 foreach ($this->conditions
as $index => $condition) {
70 $search = $this->alias
. '.';
71 $replace = $alias . '.';
72 $this->conditions
[$index] = str_replace($search, $replace, $condition);
75 parent
::setAlias($alias);