Enviado por Oskar el 05 de Julio de 2009.
in
El código me funciona pero cada usuario ve su propia pestaña de "my buddys activity", y me gustaría que todos pudiesen ver la de todos.
<?php
/**
* Implementation of hook_perm().
*/
function buddysactivity_perm() {
return array('my buddys activity');
}
/**
* Implementation of hook_menu().
*/
function buddysactivity_menu($may_cache) {
$items = array();
if ($may_cache != true) {
if (arg(0) == 'user') {
$items[] = array(
'path' => 'user/'. arg(1) .'/buddy',
'title' => t('my buddys activity'),
'callback' => 'my_buddy_activity',
'callback arguments' =>array('user', arg(1)),
'access' => user_access('my buddys activity'),
'type' => MENU_LOCAL_TASK,
);
}
}
return $items;
}
/*
*
*submit de la información.
*
*/
function my_buddy_activity (){
$pared = '<div id="pared"><ul>';
if ((arg(0) == 'user') && is_numeric(arg(1)) && (arg(2) == 'buddy'))
{ $arg1 = arg(1);}
$query="SELECT a.buddy, u.name, u.picture, n.created, n.title, n.nid, n.status
FROM {users} u, {buddylist} a, {node} n
WHERE u.uid = a.buddy
AND a.uid =%d
AND a.buddy = n.uid
AND n.status =1
order by n.created DESC";
$result = db_query_range($query, $arg1, 0, 30);
while ($data = db_fetch_object($result)) {
$pared .= '<li>
<a href="'.base_path().'node/'.$data->nid.'" alt="'.$data->title.'" title="'.$data->title.'">
'.$data->title.'
</a>'. t('by') .' <a href="'.base_path().'user/'.$data->buddy.'" title="'.$data->name.'" alt="'.$data->name.'">'.$data->name.'</a>';
}
$pared .= '</ul></div>';
return $pared;
}
?>Un saludo
Oskar
- Añadir nuevo comentario
- 481 lecturas
Inicio de sesión
Comentarios recientes
- Re: no puedo ver los videos
hace 2 días 17 horas - no puedo ver los videos
hace 2 días 22 horas - Gracias
hace 6 días 11 horas - Re: Añadir regiones en drupal 6
hace 1 semana 5 días - Añadir regiones en drupal 6
hace 1 semana 6 días - Muy bueno
hace 2 semanas 4 días - Ayuda
hace 2 semanas 6 días - Envio de correos
hace 3 semanas 16 horas - Sobre php
hace 3 semanas 22 horas - Solucion imagenes en 4 columnas
hace 3 semanas 1 día

Pienso que...
Hola Oskar,
puedes probar por favor lo siguiente.
Cuando te refieres a todos me imagino que te refieres a los usuarios autentificados.
Controla si los usuarios tienen permisos de ver el perfil de otros usuarios "access user profiles".
entonces para mayor seguridad puedes anadir al array del menu:
...$items[] = array(
'path' => 'user/'. arg(1) .'/buddy',
'title' => t('my buddys activity'),
'callback' => 'my_buddy_activity',
'callback arguments' =>array('user', arg(1)),
'access' => user_access('access user profiles', 'my buddys activity'),
'type' => MENU_LOCAL_TASK
);
...
No tomes a mal que te mande aquí como debiera estar formateado el codigo pero creo que es una ayuda tambien.
Si algún dia contribuyes en Drupal no te queda de otra hacerlo así.
<?php
/**
* Implementation of hook_perm().
*/
function buddysactivity_perm() {
return array('my buddys activity');
}
/**
* Implementation of hook_menu().
*/
function buddysactivity_menu($may_cache) {
$items = array();
if ($may_cache != true) {
if (arg(0) == 'user') {
$items[] = array(
'path' => 'user/'. arg(1) .'/buddy',
'title' => t('my buddys activity'),
'callback' => 'my_buddy_activity',
'callback arguments' =>array('user', arg(1)),
'access' => user_access('access user profiles', 'my buddys activity'),
'type' => MENU_LOCAL_TASK,
);
}
}
return $items;
}
/**
* Submit de la información.
*/
function my_buddy_activity (){
if ((arg(0) == 'user') && is_numeric(arg(1)) && (arg(2) == 'buddy')) {
$arg1 = arg(1);
}
else {
// Si uno de los datos esperados por la condicion no existen, para que seguir?
return '';
}
$query="SELECT a.buddy, u.name, u.picture, n.created, n.title, n.nid, n.status
FROM {users} u, {buddylist} a, {node} n
WHERE u.uid = a.buddy
AND a.uid =%d
AND a.buddy = n.uid
AND n.status =1
order by n.created DESC";
$result = db_query_range($query, $arg1, 0, 30);
while ($data = db_fetch_object($result)) {
$list[] = t('@title by @buddy', array(
'@title' => l($data->title, base_path() .'node/'. $data->nid, $data->title, $data->title),
'@buddy' => l($data->name, base_path().'user/'.$data->buddy, $data->name, $data->name)
));
}
$attributes = array(
'id' => 'pared',
);
$output = '<div '. drupal_attributes($attributes) .'>';
$output .= theme('item_list', $list, '', 'ul');
$output .= '</div>';
// Si los datos esperados por la condicion existen pero no hay resultados, para que mandar un div vacio?
return !empty($list) ? $output : '';
}
?>
Bueno espero esto ayude.
Saludos desde alemania
Juan Carlos
simple.puntolatinoclub.de