/** * Add element to form. * * @param CRM_Core_Form $form */ public static function add(&$form) { $error = NULL; $config = CRM_Core_Config::singleton(); $useSSL = FALSE; if (!function_exists('recaptcha_get_html')) { require_once 'packages/recaptcha/recaptchalib.php'; } // See if we are using SSL if (CRM_Utils_System::isSSL()) { $useSSL = TRUE; } $html = recaptcha_get_html($config->recaptchaPublicKey, $error, $useSSL); $form->assign('recaptchaHTML', $html); $form->assign('recaptchaOptions', $config->recaptchaOptions); $form->add('text', 'g-recaptcha-response', 'reCaptcha', NULL, TRUE); $form->registerRule('recaptcha', 'callback', 'validate', 'CRM_Utils_ReCAPTCHA'); if ($form->isSubmitted() && empty($form->_submitValues['g-recaptcha-response'])) { $form->setElementError('g-recaptcha-response', ts('Input text must match the phrase in the image. Please review the image and re-enter matching text.')); } }
/** * Reset values for all options those are full. * * @param array $optionFullIds * @param CRM_Core_Form $form */ public static function resetElementValue($optionFullIds = array(), &$form) { if (!is_array($optionFullIds) || empty($optionFullIds) || !$form->isSubmitted()) { return; } foreach ($optionFullIds as $fldId => $optIds) { $name = "price_{$fldId}"; if (!$form->elementExists($name)) { continue; } $element = $form->getElement($name); $eleType = $element->getType(); $resetSubmitted = FALSE; switch ($eleType) { case 'text': if ($element->getValue() && $element->isFrozen()) { $label = "{$element->getLabel()}<tt>(x)</tt>"; $element->setLabel($label); $element->setPersistantFreeze(); $resetSubmitted = TRUE; } break; case 'group': if (is_array($element->_elements)) { foreach ($element->_elements as $child) { $childType = $child->getType(); $methodName = 'getName'; if ($childType) { $methodName = 'getValue'; } if (in_array($child->{$methodName}(), $optIds) && $child->isFrozen()) { $resetSubmitted = TRUE; $child->setPersistantFreeze(); } } } break; case 'select': $value = $element->getValue(); if (in_array($value[0], $optIds)) { foreach ($element->_options as $option) { if ($option['attr']['value'] === "crm_disabled_opt-{$value[0]}") { $placeholder = html_entity_decode($option['text'], ENT_QUOTES, "UTF-8"); $element->updateAttributes(array('placeholder' => $placeholder)); break; } } $resetSubmitted = TRUE; } break; } //finally unset values from submitted. if ($resetSubmitted) { self::resetSubmittedValue($name, $optIds, $form); } } }