$original_handle = $element->getVar('ele_handle'); } $element->setVar('ele_order', figureOutOrder($_POST['orderpref'], $element->getVar('ele_order'), $fid)); $form_handler = xoops_getmodulehandler('forms', 'formulize'); $formObject = $form_handler->get($fid); if ($formObject->getVar('lockedform')) { return; } // check if the user has permission to edit the form if (!$gperm_handler->checkRight("edit_form", $fid, $groups, $mid)) { return; } $isNew = $_POST['formulize_admin_key'] == "new" ? true : false; foreach ($processedValues['elements'] as $property => $element_handle_name) { if ($property == "ele_handle") { $element_handle_name = formulizeForm::sanitize_handle_name($element_handle_name); if (strlen($element_handle_name)) { $firstUniqueCheck = true; while (!($uniqueCheck = $form_handler->isHandleUnique($element_handle_name, $ele_id))) { if ($firstUniqueCheck) { $element_handle_name = $element_handle_name . "_" . $fid; $firstUniqueCheck = false; } else { $element_handle_name = $element_handle_name . "_copy"; } } } $ele_handle = $element_handle_name; if ($element_handle_name != $processedValues['elements']['ele_handle']) { $_POST['reload_names_page'] = 1; }
function isHandleUnique($handle, $element_id = "") { $handle = formulizeForm::sanitize_handle_name($handle); if (isMetaDataField($handle)) { return false; // don't allow reserved words that will be used in the main data extraction queries } global $xoopsDB; $element_id_condition = $element_id ? " AND ele_id != " . intval($element_id) : ""; $sql = "SELECT count(ele_handle) FROM " . $xoopsDB->prefix("formulize") . " WHERE ele_handle = '" . formulize_db_escape($handle) . "' {$element_id_condition}"; if (!($res = $xoopsDB->query($sql))) { print "Error: could not verify uniqueness of handle '{$handle}' in form {$fid}"; } else { $row = $xoopsDB->fetchRow($res); if ($row[0] == 0) { // zero rows found with that handle in this form return true; } else { return false; } } }
function multiPageScreen_addToOptionsList($form_id, $options) { $formObject = new formulizeForm($form_id, true); // true causes all elements, even ones now shown to any user, to be included $elements = $formObject->getVar('elements'); $elementCaptions = $formObject->getVar('elementCaptions'); foreach ($elementCaptions as $key => $elementCaption) { $options[$elements[$key]] = printSmart(trans(strip_tags($elementCaption))); // need to pull out potential HTML tags from the caption } return $options; }
// check if the user has permission to edit the form if (!$gperm_handler->checkRight("edit_form", $fid, $groups, $mid) and $_POST['formulize_admin_key'] != "new") { return; } if ($_POST['new_app_yes_no'] == "yes" and $_POST['applications-name']) { $newAppObject = $application_handler->create(); } // get all the existing applcations that this form object was assigned to if (isset($_POST['apps']) and count($_POST['apps']) > 0) { $selectedAppObjects = $application_handler->get($_POST['apps']); } // interpret form object values that were submitted and need special handling $processedValues['forms']['headerlist'] = (isset($_POST['headerlist']) and is_array($_POST['headerlist'])) ? "*=+*:" . implode("*=+*:", $_POST['headerlist']) : ""; // form_handle cannot have any period, strip all of the periods out $form_handle_from_ui = $processedValues['forms']['form_handle']; $corrected_form_handle = formulizeForm::sanitize_handle_name($form_handle_from_ui); if ($corrected_form_handle != $form_handle_from_ui) { $formulize_altered_form_handle = true; $processedValues['forms']['form_handle'] = $corrected_form_handle; } // form_handle can not be blank, default to form id if blank if ($processedValues['forms']['form_handle'] == "") { $processedValues['forms']['form_handle'] = $fid; } $old_form_handle = $formObject->getVar("form_handle"); foreach ($processedValues['forms'] as $property => $value) { $formObject->setVar($property, $value); } if (!$form_handler->insert($formObject)) { print "Error: could not save the form properly: " . $xoopsDB->error(); }
function multiPageScreen_addToOptionsList($fid, $options) { $formObject = new formulizeForm($fid); $elements = $formObject->getVar('elements'); $elementCaptions = $formObject->getVar('elementCaptions'); foreach ($elementCaptions as $key => $elementCaption) { $options[$elements[$key]] = printSmart(trans(strip_tags($elementCaption))); // need to pull out potential HTML tags from the caption } return $options; }
function cloneEntry($entry, $frid, $fid, $copies, $callback = null) { global $xoopsDB, $xoopsUser; include_once XOOPS_ROOT_PATH . "/modules/formulize/class/forms.php"; $lsbpairs = array(); if ($frid) { include_once XOOPS_ROOT_PATH . "/modules/formulize/class/frameworks.php"; include_once XOOPS_ROOT_PATH . "/modules/formulize/include/extract.php"; $thisframe = new formulizeFramework($frid); $links = $thisframe->getVar('links'); // get the element ids of the elements that are linked selectboxes pointing to another form $lsbindexer = 0; foreach ($links as $link) { // not a common value link, and not a uid link (key is 0 for uid links) if (!$link->getVar('common') and $link->getVar('key1') and $link->getVar('relationship') > 1) { // 2 is one to many // 3 is many to one if ($link->getVar('relationship') == 2) { // key1 is the textbox, key2 is the lsb $lsbpairs[$link->getVar('key1')] = $link->getVar('key2'); } else { // key 1 is the lsb and key 2 is the textbox $lsbpairs[$link->getVar('key2')] = $link->getVar('key1'); } } } $entries_query = getData($frid, $fid, $entry); $ids = internalRecordIds($entries_query[0], "", "", true); // true causes the first key of the returned array to be the fids foreach ($ids as $fid => $entryids) { foreach ($entryids as $id) { $entries_to_clone[$fid][] = $id; } } } else { $entries_to_clone[$fid][] = $entry; } $dataHandlers = array(); $entryMap = array(); for ($copy_counter = 0; $copy_counter < $copies; $copy_counter++) { foreach ($entries_to_clone as $fid => $entries) { // never clone an entry in a form that is a single-entry form $thisform = new formulizeForm($fid); if ($thisform->getVar('single') != "off") { continue; } foreach ($entries as $thisentry) { if (!isset($dataHandlers[$fid])) { $dataHandlers[$fid] = new formulizeDataHandler($fid); } $clonedEntryId = $dataHandlers[$fid]->cloneEntry($thisentry, $callback); $dataHandlers[$fid]->setEntryOwnerGroups(getEntryOwner($clonedEntryId, $fid), $clonedEntryId); $entryMap[$fid][$thisentry][] = $clonedEntryId; } } } // all entries have been made. Now we need to fix up any linked selectboxes $element_handler = xoops_getmodulehandler('elements', 'formulize'); foreach ($lsbpairs as $source => $lsb) { $sourceElement = $element_handler->get($source); $lsbElement = $element_handler->get($lsb); $dataHandlers[$lsbElement->getVar('id_form')]->reassignLSB($sourceElement->getVar('id_form'), $lsbElement, $entryMap); } return $entryMap; }