break;
 case 'delete_uploaded_file':
     $folderName = $_GET['param1'];
     $element_id = $_GET['param2'];
     $entry_id = $_GET['param3'];
     $element_handler = xoops_getmodulehandler('elements', 'formulize');
     $elementObject = $element_handler->get($element_id);
     $fid = $elementObject->getVar('id_form');
     include_once XOOPS_ROOT_PATH . "/modules/formulize/class/data.php";
     $data_handler = new formulizeDataHandler($fid);
     $fileInfo = $data_handler->getElementValueInEntry($entry_id, $elementObject);
     $fileInfo = unserialize($fileInfo);
     $filePath = XOOPS_ROOT_PATH . "/uploads/{$folderName}/" . $fileInfo['name'];
     if (!file_exists($filePath) or unlink($filePath)) {
         // erase the recorded values for this file in the database, false is proxy user, true is force update (on a GET request)
         $data_handler->writeEntry($entry_id, array($elementObject->getVar('ele_handle') => ''), false, true);
         print json_encode(array("element_id" => $element_id, "entry_id" => $entry_id));
     }
     break;
 case 'get_element_html':
     include_once XOOPS_ROOT_PATH . "/modules/formulize/include/elementdisplay.php";
     displayElement("", formulize_db_escape($_GET['param2']), intval($_GET['param3']));
     break;
 case 'get_element_value':
     $handle = $_GET['param1'];
     $entryId = intval($_GET['param3']);
     include_once XOOPS_ROOT_PATH . "/modules/formulize/include/functions.php";
     include_once XOOPS_ROOT_PATH . "/modules/formulize/include/extract.php";
     include_once XOOPS_ROOT_PATH . "/modules/formulize/class/data.php";
     $element_handler = xoops_getmodulehandler('elements', 'formulize');
     $elementObject = $element_handler->get(formulize_db_escape($handle));
Exemplo n.º 2
0
function formulize_calcDerivedColumns($entry, $metadata, $relationship_id, $form_id)
{
    global $xoopsDB;
    static $parsedFormulas = array();
    include_once XOOPS_ROOT_PATH . "/modules/formulize/class/data.php";
    foreach ($entry as $formHandle => $record) {
        $data_handler = new formulizeDataHandler(formulize_getFormIdFromName($formHandle));
        $formHandle = htmlspecialchars_decode($formHandle, ENT_QUOTES);
        if (isset($metadata[$formHandle])) {
            // if there are derived value formulas for this form
            if (!isset($parsedFormulas[$formHandle])) {
                formulize_includeDerivedValueFormulas($metadata[$formHandle], $formHandle, $relationship_id, $form_id);
                $parsedFormulas[$formHandle] = true;
            }
            foreach ($record as $primary_entry_id => $elements) {
                $dataToWrite = array();
                foreach ($metadata[$formHandle] as $formulaNumber => $thisMetaData) {
                    // if there's nothing already in the DB, then derive it, unless we're being asked specifically to update the derived values, which happens during a save operation.  In that case, always do a derivation regardless of what's in the DB.
                    if (isset($GLOBALS['formulize_forceDerivedValueUpdate']) and !isset($GLOBALS['formulize_doingExport'])) {
                        $functionName = "derivedValueFormula_" . str_replace(array(" ", "-", "/", "'", "`", "\\", ".", "’", ",", ")", "(", "[", "]"), "_", $formHandle) . "_" . $formulaNumber;
                        // want to turn off the derived value update flag for the actual processing of a value, since the function might have a getData call in it!!
                        $resetDerivedValueFlag = false;
                        if (isset($GLOBALS['formulize_forceDerivedValueUpdate'])) {
                            unset($GLOBALS['formulize_forceDerivedValueUpdate']);
                            $resetDerivedValueFlag = true;
                        }
                        $derivedValue = $functionName($entry, $form_id, $primary_entry_id, $relationship_id);
                        if ($resetDerivedValueFlag) {
                            $GLOBALS['formulize_forceDerivedValueUpdate'] = true;
                        }
                        // if the new value is the same as the previous one, then skip updating and saving
                        if ($derivedValue != $entry[$formHandle][$primary_entry_id][$thisMetaData['handle']][0]) {
                            $entry[$formHandle][$primary_entry_id][$thisMetaData['handle']][0] = $derivedValue;
                            if ($xoopsDB) {
                                // save value for writing to database if XOOPS is active
                                $elementID = formulize_getIdFromElementHandle($thisMetaData['handle']);
                                $dataToWrite[$elementID] = $derivedValue;
                            }
                        }
                    }
                }
                if ($xoopsDB and count($dataToWrite) > 0) {
                    // false for no proxy user, true to force the update even on get requests, false is do not update the metadata (modification user)
                    $data_handler->writeEntry($primary_entry_id, $dataToWrite, false, true, false);
                }
            }
        }
    }
    return $entry;
}
Exemplo n.º 3
0
function formulize_writeEntry($values, $entry = "new", $action = "replace", $proxyUser = false, $forceUpdate = false, $writeOwnerInfo = true)
{
    if ($entry < 1 and "new" != $entry) {
        // safety net in case NULL is passed as $entry
        $entry = "new";
    }
    // get the form id from the element id of the first value in the values array
    $element_handler = xoops_getmodulehandler('elements', 'formulize');
    $elementObject = $element_handler->get(key($values));
    if (is_object($elementObject)) {
        $data_handler = new formulizeDataHandler($elementObject->getVar('id_form'));
        if ($result = $data_handler->writeEntry($entry, $values, $proxyUser, $forceUpdate)) {
            global $xoopsUser;
            if ($proxyUser) {
                $ownerForGroups = $proxyUser;
            } elseif ($xoopsUser) {
                $ownerForGroups = $xoopsUser->getVar('uid');
            } else {
                $ownerForGroups = 0;
            }
            if ($entry == "new" and $writeOwnerInfo) {
                $data_handler->setEntryOwnerGroups($ownerForGroups, $result);
                // result will be the ID number of the entry that was just written.
            }
            return $result;
        } else {
            exit("Error: data could not be written to the database for entry {$entry} in form " . $elementObject->getVar('id_form') . ".");
        }
    } else {
        exit("Error: invalid element in the value array: " . key($values) . ".");
    }
}