function save() { $db = JFactory::getDBO(); $componentType = JRequest::getInt('COMPONENTTYPE'); $componentIdToEdit = JRequest::getInt('componentIdToEdit'); $formId = JRequest::getInt('formId'); $params = JRequest::getVar('param', array(), 'post', 'none', JREQUEST_ALLOWRAW); $params['EMAILATTACH'] = !empty($params['EMAILATTACH']) ? implode(',', $params['EMAILATTACH']) : ''; $just_added = false; if ($componentIdToEdit < 1) { $db->setQuery("SELECT MAX(`Order`)+1 AS MO FROM #__rsform_components WHERE FormId='" . $formId . "'"); $nextOrder = $db->loadResult(); $db->setQuery("INSERT INTO #__rsform_components SET FormId='" . $formId . "', ComponentTypeId='" . $componentType . "', `Order`='" . $nextOrder . "'"); $db->query(); $componentIdToEdit = $db->insertid(); $just_added = true; } $model = $this->getModel('forms'); $lang = $model->getLang(); if (!$just_added && isset($params['ITEMS'])) { $db->setQuery("SELECT cd.* FROM #__rsform_condition_details cd LEFT JOIN #__rsform_conditions c ON (cd.condition_id=c.id) WHERE cd.component_id='" . $componentIdToEdit . "' AND c.lang_code=" . $db->quote($lang)); if ($conditions = $db->loadObjectList()) { $data = RSFormProHelper::getComponentProperties($componentIdToEdit); $oldvalues = RSFormProHelper::explode(RSFormProHelper::isCode($data['ITEMS'])); $newvalues = RSFormProHelper::explode(RSFormProHelper::isCode($params['ITEMS'])); foreach ($oldvalues as $i => $oldvalue) { $oldvalue = reset(explode('|', $oldvalue, 2)); $oldvalue = str_replace(array('[c]', '[g]'), '', $oldvalue); $oldvalues[$i] = $oldvalue; } foreach ($newvalues as $i => $newvalue) { $newvalue = reset(explode('|', $newvalue, 2)); $newvalue = str_replace(array('[c]', '[g]'), '', $newvalue); $newvalues[$i] = $newvalue; } foreach ($conditions as $condition) { $pos = array_search($condition->value, $oldvalues); if ($pos !== false && isset($newvalues[$pos])) { $newvalue = $newvalues[$pos]; if ($condition->value != $newvalue) { $db->setQuery("UPDATE #__rsform_condition_details SET `value`=" . $db->quote($newvalue) . " WHERE id='" . $condition->id . "'"); $db->query(); } } } } } array_walk($params, array('RSFormProHelper', 'escapeArray')); if ($model->_form->Lang != $lang) { $model->saveFormPropertyTranslation($formId, $componentIdToEdit, $params, $lang, $just_added); } if ($componentIdToEdit > 0) { $db->setQuery("SELECT PropertyName FROM #__rsform_properties WHERE ComponentId='" . $componentIdToEdit . "' AND PropertyName IN ('" . implode("','", array_keys($params)) . "')"); $properties = $db->loadResultArray(); foreach ($params as $key => $val) { if (in_array($key, $properties)) { $db->setQuery("UPDATE #__rsform_properties SET PropertyValue='" . $val . "' WHERE PropertyName='" . $key . "' AND ComponentId='" . $componentIdToEdit . "'"); } else { $db->setQuery("INSERT INTO #__rsform_properties SET PropertyValue='" . $val . "', PropertyName='" . $key . "', ComponentId='" . $componentIdToEdit . "'"); } $db->query(); } } $link = 'index.php?option=com_rsform&task=forms.edit&formId=' . $formId; if (JRequest::getVar('tmpl') == 'component') { $link .= '&tmpl=component'; } $this->setRedirect($link); }
function getEditFields() { $isPDF = JRequest::getVar('format') == 'pdf'; $cid = $this->getSubmissionId(); $return = array(); $this->_db->setQuery("SELECT * FROM #__rsform_submissions WHERE SubmissionId='" . $cid . "'"); $submission = $this->_db->loadObject(); if (empty($submission)) { $mainframe = JFactory::getApplication(); $mainframe->redirect('index.php?option=com_rsform&task=submissions.manage'); return $return; } if ($isPDF) { $this->_db->setQuery("SELECT MultipleSeparator, TextareaNewLines FROM #__rsform_forms WHERE FormId='" . $submission->FormId . "'"); $form = $this->_db->loadObject(); $form->MultipleSeparator = str_replace(array('\\n', '\\r', '\\t'), array("\n", "\r", "\t"), $form->MultipleSeparator); } $this->_db->setQuery("SELECT FieldName, FieldValue FROM #__rsform_submission_values WHERE SubmissionId='" . $cid . "'"); $fields = $this->_db->loadObjectList(); foreach ($fields as $field) { $submission->values[$field->FieldName] = $field->FieldValue; } unset($fields); $this->_db->setQuery("SELECT p.PropertyValue, ct.ComponentTypeName, c.ComponentId FROM #__rsform_components c LEFT JOIN #__rsform_properties p ON (p.ComponentId=c.ComponentId) LEFT JOIN #__rsform_component_types ct ON (c.ComponentTypeId=ct.ComponentTypeId) WHERE c.FormId='" . $submission->FormId . "' AND c.Published='1' AND p.PropertyName='NAME' ORDER BY `Order`"); $fields = $this->_db->loadObjectList(); if (empty($fields)) { return $return; } $componentIds = array(); foreach ($fields as $field) { $componentIds[] = $field->ComponentId; } $properties = RSFormProHelper::getComponentProperties($componentIds); foreach ($fields as $field) { $data = $properties[$field->ComponentId]; $new_field = array(); $new_field[0] = $field->PropertyValue; $name = $field->PropertyValue; $value = isset($submission->values[$field->PropertyValue]) ? $submission->values[$field->PropertyValue] : ''; if ($data['NAME'] == 'RSEProPayment') { $field->ComponentTypeName = 'rsepropayment'; } switch ($field->ComponentTypeName) { // skip this field for now, no need to edit it case 'freeText': continue 2; break; default: if ($isPDF) { $new_field[1] = RSFormProHelper::htmlEscape($value); } else { if (strpos($value, "\n") !== false || strpos($value, "\r") !== false) { $new_field[1] = '<textarea style="width: 95%" class="rs_textarea" rows="10" cols="60" name="form[' . $name . ']">' . RSFormProHelper::htmlEscape($value) . '</textarea>'; } else { $new_field[1] = '<input class="rs_inp rs_80"" size="105" type="text" name="form[' . $name . ']" value="' . RSFormProHelper::htmlEscape($value) . '" />'; } } break; case 'textArea': if ($isPDF) { if (isset($data['WYSIWYG']) && $data['WYSIWYG'] == 'YES') { $value = $value; } elseif ($form->TextareaNewLines) { $value = nl2br(RSFormProHelper::htmlEscape($value)); } $new_field[1] = $value; } elseif (isset($data['WYSIWYG']) && $data['WYSIWYG'] == 'YES') { $new_field[1] = RSFormProHelper::WYSIWYG('form[' . $name . ']', RSFormProHelper::htmlEscape($value), '', 600, 100, 60, 10); } else { $new_field[1] = '<textarea style="width: 95%" class="rs_textarea" rows="10" cols="60" name="form[' . $name . ']">' . RSFormProHelper::htmlEscape($value) . '</textarea>'; } break; case 'radioGroup': case 'checkboxGroup': case 'selectList': if ($isPDF) { $new_field[1] = str_replace("\n", $form->MultipleSeparator, $value); break; } if ($field->ComponentTypeName == 'radioGroup') { $data['SIZE'] = 0; $data['MULTIPLE'] = 'NO'; } elseif ($field->ComponentTypeName == 'checkboxGroup') { $data['SIZE'] = 5; $data['MULTIPLE'] = 'YES'; } $value = RSFormProHelper::explode($value); $items = RSFormProHelper::isCode($data['ITEMS']); $items = RSFormProHelper::explode($items); $options = array(); foreach ($items as $item) { // <OPTGROUP> if (preg_match('/\\[g\\]/', $item)) { $item = str_replace('[g]', '', $item); $optgroup = new stdClass(); $optgroup->value = '<OPTGROUP>'; $optgroup->text = $item; $options[] = $optgroup; continue; } // </OPTGROUP> if (preg_match('/\\[\\/g\\]/', $item)) { $optgroup = new stdClass(); $optgroup->value = '</OPTGROUP>'; $optgroup->text = ''; $options[] = $optgroup; continue; } $buf = explode('|', $item); $val = str_replace('[c]', '', $buf[0]); $item = str_replace('[c]', '', count($buf) == 1 ? $buf[0] : $buf[1]); $options[] = JHTML::_('select.option', $val, $item); } $attribs = array(); if ((int) $data['SIZE'] > 0) { $attribs[] = 'size="' . (int) $data['SIZE'] . '"'; } if ($data['MULTIPLE'] == 'YES') { $attribs[] = 'multiple="multiple"'; } $attribs = implode(' ', $attribs); $new_field[1] = JHTML::_('select.genericlist', $options, 'form[' . $name . '][]', $attribs, 'value', 'text', $value); break; case 'fileUpload': if ($isPDF) { $new_field[1] = $value; break; } $new_field[1] = '<input class="rs_inp rs_80" size="105" type="text" name="form[' . $name . ']" value="' . RSFormProHelper::htmlEscape($value) . '" />'; $new_field[1] .= '<br /><input size="45" type="file" name="upload[' . $name . ']" />'; break; } $return[] = $new_field; } // PayPal if (isset($submission->values['_STATUS'])) { $name = '_STATUS'; $value = $submission->values['_STATUS']; $new_field[0] = JText::_('RSFP_PAYPAL_STATUS'); if ($isPDF) { $new_field[1] = JText::_('RSFP_PAYPAL_STATUS_' . $value); } else { $options = array(JHTML::_('select.option', -1, JText::_('RSFP_PAYPAL_STATUS_-1')), JHTML::_('select.option', 0, JText::_('RSFP_PAYPAL_STATUS_0')), JHTML::_('select.option', 1, JText::_('RSFP_PAYPAL_STATUS_1'))); $new_field[1] = JHTML::_('select.genericlist', $options, 'form[' . $name . '][]', null, 'value', 'text', $value); } $return[] = $new_field; } // ANZ if (isset($submission->values['_ANZ_STATUS'])) { $name = '_ANZ_STATUS'; $value = $submission->values['_ANZ_STATUS']; $new_field[0] = JText::_('RSFP_ANZ_STATUS'); if ($isPDF) { $new_field[1] = JText::_('RSFP_ANZ_STATUS_' . $value); } else { $options = array(JHTML::_('select.option', -1, JText::_('RSFP_ANZ_STATUS_-1')), JHTML::_('select.option', 0, JText::_('RSFP_ANZ_STATUS_0')), JHTML::_('select.option', 1, JText::_('RSFP_ANZ_STATUS_1'))); $new_field[1] = JHTML::_('select.genericlist', $options, 'form[' . $name . '][]', null, 'value', 'text', $value); } $return[] = $new_field; } return $return; }
public static function getFrontComponentBody($formId, $componentId, $data, $value = array(), $invalid = false, $layoutName) { $mainframe = JFactory::getApplication(); $formId = (int) $formId; $componentId = (int) $componentId; $db = JFactory::getDBO(); // For legacy reasons... $r = array(); $r['ComponentTypeId'] = $data['componentTypeId']; $r['Order'] = @$data['Order']; $out = ''; //Trigger Event - rsfp_bk_onBeforeCreateFrontComponentBody $mainframe->triggerEvent('rsfp_bk_onBeforeCreateFrontComponentBody', array(array('out' => &$out, 'formId' => $formId, 'componentId' => $componentId, 'data' => &$data, 'value' => &$value))); switch ($data['ComponentTypeName']) { case 1: case 'textBox': if (isset($data['VALIDATIONRULE']) && $data['VALIDATIONRULE'] == 'password') { $defaultValue = ''; } else { $defaultValue = RSFormProHelper::isCode($data['DEFAULTVALUE']); } $className = 'rsform-input-box'; if ($invalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES'], $className); $out .= '<input type="text" value="' . (isset($value[$data['NAME']]) ? RSFormProHelper::htmlEscape($value[$data['NAME']]) : RSFormProHelper::htmlEscape($defaultValue)) . '" size="' . $data['SIZE'] . '" ' . ((int) $data['MAXSIZE'] > 0 ? 'maxlength="' . (int) $data['MAXSIZE'] . '"' : '') . ' name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" ' . $data['ADDITIONALATTRIBUTES'] . '/>'; break; case 2: case 'textArea': $defaultValue = RSFormProHelper::isCode($data['DEFAULTVALUE']); $className = 'rsform-text-box'; if ($invalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES'], $className); if (isset($data['WYSIWYG']) && $data['WYSIWYG'] == 'YES') { $out .= RSFormProHelper::WYSIWYG('form[' . $data['NAME'] . ']', isset($value[$data['NAME']]) ? RSFormProHelper::htmlEscape($value[$data['NAME']]) : RSFormProHelper::htmlEscape($defaultValue), 'id[' . $data['NAME'] . ']', $data['COLS'] * 10, $data['ROWS'] * 10, $data['COLS'], $data['ROWS']); } else { $out .= '<textarea cols="' . (int) $data['COLS'] . '" rows="' . (int) $data['ROWS'] . '" name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" ' . $data['ADDITIONALATTRIBUTES'] . '>' . (isset($value[$data['NAME']]) ? RSFormProHelper::htmlEscape($value[$data['NAME']]) : RSFormProHelper::htmlEscape($defaultValue)) . '</textarea>'; } break; case 3: case 'selectList': $className = 'rsform-select-box'; if ($invalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES'], $className); $out .= '<select ' . ($data['MULTIPLE'] == 'YES' ? 'multiple="multiple"' : '') . ' name="form[' . $data['NAME'] . '][]" ' . ((int) $data['SIZE'] > 0 ? 'size="' . (int) $data['SIZE'] . '"' : '') . ' id="' . $data['NAME'] . '" ' . $data['ADDITIONALATTRIBUTES'] . ' >'; $items = RSFormProHelper::explode(RSFormProHelper::isCode($data['ITEMS'])); $special = array('[c]', '[g]', '[d]'); foreach ($items as $item) { @(list($val, $txt) = @explode('|', str_replace($special, '', $item), 2)); if (is_null($txt)) { $txt = $val; } // <optgroup> if (strpos($item, '[g]') !== false) { $out .= '<optgroup label="' . RSFormProHelper::htmlEscape($val) . '">'; continue; } // </optgroup> if (strpos($item, '[/g]') !== false) { $out .= '</optgroup>'; continue; } $additional = ''; // selected if (strpos($item, '[c]') !== false && empty($value) || isset($value[$data['NAME']]) && in_array($val, $value[$data['NAME']])) { $additional .= 'selected="selected"'; } // disabled if (strpos($item, '[d]') !== false) { $additional .= 'disabled="disabled"'; } $out .= '<option ' . $additional . ' value="' . RSFormProHelper::htmlEscape($val) . '">' . RSFormProHelper::htmlEscape($txt) . '</option>'; } $out .= '</select>'; $option = JRequest::getCmd('option'); $view = JRequest::getCmd('view'); $layout = JRequest::getCmd('layout'); if ($option == 'com_rsevents' && $view == 'events' && $layout == 'subscribe' && $data['NAME'] == 'RSEventsTickets') { $db->setQuery("SELECT ConfigValue FROM #__rsevents_config WHERE ConfigName = 'event.multiple.tickets' "); $multipleTickets = $db->loadResult(); if ($multipleTickets) { $lang = JFactory::getLanguage(); $lang->load('com_rsevents', JPATH_SITE); $out .= ' <a onclick="add_ticket(1,\'' . JText::_('RSE_REMOVE_TICKET', true) . '\');" href="javascript:void(0)">' . JText::_('RSE_ADD_TICKET') . '</a> '; $out .= '<br /><span id="tickets"></span>'; $out .= '<span id="rse_tickets_ids"></span>' . "\n"; $out .= '<span id="rse_tickets_no"></span>' . "\n"; } } break; case 4: case 'checkboxGroup': $i = 0; $items = RSFormProHelper::explode(RSFormProHelper::isCode($data['ITEMS'])); $special = array('[c]', '[d]'); foreach ($items as $item) { @(list($val, $txt) = @explode('|', str_replace($special, '', $item), 2)); if (is_null($txt)) { $txt = $val; } $additional = ''; // checked if (strpos($item, '[c]') !== false && empty($value) || isset($value[$data['NAME']]) && in_array($val, $value[$data['NAME']])) { $additional .= 'checked="checked"'; } // disabled if (strpos($item, '[d]') !== false) { $additional .= 'disabled="disabled"'; } if ($data['FLOW'] == 'VERTICAL' && $layoutName == 'responsive') { $out .= '<p class="rsformVerticalClear">'; } $out .= '<input ' . $additional . ' name="form[' . $data['NAME'] . '][]" type="checkbox" value="' . RSFormProHelper::htmlEscape($val) . '" id="' . $data['NAME'] . $i . '" ' . $data['ADDITIONALATTRIBUTES'] . ' /><label for="' . $data['NAME'] . $i . '">' . $txt . '</label>'; if ($data['FLOW'] == 'VERTICAL') { if ($layoutName == 'responsive') { $out .= '</p>'; } else { $out .= '<br />'; } } $i++; } break; case 5: case 'radioGroup': $i = 0; $items = RSFormProHelper::explode(RSFormProHelper::isCode($data['ITEMS'])); $special = array('[c]', '[d]'); foreach ($items as $item) { @(list($val, $txt) = @explode('|', str_replace($special, '', $item), 2)); if (is_null($txt)) { $txt = $val; } $additional = ''; // checked if (strpos($item, '[c]') !== false && empty($value) || isset($value[$data['NAME']]) && $val == $value[$data['NAME']]) { $additional .= 'checked="checked"'; } // disabled if (strpos($item, '[d]') !== false) { $additional .= 'disabled="disabled"'; } if ($data['FLOW'] == 'VERTICAL' && $layoutName == 'responsive') { $out .= '<p class="rsformVerticalClear">'; } $out .= '<input ' . $additional . ' name="form[' . $data['NAME'] . ']" type="radio" value="' . RSFormProHelper::htmlEscape($val) . '" id="' . $data['NAME'] . $i . '" ' . $data['ADDITIONALATTRIBUTES'] . ' /><label for="' . $data['NAME'] . $i . '">' . $txt . '</label>'; if ($data['FLOW'] == 'VERTICAL') { if ($layoutName == 'responsive') { $out .= '</p>'; } else { $out .= '<br />'; } } $i++; } break; case 6: case 'calendar': $calendars = RSFormProHelper::componentExists($formId, 6); $calendars = array_flip($calendars); $defaultValue = isset($value[$data['NAME']]) ? $value[$data['NAME']] : (isset($data['DEFAULTVALUE']) ? RSFormProHelper::isCode($data['DEFAULTVALUE']) : ''); switch ($data['CALENDARLAYOUT']) { case 'FLAT': $className = 'rsform-calendar-box'; if ($invalid) { $className .= ' rsform-error'; } $out .= '<input id="txtcal' . $formId . '_' . $calendars[$componentId] . '" name="form[' . $data['NAME'] . ']" type="text" ' . ($data['READONLY'] == 'YES' ? 'readonly="readonly"' : '') . ' class="txtCal ' . $className . '" value="' . RSFormProHelper::htmlEscape($defaultValue) . '" ' . $data['ADDITIONALATTRIBUTES'] . '/><br />'; $out .= '<div id="cal' . $formId . '_' . $calendars[$componentId] . 'Container" style="z-index:' . (9999 - $data['Order']) . '"></div>'; break; case 'POPUP': $data['ADDITIONALATTRIBUTES2'] = $data['ADDITIONALATTRIBUTES']; $className = 'rsform-calendar-box'; if ($invalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES'], $className); $out .= '<input id="txtcal' . $formId . '_' . $calendars[$componentId] . '" name="form[' . $data['NAME'] . ']" type="text" ' . ($data['READONLY'] == 'YES' ? 'readonly="readonly"' : '') . ' value="' . RSFormProHelper::htmlEscape($defaultValue) . '" ' . $data['ADDITIONALATTRIBUTES'] . '/>'; $className = 'rsform-calendar-button'; if ($invalid) { $className .= ' rsform-error'; } $out .= '<input id="btn' . $formId . '_' . $calendars[$componentId] . '" type="button" value="' . RSFormProHelper::htmlEscape($data['POPUPLABEL']) . '" onclick="showHideCalendar(\'cal' . $formId . '_' . $calendars[$componentId] . 'Container\');" class="btnCal ' . $className . '" ' . $data['ADDITIONALATTRIBUTES2'] . ' />'; $out .= '<div id="cal' . $formId . '_' . $calendars[$componentId] . 'Container" style="clear:both;display:none;position:absolute;z-index:' . (9999 - $data['Order']) . '"></div>'; break; } $out .= '<input id="hiddencal' . $formId . '_' . $calendars[$componentId] . '" type="hidden" name="hidden[' . $data['NAME'] . ']" />'; break; case 7: case 'button': $button_type = isset($data['BUTTONTYPE']) && $data['BUTTONTYPE'] == 'TYPEBUTTON' ? 'button' : 'input'; $data['ADDITIONALATTRIBUTES2'] = $data['ADDITIONALATTRIBUTES']; $className = 'rsform-button'; if ($invalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES'], $className); if ($button_type == 'button') { $out .= '<button type="button" name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" ' . $data['ADDITIONALATTRIBUTES'] . '>' . RSFormProHelper::htmlEscape($data['LABEL']) . '</button>'; } else { $out .= '<input type="button" value="' . RSFormProHelper::htmlEscape($data['LABEL']) . '" name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" ' . $data['ADDITIONALATTRIBUTES'] . ' />'; } if ($data['RESET'] == 'YES') { $className = 'rsform-reset-button'; RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES2'], $className); if ($button_type == 'button') { $out .= ' <button type="reset" name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" ' . $data['ADDITIONALATTRIBUTES2'] . '>' . RSFormProHelper::htmlEscape($data['RESETLABEL']) . '</button>'; } else { $out .= ' <input type="reset" value="' . RSFormProHelper::htmlEscape($data['RESETLABEL']) . '" name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" ' . $data['ADDITIONALATTRIBUTES2'] . ' />'; } } break; case 8: case 'captcha': switch (@$data['IMAGETYPE']) { default: case 'FREETYPE': case 'NOFREETYPE': $className = 'rsform-captcha-box'; if ($invalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES'], $className); $out .= '<img src="' . JRoute::_('index.php?option=com_rsform&task=captcha&componentId=' . $componentId . '&tmpl=component&sid=' . mt_rand()) . '" id="captcha' . $componentId . '" alt="' . RSFormProHelper::htmlEscape($data['CAPTION']) . ' "/>'; if ($data['FLOW'] == 'VERTICAL') { $out .= '<br />'; } $out .= '<input type="text" name="form[' . $data['NAME'] . ']" value="" id="captchaTxt' . $componentId . '" ' . $data['ADDITIONALATTRIBUTES'] . ' />'; if ($data['SHOWREFRESH'] == 'YES') { $out .= ' <a href="javascript:void(0)" onclick="refreshCaptcha(' . $componentId . ',\'' . JRoute::_('index.php?option=com_rsform&task=captcha&componentId=' . $componentId . '&tmpl=component') . '\'); return false;">' . $data['REFRESHTEXT'] . '</a>'; } break; case 'INVISIBLE': // a list of words that spam bots might auto-complete $words = RSFormProHelper::getInvisibleCaptchaWords(); $word = $words[array_rand($words, 1)]; // a list of styles so that the field is hidden $styles = array('display: none !important', 'position: absolute !important; left: -4000px !important; top: -4000px !important;', 'position: absolute !important; left: -4000px !important; top: -4000px !important; display: none !important', 'position: absolute !important; display: none !important', 'display: none !important; position: absolute !important; left: -4000px !important; top: -4000px !important;'); $style = $styles[array_rand($styles, 1)]; // now we're going to shuffle the properties of the html tag $properties = array('type="text"', 'name="' . $word . '"', 'value=""', 'style="' . $style . '"'); shuffle($properties); $session = JFactory::getSession(); $session->set('com_rsform.captcha.' . $componentId, $word); $out .= '<input ' . implode(' ', $properties) . ' />'; break; } break; case 9: case 'fileUpload': $className = 'rsform-upload-box'; if ($invalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES'], $className); $out .= '<input type="hidden" name="MAX_FILE_SIZE" value="' . (int) $data['FILESIZE'] . '000" />'; $out .= '<input type="file" name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" ' . $data['ADDITIONALATTRIBUTES'] . ' />'; break; case 10: case 'freeText': $out .= $data['TEXT']; break; case 11: case 'hidden': $defaultValue = RSFormProHelper::isCode($data['DEFAULTVALUE']); $out .= '<input type="hidden" name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" value="' . RSFormProHelper::htmlEscape($defaultValue) . '" ' . $data['ADDITIONALATTRIBUTES'] . ' />'; break; case 12: case 'imageButton': $data['ADDITIONALATTRIBUTES2'] = $data['ADDITIONALATTRIBUTES']; $className = 'rsform-image-button'; RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES'], $className); $data['ADDITIONALATTRIBUTES3'] = $data['ADDITIONALATTRIBUTES']; $pages = RSFormProHelper::componentExists($formId, 41); $pages = count($pages); if (!empty($pages)) { if (empty($data['PREVBUTTON'])) { $data['PREVBUTTON'] = JText::_('PREV'); } $onclick = 'rsfp_changePage(' . $formId . ', ' . ($pages - 1) . ', ' . $pages . ')'; RSFormProHelper::addOnClick($data['ADDITIONALATTRIBUTES3'], $onclick); $out .= '<input type="button" value="' . RSFormProHelper::htmlEscape($data['PREVBUTTON']) . '" id="' . $data['NAME'] . 'Prev" ' . $data['ADDITIONALATTRIBUTES3'] . ' />'; } $out .= '<input type="image" src="' . RSFormProHelper::htmlEscape($data['IMAGEBUTTON']) . '" name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" ' . $data['ADDITIONALATTRIBUTES2'] . ' />'; if ($data['RESET'] == 'YES') { $className = 'rsform-reset-button'; RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES2'], $className); $out .= '<input type="reset" name="" id="reset_' . $data['NAME'] . '" style="display: none !important" /> <input onclick="document.getElementById(\'reset_' . $data['NAME'] . '\').click();return false;" type="image" src="' . RSFormProHelper::htmlEscape($data['IMAGERESET']) . '" name="form[' . $data['NAME'] . ']" ' . $data['ADDITIONALATTRIBUTES2'] . ' />'; } break; case 13: case 'submitButton': $button_type = isset($data['BUTTONTYPE']) && $data['BUTTONTYPE'] == 'TYPEBUTTON' ? 'button' : 'input'; $data['ADDITIONALATTRIBUTES2'] = $data['ADDITIONALATTRIBUTES']; $className = 'rsform-submit-button'; RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES'], $className); $data['ADDITIONALATTRIBUTES3'] = $data['ADDITIONALATTRIBUTES']; $last_submit = $componentId == end($data['SUBMITS']); $pages = RSFormProHelper::componentExists($formId, 41); $pages = count($pages); if (!empty($pages) && $last_submit) { if (empty($data['PREVBUTTON'])) { $data['PREVBUTTON'] = JText::_('PREV'); } $onclick = 'rsfp_changePage(' . $formId . ', ' . ($pages - 1) . ', ' . $pages . ')'; RSFormProHelper::addOnClick($data['ADDITIONALATTRIBUTES3'], $onclick); if ($button_type == 'button') { $out .= '<button type="button" id="' . $data['NAME'] . 'Prev" ' . $data['ADDITIONALATTRIBUTES3'] . '>' . RSFormProHelper::htmlEscape($data['PREVBUTTON']) . '</button>'; } else { $out .= '<input type="button" value="' . RSFormProHelper::htmlEscape($data['PREVBUTTON']) . '" id="' . $data['NAME'] . 'Prev" ' . $data['ADDITIONALATTRIBUTES3'] . ' />'; } } if ($button_type == 'button') { $out .= '<button type="submit" name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" ' . $data['ADDITIONALATTRIBUTES'] . '>' . RSFormProHelper::htmlEscape($data['LABEL']) . '</button>'; } else { $out .= '<input type="submit" value="' . RSFormProHelper::htmlEscape($data['LABEL']) . '" name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" ' . $data['ADDITIONALATTRIBUTES'] . ' />'; } if ($data['RESET'] == 'YES') { $className = 'rsform-reset-button'; RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES2'], $className); if ($button_type == 'button') { $out .= ' <button type="reset" name="form[' . $data['NAME'] . ']" ' . $data['ADDITIONALATTRIBUTES2'] . '>' . RSFormProHelper::htmlEscape($data['RESETLABEL']) . '</button>'; } else { $out .= ' <input type="reset" value="' . RSFormProHelper::htmlEscape($data['RESETLABEL']) . '" name="form[' . $data['NAME'] . ']" ' . $data['ADDITIONALATTRIBUTES2'] . ' />'; } } break; case 14: case 'password': $defaultValue = ''; if (isset($data['VALIDATIONRULE']) && $data['VALIDATIONRULE'] != 'password') { $defaultValue = $data['DEFAULTVALUE']; } $className = 'rsform-password-box'; if ($invalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES'], $className); $out .= '<input type="password" value="' . RSFormProHelper::htmlEscape($defaultValue) . '" size="' . (int) $data['SIZE'] . '" name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" ' . ((int) $data['MAXSIZE'] > 0 ? 'maxlength="' . (int) $data['MAXSIZE'] . '"' : '') . ' ' . $data['ADDITIONALATTRIBUTES'] . ' />'; break; case 15: case 'ticket': $out .= '<input type="hidden" name="form[' . $data['NAME'] . ']" value="' . RSFormProHelper::generateString($data['LENGTH'], $data['CHARACTERS']) . '" ' . $data['ADDITIONALATTRIBUTES'] . ' />'; break; case 41: case 'pageBreak': $validate = 'false'; if (isset($data['VALIDATENEXTPAGE']) && $data['VALIDATENEXTPAGE'] == 'YES') { $validate = 'true'; } $className = 'rsform-button'; if ($invalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES'], $className); $data['ADDITIONALATTRIBUTES2'] = $data['ADDITIONALATTRIBUTES']; $num = count($data['PAGES']); $pos = array_search($componentId, $data['PAGES']); if ($pos) { $onclick = 'rsfp_changePage(' . $formId . ', ' . ($pos - 1) . ', ' . $num . ')'; RSFormProHelper::addOnClick($data['ADDITIONALATTRIBUTES'], $onclick); $out .= '<input type="button" value="' . RSFormProHelper::htmlEscape($data['PREVBUTTON']) . '" ' . $data['ADDITIONALATTRIBUTES'] . ' id="' . $data['NAME'] . 'Prev" />'; } if ($pos < count($data['PAGES'])) { $onclick = 'rsfp_changePage(' . $formId . ', ' . ($pos + 1) . ', ' . $num . ', ' . $validate . ')'; RSFormProHelper::addOnClick($data['ADDITIONALATTRIBUTES2'], $onclick); $out .= '<input type="button" value="' . RSFormProHelper::htmlEscape($data['NEXTBUTTON']) . '" ' . $data['ADDITIONALATTRIBUTES2'] . ' id="' . $data['NAME'] . 'Next" />'; } break; case 32: case 'rseprotickets': $html = ''; if (JRequest::getCmd('option') == 'com_rseventspro') { $cid = JRequest::getInt('cid'); $db->setQuery("SELECT COUNT(id) FROM #__rseventspro_tickets WHERE ide = " . $cid . ""); $eventtickets = $db->loadResult(); $html .= '<input type="text" id="numberinp" name="numberinp" value="1" size="3" style="display: none;" onkeyup="this.value=this.value.replace(/[^0-9\\.\\,]/g, \'\');" />'; $html .= '<select name="number" id="number"><option value="1">1</option></select> '; $className = 'rsform-select-box'; if ($invalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($data['ADDITIONALATTRIBUTES'], $className); $html .= '<select name="form[' . $data['NAME'] . ']" id="' . $data['NAME'] . '" ' . $data['ADDITIONALATTRIBUTES'] . ' >'; $items = RSFormProHelper::explode(RSFormProHelper::isCode($data['ITEMS'])); $special = array('[c]', '[g]', '[d]'); foreach ($items as $item) { @(list($val, $txt) = @explode('|', str_replace($special, '', $item), 2)); if (is_null($txt)) { $txt = $val; } // <optgroup> if (strpos($item, '[g]') !== false) { $out .= '<optgroup label="' . RSFormProHelper::htmlEscape($val) . '">'; continue; } // </optgroup> if (strpos($item, '[/g]') !== false) { $out .= '</optgroup>'; continue; } $additional = ''; // selected if (strpos($item, '[c]') !== false && empty($value) || isset($value[$data['NAME']]) && $val == $value[$data['NAME']]) { $additional .= 'selected="selected"'; } // disabled if (strpos($item, '[d]') !== false) { $additional .= 'disabled="disabled"'; } $html .= '<option ' . $additional . ' value="' . RSFormProHelper::htmlEscape($val) . '">' . RSFormProHelper::htmlEscape($txt) . '</option>'; } $html .= '</select>'; if (JRequest::getCmd('option') == 'com_rseventspro' && JRequest::getCmd('layout') == 'subscribe') { $db->setQuery("SELECT `value` FROM `#__rseventspro_config` WHERE `name` = 'multi_tickets'"); $multipleTickets = $db->loadResult(); if ($multipleTickets) { $lang = JFactory::getLanguage(); $lang->load('com_rseventspro', JPATH_SITE); $html .= ' <a href="javascript:void(0);" onclick="rs_add_ticket();">' . JText::_('RSEPRO_SUBSCRIBER_ADD_TICKET') . '</a> '; } } $html .= ' <img id="rs_loader" src="' . JURI::root() . 'components/com_rseventspro/assets/images/loader.gif" alt="" style="vertical-align: middle; display: none;" />'; if (JRequest::getCmd('option') == 'com_rseventspro' && JRequest::getCmd('layout') == 'subscribe' && $multipleTickets) { $html .= '<br /> <br /> <span id="tickets"></span>'; $html .= '<span id="hiddentickets"></span>'; } $html .= ' <br /> <span id="tdescription"></span>'; $html .= '<input type="hidden" name="from" id="from" value="" />'; if (!empty($eventtickets)) { $out .= $html; } } break; case 211: case 'birthDay': $day = strpos($data['DATEORDERING'], 'D'); $month = strpos($data['DATEORDERING'], 'M'); $year = strpos($data['DATEORDERING'], 'Y'); $items = array(); $hasAllFields = $data['SHOWDAY'] == 'YES' && $data['SHOWMONTH'] == 'YES' && $data['SHOWYEAR'] == 'YES'; if ($data['SHOWDAY'] == 'YES') { $isInvalid = $invalid && empty($value[$data['NAME']]['d']); $attr = $data['ADDITIONALATTRIBUTES']; $className = 'rsform-select-box rsform-select-box-small'; if ($isInvalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($attr, $className); $item = '<select name="form[' . $data['NAME'] . '][d]" id="' . $data['NAME'] . 'd" ' . $attr . ' >'; if (strlen($data['SHOWDAYPLEASE']) > 0) { $item .= '<option value="">' . self::htmlEscape($data['SHOWDAYPLEASE']) . '</option>'; } for ($i = 1; $i <= 31; $i++) { switch ($data['SHOWDAYTYPE']) { default: case 'DAY_TYPE_1': $val = $i; break; case 'DAY_TYPE_01': $val = str_pad($i, 2, '0', STR_PAD_LEFT); break; } // selected $additional = ''; if (isset($value[$data['NAME']]['d']) && $value[$data['NAME']]['d'] == $i) { $additional .= 'selected="selected"'; } $item .= '<option value="' . $i . '" ' . $additional . '>' . $val . '</option>'; } $item .= '</select>'; $items[$day] = $item; } if ($data['SHOWMONTH'] == 'YES') { $isInvalid = $invalid && empty($value[$data['NAME']]['m']); $attr = $data['ADDITIONALATTRIBUTES']; $className = 'rsform-select-box rsform-select-box-small'; if ($isInvalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($attr, $className); if ($hasAllFields && $data['VALIDATION_ALLOW_INCORRECT_DATE'] == 'NO') { $attr .= ' onchange="rsfp_checkValidDate(\'' . $data['NAME'] . '\');"'; } $item = '<select name="form[' . $data['NAME'] . '][m]" id="' . $data['NAME'] . 'm" ' . $attr . ' >'; if (strlen($data['SHOWMONTHPLEASE']) > 0) { $item .= '<option value="">' . self::htmlEscape($data['SHOWMONTHPLEASE']) . '</option>'; } for ($i = 1; $i <= 12; $i++) { switch ($data['SHOWMONTHTYPE']) { default: case 'MONTH_TYPE_1': $val = $i; break; case 'MONTH_TYPE_01': $val = str_pad($i, 2, '0', STR_PAD_LEFT); break; case 'MONTH_TYPE_TEXT_SHORT': $val = JText::_('RSFP_CALENDAR_MONTHS_SHORT_' . $i); break; case 'MONTH_TYPE_TEXT_LONG': $val = JText::_('RSFP_CALENDAR_MONTHS_LONG_' . $i); break; } // selected $additional = ''; if (isset($value[$data['NAME']]['m']) && $value[$data['NAME']]['m'] == $i) { $additional .= 'selected="selected"'; } $item .= '<option value="' . $i . '" ' . $additional . '>' . $val . '</option>'; } $item .= '</select>'; $items[$month] = $item; } if ($data['SHOWYEAR'] == 'YES') { $isInvalid = $invalid && empty($value[$data['NAME']]['y']); $attr = $data['ADDITIONALATTRIBUTES']; $className = 'rsform-select-box rsform-select-box-small'; if ($isInvalid) { $className .= ' rsform-error'; } RSFormProHelper::addClass($attr, $className); if ($hasAllFields && $data['VALIDATION_ALLOW_INCORRECT_DATE'] == 'NO') { $attr .= ' onchange="rsfp_checkValidDate(\'' . $data['NAME'] . '\');"'; } $item = '<select name="form[' . $data['NAME'] . '][y]" id="' . $data['NAME'] . 'y" ' . $attr . ' >'; if (strlen($data['SHOWYEARPLEASE']) > 0) { $item .= '<option value="">' . self::htmlEscape($data['SHOWYEARPLEASE']) . '</option>'; } $start = (int) $data['STARTYEAR']; $end = (int) $data['ENDYEAR']; if ($start < $end) { for ($i = $start; $i <= $end; $i++) { // selected $additional = ''; if (isset($value[$data['NAME']]['y']) && $value[$data['NAME']]['y'] == $i) { $additional .= 'selected="selected"'; } $item .= '<option value="' . $i . '" ' . $additional . '>' . $i . '</option>'; } } else { for ($i = $start; $i >= $end; $i--) { // selected $additional = ''; if (isset($value[$data['NAME']]['y']) && $value[$data['NAME']]['y'] == $i) { $additional .= 'selected="selected"'; } $item .= '<option value="' . $i . '" ' . $additional . '>' . $i . '</option>'; } } $item .= '</select>'; $items[$year] = $item; } ksort($items); $out .= implode($data['DATESEPARATOR'], $items); break; } //Trigger Event - rsfp_bk_onAfterCreateFrontComponentBody $mainframe->triggerEvent('rsfp_bk_onAfterCreateFrontComponentBody', array(array('out' => &$out, 'formId' => $formId, 'componentId' => $componentId, 'data' => $data, 'value' => $value, 'r' => $r, 'invalid' => $invalid))); return $out; }
public static function getComponentPrice($property, $submission) { $price = 0; $pattern = '#\\[p(.*?)\\]#is'; if (isset($property['ITEMS'])) { $products = array(); $special = array('[c]', '[g]', '[d]'); if ($items = RSFormProHelper::explode(RSFormProHelper::isCode($property['ITEMS']))) { foreach ($items as $item) { $item = str_replace($special, '', $item); @(list($item_val, $item_text) = explode("|", $item, 2)); if (preg_match($pattern, $item, $match)) { $item_val = preg_replace($pattern, '', $item_val); $products[$item_val] = $match[1]; } } } if (isset($submission->values[$property['NAME']])) { $value = $submission->values[$property['NAME']]; $all_values = explode("\n", $value); foreach ($all_values as $val) { $price += isset($products[$val]) ? (double) $products[$val] : 0; } } } return number_format($price, RSFormProHelper::getConfig('calculations.nodecimals'), RSFormProHelper::getConfig('calculations.decimal'), RSFormProHelper::getConfig('calculations.thousands')); }
public function rsfp_onAfterCreatePlaceholders($args) { $formId = $args['form']->FormId; $submissionId = $args['submission']->SubmissionId; $multipleSeparator = $args['form']->MultipleSeparator; if (RSFormProHelper::componentExists($formId, $this->newComponents)) { $singleProduct = RSFormProHelper::componentExists($formId, 21); $multipleProducts = RSFormProHelper::componentExists($formId, 22); $total = RSFormProHelper::componentExists($formId, 23); $donationProduct = RSFormProHelper::componentExists($formId, 28); $choosePayment = RSFormProHelper::componentExists($formId, 27); // choose payment if (!empty($choosePayment)) { $details = RSFormProHelper::getComponentProperties($choosePayment[0]); $items = $this->_getPayments($formId); $value = $this->_getSubmissionValue($submissionId, $choosePayment[0]); $text = ''; if ($items) { foreach ($items as $item) { if ($item->value == $value) { $text = $item->text; break; } } } $args['placeholders'][] = '{' . $details['NAME'] . ':text}'; $args['values'][] = $text; } // multiple products if (!empty($multipleProducts)) { foreach ($multipleProducts as $product) { $pdetail = RSFormProHelper::getComponentProperties($product); $detail = $this->_getSubmissionValue($submissionId, $product); if ($detail == '') { continue; } $detail = explode("\n", $detail); $items = RSFormProHelper::explode(RSFormProHelper::isCode($pdetail['ITEMS'])); $replace = '{' . $pdetail['NAME'] . ':price}'; $with = array(); foreach ($items as $item) { @(list($val, $txt) = @explode('|', str_replace($special, '', $item), 2)); if (is_null($txt)) { $txt = $val; } if (!$val) { $val = 0; } if (in_array($txt, $detail)) { $txt_price = $this->_getPriceMask($txt, $val); $with[] = $txt_price; } } $args['placeholders'][] = $replace; $args['values'][] = implode($multipleSeparator, $with); } } // donation if (!empty($donationProduct)) { $price = $this->_getSubmissionValue($submissionId, $donationProduct[0]); $details = RSFormProHelper::getComponentProperties($donationProduct[0]); $args['placeholders'][] = '{' . $details['NAME'] . ':price}'; $args['values'][] = $this->_getPriceMask($details['CAPTION'], $price); } // single product if (!empty($singleProduct)) { //Get Component properties $data = RSFormProHelper::getComponentProperties($this->_getComponentId('rsfp_Product', $formId)); $price = $data['PRICE']; $args['placeholders'][] = '{rsfp_Product:price}'; $args['values'][] = $this->_getPriceMask($data['CAPTION'], $price); } if (!empty($total)) { $price = $this->_getSubmissionValue($submissionId, $total[0]); $details = RSFormProHelper::getComponentProperties($total[0]); $args['placeholders'][] = '{' . $details['NAME'] . ':price}'; $args['values'][] = $this->_getPriceMask($details['CAPTION'], $price); } } }