コード例 #1
0
ファイル: RecordDB.php プロジェクト: mbassan/backstage2
 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;
 }
コード例 #2
0
ファイル: Record.php プロジェクト: mbassan/backstage2
 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;
     }
 }
コード例 #3
0
ファイル: MultiList.php プロジェクト: mbassan/backstage2
 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;
     }
 }
コード例 #4
0
ファイル: Calendar.php プロジェクト: mbassan/backstage2
    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;
    }
コード例 #5
0
ファイル: FormDB.php プロジェクト: mbassan/backstage2
 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;
 }