Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Joomla »

Programación back-end Joomla

Estas en el tema de Programación back-end Joomla en el foro de Joomla en Foros del Web. Hola gente, estoy tratando de aprender a programar extensiones con joomla 2.5 y me ha surgido una duda que no consigo aclarar. En el modelo ...
  #1 (permalink)  
Antiguo 25/08/2012, 04:35
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Programación back-end Joomla

Hola gente, estoy tratando de aprender a programar extensiones con joomla 2.5 y me ha surgido una duda que no consigo aclarar.

En el modelo utilizo el método getListQuery() para establecer mi consulta a la bd, pero no comprendo porque hace esto $db = $this->getDbo(); , ¿no se supone que el objeto de conex a la base d datos es $query?, ¿por qué tiene que crear un nuevo objeto de conex a la bd?.



Código:
public function getListQuery()
	{
		$query = parent::getListQuery();

		$query->select('*');
		$query->from('#__explore_activities');
 
                $published = $this->getState('filter.published');

                /*En caso de no tener valor devuele los publicados y despublicados
                ,No los archivados y demás
                */
		if ($published == '') {
			$query->where('(published = 1 OR published = 0)');
		} 
                /*En caso de NO ser igual a la * (asterisco) devuelve lo que valga published
                 * 0-Unpublished, 1-Published, 2-Archived, -2-Trasehed , es decir los publicados ó los NO publicados
                 */
                else if ($published != '*') {
			$published = (int) $published;
			$query->where("published = '{$published}'");
		}
                
                $search = $this->getState('filter.search');

		$db = $this->getDbo();

		if (!empty($search)) {
			$search = '%' . $db->getEscaped($search, true) . '%';

			$field_searches =
				"(activity_description LIKE '{$search}' OR " .
				"activity_name LIKE '{$search}')";

			$query->where($field_searches);
		}


		return $query;
	}
Gracias de antemano.
__________________
Videotutoriales de Drupal
  #2 (permalink)  
Antiguo 28/08/2012, 01:55
Avatar de zulkas  
Fecha de Ingreso: julio-2011
Mensajes: 126
Antigüedad: 12 años, 9 meses
Puntos: 11
Respuesta: Programación back-end Joomla

Eso se suele hacer para posteriormente ejecutar la consulta sobre la variable $db
Por que si te fijas aqui http://docs.joomla.org/JModel (pincha en la version que trabajes, por cierto a nivel de desarrollo la 1.6 corresponde a 1.6 y versiones posteriores) EL getDbo te devuelve una conexión a la base de datos.

Fijate que si $search no es nulo utilizamos ese objeto $db->getEscaped($search, true) para llamar al método getEscaped .

$db es un objeto JDatabase (especificación del objeto $db http://docs.joomla.org/JDatabase/1.6), que cómo lo sé, haz un print_r de esa variable lo ejecutas y te dice lo que contiene y el tipo de objeto que es, hay que saber leerlo pero te lo dice.

¿Es necesario el getEscaped? SI!!! Se hace para evitar una inyeccion de SQL (explicación -> http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL)

Vaya tocho, he vuelto de las vacaciones con fuerzas ;)


PD Un listado de tutoriales de regalo para aprender -> http://docs.joomla.org/Developers
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:55.