From: Jimmy C. <ji...@ad...> - 2004-02-24 05:56:38
|
On Mon, February 23, 2004 7:02 pm, William Bishop said: > Hi Everyone, > > In my search to get the address book to include the persons > name, as well as their email address, I found something that > appeared a bit 'squirrely'. > > In functions/addressbook.php, inside the AddressBook class is the > member function: > > > function full_address($row) { > global $addrsrch_fullname, $data_dir, $username; > > > if (($prefix = getPref($data_dir, $username, 'addrsrch_fullname') > or > isset($addrsrch_fullname) and $prefix = $addrsrch_fullname) > and $prefix !== 'noprefix') { > $name = ($prefix === 'nickname') ? $row['nickname'] > : $row['name']; > return $name . ' <' . trim($row['email']) . '>'; > } else { > return trim($row['email']); > } > } > > There appears to be no way to set the 'addrsrch_fullname' preference > anywhere. Adding it "by hand" to my preferences causes > the full name to be used (hurray). But this bit of code appears to have > a few problems: > > The use of "===" and "!==" appear to be "typos", the second part of > the conditional "and $prefix = $addrsrch_fullname" should probably > be "and $prefix == $addrsrch_fullname" (comparison instead of > assignment). Thus allowing the preference 'addrsrch_fullname' to > utilize meaningful values of "nickname", "noprefix", or anything > else (which causes the full name to be used). > > After fixing the code above, I used preferences of: > > addrsrch_fullname=nickname > > addrsrch_fullname=noprefix > > addrsrch_fullname=full > > And they produced the expected results in the compose "To:", "Cc:", > and "Bcc:" lines. > > Does anyone have any thoughts on setting this preference (by > the user) -- or maybe that's the rub, eh? > > Thanks, > > > ->Bill > > I get the same results as you and there do appear to be a few serious flaws with the code in question. I have played with it alittle and it seems that I get the best results by changing it like so.... function full_address($row) { global $addrsrch_fullname, $data_dir, $username; $prefix = getPref($data_dir, $username, 'addrsrch_fullname'); if (($prefix != "" || (isset($addrsrch_fullname) && $prefix == $addrsrch_fullname)) && $prefix != 'noprefix') { $name = ($prefix == 'nickname' ? $row['nickname'] : $row['name']); return $name . ' <' . trim($row['email']) . '>'; } else { return trim($row['email']); } } It seems to work beautifully after that, now I just have to add a simple Option to allow you to manipulate it, and it should be working beautifully and if no one see any ways to optimize it or has any objections, I will add the option / fixes to the current Devel version for everyone to play with. Jimmy |