function get_date_range_fields() { $ret = array(); $link = new Link(); $link->delVar('date_start_day'); $link->delVar('date_start_month'); $link->delVar('date_start_year'); $link->delVar('date_end_day'); $link->delVar('date_end_month'); $link->delVar('date_end_year'); $ret['html'] = $link->getForm(); // By default, show from "now() - 1 month" to NOW(). // Unlike in case_details, we cannot show all, since it would return // too many results. $ret['html'] .= "<p class=\"normal_text\">\n"; $ret['date_end'] = get_datetime_from_array($_REQUEST, 'date_end', 'end', "-1"); $ret['date_start'] = get_datetime_from_array($_REQUEST, 'date_start', 'start', date('Y-m-d H:i:s', strtotime("-1 month" . ($ret['date_end'] != "-1" ? $ret['date_end'] : date('Y-m-d H:i:s'))))); $ret['html'] .= _Ti('time_input_date_start'); $ret['html'] .= get_date_inputs('date_start', $ret['date_start']); $ret['html'] .= _Ti('time_input_date_end'); if ($ret['date_end'] == "-1") { $ret['html'] .= get_date_inputs('date_end'); } else { $ret['html'] .= get_date_inputs('date_end', $ret['date_end']); } $ret['html'] .= ' <button name="submit" type="submit" value="submit" class="simple_form_btn">' . _T('button_validate') . "</button>\n"; $ret['html'] .= "</p>\n"; $ret['html'] .= "</form>\n"; return $ret; }
function show_report_filters($id_report, $is_runtime = false) { // Get general report info $q = "SELECT * FROM lcm_report WHERE id_report = " . intval($id_report); $res = lcm_query($q); $rep_info = lcm_fetch_array($res); if (!$rep_info) { lcm_panic("Report does not exist: {$id_report}"); } // List filters attached to this report $query = "SELECT *\n\t\tFROM lcm_rep_filter as v, lcm_fields as f\n\t\tWHERE id_report = " . $id_report . "\n\t\tAND f.id_field = v.id_field"; // If generating the report (as opposed to editing), show filters // who have a filter type (eq, neq, in, ..), but no value. if ($is_runtime) { $query .= " AND v.type != '' AND v.value = '' "; } $result = lcm_query($query); if (lcm_num_rows($result)) { if ($is_runtime) { // submit all at once (else submit on a per-filter basis) echo '<form action="run_rep.php" name="frm_filters" method="get">' . "\n"; echo '<input name="rep" value="' . $id_report . '" type="hidden" />' . "\n"; if (isset($_REQUEST['export'])) { echo '<input name="export" value="' . $_REQUEST['export'] . '" type="hidden" />' . "\n"; } } echo "<table border='0' class='tbl_usr_dtl' width='99%'>\n"; while ($filter = lcm_fetch_array($result)) { if (!$is_runtime) { echo "<form action='upd_rep_field.php' name='frm_line_additem' method='get'>\n"; echo "<input name='update' value='filter' type='hidden' />\n"; echo "<input name='rep' value='{$id_report}' type='hidden' />\n"; echo "<input name='id_filter' value='" . $filter['id_filter'] . "' type='hidden' />\n"; } echo "<tr>\n"; echo "<td>" . _Th($filter['description']) . "</td>\n"; // Type of filter echo "<td>"; $all_filters = array('number' => array('none', 'num_eq', 'num_neq', 'num_lt', 'num_le', 'num_gt', 'num_ge'), 'date' => array('none', 'date_eq', 'date_in', 'date_lt', 'date_le', 'date_gt', 'date_ge'), 'text' => array('none', 'text_eq', 'text_neq')); if ($all_filters[$filter['filter']]) { // At runtime, if a filter has been selected, do not allow select if ($filter['type'] && $is_runtime) { echo _T('rep_filter_' . $filter['type']); } else { echo "<select name='filter_type'>\n"; echo "<option value=''>...</option>\n"; foreach ($all_filters[$filter['filter']] as $f) { $sel = $filter['type'] == $f ? ' selected="selected"' : ''; echo "<option value='" . $f . "'" . $sel . ">" . _T('rep_filter_' . $f) . "</option>\n"; } echo "</select>\n"; } } else { // XXX Should happen only if a filter was removed in a future version, e.g. rarely // or between development releases. echo "Unknown filter"; } echo "</td>\n"; // Value for filter echo "<td>"; switch ($filter['type']) { case 'num_eq': case 'num_neq': if ($filter['field_name'] == 'id_author') { $name = $is_runtime ? "filter_val" . $filter['id_filter'] : 'filter_value'; // XXX make this a function $q = "SELECT * FROM lcm_author WHERE status IN ('admin', 'normal', 'external')"; $result_author = lcm_query($q); echo "<select name='{$name}'>\n"; echo "<option value=''>...</option>\n"; // TRAD while ($author = lcm_fetch_array($result_author)) { // Check for already submitted value $sel = $filter['value'] == $author['id_author'] || $_REQUEST['filter_val' . $filter['id_filter']] == $author['id_author'] ? ' selected="selected"' : ''; echo "<option value='" . $author['id_author'] . "'" . $sel . ">" . $author['id_author'] . " : " . get_person_name($author) . "</option>\n"; } echo "</select>\n"; break; } case 'num_lt': case 'num_gt': $name = $is_runtime ? "filter_val" . $filter['id_filter'] : 'filter_value'; echo '<input style="width: 99%;" type="text" name="' . $name . '" value="' . $filter['value'] . '" />'; break; case 'date_eq': case 'date_lt': case 'date_le': case 'date_gt': case 'date_ge': $name = $is_runtime ? "filter_val" . $filter['id_filter'] : 'date'; echo get_date_inputs($name, $filter['value']); // FIXME break; case 'date_in': // date_in has two values, stored ex: 2005-01-01 00:00:00;2006-02-02 00:00:00 $name = $is_runtime ? "filter_val" . $filter['id_filter'] : 'date'; $values = split(";", $filter['value']); echo get_date_inputs($name . '_start', $values[0]); echo "<br />\n"; echo get_date_inputs($name . '_end', $values[1]); break; case 'text_eq': case 'text_neq': $name = $is_runtime ? "filter_val" . $filter['id_filter'] : 'filter_value'; if ($filter['enum_type']) { $enum = explode(":", $filter['enum_type']); if ($enum[0] == 'keyword') { if ($enum[1] == 'system_kwg') { $all_kw = get_keywords_in_group_name($enum[2]); echo '<select name="' . $name . '">' . "\n"; echo '<option value="">' . "..." . "</option>\n"; // TRAD foreach ($all_kw as $kw) { $sel = $filter['value'] == $kw['name'] || $_REQUEST['filter_val' . $filter['id_filter']] == $kw['name'] ? ' selected="selected" ' : ''; echo '<option value="' . $kw['name'] . '"' . $sel . '>' . _Tkw($enum[2], $kw['name']) . "</option>\n"; } echo "</select>\n"; } } elseif ($enum[0] == 'list') { $items = split(",", $enum[1]); echo '<select name="' . $name . '">' . "\n"; echo '<option value="">' . "..." . "</option>\n"; // TRAD foreach ($items as $i) { $tmp = $i; if ($enum[2]) { $tmp = _T($enum[2] . $tmp); } $sel = $filter['value'] == $i || $_REQUEST['filter_val' . $filter['id_filter']] == $i ? ' selected="selected" ' : ''; echo '<option value="' . $i . '"' . $sel . '>' . $tmp . "</option>\n"; } echo "</select>\n"; } } else { echo '<input style="width: 99%;" type="text" name="' . $name . '" value="' . $filter['value'] . '" />'; } break; default: echo "<!-- no type -->\n"; } echo "</td>\n"; if (!$is_runtime) { // Button to validate echo "<td>"; echo "<button class='simple_form_btn' name='validate_filter_addfield'>" . _T('button_validate') . "</button>\n"; echo "</td>\n"; // Link for "Remove" echo "<td><a class='content_link' href='upd_rep_field.php?rep=" . $id_report . "&" . "remove=filter" . "&" . "id_filter=" . $filter['id_filter'] . "'>" . "X" . "</a></td>\n"; } echo "</tr>\n"; if (!$is_runtime) { echo "</form>\n"; } } echo "</table>\n"; } if ($is_runtime) { echo "<p><button class='simple_form_btn' name='validate_filter_addfield'>" . _T('button_validate') . "</button></p>\n"; echo "</form>\n"; return; } // List all available fields in selected tables for report $query = "SELECT *\n\t\tFROM lcm_fields\n\t\tWHERE "; $sources = array(); if ($rep_info['line_src_name']) { array_push($sources, "'lcm_" . $rep_info['line_src_name'] . "'"); } // Fetch all tables available as rep colums // (this is not like rep line, because the source is not always in // lcm_report, but this should be 'fixed') $q_tmp = "SELECT DISTINCT table_name \n\t\t\t\tFROM lcm_rep_col as rp, lcm_fields as f\n\t\t\t\tWHERE rp.id_field = f.id_field\n\t\t\t\t AND rp.id_report = " . $id_report; $result_tmp = lcm_query($q_tmp); while ($row = lcm_fetch_array($result_tmp)) { array_push($sources, "'" . $row['table_name'] . "'"); } // Fetch all keyword sources if ($rep_info['col_src_type'] == 'keyword' && $rep_info['col_src_name']) { $kwg = get_kwg_from_name($rep_info['col_src_name']); if ($kwg['type'] == 'system') { switch ($kwg['name']) { } } else { if ($kwg['type'] == 'client_org') { array_push($sources, "'lcm_client'"); array_push($sources, "'lcm_org'"); } else { array_push($sources, "'lcm_" . $kwg['type'] . "'"); } } } // If lcm_case in there, also add lcm_stage $tmp = ''; foreach ($sources as $s) { if ($s == "'lcm_case'") { $tmp = "lcm_stage"; } } if ($tmp) { array_push($sources, "'lcm_stage'"); } // List only filters if table were selected as sources (line/col) if (count($sources)) { $query .= " table_name IN ( " . implode(" , ", $sources) . " ) AND "; $query .= " filter != 'none'"; $query .= " ORDER BY table_name "; echo "<!-- QUERY: {$query} -->\n"; $result = lcm_query($query); if (lcm_num_rows($result)) { echo "<form action='upd_rep_field.php' name='frm_line_additem' method='get'>\n"; echo "<input name='rep' value='" . $rep_info['id_report'] . "' type='hidden' />\n"; echo "<input name='add' value='filter' type='hidden' />\n"; echo "<p class='normal_text'>" . _Ti('rep_input_filter_add'); echo "<select name='id_field'>\n"; echo "<option value=''>...</option>\n"; while ($row = lcm_fetch_array($result)) { echo "<option value='" . $row['id_field'] . "'>" . _Ti('rep_info_table_' . $row['table_name']) . _Th($row['description']) . "</option>\n"; } echo "</select>\n"; echo "<button class='simple_form_btn' name='validate_filter_addfield'>" . _T('button_validate') . "</button>\n"; echo "</p>\n"; echo "</form>\n"; } } else { echo '<p class="normal_text">' . _T('rep_info_select_source_first') . "</p>\n"; } }
echo "<td>"; $name = $edit ? 'start' : ''; echo get_date_inputs($name, _session('start_time'), false); echo ' ' . _T('time_input_time_at') . ' '; echo get_time_inputs($name, _session('start_time')); echo "</td>\n"; ?> </tr> <!-- End time --> <tr> <?php if ($prefs['time_intervals'] == 'absolute') { echo "<td>" . f_err_star('end_time') . _T('time_input_date_end') . "</td>\n"; echo "<td>"; $name = $admin || $edit && $_SESSION['form_data']['end_time'] == '0000-00-00 00:00:00' ? 'end' : ''; echo get_date_inputs($name, $_SESSION['form_data']['end_time']); echo ' '; echo _T('time_input_time_at') . ' '; echo get_time_inputs($name, $_SESSION['form_data']['end_time']); echo "</td>\n"; } else { echo "<td>" . f_err_star('end_time') . _T('app_input_time_length') . "</td>\n"; echo "<td>"; $name = $admin || $edit && $_SESSION['form_data']['end_time'] == '0000-00-00 00:00:00' ? 'delta' : ''; $interval = $_SESSION['form_data']['end_time'] != '0000-00-00 00:00:00' ? strtotime($_SESSION['form_data']['end_time']) - strtotime($_SESSION['form_data']['start_time']) : 0; echo get_time_interval_inputs($name, $interval); echo "</td>\n"; } ?> </tr>
function printEdit() { global $prefs; $admin = allowed($this->getDataInt('id_case'), 'a'); // FIXME $edit = allowed($this->getDataInt('id_case'), 'e'); // FIXME $write = allowed($this->getDataInt('id_case'), 'w'); // FIXME (put in constructor) // FIXME: not sure whether this works as previously $dis = isDisabled(!($admin || $edit)); echo '<table class="tbl_usr_dtl" width="99%">' . "\n"; echo '<tr><td>'; echo f_err_star('date_start') . _T('fu_input_date_start'); echo "</td>\n"; echo "<td>"; $name = $admin || $edit ? 'start' : ''; echo get_date_inputs($name, $this->data['date_start'], false); echo ' ' . _T('time_input_time_at') . ' '; echo get_time_inputs($name, $this->data['date_start']); echo "</td>\n"; echo "</tr>\n"; echo "<tr><td>"; echo f_err_star('date_end') . ($prefs['time_intervals'] == 'absolute' ? _T('fu_input_date_end') : _T('fu_input_time_length')); echo "</td>\n"; echo '<td>'; if ($prefs['time_intervals'] == 'absolute') { // Buggy code, so isolated most important cases if ($this->data['id_followup'] == 0) { $name = 'end'; } elseif ($edit) { $name = 'end'; } else { // user can 'finish' entering data $name = $admin || $edit && $this->data['date_end'] == '0000-00-00 00:00:00' ? 'end' : ''; } echo get_date_inputs($name, $this->data['date_end']); echo ' '; echo _T('time_input_time_at') . ' '; echo get_time_inputs($name, $this->data['date_end']); } else { $name = ''; // Buggy code, so isolated most important cases if ($this->getDataInt('id_followup') == 0) { $name = 'delta'; } elseif ($edit) { $name = 'delta'; } else { // user can 'finish' entering data $name = $admin || $edit && $this->getDataString('date_end') == '0000-00-00 00:00:00' ? 'delta' : ''; } if (empty($_SESSION['errors'])) { $interval = $this->getDataString('date_end') != '0000-00-00 00:00:00' ? strtotime($this->getDataString('date_end')) - strtotime($this->getDataString('date_start')) : 0; echo get_time_interval_inputs($name, $interval); } else { echo get_time_interval_inputs_from_array($name, $this->data); } } echo "</td>\n"; echo "</tr>\n"; // Show 'conclusion' options if ($this->show_conclusion) { $kws_conclusion = get_keywords_in_group_name('conclusion'); $kws_result = get_keywords_in_group_name('_crimresults'); echo "<tr>\n"; echo "<td>" . _Ti('fu_input_conclusion') . "</td>\n"; echo '<td>'; // Result if (read_meta('case_result') == 'yes') { echo '<select ' . $dis . ' name="result" size="1" class="sel_frm">' . "\n"; $default = ''; if ($this->data['result']) { $default = $this->data['result']; } foreach ($kws_result as $kw) { $sel = isSelected($kw['name'] == $default); echo '<option ' . $sel . ' value="' . $kw['name'] . '">' . _T(remove_number_prefix($kw['title'])) . "</option>\n"; } echo "</select><br/>\n"; } // Conclusion echo '<select ' . $dis . ' name="conclusion" size="1" class="sel_frm">' . "\n"; $default = ''; if ($this->data['conclusion']) { $default = $this->data['conclusion']; } foreach ($kws_conclusion as $kw) { $sel = isSelected($kw['name'] == $default); echo '<option ' . $sel . ' value="' . $kw['name'] . '">' . _T(remove_number_prefix($kw['title'])) . "</option>\n"; } echo "</select>\n"; echo "</td>\n"; echo "</tr>\n"; // If guilty, what sentence? $kws_sentence = get_keywords_in_group_name('sentence'); echo "<tr>\n"; echo "<td>" . _Ti('fu_input_sentence') . "</td>\n"; echo '<td>'; echo '<select ' . $dis . ' name="sentence" size="1" class="sel_frm">' . "\n"; $default = ''; if ($this->data['sentence']) { $default = $this->data['sentence']; } echo "<!-- " . $default . " -->\n"; foreach ($kws_sentence as $kw) { $sel = $kw['name'] == $default ? ' selected="selected"' : ''; echo '<option ' . $sel . ' value="' . $kw['name'] . '">' . _T(remove_number_prefix($kw['title']), array('currency' => read_meta('currency'))) . "</option>\n"; } echo "</select>\n"; // If sentence, for how much? echo '<input type="text" name="sentence_val" size="10" value="' . $this->data['sentence_val'] . '" />'; echo "</td>\n"; echo "</tr>\n"; } if (_request('submit') == 'set_status' || is_status_change($this->getDataString('type'))) { // Change status echo "<tr>\n"; echo "<td>" . _T('case_input_status') . "</td>\n"; echo "<td>"; echo '<input type="hidden" name="type" value="' . $this->getDataString('type') . '" />' . "\n"; echo _T('kw_followups_' . $this->data['type'] . '_title'); echo "</td>\n"; echo "</tr>\n"; } elseif (_request('submit') == 'set_stage' || $this->getDataString('type') == 'stage_change') { // Change stage echo "<tr>\n"; echo "<td>" . _T('fu_input_next_stage') . "</td>\n"; echo "<td>"; echo '<input type="hidden" name="type" value="' . $this->getDataString('type') . '" />' . "\n"; // This is to compensate an old bug, when 'case stage' was not stored in fu.description // and therefore editing a follow-up would not give correct information. // Bug was in CVS of 0.4.3 between 19-20 April 2005. Should not affect many people. if ($s = $this->getDataString('new_stage')) { echo '<input type="hidden" name="new_stage" value="' . $s . '" />' . "\n"; echo _Tkw('stage', $s); } else { echo "New stage information not available"; } echo "</td>\n"; echo "</tr>\n"; if ($s = $this->getDataString('new_stage')) { // Update stage keywords (if any) $stage = get_kw_from_name('stage', $s); $id_stage = $stage['id_keyword']; show_edit_keywords_form('stage', $this->data['id_case'], $id_stage); } } elseif ($this->getDataString('type') == 'assignment' || $this->getDataString('type') == 'unassignment') { // Do not allow assignment/un-assignment follow-ups to be changed echo "<tr>\n"; echo "<td>" . _T('fu_input_next_stage') . "</td>\n"; echo "<td>"; echo '<input type="hidden" name="type" value="' . $this->getDataString('type') . '" />' . "\n"; echo _Tkw('followups', $this->getDataString('type')); echo "</td>\n"; echo "</tr>\n"; } else { // The usual follow-up echo "<tr>\n"; echo "<td>" . _T('fu_input_type') . "</td>\n"; echo "<td>"; echo '<select ' . $dis . ' name="type" size="1" class="sel_frm">' . "\n"; $default_fu = get_suggest_in_group_name('followups'); $futype_kws = get_keywords_in_group_name('followups'); $kw_found = false; foreach ($futype_kws as $kw) { $sel = isSelected($kw['name'] == $default_fu); if ($sel) { $kw_found = true; } echo '<option value="' . $kw['name'] . '"' . $sel . '>' . _T(remove_number_prefix($kw['title'])) . "</option>\n"; } // Exotic case where the FU keyword was hidden by the administrator, // but an old follow-up using that keyword is being edited. if (!$kw_found) { echo '<option selected="selected" value="' . $default_fu . '">' . _Tkw('followups', $default_fu) . "</option>\n"; } echo "</select>\n"; echo "</td>\n"; echo "</tr>\n"; } // Keywords (if any) show_edit_keywords_form('followup', $this->getDataInt('id_followup')); // Description echo "<tr>\n"; echo '<td valign="top">' . f_err_star('description') . _T('fu_input_description') . "</td>\n"; echo '<td>'; if ($this->getDataString('type') == 'assignment' || $this->getDataString('type') == 'unassignment') { // Do not allow edit of assignment echo '<input type="hidden" name="description" value="' . $this->getDataString('description') . '" />' . "\n"; echo get_fu_description($this->data); } else { echo '<textarea ' . $dis . ' name="description" rows="15" cols="60" class="frm_tarea">'; echo clean_output($this->getDataString('description')); echo "</textarea>"; } echo "</td></tr>\n"; // Sum billed field if ($this->show_sum_billed == "yes") { echo '<tr>'; echo '<td>' . _T('fu_input_sum_billed') . "</td>\n"; echo '<td>'; echo '<input ' . $dis . ' name="sumbilled" ' . 'value="' . clean_output($this->getDataString('sumbilled')) . '" ' . 'class="search_form_txt" size="10" />'; // [ML] If we do this we may as well make a function // out of it, but not sure where to place it :-) // This code is also in config_site.php $currency = read_meta('currency'); if (empty($currency)) { $current_lang = $GLOBALS['lang']; $GLOBALS['lang'] = read_meta('default_language'); $currency = _T('currency_default_format'); $GLOBALS['lang'] = $current_lang; } echo htmlspecialchars($currency); echo "</td></tr>\n"; } echo "</table>\n\n"; // XXX FIXME: Should probably be in some function "is_system_fu" // or even "is_deletable" if ($this->getDataInt('id_followup') && allowed($this->data['id_case'], 'a') && !(is_status_change($this->data['type']) || $this->data['type'] == 'assignment' || $this->data['type'] == 'unassignment')) { $checked = $this->getDataString('hidden') == 'Y' ? ' checked="checked" ' : ''; echo '<p class="normal_text">'; echo '<input type="checkbox"' . $checked . ' name="delete" id="box_delete" />'; echo '<label for="box_delete">' . _T('fu_info_delete') . '</label>'; echo "</p>\n"; } // Add followup appointment if (!_request('followup')) { echo "<!-- Add appointment? -->\n"; echo '<p class="normal_text">'; echo '<input type="checkbox" name="add_appointment" id="box_new_app" onclick="display_block(\'new_app\', \'flip\')" />'; echo '<label for="box_new_app">' . _T('fu_info_add_future_activity') . '</label>'; echo "</p>\n"; echo '<div id="new_app" style="display: none;">'; echo '<table class="tbl_usr_dtl" width="99%">' . "\n"; echo "<!-- Start time -->\n\t\t<tr><td>"; echo _T('time_input_date_start'); echo "</td><td>"; echo get_date_inputs('app_start', $this->data['app_start_time'], false); echo ' ' . _T('time_input_time_at') . ' '; echo get_time_inputs('app_start', $this->data['app_start_time']); echo f_err_star('app_start_time'); echo "</td></tr>\n"; echo "<!-- End time -->\n\t\t<tr><td>"; echo $prefs['time_intervals'] == 'absolute' ? _T('time_input_date_end') : _T('app_input_time_length'); echo "</td><td>"; if ($prefs['time_intervals'] == 'absolute') { echo get_date_inputs('app_end', $this->data['app_end_time']); echo ' ' . _T('time_input_time_at') . ' '; echo get_time_inputs('app_end', $this->data['app_end_time']); echo f_err_star('app_end_time'); } else { $interval = $this->data['app_end_time'] != '0000-00-00 00:00:00' ? strtotime($this->data['app_end_time']) - strtotime($this->data['app_start_time']) : 0; // echo _T('calendar_info_time') . ' '; echo get_time_interval_inputs('app_delta', $interval); echo f_err_star('app_end_time'); } echo "</td></tr>\n"; /* [ML] Removing, not useful for now echo "<!-- Reminder -->\n\t\t<tr><td>"; echo (($prefs['time_intervals'] == 'absolute') ? _T('app_input_reminder_time') : _T('app_input_reminder_offset')); echo "</td><td>"; if ($prefs['time_intervals'] == 'absolute') { echo get_date_inputs('app_reminder', $this->data['app_reminder']); echo ' ' . _T('time_input_time_at') . ' '; echo get_time_inputs('app_reminder', $this->data['app_reminder']); echo f_err_star('app_reminder'); } else { $interval = ( ($this->data['app_end_time']!='0000-00-00 00:00:00') ? strtotime($this->data['app_start_time']) - strtotime($this->data['app_reminder']) : 0); // echo _T('calendar_info_time') . ' '; echo get_time_interval_inputs('app_rem_offset', $interval); echo " " . _T('time_info_before_start'); echo f_err_star('app_reminder'); } echo "</td></tr>\n"; */ // TODO: [ML] a bit of testing to see if this survives an error on new case // I suspect it doesn't.. echo "<!-- Appointment title -->\n\t\t<tr><td>"; echo f_err_star('app_title') . _T('app_input_title'); echo "</td><td>"; echo '<input type="text" ' . $dis . ' name="app_title" size="50" value="'; echo clean_output($this->getDataString('app_title')) . '" class="search_form_txt" />'; echo "</td></tr>\n"; echo "<!-- Appointment type -->\n\t\t<tr><td>"; echo _T('app_input_type'); echo "</td><td>"; echo '<select ' . $dis . ' name="app_type" size="1" class="sel_frm">'; global $system_kwg; if ($_SESSION['fu_app_data']['type']) { $default_app = $_SESSION['fu_app_data']['type']; } else { $app_kwg = get_kwg_from_name('appointments'); $default_app = $app_kwg['suggest']; } $opts = array(); foreach ($system_kwg['appointments']['keywords'] as $kw) { $opts[$kw['name']] = _T(remove_number_prefix($kw['title'])); } asort($opts); foreach ($opts as $k => $opt) { $sel = isSelected($k == $default_app); echo "<option value='{$k}'{$sel}>{$opt}</option>\n"; } echo '</select>'; echo "</td></tr>\n"; echo "<!-- Appointment description -->\n"; echo "<tr><td valign=\"top\">"; echo _T('app_input_description'); echo "</td><td>"; echo '<textarea ' . $dis . ' name="app_description" rows="5" cols="60" class="frm_tarea">'; echo clean_output($this->getDataString('app_description')); echo '</textarea>'; echo "</td></tr>\n"; echo "</table>\n"; echo "</div>\n"; } }
function printEdit() { // Get site preferences $client_name_middle = read_meta('client_name_middle'); $client_citizen_number = read_meta('client_citizen_number'); $client_civil_status = read_meta('client_civil_status'); $client_income = read_meta('client_income'); $meta_date_birth = read_meta('client_date_birth'); echo '<table width="99%" border="0" align="center" cellpadding="5" cellspacing="0" class="tbl_usr_dtl">' . "\n"; if ($this->getDataInt('id_client')) { echo "<tr><td>" . _T('client_input_id') . "</td>\n"; echo "<td>" . $this->getDataInt('id_client') . '<input type="hidden" name="id_client" value="' . $this->getDataInt('id_client') . '" /></td></tr>' . "\n"; } // Client name echo '<tr><td>' . f_err_star('name_first') . _T('person_input_name_first') . '</td>' . "\n"; echo '<td><input name="name_first" value="' . clean_output($this->getDataString('name_first')) . '" class="search_form_txt" /></td></tr>' . "\n"; // [ML] always show middle name, if any, no matter the configuration if ($this->getDataString('name_middle') || substr($client_name_middle, 0, 3) == 'yes') { echo '<tr><td>' . f_err_star('name_middle') . _T('person_input_name_middle') . '</td>' . "\n"; echo '<td><input name="name_middle" value="' . clean_output($this->getDataString('name_middle')) . '" class="search_form_txt" /></td></tr>' . "\n"; } echo '<tr><td>' . f_err_star('name_last') . _T('person_input_name_last') . '</td>' . "\n"; echo '<td><input name="name_last" value="' . clean_output($this->getDataString('name_last')) . '" class="search_form_txt" /></td></tr>' . "\n"; if (substr($meta_date_birth, 0, 3) == 'yes') { echo "<tr>\n"; echo "<td>" . f_err_star('date_birth') . _Ti('person_input_date_birth') . "</td>\n"; echo "<td>" . get_date_inputs('date_birth', $this->getDataString('date_birth'), true) . "</td>\n"; echo "</tr>\n"; } echo '<tr><td>' . f_err_star('gender') . _T('person_input_gender') . '</td>' . "\n"; echo '<td><select name="gender" class="sel_frm">' . "\n"; $opt_sel_male = $opt_sel_female = $opt_sel_unknown = ''; if ($this->getDataString('gender') == 'male') { $opt_sel_male = 'selected="selected" '; } else { if ($this->getDataString('gender') == 'female') { $opt_sel_female = 'selected="selected" '; } else { $opt_sel_unknown = 'selected="selected" '; } } echo '<option ' . $opt_sel_unknown . 'value="unknown">' . _T('info_not_available') . "</option>\n"; echo '<option ' . $opt_sel_male . 'value="male">' . _T('person_input_gender_male') . "</option>\n"; echo '<option ' . $opt_sel_female . 'value="female">' . _T('person_input_gender_female') . "</option>\n"; echo "</select>\n"; echo "</td></tr>\n"; if ($this->getDataString('id_client')) { echo "<tr>\n"; echo '<td>' . _Ti('time_input_date_creation') . '</td>'; echo '<td>' . format_date($this->getDataString('date_creation'), 'full') . '</td>'; echo "</tr>\n"; } if (substr($client_citizen_number, 0, 3) == 'yes') { echo "<tr>\n"; echo '<td>' . f_err_star('citizen_number') . _T('person_input_citizen_number') . '</td>'; echo '<td><input name="citizen_number" value="' . clean_output($this->getDataString('citizen_number')) . '" class="search_form_txt" /></td>'; echo "</tr>\n"; } if (substr($client_civil_status, 0, 3) == 'yes') { echo "<tr>\n"; echo '<td>' . f_err_star('civil_status') . _Ti('person_input_civil_status') . '</td>'; echo '<td>'; echo '<select name="civil_status">'; if (!$this->getDataInt('id_client')) { echo '<option value=""></option>'; } $kwg = get_kwg_from_name('civilstatus'); $all_kw = get_keywords_in_group_name('civilstatus'); // A bit overkill, but if the user made the error of not entering // a valid civil_status, make sure that the field stays empty if (!$this->getDataString('civil_status') || !count($_SESSION['errors'])) { if ($this->getDataInt('id_client')) { $this->data['civil_status'] = $all_kw['unknown']['name']; } else { $this->data['civil_status'] = $kwg['suggest']; } } foreach ($all_kw as $kw) { $sel = $this->getDataString('civil_status') == $kw['name'] ? ' selected="selected"' : ''; echo '<option value="' . $kw['name'] . '"' . $sel . '>' . _T($kw['title']) . '</option>'; } echo '</select>'; echo '</td>'; echo "</tr>\n"; } if (substr($client_income, 0, 3) == 'yes') { echo "<tr>\n"; echo '<td>' . f_err_star('income') . _Ti('person_input_income') . '</td>'; echo '<td>'; echo '<select name="income">'; if (!$this->getDataInt('id_client')) { echo '<option value=""></option>'; } $kwg = get_kwg_from_name('income'); $all_kw = get_keywords_in_group_name('income'); if (!$this->getDataString('income') && !count($_SESSION['errors'])) { if ($this->getDataInt('id_client')) { $this->data['income'] = $all_kw['unknown']['name']; } else { $this->data['income'] = $kwg['suggest']; } } foreach ($all_kw as $kw) { $sel = $this->getDataString('income') == $kw['name'] ? ' selected="selected"' : ''; echo '<option value="' . $kw['name'] . '"' . $sel . '>' . _T($kw['title']) . '</option>'; } echo '</select>'; echo '</td>'; echo "</tr>\n"; } // // Keywords, if any // show_edit_keywords_form('client', $this->getDataInt('id_client')); // Notes echo "<tr>\n"; echo "<td>" . f_err_star('client_notes') . _Ti('client_input_notes') . "</td>\n"; echo '<td><textarea name="client_notes" id="input_client_notes" class="frm_tarea" rows="3" cols="60">' . clean_output($this->getDataString('notes')) . "</textarea>\n" . "</td>\n"; echo "</tr>\n"; // // Contacts (e-mail, phones, etc.) // echo "<tr>\n"; echo '<td colspan="2" align="center" valign="middle">'; show_page_subtitle(_T('client_subtitle_contacts')); echo '</td>'; echo "</tr>\n"; show_edit_contacts_form('client', $this->getDataInt('id_client')); echo "</table>\n"; }
function printFollowups($show_filters = false) { $cpt = 0; $my_list_pos = intval(_request('list_pos', 0)); show_page_subtitle(_T('case_subtitle_followups'), 'cases_followups'); // Show filters (if not shown in ajaxed page) if ($show_filters) { // By default, show from "case creation date" to NOW(). $link = new Link(); $link->delVar('date_start_day'); $link->delVar('date_start_month'); $link->delVar('date_start_year'); $link->delVar('date_end_day'); $link->delVar('date_end_month'); $link->delVar('date_end_year'); echo $link->getForm(); $date_end = get_datetime_from_array($_REQUEST, 'date_end', 'end', '0000-00-00 00:00:00'); // date('Y-m-d H:i:s')); $date_start = get_datetime_from_array($_REQUEST, 'date_start', 'start', '0000-00-00 00:00:00'); // $row['date_creation']); echo _Ti('time_input_date_start'); echo get_date_inputs('date_start', $date_start); echo _Ti('time_input_date_end'); echo get_date_inputs('date_end', $date_end); echo ' <button name="submit" type="submit" value="submit" class="simple_form_btn">' . _T('button_validate') . "</button>\n"; echo "</form>\n"; echo "<div style='margin-bottom: 4px;'> </div>\n"; // FIXME patch for now (leave small space between filter and list) } show_listfu_start('general', false); for ($cpt = 0, $this->getFollowupStart(); !$this->getFollowupDone(); $cpt++) { $item = $this->getFollowupIterator(); show_listfu_item($item, $cpt); } if (!$cpt) { echo "No followups"; } // TRAD show_list_end($my_list_pos, $this->getFollowupTotal(), true); }
$_SESSION['fu_data'] = array(); } // Get case details $q = "SELECT * FROM lcm_case WHERE id_case={$case}"; $result = lcm_query($q); // Check if the case exists if (!($row = lcm_fetch_array($result))) { die("There is no such case."); } // Check if the stage is changed if ($row['stage'] == $stage) { header('Location: ' . $GLOBALS['HTTP_REFERER']); exit; } // Start the page lcm_page_start('Changing case stage: ' . $row['title']); // TRAD // Show the errors (if any) echo show_all_errors($_SESSION['errors']); // Write form echo "<form action='upd_fu.php' method='post'>\n\t<table class='tbl_usr_dtl' width='99%'>\n\t\t<tr><td>" . _Ti('time_input_date_start') . "</td>\n\t\t\t<td>"; $date_start = date('Y-m-d H:i:s'); echo get_date_inputs('start', $date_start, false); echo ' ' . _T('time_input_time_at') . ' '; echo get_time_inputs('start', $date_start); echo ' ' . f_err_star('date_start', $errors); echo "</td>\n"; echo "</tr><tr>\n"; echo "<td>" . "Type:" . "</td>\n\t\t\t<td><input type='hidden' name='type' value='stage_change'>" . _T('kw_followups_stage_change_title') . "</td>\n\t\t</tr>\n\t\t<tr><td valign='top'>" . f_err_star('description') . "Description:" . "</td>\n\t\t\t<td><textarea name='description' rows='15' cols='40' class='frm_tarea'>" . $_SESSION['fu_data']['description'] . "</textarea></td>\n\t\t</tr>\n"; echo "\t</table>\n\n\t<p><button name='submit' type='submit' value='submit' class='simple_form_btn'>" . _T('button_validate') . "</button></p>\n\n\t<input type='hidden' name='id_case' value='{$case}'>\n\t<input type='hidden' name='new_stage' value='{$stage}'>\n\t<input type='hidden' name='ref_edit_fu' value='" . $GLOBALS['HTTP_REFERER'] . "'>\n</form>\n"; lcm_page_end();