Example #1
0
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>&nbsp;<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++;
    }
}
Example #2
0
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');
            }
        }
    }
}
Example #3
0
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;
}