function show_edit_keywords_form($type_obj, $id_obj, $id_obj_sec = 0) { include_lcm('inc_access'); if (!$GLOBALS['legal_obj'][$type_obj]) { lcm_panic("Invalid object type requested"); } if ($id_obj) { // // Show current keywords (already attached to object) // $current_kws = get_keywords_applied_to($type_obj, $id_obj, $id_obj_sec); $cpt = 0; foreach ($current_kws as $kw) { $kwg = get_kwg_from_id($kw['id_group']); $show_kw_value = false; echo "<tr>\n"; echo "<td>" . "<label for=\"kw_value_{$type_obj}{$cpt}\">" . f_err_star('kwg' . $kwg['id_group']) . _Ti(remove_number_prefix($kwg['title'])) . "</label>" . "<br />(" . _T('keywords_input_policy_' . $kwg['policy']) . ")" . "</td>\n"; echo "<td>"; $kw_for_kwg = get_keywords_in_group_id($kwg['id_group']); if (count($kw_for_kwg)) { echo '<input type="hidden" name="kwg_id_' . $type_obj . '[]" value="' . $kwg['id_group'] . '" />' . "\n"; echo '<input type="hidden" name="kw_entry_' . $type_obj . '[]" value="' . $kw['id_entry'] . '" />' . "\n"; echo '<select id="kw_value_' . $type_obj . $cpt . '" name="kw_value_' . $type_obj . '[]">'; echo '<option value="">' . '' . "</option>\n"; foreach ($kw_for_kwg as $kw1) { if ($kw1['hasvalue'] == 'Y') { $show_kw_value = true; } $sel = ''; if (isset($_SESSION['form_data']['kw_value_' . $type_obj][$cpt]) && $_SESSION['form_data']['kw_value_' . $type_obj][$cpt] == $kw1['id_keyword']) { $sel = ' selected="selected" '; } elseif ($kw1['id_keyword'] == $kw['id_keyword']) { $sel = ' selected="selected" '; } echo '<option value="' . $kw1['id_keyword'] . '"' . $sel . '>' . _T(remove_number_prefix($kw1['title'])) . "</option>\n"; } echo "</select>\n"; } // Check if keyword policy = mandatory, and quantity = one $kwg = get_kwg_from_id($kw['id_group']); if (!($kwg['policy'] == 'mandatory' && $kwg['quantity'] == 'one')) { echo '<label for="kw_del_' . $type_obj . $cpt . '">' . '<img src="images/jimmac/stock_trash-16.png" width="16" height="16" alt="Delete?" title="Delete?" />' . '</label> <input type="checkbox" id="kw_del_' . $type_obj . $cpt . '" name="kw_del_' . $type_obj . $cpt . '"/>'; } if ($show_kw_value) { // Use value if submitted with the form, else use previous one if (isset($_SESSION['form_data']['kw_entryval_' . $type_obj . $cpt])) { $tmp_value = $_SESSION['form_data']['kw_entryval_' . $type_obj . $cpt]; } else { $tmp_value = $kw['value']; } echo "<br />\n"; echo '<input type="text" name="kw_entryval_' . $type_obj . $cpt . '" ' . 'value="' . $tmp_value . '" />' . "\n"; } echo "</td>\n"; echo "</tr>\n"; $cpt++; } } // // New keywords // $kwg_for_case = get_kwg_applicable_for($type_obj, $id_obj, $id_obj_sec); $cpt_kw = 0; foreach ($kwg_for_case as $kwg) { echo "<tr>\n"; echo '<td><label for="new_keyword_' . $type_obj . $cpt_kw . '">' . f_err_star('keyword_' . $type_obj . $cpt_kw) . f_err_star('kwg' . $kwg['id_group']) . _Ti(remove_number_prefix($kwg['title'])) . '</label>' . "<br />(" . _T('keywords_input_policy_' . $kwg['policy']) . ")</td>\n"; echo "<td>"; $kw_for_kwg = get_keywords_in_group_id($kwg['id_group']); if (count($kw_for_kwg)) { $obj_id_ajax = 'kw_' . create_random_password(15, time()); echo '<input type="hidden" name="new_kwg_' . $type_obj . '_id[]" value="' . $kwg['id_group'] . '" />' . "\n"; echo '<select id="new_keyword_' . $type_obj . $cpt_kw . '" ' . 'name="new_keyword_' . $type_obj . '_value[]" ' . "onchange=\"getKeywordInfo('get_kwg_in','" . $kwg['name'] . "', '{$type_obj}', {$id_obj}, 0, '{$obj_id_ajax}')\"" . '>'; echo '<option value="">' . '' . "</option>\n"; $show_kw_value = false; foreach ($kw_for_kwg as $kw) { if ($kw['hasvalue'] == 'Y') { $show_kw_value = true; } // For default value, use the form_data (if present), else use suggested keyword $sel = ''; if (isset($_SESSION['form_data']['new_keyword_' . $type_obj . '_value'][$cpt_kw]) && $_SESSION['form_data']['new_keyword_' . $type_obj . '_value'][$cpt_kw] == $kw['id_keyword']) { $sel = ' selected="selected" '; } elseif ($kwg['suggest'] == $kw['name']) { $sel = ' selected="selected" '; } // $sel = ($kwg['suggest'] == $kw['name'] ? ' selected="selected" ' : ''); echo '<option ' . $sel . ' value="' . $kw['id_keyword'] . '">' . _T(remove_number_prefix($kw['title'])) . "</option>\n"; } echo "</select>\n"; if ($show_kw_value) { $tmp_value = ''; if (isset($_SESSION['form_data']['new_kw_entryval_' . $type_obj . $cpt_kw])) { $tmp_value = $_SESSION['form_data']['new_kw_entryval_' . $type_obj . $cpt_kw]; } echo "<br />\n"; echo '<input type="text" name="new_kw_entryval_' . $type_obj . $cpt_kw . '" ' . 'value="' . $tmp_value . '" />' . "\n"; } echo '<div id="' . $obj_id_ajax . '"></div>' . "\n"; } else { // // Sub-keyword group(s), since no top-level keywords // $sub_kwgs = get_subgroups_in_group_id($kwg['id_group']); if (count($sub_kwgs)) { echo '<input type="hidden" name="nop_kwg_' . $type_obj . '_id[]" value="' . $kwg['id_group'] . '" />' . "\n"; $obj_id_ajax = 'kw_' . create_random_password(15, time()); $sel_id = 'nop_kwg_' . $type_obj . $cpt_kw; $sel_name = 'nop_keyword_' . $type_obj . '_value[]'; echo "<select id=\"{$sel_id}\" name=\"{$sel_name}\" " . "onchange=\"getKeywordInfo('get_kwg_in', this.value, '{$type_obj}', {$id_obj}, 0, '{$obj_id_ajax}')\"" . '>'; echo '<option value="">' . '' . "</option>\n"; foreach ($sub_kwgs as $sg) { echo '<option value="' . $sg['name'] . '">' . _T(remove_number_prefix($sg['title'])) . "</option>\n"; } echo "</select>\n"; echo '<div id="' . $obj_id_ajax . '"></div>' . "\n"; } echo '<div id="keywords_in_group_data' . $kwg['id_group'] . '"></div>' . "\n"; } echo "</td>\n"; echo "</tr>\n"; $cpt_kw++; } }
function update_contacts_request($type_person, $id_of_person) { // This will be useful later, to check mandatory/optional contacts $all_contact_kwg = get_kwg_all('contact'); // // Update existing contacts // if (isset($_REQUEST['contact_value'])) { $contacts = $_REQUEST['contact_value']; $c_ids = $_REQUEST['contact_id']; $c_types = $_REQUEST['contact_type']; // // Check if the contacts provided are really attached to the person // or else the user can provide a form with false contacts. // $all_contacts = get_contacts($type_person, $id_of_person); for ($cpt = 0; isset($c_ids[$cpt]) && $c_ids[$cpt]; $cpt++) { $valid = false; foreach ($all_contacts as $c) { if ($c['id_contact'] == $c_ids[$cpt]) { $valid = true; } } if (!$valid) { lcm_panic("Invalid modification of existing contact detected."); } } for ($cpt = 0; isset($c_ids[$cpt]); $cpt++) { // Check first to see if the contact is mandatory $kwg = get_kwg_from_id($c_types[$cpt]); $delete_allowed = true; if ($kwg['policy'] == 'mandatory') { // XXX Having policy == 'mandatory' but quantity = many // really makes a mess, and is not handled. $delete_allowed = false; } if (_request('del_contact_' . $c_ids[$cpt])) { if ($delete_allowed) { lcm_debug("Contact DEL: {$type_person}, {$id_of_person}, " . $c_ids[$cpt], 1); delete_contact($c_ids[$cpt]); } else { $_SESSION['errors']['upd_contact_' . $cpt] = _T('warning_field_mandatory'); } } else { if (!$delete_allowed && !$contacts[$cpt]) { $_SESSION['errors']['upd_contact_' . $cpt] = _T('warning_field_mandatory'); } else { lcm_debug("Contact UPD: {$type_person}, {$id_of_person}, " . $c_ids[$cpt] . ' = ' . $contacts[$cpt], 1); $err = update_contact($c_ids[$cpt], $contacts[$cpt]); if ($err) { $_SESSION['errors']['upd_contact_' . $cpt] = $err; } } } } } // // New contacts // if (isset($_REQUEST['new_contact_value'])) { $cpt = 0; $new_contacts = $_REQUEST['new_contact_value']; $c_type_names = $_REQUEST['new_contact_type_name']; while (isset($new_contacts[$cpt])) { // Process only new contacts which have a value if ($new_contacts[$cpt]) { // And make sure that they have a "type of contact" if ($c_type_names[$cpt]) { lcm_debug("Contact NEW: {$type_person}, {$id_of_person}, Name = " . $c_type_names[$cpt] . ', ' . $new_contacts[$cpt], 1); $err = add_contact($type_person, $id_of_person, $c_type_names[$cpt], $new_contacts[$cpt]); if ($err) { $_SESSION['errors']['new_contact_' . $cpt] = $err; } } else { $_SESSION['errors']['new_contact_' . $cpt] = "Please specify the type of contact."; // TRAD } } $cpt++; } } // // Check if all mandatory contacts were provided // $all_contacts = get_contacts($type_person, $id_of_person); foreach ($all_contact_kwg as $c) { if ($c['policy'] == 'mandatory') { $found = false; foreach ($all_contacts as $a) { if ($a['name'] == $c['name'] && trim($a['value'])) { $found = true; } } if (!$found) { $_SESSION['errors']['contact_' . $c['name']] = _Ti($c['title']) . _T('warning_field_mandatory'); } } } }
function update_keyword($id_keyword) { $kw_title = _request('kw_title'); $kw_name = _request('kw_name'); // only for new keyword $kw_desc = _request('kw_desc'); $kw_ac_author = _request('kw_ac_author'); // show/hide keyword $kw_hasvalue = _request('kw_hasvalue'); // show field to enter text value $kw_idgroup = intval(_request('id_group')); // // Check for errors // if (!$id_keyword) { // new keyword global $system_kwg; if (!$kw_idgroup) { lcm_panic("update_keyword: missing or badly formatted id_keyword or id_group"); } $kwg_info = get_kwg_from_id($kw_idgroup); if (!$kw_name) { $_SESSION['errors']['name'] = _Ti('keywords_input_name') . _T('warning_field_mandatory'); } if (isset($system_kwg[$kwg_info['name']]['keywords'][$kw_name])) { // XXX [ML] what about user keywords? $_SESSION['errors']['name'] = _Ti('keywords_input_name') . _T('keywords_warning_kw_code_exists'); } } if (!$kw_title) { $_SESSION['errors']['title'] = _Ti('keywords_input_name') . _T('warning_field_mandatory'); } if (count($_SESSION['errors'])) { lcm_header("Location: " . $_SERVER['HTTP_REFERER']); exit; } // // Apply to database // $fl = "description = '{$kw_desc}',\n\t\t\ttitle = '{$kw_title}' "; if ($kw_ac_author == 'Y' || $kw_ac_author == 'N') { $fl .= ", ac_author = '{$kw_ac_author}'"; } if ($kw_hasvalue == 'Y' || $kw_hasvalue == 'N') { $query .= ", hasvalue = '{$kw_hasvalue}'"; } if (!$id_keyword) { // new $query = "INSERT INTO lcm_keyword\n\t\t\t\tSET id_group = {$kw_idgroup}, \n\t\t\t\t\tname = '{$kw_name}',\n\t\t\t\t\t{$fl} "; lcm_query($query); $id_keyword = lcm_insert_id('lcm_keyword', 'id_keyword'); $kw_info = get_kw_from_id($id_keyword); // for redirection later } else { // Get current info about keyword (don't trust the user) $kw_info = get_kw_from_id($id_keyword); $query = "UPDATE lcm_keyword\n\t\t\t\t\tSET {$fl}\n\t\t\t\t\tWHERE id_keyword = " . $id_keyword; lcm_query($query); } write_metas(); // update inc_meta_cache.php $tab = $kw_info['type'] == 'system' ? 'system' : 'user'; lcm_header("Location: keywords.php?tab=" . $tab . "#" . $kw_info['kwg_name']); exit; }