config = &$CONF; $this->get = &$_GET; $this->fields = array( '1' => 'id', '2' => 'nombre' ); $this->query_order = array( 'a' => 'ASC', 'd' => 'DESC' ); $this->records_view = array('order' => array('1','2'), 'width' => array('25', '400'), 'orderby' => array(true, true) ); $this->ref_tables = array( '1' => 'ref_conocimientos', '2' => 'ref_facturacion', '3' => 'ref_idiomas', '4' => 'ref_nacionalidad', '5' => 'ref_preferencias', '6' => 'ref_provincias', '7' => 'ref_retenciones', '8' => 'ref_tipo_curso', '9' => 'ref_tipos_clase', '10' => 'ref_zonas', '11' => 'ref_colectivos', '12' => 'ref_identificacion', '13' => 'ref_contratos', '14' => 'ref_tarifas' ); $this->tables_fields = array( '1' => array( 'candidato_conocimientos' => 'id_campo', 'profesor_conocimientos' => 'id_campo' ), '2' => array( 'empresas' => 'tipo_facturacion' ), '3' => array( 'candidato_idiomas' => 'id_campo', 'profesor_idiomas' => 'id_campo', 'grupos' => 'id_idioma' ), '4' => array( 'profesores' => 'nacionalidad', 'candidatos' => 'nacionalidad' ), '5' => array( 'candidato_preferencias' => 'id_campo', 'profesor_preferencias' => 'id_campo' ), '6' => array( 'profesores' => 'poblacion', 'profesores' => 'poblacion_2', 'candidatos' => 'poblacion', 'empresas' => 'poblacion', 'candidatos' => 'poblacion_sobre' ), '7' => array( 'candidatos' => 'retenciones', 'profesores' => 'retenciones' ), '8' => array( 'grupos' => 'tipo' ), '9' => array( 'candidato_tipo_clase' => 'id_campo', 'profesor_tipo_clase' => 'id_campo' ), '10' => array( 'candidato_zonas' => 'id_campo', 'profesor_zonas' => 'id_campo' ), '11' => array( 'alumnos' => 'id_colectivo' ), '12' => array( 'profesores' => 'tipo_identificacion', 'candidatos' => 'tipo_identificacion' ), '13' => array( 'profesores' => 'tipo_contrato' ), '14' => array( 'profesor_tarifas' => 'id_tarifa', 'empresa_tarifas' => 'id_tarifa', 'profesor_tarifas_grupo' => 'id_tarifa' ) ); } //----------------------------------------------------------------------------------- // getRecordList // Obtiene un listado de registros de la BBDD. function getRecordList(&$page, $order_field = 1, $order_type = 'd', $SQL_records_filter = '', $table) { $records_list = array(); if ( !isset( $this->fields[$order_field] ) ) $order_field = 1; if ( !isset( $this->query_order[$order_type] ) ) $order_type = 'd'; if ( !isset( $this->ref_tables[$table] ) ) $table = 1; $SQL_records_query = db_query('SELECT COUNT(*) AS total FROM ' . $this->ref_tables[$table] . $SQL_records_filter); $SQL_records = db_fetch_array($SQL_records_query); if ( $SQL_records['total'] > 0 ) { $page = check_records_page($page, $SQL_records['total']); $this->num_records = $SQL_records['total']; $SQL_records_order = ' ORDER BY ' . $this->fields[$order_field] . ' ' . $this->query_order[$order_type]; $SQL_records_limit = ' LIMIT ' . ( ( $page - 1 ) * $this->config['max_num_regs_list'] ) . ', ' . $this->config['max_num_regs_list']; $SQL_query = db_query('SELECT id, nombre FROM ' . $this->ref_tables[$table] . $SQL_records_filters . $SQL_records_order . $SQL_records_limit); while ( $SQL_record = db_fetch_array($SQL_query) ) { $records_list[$SQL_record['id']]['1'] = $SQL_record['id']; $records_list[$SQL_record['id']]['2'] = stripslashes($SQL_record['nombre']); } } return $records_list; } //----------------------------------------------------------------------------------- // deleteRecord // Elimina un registro de la BBDD. function deleteRecord($record) { $error .= ''; if ( $this->checkRecord($record, $this->get['table']) ) { $error .= 0; while ( list($id) = each($this->tables_fields[$this->get['table']]) ) { $SQL_query = @db_query('SELECT count(*) AS total FROM ' . $id . ' WHERE ' . $this->tables_fields[$this->get['table']][$id] . ' = \'' . $record . '\''); $SQL_values = db_fetch_array($SQL_query); if ( $SQL_values['total'] > 0 ) { $error .= 1; break; } } if ( ereg("^0+$", $error) ) { if ( @db_query('DELETE FROM ' . $this->ref_tables[$this->get['table']] . ' WHERE id = \'' . $record . '\'') ) $error .= '0'; else $error .= '1'; } } else $error .= '1'; return $error; } //----------------------------------------------------------------------------------- // checkRecord // Comprueba si existe o no un registro function checkRecord(&$record, $table) { settype($record, "integer"); $SQL_check_record = db_query('SELECT count(*) AS total FROM ' . $this->ref_tables[$table] . ' WHERE id = \'' . $record . '\''); $SQL_num_records = db_fetch_array($SQL_check_record); if ( $SQL_num_records['total'] == 1 ) return true; else return false; } //----------------------------------------------------------------------------------- // getRecordValues // Obtiene los valores para el registro indicado. function getRecordValues($record, $table) { if ( $this->checkRecord($record, $table) ) { $SQL_check_record = db_query('SELECT id, nombre AS record_name FROM ' . $this->ref_tables[$table] . ' WHERE id = \'' . $record . '\''); if ( db_num_rows($SQL_check_record) == 1 ) { $SQL_values = db_fetch_array($SQL_check_record); strip_slashes($SQL_values); return $SQL_values; } else return false; } else return false; } //----------------------------------------------------------------------------------- // manageRecord // - Recibe los parametros enviados desde el formulario mediante metodo POST. // - Determina el tipo de accion a realizar (INSERT o UPDATE). // - Trata los valores recibidos. // - Genera un codigo de error correspondiente a las acciones realizadas. // // [1] > Tipo de accion // [2] > Campo nombre function manageRecord(&$params, $table) { $action = ''; $error = ''; // Chequeo y tratamiento de los valores recibidos if ( isset($params['record_id']) ) { if ( ereg("^[0-9]+$", $params['record_id'] ) && $params['record_id'] > 0 ) { if ( $this->checkRecord($params['record_id'], $table) ) $action = 'update'; } } else $action = 'insert'; // Generacion del codigo de error $error = ( $action == '' ? 1 : 0 ); $error .= ( empty($params['record_name']) ? 1 : 0 ); // Acciones sobre la BBDD if ( ereg("^0+$", $error) ) { format_record($params); if ( $action == 'insert' ) { if ( db_query('INSERT INTO ' . $this->ref_tables[$table] . ' (nombre) VALUES (\'' . $params['record_name'] . '\')') ) { $params['record_id'] = db_insert_id(); $error .= 0; } else $error .= 1; } elseif ( $action == 'update' ) { if ( db_query('UPDATE ' . $this->ref_tables[$table] . ' SET nombre = \'' . $params['record_name'] . '\' WHERE id = \'' . $params['record_id'] . '\'') ) $error .= 0; else $error .= 2; } } strip_slashes($params); return $error; } } ?>