From 145705716ff99d01e55ebea0993998afad67fdc3 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Tue, 23 Oct 2012 10:38:43 +0200 Subject: [PATCH] Fixing session_list queries --- main/admin/session_list.php | 2 +- main/inc/lib/extra_field.lib.php | 4 +- main/inc/lib/extra_field_option.lib.php | 4 +- main/inc/lib/extra_field_value.lib.php | 2 +- main/inc/lib/sessionmanager.lib.php | 49 +++++++++++++++---------- 5 files changed, 35 insertions(+), 26 deletions(-) diff --git a/main/admin/session_list.php b/main/admin/session_list.php index ac9c2d4328..cd3523af7d 100644 --- a/main/admin/session_list.php +++ b/main/admin/session_list.php @@ -180,7 +180,7 @@ $(function() { prmSearch = { multipleSearch : true, overlay : false, - width: 600, + width: 'auto', caption: '', formclass:'data_table', onSearch : function() { diff --git a/main/inc/lib/extra_field.lib.php b/main/inc/lib/extra_field.lib.php index 434a965907..1e49b85c19 100644 --- a/main/inc/lib/extra_field.lib.php +++ b/main/inc/lib/extra_field.lib.php @@ -55,13 +55,13 @@ class ExtraField extends Model { } - public function get_all($where_conditions = array()) { + public function get_all($where_conditions = array(), $order_field_options_by = null) { $options = Database::select('*', $this->table, array('where'=>$where_conditions, 'order' =>'field_order ASC')); $field_option = new ExtraFieldOption($this->type); if (!empty($options)) { foreach ($options as &$option) { - $option['options'] = $field_option->get_field_options_by_field($option['id']); + $option['options'] = $field_option->get_field_options_by_field($option['id'], false, $order_field_options_by); } } return $options; diff --git a/main/inc/lib/extra_field_option.lib.php b/main/inc/lib/extra_field_option.lib.php index 3454f0c5c5..093b79f549 100644 --- a/main/inc/lib/extra_field_option.lib.php +++ b/main/inc/lib/extra_field_option.lib.php @@ -29,8 +29,8 @@ class ExtraFieldOption extends Model { return $row['count']; } - public function get_field_options_to_string($field_id) { - $options = self::get_field_options_by_field($field_id); + public function get_field_options_to_string($field_id, $add_id_in_array = false, $ordered_by = null) { + $options = self::get_field_options_by_field($field_id, $add_id_in_array, $ordered_by); $new_options = array(); if (!empty($options)) { foreach ($options as $option) { diff --git a/main/inc/lib/extra_field_value.lib.php b/main/inc/lib/extra_field_value.lib.php index 6357b24d49..74a03becbe 100644 --- a/main/inc/lib/extra_field_value.lib.php +++ b/main/inc/lib/extra_field_value.lib.php @@ -216,7 +216,7 @@ class ExtraFieldValue extends Model { INNER JOIN {$this->table_handler_field} sf ON (s.field_id = sf.id) WHERE field_value = '$field_value' AND field_variable = '".$field_variable."' - "; + "; $result = Database::query($sql); if (Database::num_rows($result)) { $result = Database::fetch_array($result, 'ASSOC'); diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index d8a2fe9237..52e17cd91a 100644 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -166,7 +166,7 @@ class SessionManager { $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); $tbl_session_field_values = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES); - + $where = 'WHERE 1 = 1 '; $user_id = api_get_user_id(); @@ -243,14 +243,28 @@ class SessionManager { c.title as course_title, s.id "; + if (!empty($options['where'])) { + //var_dump($inject_extra_fields); + //var_dump($options); + if (!empty($options['extra'])) { + foreach ($options['extra'] as $extra) { + $options['where'] = str_replace($extra['field'], 'fv.field_value', $options['where']); + } + } + $options['where'] = str_replace('course_title', 'c.title', $options['where']); + $where .= ' AND '.$options['where']; + } + if (!empty($options['limit'])) { $where .= " LIMIT ".$options['limit']; } + //LEFT JOIN $tbl_course c ON (src.course_id = c.id) + $query = "$select FROM $tbl_session s LEFT JOIN $tbl_session_field_values fv ON (fv.session_id = s.id) LEFT JOIN $tbl_session_rel_course src ON (src.id_session = s.id) - LEFT JOIN $tbl_course c ON (src.course_id = c.id) + LEFT JOIN $tbl_course c ON (src.course_code = c.code) LEFT JOIN $tbl_session_category sc ON (s.session_category_id = sc.id) INNER JOIN $tbl_user u ON (s.id_coach = u.user_id) ". $where; @@ -262,31 +276,26 @@ class SessionManager { $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1) { $where.= " AND ar.access_url_id = $access_url_id "; - $query = "$select ". - "FROM $tbl_session s ". - "LEFT JOIN $tbl_session_field_values fv ON (fv.session_id = s.id) ". - " LEFT JOIN $tbl_session_rel_course src ON (src.id_session = s.id) ". - "LEFT JOIN $tbl_course c ON (src.course_id = c.id) ". - "LEFT JOIN $tbl_session_category sc ON (s.session_category_id = sc.id) ". - "INNER JOIN $tbl_user u ON (s.id_coach = u.user_id) ". - "INNER JOIN $table_access_url_rel_session ar ON (ar.session_id = s.id) ". - " $where"; + $query = "$select + FROM $tbl_session s + LEFT JOIN $tbl_session_field_values fv ON (fv.session_id = s.id) + LEFT JOIN $tbl_session_rel_course src ON (src.id_session = s.id) + LEFT JOIN $tbl_course c ON (src.course_code = c.code) + LEFT JOIN $tbl_session_category sc ON (s.session_category_id = sc.id) + INNER JOIN $tbl_user u ON (s.id_coach = u.user_id) + INNER JOIN $table_access_url_rel_session ar ON (ar.session_id = s.id) + $where"; } } $query .= ") AS session_table"; - if (!empty($options['where'])) { - $query .= ' WHERE '.$options['where']; - } - if (!empty($options['order'])) { $query .= " ORDER BY ".$options['order']; } error_log($query); - //echo $query; - + //echo $query; $result = Database::query($query); $formatted_sessions = array(); @@ -2357,8 +2366,8 @@ class SessionManager { //Inject extra session fields $session_field = new SessionField(); $session_field_option = new SessionFieldOption(); - $fields = $session_field->get_all(array('field_visible = ? AND field_filter = ?' => array(1, 1))); - + $fields = $session_field->get_all(array('field_visible = ? AND field_filter = ?' => array(1, 1)), 'option_display_text'); + $rules = array(); /* $now = new DateTime(); @@ -2438,7 +2447,7 @@ class SessionManager { $rules[] = array('field' => 'extra_'.$field['field_variable'].'_second', 'op' => 'cn'); continue; } else { - $search_options['value'] = $session_field_option->get_field_options_to_string($field['id']); + $search_options['value'] = $session_field_option->get_field_options_to_string($field['id'], false, 'option_display_text'); } $column_model[] = array(