'custom_search', 'return' => 'name', 'value' => $customSearchID, ]); $ext = CRM_Extension_System::singleton()->getMapper(); if (!$ext->isExtensionKey($customSearchClass)) { $customSearchFile = str_replace('_', DIRECTORY_SEPARATOR, $customSearchClass ) . '.php'; } else { $customSearchFile = $ext->keyToPath($customSearchClass); $customSearchClass = $ext->keyToClass($customSearchClass); } $error = include_once $customSearchFile; if ($error == FALSE) { throw new CRM_Core_Exception('Custom search file: ' . $customSearchFile . ' does not exist. Please verify your custom search settings in CiviCRM administrative panel.'); } return [$customSearchID, $customSearchClass, $formValues]; } /** * @param int $csID * @param int $ssID * * @return CRM_Contact_Form_Search_Custom_Base * @throws Exception */ public static function customClass($csID, $ssID) { list($customSearchID, $customSearchClass, $formValues) = self::details($csID, $ssID); if (!$customSearchID) { throw new CRM_Core_Exception('Could not resolve custom search ID'); } // instantiate the new class $customClass = new $customSearchClass($formValues); return $customClass; } /** * @param int $csID * @param int $ssID * * @return mixed */ public static function contactIDSQL($csID, $ssID) { $customClass = self::customClass($csID, $ssID); return $customClass->contactIDs(); } /** * @param $args * * @return array */ public static function &buildFormValues($args) { $args = trim($args); $values = explode("\n", $args); $formValues = []; foreach ($values as $value) { list($n, $v) = CRM_Utils_System::explode('=', $value, 2); if (!empty($v)) { $formValues[$n] = $v; } } return $formValues; } /** * @param int $csID * @param int $ssID * * @return array */ public static function fromWhereEmail($csID, $ssID) { $customClass = self::customClass($csID, $ssID); $from = $customClass->from(); $where = $customClass->where(); return [$from, $where]; } }