function write_metas() { global $meta, $meta_upd; read_metas(); $s = '<' . '?php if (defined("_INC_META_CACHE")) return; define("_INC_META_CACHE", "1"); function read_meta($name) { global $meta; if (! isset($meta[$name])) { lcm_debug("read_meta: -$name- does not exist"); return ""; } return $meta[$name]; } function read_meta_upd($name) { global $meta_upd; return $meta_upd[$name]; } '; if ($meta) { reset($meta); while (list($key, $val) = each($meta)) { $key = addslashes($key); $val = preg_replace("/([\\\\'])/", "\\\\1", $val); $s .= "\$GLOBALS['meta']['{$key}'] = '{$val}';\n"; } $s .= "\n"; } if ($meta_upd) { reset($meta_upd); while (list($key, $val) = each($meta_upd)) { $key = addslashes($key); $s .= "\$GLOBALS['meta_upd']['{$key}'] = '{$val}';\n"; } $s .= "\n"; } // System keywords include_lcm('inc_keywords'); $kwg_all = get_kwg_all('system'); foreach ($kwg_all as $key0 => $val0) { // Dump every field of the keyword group foreach ($val0 as $key => $val) { // We filter out numeric keys because lcm_fetch_array() // returns the two types of arrays if (!is_numeric($key)) { $key = addslashes($key); $val = preg_replace("/([\\\\'])/", "\\\\1", $val); $s .= "\$GLOBALS['system_kwg']['" . $kwg_all[$key0]['name'] . "']['{$key}'] = '{$val}';\n"; } } } reset($kwg_all); foreach ($kwg_all as $kwg) { // Dump every keyword and field of the keyword group $kw_all = get_keywords_in_group_id($kwg['id_group'], false); foreach ($kw_all as $kw) { $kw_name = $kw['name']; // Dump every field of the keyword into the kwg while (list($key, $val) = each($kw)) { if (!is_numeric($key)) { $key = addslashes($key); $val = preg_replace("/([\\\\'])/", "\\\\1", $val); $s .= "\$GLOBALS['system_kwg']['" . $kwg['name'] . "']['keywords']['{$kw_name}']['{$key}'] = '{$val}';\n"; } } } } $s .= '?' . '>'; if (isset($_SERVER['LcmDataDir'])) { $file_meta_cache = $_SERVER['LcmDataDir'] . '/inc_meta_cache.php'; } else { $file_meta_cache = 'inc/data/inc_meta_cache.php'; } @unlink($file_meta_cache); $file_meta_cache_w = $file_meta_cache . '-' . @getmypid(); $f = @fopen($file_meta_cache_w, "wb"); if ($f) { $r = @fputs($f, $s); @fclose($f); if ($r == strlen($s)) { @rename($file_meta_cache_w, $file_meta_cache); } else { @unlink($file_meta_cache_w); } } else { global $connect_status; if ($connect_status == 'admin') { echo "<h4 font color='red'>" . _T('texte_inc_meta_1') . " <a href='lcm_test_dirs.php'>" . _T('texte_inc_meta_2') . "</a> " . _T('texte_inc_meta_3') . " </h4>\n"; } } }
function _Tkw($grp, $val, $args = '') { global $system_kwg; $kwg = array(); // If a 'contact' keyword (starts with +), remove the + if (substr($val, 0, 1) == '+') { $val = substr($val, 1); } if ($system_kwg[$grp]) { $kwg = $system_kwg[$grp]['keywords']; } else { $kwg = get_keywords_in_group_name($grp, false); } if (count($kwg)) { if ($kwg[$val]) { return _T(remove_number_prefix($kwg[$val]['title']), $args); } else { // This is a weird case where the upgrade didn't refresh the // group correctly, so we will try to fix the situation. // First, we check in the database to see if the keyword exists, // and if it does, then we refresh the keywords. // Note: that get_keywords_in_group_id() consults only the DB // [ML] Note: this should not happen from 0.6.3, but i'm fed up of // thinking that this time we fixed it, so the code stays.. $tmp_group = get_kwg_from_name($grp); $kws1 = get_keywords_in_group_id($tmp_group['id_group'], false); foreach ($kws1 as $kw) { if ($kw['name'] == $val) { include_lcm('inc_keywords_default'); $system_keyword_groups = get_default_keywords(); create_groups($system_keyword_groups); write_metas(); // regenerate inc/data/inc_meta_cache.php return _T(remove_number_prefix($kw['title']), $args); } } lcm_panic("*** The keyword does not exist. It is possible that a\n\t\t\t\tminor error occured while the last upgrade of the software. Please\n\t\t\t\task your administrator to do the following: Go to the 'Keywords'\n\t\t\t\tmenu, then click on the 'Maintenance' tab, then click on the\n\t\t\t\t'Validate' button. This will refresh the available keywords."); } } else { lcm_panic("*** The keyword group does not exist. It is possible that a\n\t\t\tminor error occured while the last upgrade of the software. Please\n\t\t\task your administrator to do the following: Go to the 'Keywords'\n\t\t\tmenu, then click on the 'Maintenance' tab, then click on the\n\t\t\t'Validate' button. This will refresh the available keywords."); } }
} } } echo "</div>\n"; } elseif ($action == 'get_kws_in') { // Searching keywords to add to a case (experimental) include_lcm('inc_keywords'); include_lcm('inc_access'); echo '<div id="' . _request('div') . '">'; $id_obj = _request('id_obj', 0); $type_obj = _request('type_obj', '__ASSERT__'); $group_name = _request('group_name'); if ($group_name) { $kwg = get_kwg_from_name($group_name); $id_group = $kwg['id_group']; $kw_for_kwg = get_keywords_in_group_id($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="' . $id_group . '" />' . "\n"; echo '<select id="new_keyword_' . $type_obj . $cpt_kw . '" ' . 'name="new_keyword_' . $type_obj . '_value[]" ' . "onchange=\"getKeywordInfo('get_kwg_in','{$group_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 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" ';
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 show_kwg_info($kwg, $level = 0) { // test ac-admin? $suggest = $kwg['suggest']; echo '<a name="' . $kwg['name'] . '"></a>' . "\n"; echo "<fieldset class='info_box'>\n"; echo "<div class='prefs_column_menu_head'>"; echo _T($kwg['title']); // Applies to: show only if not sub-kwg, because otherwise redundant info if (!$level) { if ($kwg['type'] != 'system' && $kwg['type'] != 'contact') { echo " - " . _Ti('keywords_input_type') . _T('keywords_input_type_' . $kwg['type']); } } if ($kwg['ac_author'] != 'Y') { echo ' ' . _T('keywords_info_kwg_hidden'); } echo "</div>\n"; $kw_all = get_keywords_in_group_id($kwg['id_group'], false); if (count($kw_all)) { $cpt_kw = 0; echo "<ul class='wo_blt'>\n"; echo '<table border="0" align="center" class="tbl_usr_dtl" width="100%">' . "\n"; foreach ($kw_all as $key => $kw) { $css = ' class="tbl_cont_' . ($cpt_kw % 2 ? "dark" : "light") . '" '; // echo '<li>'; echo "<tr>\n"; // Keyword name echo "<td width='80%' {$css}>"; if ($suggest == $kw['name']) { echo "<b>"; } echo "<a href='?action=edit_keyword&id_keyword=" . $kw['id_keyword'] . "' class='content_link'>" . _T(remove_number_prefix($kw['title'])) . "</a>"; if ($suggest == $kw['name']) { echo "</b>"; } echo "</td>"; // Hidden kw? echo "<td {$css}>"; if ($kw['ac_author'] != 'Y') { echo _T('keywords_info_kw_hidden'); } echo "</td>"; echo "</tr>\n"; // echo "</li>\n"; $cpt_kw++; } echo "</table>\n"; echo "</ul>\n"; } // // Sub-groups (recursive) // if ($kwg['type'] != 'system' && $kwg['type'] != 'contact') { $sub_kwgs = get_subgroups_in_group_id($kwg['id_group']); foreach ($sub_kwgs as $skwg) { show_kwg_info($skwg, $level + 1); } } // // Buttons // echo '<p>'; if ($kwg['ac_admin']) { echo '<a class="edit_lnk" href="keywords.php?action=edit_group&id_group=' . $kwg['id_group'] . '">' . _T('keywords_button_kwg_edit') . '</a>'; } // New keyword if ($kwg['type'] != 'contact') { echo ' <a class="edit_lnk" href="keywords.php?action=edit_keyword&id_keyword=0&' . 'id_group=' . $kwg['id_group'] . '">' . _T('keywords_button_kw_new') . '</a>'; } // New sub-group if ($kwg['type'] != 'system' && $kwg['type'] != 'contact') { echo ' <a class="edit_lnk" href="keywords.php?action=edit_group&id_group=0&' . 'id_parent=' . $kwg['id_group'] . '">' . _T('keywords_button_subkwg_new') . '</a>'; } echo "</p>\n"; echo "</fieldset>\n"; }