public function updateProfile($name = null, $email = null, $url = null, $location = null, $description = null)
{
// validate parameters
if($name === null && $email === null && $url === null && $location === null && $description === null) throw new TwitterException('Specify at least one parameter.');
if($name !== null && strlen($name) > 40) throw new TwitterException('Maximum 40 characters allowed for name.');
if($email !== null && strlen($email) > 40) throw new TwitterException('Maximum 40 characters allowed for email.');
if($url !== null && strlen($url) > 100) throw new TwitterException('Maximum 100 characters allowed for url.');
if($location !== null && strlen($location) > 30) throw new TwitterException('Maximum 30 characters allowed for location.');
if($description !== null && strlen($description) > 160) throw new TwitterException('Maximum 160 characters allowed for description.');
// build parameters
if($name !== null) $aParameters['name'] = (string) $name;
if($email !== null) $aParameters['email'] = (string) $email;
if($url !== null) $aParameters['url'] = (string) $url;
if($location !== null) $aParameters['location'] = (string) $location;
if($description !== null) $aParameters['description'] = (string) $description;
// make the call
$response = $this->doCall('account/update_profile.xml', $aParameters, true);
// convert into xml-object
$xml = @simplexml_load_string($response);
// validate
if($xml == false) throw new TwitterException('invalid body');
// return
return (array) $this->userXMLToArray($xml, true);
}