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

<?php
//$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(
'#type' => 'item',
'#value' => l(t('Set as my profile picture'), 'picture/set/'. $node->nid, array('query' => $destination)),
'#weight' => 0,
);

$node->content['addimages'] = array(
'#type' => 'item',
'#value' => l(t('Upload more photos'), "node/add/gallery-image"),
'#weight' => 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']);
}
?>

DrupalD
Enroll to Drupal 10 Training