Warning message

Newsletter category Drupal Developer newsletter format has not been set to HTML. There will be no statistics recorded for this newsletter.

Drupal: Set any image as User profile image

This CodeLet allows you to set any image associated with certain contant type to be used as user profile image. This CodeLet particularly uses 'galleryimage' content type.

CodeLet: 

//$Id$

/**
* @file
*
* Display upcoming events of a user
*
* @author DrupalD
*/

/**
* Implementation of hook_menu
*
* @author DrupalD
*/
function upcoming_events_menu() {
$item = array();
$item['picture/set/%node'] = array(
'type' => MENU_CALLBACK,
'page callback' => 'upcoming_events_picture',
'page arguments' => array(2),
'access callback' => 'upcoming_events_validate',
'access arguments' => array(2),
);

return $item;
}

/**
* Implementation of hook_nodeapi
*
* @param $node
* @param $op
* @param $a3
* @param $a4
* @author DrupalD
*/
function upcoming_events_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
global $user;
switch ($op) {
case 'view':
if ($node->type == 'galleryimage') {
$destination = drupal_get_destination();
$node->content['set_profile_image'] = array(
'' => 'item',
'' => l(t('Set as my profile picture'), 'picture/set/'. $node->nid, array('query' => $destination)),
'' => 0,
);

$node->content['addimages'] = array(
'' => 'item',
'' => l(t('Upload more photos'), "node/add/gallery-image"),
'' => 10,
);
}
break;
}
}

/**
* upcoming_events_picture
*
* @param unknown_type $variables
* @author DrupalD
*/
function upcoming_events_picture($node) {
global $user;
db_query("UPDATE {users} set picture = '%s' WHERE uid = %d", $node->field_gallery_image[0]['filepath'], $user->uid);
drupal_set_message(t('Picture has been set as your profile picture'));
drupal_goto($_GET['destination']);
}

By DrupalD on Sat, 03/08/2013 - 11:45am

Add comment

Log in or register to post comments
QR code for this page URL This page URL
Feedback