/** * Read field-configuration as array and interpret array-keys * this function calls tagReplace * * @param mdb2 $mdb2 database object * @param R3Auth $auth authentication object * @param array $fields field-configuration * @param array $data */ function readFieldArray($mdb2, $auth, &$fields, &$data, $opts = array()) { $opts = array_merge(array('ignoreReadOnly' => false, 'ignoreHidden' => false), $opts); $isAuthManager = get_class($auth) == 'R3AuthManager' || is_subclass_of($auth, 'R3AuthManager'); if ($isAuthManager) { if (isset($data['do_name'])) { $dn_name = $data['dn_name']; } else { if (isset($data['do_id'])) { $domainData = $auth->getDomainDataFromID($data['do_id']); $dn_name = $domainData['dn_name']; } else { $dn_name = $auth->getDomainName(); } } if (isset($data['app_code'])) { $app_code = $data['app_code']; } else { $app_code = $auth->getApplicationCode(); } if (isset($data['us_login'])) { $us_login = $data['us_login']; } else { $us_login = $auth->getLogin(); } // Se la chiamata fallisce l'utente non viene trovato. Considero un nuovo utente $isAdd = !$auth->loadConfigFor($dn_name, $app_code, $us_login); } else { $isAdd = false; } //$fixedValues = array(); foreach ($fields as $fieldname => $settings) { if (isset($settings['inivalue']) && !isset($settings['value'])) { $fields[$fieldname]['value'] = $auth->getConfigValue($settings['inivalue'][0], $settings['inivalue'][1], $settings['inivalue'][2]); } if (isset($settings['label']) && isset($lbl[$settings['label']])) { $fields[$fieldname]['label'] = tagReplace($lbl[$settings['label']]); } else { if (isset($settings['label'])) { $fields[$fieldname]['label'] = _(tagReplace($settings['label'])); } } if ($opts['ignoreReadOnly'] == true) { $ReadOnly = false; } else { $ReadOnly = isset($settings['kind']) && strToUpper(substr($settings['kind'], 0, 1)) == 'R'; } if (isset($settings['type']) && in_array($settings['type'], array('select', 'select-multiple'))) { $a = array(); if (isset($settings['sql']) && $settings['sql'] != '') { $sql = tagReplace($settings['sql']); $res =& $mdb2->query($sql); if (PEAR::isError($res)) { throw new Exception($res->getMessage()); } while ($row = $res->fetchRow(MDB2_FETCHMODE_ORDERED)) { if (count($row) > 2) { if ($ReadOnly || $row[0] == '' && $row[1] == '') { $a[$row[0]] = $row[2]; } else { $a[$row[1]][$row[0]] = $row[2]; /** men� a tendina con option */ } } else { $a[$row[0]] = $row[1]; } } $fields[$fieldname]['values'] = $a; if ($ReadOnly) { /** Menu a tendina Read Only: Correggo valore (test_cbReplaceTexto e non value) */ if (isset($data[$fieldname]) && isset($a[$data[$fieldname]])) { $data[$fieldname] = $a[$data[$fieldname]]; } } } else { if ($ReadOnly) { if (!isset($settings['inistorage'])) { $data[$fieldname] = @$fields[$fieldname]['values'][$auth->getParam($fieldname)]; } } else { foreach ($fields[$fieldname]['values'] as $key => $val) { $fields[$fieldname]['val'][$key] = _(tagReplace($val)); } $fields[$fieldname]['values'] = $fields[$fieldname]['val']; } } } } // Assign the user values if (!$isAdd) { if (isset($fields) && is_array($fields)) { foreach ($fields as $fieldname => $settings) { if (isset($settings['inistorage'])) { $default = @$auth->getConfigValue($settings['inivalue'][0], $settings['inivalue'][1], $settings['inivalue'][2]); $fields[$fieldname]['value'] = $auth->getConfigValue($settings['inistorage'][0], $settings['inistorage'][1], $default); } else { if (isset($settings['storagetable'])) { if (isset($data['us_id'])) { $sql = "SELECT {$fieldname} FROM {$settings['storagetable']} WHERE us_id={$data['us_id']} "; $res =& $mdb2->query($sql); if (PEAR::isError($res)) { throw new Exception($res->getMessage()); } $fields[$fieldname]['value'] = array(); while ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)) { $fields[$fieldname]['value'][] = $row[$fieldname]; } } } else { if (isset($data[$fieldname])) { $fields[$fieldname]['value'] = $data[$fieldname]; } } } } } } }
function checkReq($extra_fields, $elems) { /** checks * */ $parseError = null; $errors = array(); foreach ($extra_fields as $key => $val) { $label = tagReplace($val['label']); /** check required * */ if (isset($val['required']) && $val['required'] === true) { if ($elems[$key] == '' && !in_array($label, $errors)) { $msg = sprintf(_("\"%s\" è obbligatorio"), $label); $errors[$label] = $msg; break; } } /** check maxlength * */ if (isset($val['type']) && $val['type'] == 'text' || $val['type'] == 'string') { // check string length if (isset($val['maxlength']) && mb_strlen($elems[$key]) > $val['maxlength']) { $sanValue = mb_substr($rv, 0, $val['maxlength']); } else { $sanValue = $elems[$key]; } } /** check type integer * */ if (isset($val['type']) && $val['type'] == 'integer') { if (trim($elems[$key]) === '') { $sanValue = null; } else { if (is_numeric($elems[$key])) { if ((int) $elems[$key] == $elems[$key]) { $sanValue = (int) $elems[$key]; } else { $parseError = true; } } else { if (is_string($elems[$key])) { if (preg_match('/^[+-]?[0-9]+$/', trim($elems[$key]))) { $sanValue = (int) $elems[$key]; } else { $parseError = true; } } else { $parseError = true; } } } if ($parseError) { $msg = sprintf(_("La stringa '%s' non può essere interpretata come intero"), $elems[$key]); $errors[$label] = $msg; break; } } /** check type float * */ if (isset($val['type']) && $val['type'] == 'float') { if (trim($elems[$key]) === '') { $sanValue = null; } else { if (is_numeric($elems[$key])) { $sanValue = $elems[$key]; } else { if (is_string($elems[$key])) { $sign = +1; // is integer? if (preg_match('/^\\s*([+-]?)([0-9]+)\\s*$/', $elems[$key], $parts)) { if ($parts[1] == '-') { $sign = -1; } $sanValue = $sign * (double) $parts[2]; // or float? } else { if (preg_match('/^([+-]?)([0-9]*)([\\.,]?)([0-9]*)$/', $elems[$key], $parts)) { if ($parts[1] == '-') { $sign = -1; } $sanValue = $sign * (double) ($parts[2] . '.' . $parts[4]); } else { $parseError = true; } } } } } if ($parseError) { $msg = sprintf(_("La stringa '%s' non può essere interpretata come float"), $elems[$key]); $errors[$label] = $msg; break; } } /** check uniqes * */ if (isset($val['unique']) && is_array($val['unique'])) { global $mdb2; $sql = "SELECT count(*) from {$val['unique']['table']} where {$val['unique']['key']} = " . $mdb2->quote($elems[$key]); if (!empty($elems['us_login'])) { $sql .= " AND us_login <> " . $mdb2->quote($elems['us_login']); } $result =& $mdb2->query($sql); $vlu = $result->fetchRow(0); if ($vlu[0] > 0) { $msg = sprintf(_("{$label} \"%s\" esiste già"), $elems[$key]); $errors[$label] = $msg; break; } continue; } } return $errors; }
$res = tagSave($system, $_REQUEST); } else { if ($action == "delete" && @$_REQUEST['ids']) { $res = tagDelete($system, $_REQUEST['ids'], @$_REQUEST['UGrpID']); } else { if ($action == "search" && @$_REQUEST['UGrpID']) { $res = tagGetByRecords($system, @$_REQUEST['info'] != "short", @$_REQUEST['recIDs'], @$_REQUEST['UGrpID']); if (is_array($res)) { $res['recIDs'] = @$_REQUEST['recIDs']; } /* $res = tagGetByUser($system, false, $_REQUEST['UGrpID']); */ } else { if ($action == "replace" && @$_REQUEST['UGrpID']) { $res = tagReplace($system, $_REQUEST['ids'], $_REQUEST['new_id'], @$_REQUEST['UGrpID']); } else { if ($action == "rating") { $res = bookmarkRating($system, @$_REQUEST['recIDs'], @$_REQUEST['rating'], @$_REQUEST['UGrpID']); } else { if ($action == "set") { // assign/remove tags to records if (@$_REQUEST['assign']) { $res = tagsAssign($system, @$_REQUEST['recIDs'], @$_REQUEST['assign'], null, @$_REQUEST['UGrpID']); } else { $res = array(); } if (!is_bool($res) && @$_REQUEST['remove']) { $res2 = tagsRemove($system, @$_REQUEST['recIDs'], @$_REQUEST['remove'], null, @$_REQUEST['UGrpID']); if (is_bool($res) && !$res) { $res = false;