/** * Proxy for JFormHelper::loadRuleType(). * * @param string $type The rule type. * @param bool $new Flag to toggle whether we should get a new instance of the object. * * @return mixed JFormRule object on success, false otherwise. * * @see JFormHelper::loadRuleType() * @since 11.1 */ protected function loadRuleType($type, $new = true) { return JFormHelper::loadRuleType($type, $new); }
/** * Helper wrapper method for loadRuleType * * @param string $type The field type. * @param boolean $new Flag to toggle whether we should get a new instance of the object. * * @return mixed JFormField object on success, false otherwise. * * @see JFormHelper::loadRuleType() * @since 3.4 */ public function loadRuleType($type, $new = true) { return JFormHelper::loadRuleType($type, $new); }
/** * Instance js validators for a field. * * @access public static * @param JXMLElement $element The XML field node. * @param string $id The input id. * @return void */ public static function loadValidators($element, $id) { //Show the prompt information if (isset($element['msg-info'])) { self::loadScriptPromptInfo($id, JText::_($element['msg-info'])); } if (!isset($element['class'])) { return; } $class = $element['class']; $instanceIt = false; preg_match_all('/validate\\[(.+)\\]\\s?/', $class, $matches); $validates = array(); if (count($matches[1])) { $validates = explode(",", $matches[1][0]); } $required = isset($element['required']) ? $element['required'] : in_array('required', $validates); if ($required != false) { $instanceIt = true; } else { $element['required'] = true; } $rules = array(); if (isset($validates)) { foreach ($validates as $ruleType) { preg_match_all("/custom\\[([a-zA-Z0-9]+)(_.+)?\\]/", $ruleType, $matchesCustom); if (count($matchesCustom[1])) { $ruleType = $matchesCustom[1][0]; } if ($rule = JFormHelper::loadRuleType($ruleType)) { if ($rule->extended) { $rules[] = $rule; $instanceIt = true; } } } } if ($instanceIt) { return self::render($element, $id, $rules); } }
/** * Validate teh element against a Joomla form Rule * * @param string $type Rule type e.g. 'password' * @param mixed $value Value to validate * @param mixed $path Optional path to load teh rule from * * @throws Exception * * @return bool */ protected function validateJRule($type, $value, $path = null) { if (!is_null($path)) { JFormHelper::addRulePath($path); } $rule = JFormHelper::loadRuleType($type, true); $xml = new SimpleXMLElement('<xml></xml>'); $this->lang->load('com_users'); if (!$rule->test($xml, $value)) { $this->validationError = ''; foreach ($this->app->getMessageQueue() as $i => $msg) { if ($msg['type'] === 'warning') { $this->validationError .= $msg['message'] . '<br />'; } } FabrikWorker::killMessage($this->app, 'warning'); return false; } return true; }
public function bindData($data) { $membership = $this->getMembership(); $db =& $this->db; $user = JFactory::getUser(); $guest = $user->guest; // Create the empty data $this->data = new stdClass(); // Bind username if (RSMembershipHelper::getConfig('choose_username')) { $username = isset($data['username']) ? $data['username'] : ''; if ($guest) { if (empty($username) || strlen(utf8_decode($username)) < 2) { $this->setError(JText::_('COM_RSMEMBERSHIP_PLEASE_TYPE_USERNAME')); return false; } $query = $db->getQuery(true); $query->select($db->qn('id'))->from($db->qn('#__users'))->where($db->qn('username') . ' = ' . $db->q($username)); $db->setQuery($query); if ($db->loadResult()) { $this->setError(JText::_('COM_RSMEMBERSHIP_USERNAME_NOT_OK')); return false; } } $this->data->username = $guest ? $username : $user->username; } // Bind password if (RSMembershipHelper::getConfig('choose_password')) { $password = isset($data['password']) ? $data['password'] : ''; $password2 = isset($data['password2']) ? $data['password2'] : ''; if ($guest) { $version = new JVersion(); // 3.x password strength if ($version->isCompatible('3.1.4')) { JFactory::getLanguage()->load('com_users', JPATH_SITE); $rule = JFormHelper::loadRuleType('password'); $field = new SimpleXMLElement('<field></field>'); if (!$rule->test($field, $password)) { return false; } } else { if (!strlen($password)) { $this->setError(JText::_('COM_RSMEMBERSHIP_PLEASE_TYPE_PASSWORD')); return false; } elseif (strlen($password) < 6) { $this->setError(JText::_('COM_RSMEMBERSHIP_PLEASE_TYPE_PASSWORD_6')); return false; } } if ($password != $password2) { $this->setError(JText::_('COM_RSMEMBERSHIP_PLEASE_CONFIRM_PASSWORD')); return false; } } $this->data->password = $guest ? md5($password) : ''; } // Bind email $email = isset($data['email']) ? $data['email'] : ''; if ($guest) { jimport('joomla.mail.helper'); if (empty($email) || !JMailHelper::isEmailAddress($email)) { $this->setError(JText::_('COM_RSMEMBERSHIP_PLEASE_TYPE_EMAIL')); return false; } } $this->data->email = $guest ? $email : $user->email; // Bind name $name = isset($data['name']) ? $data['name'] : ''; if ($guest && empty($name)) { $this->setError(JText::_('COM_RSMEMBERSHIP_PLEASE_TYPE_NAME')); return false; } $this->data->name = $guest ? $name : $user->name; $sentFields = isset($data['fields']) ? $data['fields'] : array(); $sentMembershipFields = isset($data['membership_fields']) ? $data['membership_fields'] : array(); if (isset($data['membership_fields'])) { $verifyFields = array_merge($sentFields, $sentMembershipFields); } $fields = RSMembership::getCustomFields(); $membership_fields = RSMembership::getCustomMembershipFields($membership->id); $fields = array_merge($fields, $membership_fields); foreach ($fields as $field) { if ($field->required && empty($verifyFields[$field->name]) || $field->rule && !empty($verifyFields[$field->name]) && is_callable('RSMembershipValidation', $field->rule) && !call_user_func(array('RSMembershipValidation', $field->rule), $verifyFields[$field->name])) { $message = JText::_($field->validation); if (empty($message)) { $message = JText::sprintf('COM_RSMEMBERSHIP_VALIDATION_DEFAULT_ERROR', JText::_($field->label)); } $this->setError($message); return false; } } $this->data->fields = $sentFields; $this->data->membership_fields = $sentMembershipFields; // Bind an empty coupon for legacy reasons $this->data->coupon = ''; return true; }