function getFields($table, $f_id, $subtable_fields = false, $f_id_field = false, $order_by = false, $order_asc = false, $record_id = false, $limit_is_curdate = false) { global $CFG; $f_id = $f_id > 0 ? $f_id : $record_id; if (!($f_id > 0)) { return false; } if (!is_array($subtable_fields)) { $subtable_fields = array('*'); } $field_info = GridDB::getTableFields($table); $f_id_field = $f_id_field ? $f_id_field : 'id'; if (!strstr($f_id_field, ',')) { $sql = "SELECT " . implode(',', $subtable_fields) . " FROM {$table} WHERE {$f_id_field} = {$f_id}"; if ($order_by) { if ($field_info[$order_by]['Type'] == 'datetime' && $limit_is_curdate) { $sql .= " AND {$order_by} >= '" . date('Y-m-d 00:00:00') . "' "; } $order_asc = $order_asc ? 'ASC' : 'DESC'; $sql .= " ORDER BY {$order_by} {$order_asc}"; } $sql .= " LIMIT 0,1 "; $result = db_query_array($sql); $row = $result[0]; } else { $join_path = explode(',', $f_id_field); if (is_array($join_path)) { foreach ($join_path as $join_field) { $join_field_parts = explode('.', $join_field); $where_name = $select_name == 'id' ? $join_field_parts[1] : 'id'; $select_name = $join_field_parts[1]; $join_table = $join_field_parts[0]; $sql = "SELECT {$select_name} FROM {$join_table} WHERE {$where_name} = {$f_id}"; $result = db_query_array($sql); $row = $result[0]; $f_id = $row[$select_name]; } } $sql = "SELECT " . implode(',', $subtable_fields) . " FROM {$table} WHERE id = {$f_id}"; $result = db_query_array($sql); $row = $result[0]; } if (is_array($field_info) && is_array($row)) { foreach ($row as $name => $value) { $row[$name] = '<span class="record_component">' . Grid::detectData($name, $value, $field_info) . '</span>'; } } return $row; }
function indicator($name, $formula, $caption = false, $subtable = false, $subtable_fields = false, $concat_char = false, $f_id_field = false, $formula_f_id_field = false, $link_url = false, $link_is_tab = false, $run_in_sql = false, $in_form = false) { global $CFG; if (!$CFG->pm_editor) { if (!$run_in_sql) { $formula = String::doFormulaReplacements($formula, $this->row, 1); } else { if ($this->record_id > 0) { $formula = String::replaceConditionals($formula, $this->row, $formula_f_id_field); } } $result = @eval("{$formula}"); //echo $formula.' | '.$result .' ||| '; if ($subtable && $this->record_id > 0) { $f_id_field = $f_id_field ? $f_id_field : 'id'; $db_output = DB::getSubTable($subtable, $subtable_fields, $result, $concat_char, $f_id_field); $key = key($db_output); $text = $db_output[$key]; } else { $text = Grid::detectData($name, $result, $this->db_fields); if ($link_url) { $text = Link::url($link_url, $text, "{$name}={$id}&is_tab={$link_is_tab}&action=record"); } } } if ($CFG->pm_editor && !$this->in_grid) { $method_name = Form::peLabel($CFG->method_id, 'indicator'); } $HTML = "<div class=\"label_extend\"></div><div class=\"indicator\"><b class=\"record_label\">{$caption}</b><span class=\"record_item\">{$method_name} {$text}</span></div>"; if (!$in_form) { $this->HTML[] = $HTML; } else { return $HTML; } }
private function displayItems($tables, $rows = false, $f_id = 0, $level = 1, $p_id = 0) { global $CFG; $pm_method = $CFG->pm_editor ? ' class="pm_method"' : ''; if ($tables) { $parent_id = $rows ? $p_id : $f_id; $this->levels[$level][$parent_id] = $parent_id; $HTML = ''; foreach ($tables as $name => $properties) { $HTML .= "<ul id=\"mlist_{$this->i}_level_{$level}_{$parent_id}\" class=\"mlist_{$this->i}_level_{$level}\">"; $properties['url'] = empty($properties['url']) ? $CFG->url : $properties['url']; $properties['url_is_tab'] = empty($properties['url_is_tab']) ? $CFG->is_tab : $properties['url_is_tab']; if (!empty($properties['parent']) && $f_id == 0) { continue; } $HTML .= "<input id=\"table\" type=\"hidden\" name=\"table\" value=\"{$name}\" />"; $HTML .= "<input id=\"enabled\" type=\"hidden\" name=\"enabled\" value=\"{$this->dragdrop}\" />"; $HTML .= "<input id=\"p_id\" type=\"hidden\" name=\"p_id\" value=\"{$p_id}\" />"; $HTML .= "<input id=\"f_id\" type=\"hidden\" name=\"f_id\" value=\"{$f_id}\" />"; if ($CFG->pm_editor) { $HTML .= Form::peLabel($properties['method_id'], 'addTable'); } $table = $rows ? $rows : DB::getCats($name, $f_id); if ($table) { foreach ($table as $id => $row) { $hidden = $row['row']['hidden'] == 'Y' ? 'hidden' : ''; $HTML .= "<li id=\"{$row['row']['id']}\" class=\"li_{$level} ml_li {$hidden}\">"; $HTML .= !empty($row['children']) ? '<div onclick="ml_expand(this)" class="more"></div><div onclick="ml_collapse(this)" class="less"></div>' : ''; $HTML .= "<div class=\"ml_item\">"; if ($CFG->url == 'edit_tabs' && !empty($row['row']['url'])) { $is_tab = $name == 'admin_tabs' ? '1' : '0'; if (User::permission(0, 0, $properties['url'], false, $properties['url_is_tab']) > 1) { $HTML .= '<a class="edit_page" href="index.php?current_url=edit_page&table=' . $name . '&id=' . $row['row']['id'] . '&is_tab=' . $is_tab . '"></a>'; } } if (is_array($properties['table_fields'])) { foreach ($properties['table_fields'] as $field) { $value = Grid::detectData($field, $row['row'][$field], $this->fields[$name]); $HTML .= !empty($properties['url']) ? Link::url($properties['url'], $row['row'][$field], "table={$name}&id={$row['row']['id']}&f_id={$row['row']['f_id']}&p_id={$row['row']['p_id']}&action=record&is_tab=" . $properties['url_is_tab'], false, false, $properties['target_elem_id']) : $value; } $del_function = $CFG->url == 'edit_tabs' ? 'deletePage(this)' : 'ml_delete(this)'; if (User::permission(0, 0, $properties['url'], false, $properties['url_is_tab']) > 1) { $HTML .= Link::url($properties['url'], false, "table={$name}&id={$row['row']['id']}&f_id={$row['row']['f_id']}&p_id={$row['row']['p_id']}&action=record&is_tab=" . $properties['url_is_tab'], false, false, $properties['target_elem_id'], 'view', false, false, false, false, $CFG->view_hover_caption) . Link::url($properties['url'], false, "table={$name}&id={$row['row']['id']}&f_id={$row['row']['f_id']}&p_id={$row['row']['p_id']}&action=form&is_tab=" . $properties['url_is_tab'], false, false, $properties['target_elem_id'], 'edit', false, false, false, false, $CFG->edit_hover_caption) . "<a href=\"#\" class=\"delete\" title=\"{$CFG->delete_hover_caption}\" onclick=\"{$del_function}\" class=\"button\"></a>"; } } else { foreach ($row['row'] as $field) { $HTML .= '<span>' . $field . '</span>'; } } $HTML .= $this->row_end_button ? $this->row_end_button : ''; if (User::permission(0, 0, $properties['url'], false, $properties['url_is_tab']) > 1 && $accepts_children) { $HTML .= $properties['accept_children'] ? Link::url($properties['url'], '<div class="add_new"></div>' . $CFG->add_new_caption, "table={$name}&f_id={$f_id}&p_id={$p_id}&action=form&is_tab=" . $properties['url_is_tab'], false, false, $properties['target_elem_id']) : ''; } $HTML .= '</div>'; if (!empty($row['children'])) { $HTML .= MultiList::displayItems(array($name => $properties), $row['children'], false, $level + 1, $id); } foreach ($this->tables as $name1 => $properties1) { if ($properties1['parent'] == $name) { $HTML .= MultiList::displayItems(array($name1 => $properties1), false, $id, $level + 1); } } $HTML .= '</li>'; } } $HTML .= '</ul>'; $HTML .= "<div class=\"add_elem\">" . Link::url($properties['url'], '<div class="add_new"></div>' . $CFG->add_new_caption, "table={$name}&f_id={$f_id}&p_id={$p_id}&action=form&is_tab=" . $CFG->is_tab, false, false, $properties['target_elem_id']) . "</div>"; } return $HTML; } }
private function printEvents($events, $s_time = false, $e_time = false, $day = 0, $f_id = 0) { global $CFG; if (is_array($events)) { $HTML = ''; foreach ($events as $timestamp => $events) { if (is_array($events)) { foreach ($events as $event) { $table = $event['table']; $sdate_field = $this->tables[$table]['sdate_field']; $edate_field = $this->tables[$table]['edate_field']; $color_field = $this->tables[$table]['color_field']; if (is_array($this->fields[$table])) { foreach ($this->fields[$table] as $field) { $name = $field['name']; if ($name == $color_field) { continue; } $value = $field['is_placeholder'] ? $field['value'] : Grid::detectData($name, $event[$name], $this->tables[$table]['table_fields']); $value = $field['print_caption'] ? '<div class="print_line"><span class="print_label">' . $field['print_caption'] . '</span>:<span>' . $value . '</span></div>' : '<div class="print_line">' . $value . '</div>'; if ($field['in_title']) { $title_fields[] = $value; } else { $details_fields[] = $value; } } } $HTML .= ' <div class="cal_print_item"> <div class="title">' . @implode('', $title_fields) . '<div class="clear"></div></div> <div class="details">' . @implode('', $details_fields) . '<div class="clear"></div></div> </div>'; unset($title_fields); unset($details_fields); } } } } return $HTML; }
function getSubTable($table, $table_fields = false, $f_id = 0, $concat_char = false, $f_id_field = false) { $concat_char = $concat_char ? $concat_char : ' '; $sql = "SELECT "; if (is_array($table_fields)) { $sql .= "{$table}.id,"; foreach ($table_fields as $field) { $sql .= "{$table}.{$field},"; } $sql = substr($sql, 0, -1); } else { $sql .= "{$table}.*"; } $sql .= " FROM {$table} WHERE 1 "; if (is_numeric($f_id)) { $f_id_field = $f_id_field ? $f_id_field : 'f_id'; $sql .= " AND {$table}.{$f_id_field} = {$f_id} "; } if (@in_array('order', $table_fields)) { $sql .= " ORDER BY {$table}.order, {$table}.{$table_fields[0]} ASC "; } elseif (is_array($table_fields)) { if (!empty($table_fields[0])) { $sql .= " ORDER BY {$table}.{$table_fields[0]} ASC "; } } $result = db_query_array($sql); $fields_array = array(); if ($result) { $table_info = GridDB::getTableFields($table); foreach ($result as $row) { $r_id = $row['id']; if (!in_array('id', $table_fields)) { unset($row['id']); } if (is_array($row)) { foreach ($row as $name => $field) { $row[$name] = Grid::detectData($name, $field, $table_info); } } $fields_array[$r_id] = implode($concat_char, $row); } } return $fields_array; }