/**
* Get dynamic patterns
*
- * @param string $form_name Dynamic form name
+ * @param string $form_name Dynamic form name
+ * @param boolean $legacy Whether to load legacy patterns
*
* @return array
*/
- public function getDynamicPatterns(string $form_name): array
+ public function getDynamicPatterns(string $form_name, bool $legacy = true): array
{
- if (isset($this->dynamic_patterns[$form_name])) {
- return $this->dynamic_patterns[$form_name];
- }
-
$fields = new DynamicFieldsSet($this->zdb, $this->login);
$dynamic_fields = $fields->getList($form_name);
'LABEL',
''
];
- if ($dynamic_field instanceof Choice) {
+ if ($legacy === true || $dynamic_field instanceof Choice) {
$capabilities[] = 'INPUT';
}
foreach ($capabilities as $capability) {
- if (empty($capability)) {
- $skey = $key;
- } else {
- $skey = sprintf('%s_%s', $capability, $key);
+ $skey = sprintf('%s_%s', $capability, $key);
+ switch ($capability) {
+ case 'LABEL':
+ $title = _T('Label for dynamic field "%s"');
+ break;
+ case 'INPUT':
+ $title = _T('Form entry for dynamic field "%s"');
+ break;
+ case '':
+ case 'VALUE':
+ $skey = $key;
+ $title = _T('Value for dynamic field "%s"');
+ break;
}
$dynamic_patterns[strtolower($skey)] = [
'title' => sprintf(
- ($capability == 'LABEL' ? _T('Label for dynamic field "%s"')
- : ($capability == 'INPUT' ? _T('Form entry for dynamic field "%s"') :
- _T('Value for dynamic field "%s"'))
- ),
+ $title,
$dynamic_field->getName()
),
- 'pattern' => sprintf('{%s}', $skey)
+ 'pattern' => sprintf('/{%s}/', $skey)
];
}
}
*/
protected function getMemberPatterns(bool $legacy = true): array
{
- $dynamic_patterns = $this->getDynamicPatterns('adh');
+ $dynamic_patterns = $this->getDynamicPatterns('adh', $legacy);
$m_patterns = [
'adh_title' => [
'title' => _('Title'),
*/
protected function getContributionPatterns($legacy = true): array
{
- $dynamic_patterns = $this->getDynamicPatterns('contrib');
+ $dynamic_patterns = $this->getDynamicPatterns('contrib', $legacy);
$c_patterns = [
'contrib_label' => [
}
if (preg_match("/^{(INPUT_|VALUE_)?DYNFIELD_([0-9]+)_$uform_name}$/", $pattern, $match)) {
/** dynamic field value */
- $capacity = $match[1];
+ $capacity = trim('_', $match[1]);
$field_id = $match[2];
$field_name = $dynamic_fields[$field_id]->getName();
$field_type = $dynamic_fields[$field_id]->getType();
switch ($field_type) {
case DynamicField::CHOICE:
- if ($capacity == 'INPUT_') {
+ if ($capacity == 'INPUT') {
$choice_values = $dynamic_fields[$field_id]->getValues();
foreach ($choice_values as $choice_idx => $choice_value) {
$value .= '<input type="radio" class="box" name="' . $field_name . '" value="' . $field_id . '"';
$this->array($legend['main']['patterns'])->hasSize(8);
$this->array($legend['member']['patterns'])
->hasSize(26)
- ->hasKeys(['label_dynfield_' . $adf->getId() . '_adh', 'input_dynfield_' . $adf->getId() . '_adh']);
+ ->hasKeys(['label_dynfield_' . $adf->getId() . '_adh', 'dynfield_' . $adf->getId() . '_adh']);
$this->array($legend['contribution']['patterns'])
->hasSize(13)
- ->hasKeys(['label_dynfield_' . $cdf->getId() . '_contrib', 'input_dynfield_' . $cdf->getId() . '_contrib']);
+ ->hasKeys(['label_dynfield_' . $cdf->getId() . '_contrib', 'dynfield_' . $cdf->getId() . '_contrib']);
}
/**