argh.. I thought the whole patch was for one thing... I already told him to make small diffs and separate diff files for different changes... square! You're not listening! I'm coming to kick you! :p
KKRT On Sun, Dec 16, 2007 at 10:00:44AM +0000, Tom Hennigan wrote: > Square87 thanks for looking at the code. This is a fairly large patch > so near to a release.. I have work today, so I can't do this for you, > but it may be better to split each patch into a separate diff.. Then > it will be easy to review your changes.. I will take time to look at > this, but as I said I can't do it today.. > > - Tom > > On 16 Dec 2007, at 08:02, Youness Alaoui wrote: > > > can someone review this.. cause I can't.. it's just too much stuff > > in there... > > > > On Sat, Dec 15, 2007 at 03:29:52PM +0000, square87 wrote: > >> Hello > >> I found some "strange" behaviors in the proc "cmsn_change_state" of > >> protocol.tcl. > >> I write a patch. I (try to) explain what i changed and why. > >> > >> The diff file is the result of "svn diff"; > >> The txt file is "the diff file without old differences". > >> > >> -------------- > >> In the original version there is: > >> > >> if {$user_name != [::abook::getNick $user]} { > >> > >> So $user_name it's the original name of an user that we receive > >> from the > >> server, we compare it with the "old" nickname. But... > >> [::abook::getNick > >> $user] return a parsed nick that it could be different from the > >> first one, > >> for example: if you are using colored nicks, except when the user > >> delete > >> style from his nick so original nick is equal to parsednick, but > >> then that > >> code is not considered. > >> for this i changed it in: > >> if { $user_name != [::abook::getContactData $user nick]} { > >> > >> ------------ > >> > >> Then I commented "set state_no...." because it is not used anymore, > >> it is > >> useless. > >> > >> ----------- > >> Then i removed switch cases because they are useless we already > >> have all > >> infos, just add: set status "[trans [::MSN::stateToDescription > >> $substate]]" > >> ----------- > >> > >> Then i do some codes clean > >> from: set maxw [expr {([::skin::getKey notifwidth]-53)*2} ] > >> to: when "if" is closed > >> this part of code is necessary only if $status_changed is equal to > >> 1. So > >> just put this check at the top (from: set maxw....) > >> > >> ------ > >> Then i did update the "newPic" part. > >> Now there is a strange behavoiur. > >> Before to check if oldpic != newdp > >> there is: ::abook::setContactData $user displaypicfile $newPic > >> it means that you are upgrading the "name" of the actually pic, > >> even if > >> newdp == oldpic... but anyway... look in the code after and think > >> the case: > >> lazypicretrieval is 0 so you can go in the "elseif" condition to > >> update the > >> userDP but you can do it only if you are not hidden else you cannot > >> do > >> nothing... (think when you choose to login as "invisibile"....) > >> Now go online, your user change status so also DP is checked but > >> now $oldpic > >> is equal to $newpic so the DP is not upgraded... until he doesn't > >> change > >> it... > >> > >> So i improve that behavior in particolar "::abook::setContactData > >> $user > >> displaypicfile $newPic " is called only if it is possible to load > >> the newdp > >> and i added a new case: when an user change his DP and you are > >> hidden or he > >> is blocked or whatever -> search first in the cache if there is > >> already that > >> DP load it. > >> -------- > >> > >> Ok this was a summary of what i done. If you have problem or > >> question or do > >> you think that something is useless tell me before to commit... if > >> you want > >> to commit :P > >> > >> Sorry for my English > >> Thanks, bye. > >> Square87 > > > >> Index: protocol.tcl > >> =================================================================== > >> --- protocol.tcl (revisione 9113) > >> +++ protocol.tcl (copia locale) > >> @@ -4856,11 +4860,9 @@ > >> } > >> > >> if {$user_name == ""} { > >> - set user_name [::abook::getNick $user] > >> - } > >> - > >> - > >> - if {$user_name != [::abook::getNick $user]} { > >> + set user_name [::abook::getContactData $user nick] > >> + set nick_changed 0 > >> + } elseif { $user_name != [::abook::getContactData $user nick]} { > >> #Nick differs from the one on our list, so change it > >> #in the server list too > >> ::abook::setContactData $user nick $user_name > >> @@ -4889,7 +4891,7 @@ > >> > >> set custom_user_name [::abook::getDisplayNick $user] > >> > >> - set state_no [::MSN::stateToNumber $substate ] > >> +# set state_no [::MSN::stateToNumber $substate ] ;#actually this > >> var is never used. > >> > >> > >> #alarm system (that must replace the one that was before) - KNO > >> @@ -4903,115 +4905,63 @@ > >> } elseif { ( [::alarms::isEnabled all] == 1 )&& > >> ( [::alarms::getAlarmItem all ondisconnect] == 1) } { > >> run_alarm all $user $custom_user_name [trans > >> disconnect > >> $custom_user_name] > >> } > >> - > >> } else { > >> + set status "[trans [::MSN::stateToDescription > >> $substate]]" > >> if { ( [::alarms::isEnabled $user] == 1 )&& > >> ( [::alarms::getAlarmItem $user onstatus] == 1) } { > >> - switch -exact [lindex $recv 1] { > >> - "NLN" { > >> - run_alarm $user $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans online]]" > >> - } > >> - "IDL" { > >> - run_alarm $user $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans away]]" > >> - } > >> - "BSY" { > >> - run_alarm $user $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans busy]]" > >> - } > >> - "BRB" { > >> - run_alarm $user $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans rightback]]" > >> - } > >> - "AWY" { > >> - run_alarm $user $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans away]]" > >> - } > >> - "PHN" { > >> - run_alarm $user $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans onphone]]" > >> - } > >> - "LUN" { > >> - run_alarm $user $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans gonelunch]]" > >> - } > >> - } > >> + run_alarm $user $user $custom_user_name "[trans > >> changestate > >> $custom_user_name $status]" > >> } elseif { ( [::alarms::isEnabled all] == 1 )&& > >> ( [::alarms::getAlarmItem all onstatus] == 1)} { > >> - switch -exact [lindex $recv 1] { > >> - "NLN" { > >> - run_alarm all $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans online]]" > >> - } > >> - "IDL" { > >> - run_alarm all $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans away]]" > >> - } > >> - "BSY" { > >> - run_alarm all $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans busy]]" > >> - } > >> - "BRB" { > >> - run_alarm all $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans rightback]]" > >> - } > >> - "AWY" { > >> - run_alarm all $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans away]]" > >> - } > >> - "PHN" { > >> - run_alarm all $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans onphone]]" > >> - } > >> - "LUN" { > >> - run_alarm all $user > >> $custom_user_name "[trans changestate > >> $custom_user_name [trans gonelunch]]" > >> - } > >> - } > >> + run_alarm all $user $custom_user_name "[trans > >> changestate > >> $custom_user_name $status]" > >> } > >> } > >> } > >> #end of alarm system > >> > >> + if { $state_changed } { > >> + set maxw [expr {([::skin::getKey notifwidth]-53)*2} ] > >> + set short_name [trunc $custom_user_name . $maxw splainf] > >> > >> - set maxw [expr {([::skin::getKey notifwidth]-53)*2} ] > >> - set short_name [trunc $custom_user_name . $maxw splainf] > >> - > >> - #User logsout > >> - if {$substate == "FLN"} { > >> - > >> - if { $state_changed } { > >> + #User logsout > >> + if {$substate == "FLN"} { > >> #Register last logout, last seen and notify it in the > >> events > >> ::abook::setAtomicContactData $user [list last_logout > >> last_seen] \ > >> - [list [clock format [clock seconds] -format "%D - > >> %H:%M: > >> %S"] [clock format [clock seconds] -format "%D - %H:%M:%S"]] > >> + [list [clock format [clock seconds] -format "%D - > >> %H:%M:%S"] > >> [clock format [clock seconds] -format "%D - %H:%M:%S"]] > >> ::log::event disconnect $custom_user_name > >> - } > >> - > >> - # Added by Yoda-BZH > >> - if { ($remote_auth == 1) && $state_changed } { > >> - set nameToWriteRemote "$user_name ($user)" > >> - write_remote "** $nameToWriteRemote [trans logsout]" > >> event > >> - } > >> - > >> - if { ($state_changed || $nick_changed) && > >> - (([::config::getKey notifyoffline] == 1 && > >> - [::abook::getContactData $user notifyoffline -1] != 0) || > >> - [::abook::getContactData $user notifyoffline -1] == 1) } { > >> - #Show notify window if globally enabled, and not > >> locally > >> disabled, or if just locally enabled > >> - ::amsn::notifyAdd "$short_name\n[trans logsout]." "" > >> offline > >> offline $user > >> - } > >> - > >> - # User was online before, so it's just a status change, and it's > >> not > >> - # an initial state notification > >> - } elseif {[::abook::getVolatileData $user state FLN] != "FLN" && > >> [lindex $recv 0] != "ILN" } { > >> - > >> - if { $state_changed } { > >> + > >> + # Added by Yoda-BZH > >> + if { $remote_auth == 1 } { > >> + set nameToWriteRemote "$user_name ($user)" > >> + write_remote "** $nameToWriteRemote [trans > >> logsout]" event > >> + } > >> + > >> + if { ([::config::getKey notifyoffline] == 1 && > >> + [::abook::getContactData $user notifyoffline -1] != 0) > >> || > >> + [::abook::getContactData $user notifyoffline -1] == 1 } > >> { > >> + #Show notify window if globally enabled, and > >> not locally > >> disabled, or if just locally enabled > >> + ::amsn::notifyAdd "$short_name\n[trans > >> logsout]." "" offline > >> offline $user > >> + } > >> + > >> + # User was online before, so it's just a status change, and > >> it's > >> not > >> + # an initial state notification > >> + } elseif {[::abook::getVolatileData $user state FLN] != "FLN" > >> && > >> [lindex $recv 0] != "ILN" } { > >> + > >> #Notify in the events > >> ::log::event state $custom_user_name > >> [::MSN::stateToDescription > >> $substate] > >> - } > >> + > >> + # Added by Yoda-BZH > >> + if { $remote_auth == 1 } { > >> + set nameToWriteRemote "$user_name ($user)" > >> + write_remote "** [trans changestate > >> $nameToWriteRemote [trans > >> [::MSN::stateToDescription $substate]]]" event > >> + } > >> > >> - # Added by Yoda-BZH > >> - if { ($remote_auth == 1) && ($state_changed || $nick_changed) > >> } { > >> - set nameToWriteRemote "$user_name ($user)" > >> - write_remote "** [trans changestate $nameToWriteRemote > >> [trans > >> [::MSN::stateToDescription $substate]]]" event > >> - } > >> - > >> - if { ($state_changed || $nick_changed) && > >> - (([::config::getKey notifystate] == 1 && > >> - [::abook::getContactData $user notifystatus -1] != 0) || > >> - [::abook::getContactData $user notifystatus -1] == 1) } { > >> - ::amsn::notifyAdd "$short_name\n[trans > >> statechange]\n[trans > >> [::MSN::stateToDescription $substate]]." \ > >> - "::amsn::chatUser $user" state state $user > >> - } > >> - > >> - } elseif {[lindex $recv 0] == "NLN"} { ;# User was offline, now > >> online > >> - > >> - if { $state_changed } { > >> + if {([::config::getKey notifystate] == 1 && > >> + [::abook::getContactData $user notifystatus -1] != 0) || > >> + [::abook::getContactData $user notifystatus -1] == 1 } { > >> + ::amsn::notifyAdd "$short_name\n[trans > >> statechange]\n[trans > >> [::MSN::stateToDescription $substate]]." \ > >> + "::amsn::chatUser $user" state state $user > >> + } > >> + > >> + } elseif {[lindex $recv 0] == "NLN"} { ;# User was offline, > >> now > >> online > >> + > >> #Register last login and notify it in the events > >> ::abook::setContactData $user last_login [clock format > >> [clock > >> seconds] -format "%D - %H:%M:%S"] > >> ::log::event connect $custom_user_name > >> @@ -5023,23 +4973,20 @@ > >> #later on with x-clientcaps > >> ::abook::setContactData $user clientname "" > >> ::plugins::PostEvent UserConnect evPar > >> - } > >> - > >> - # Added by Yoda-BZH > >> - if { ($remote_auth == 1) && $state_changed } { > >> - set nameToWriteRemote "$user_name ($user)" > >> - write_remote "** $nameToWriteRemote [trans logsin]" > >> event > >> - } > >> - > >> - if { ($state_changed || $nick_changed) && > >> - (([::config::getKey notifyonline] == 1 && > >> - [::abook::getContactData $user notifyonline -1] != 0) || > >> - [::abook::getContactData $user notifyonline -1] == 1) } { > >> - ::amsn::notifyAdd "$short_name\n[trans logsin]." > >> "::amsn::chatUser $user" online online $user > >> - } > >> - > >> - if { $state_changed } { > >> - if { ( [::alarms::isEnabled $user] == 1 )&& > >> ( [::alarms::getAlarmItem $user onconnect] == 1)} { > >> + > >> + # Added by Yoda-BZH > >> + if { $remote_auth == 1 } { > >> + set nameToWriteRemote "$user_name ($user)" > >> + write_remote "** $nameToWriteRemote [trans > >> logsin]" event > >> + } > >> + > >> + if { ([::config::getKey notifyonline] == 1 && > >> + [::abook::getContactData $user notifyonline -1] != 0) || > >> + [::abook::getContactData $user notifyonline -1] == 1 } { > >> + ::amsn::notifyAdd "$short_name\n[trans > >> logsin]." > >> "::amsn::chatUser $user" online online $user > >> + } > >> + > >> + if { ( [::alarms::isEnabled $user] == 1 )&& > >> ( [::alarms::getAlarmItem $user onconnect] == 1)} { > >> run_alarm $user $user $custom_user_name > >> "$custom_user_name > >> [trans logsin]" > >> } elseif { ( [::alarms::isEnabled all] == 1 )&& > >> ( [::alarms::getAlarmItem all onstatus] == 1)} { > >> run_alarm all $user $custom_user_name > >> "$custom_user_name [trans > >> logsin]" > >> @@ -5051,40 +4998,55 @@ > >> # set oldmsnobj [::abook::getVolatileData $user msobj] > >> #set list_users [lreplace $list_users $idx $idx [list $user > >> $user_name $state_no $msnobj]] > >> > >> - ::abook::setVolatileData $user state $substate > >> + if {$state_changed} { > >> + ::abook::setVolatileData $user state $substate > >> + } > >> ::abook::setVolatileData $user msnobj $msnobj > >> set oldPic [::abook::getContactData $user displaypicfile] > >> set newPic [::MSNP2P::GetFilenameFromMSNOBJ $msnobj] > >> - ::abook::setContactData $user displaypicfile $newPic > >> - > >> - if { ($oldPic != $newPic) && ($newPic == "") } { > >> - ::skin::getDisplayPicture $user 1 > >> - } elseif { $oldPic != $newPic} { > >> - status_log "picture changed for user $user\n" white > >> - if { [::config::getKey lazypicretrieval] || > >> [::MSN::userIsBlocked $user]} { > >> - global sb_list > >> - foreach sb $sb_list { > >> - set users_in_chat [$sb cget -users] > >> - if { [lsearch $users_in_chat $user] != -1 } { > >> - status_log "User changed image while > >> image in use!! Updating!! > >> \n" white > >> - ::MSNP2P::loadUserPic [::MSN::ChatFor > >> $sb] $user > >> - } > >> - } > >> > >> + if { $oldPic != $newPic } { > >> + set pic_changed 1 > >> + > >> + if { $newPic == "" } { > >> + ::skin::getDisplayPicture $user 1 > >> } else { > >> - if { [::MSN::myStatusIs] != "FLN" && > >> [::MSN::myStatusIs] != > >> "HDN"} { > >> - if { ![file readable "[file join $HOME > >> displaypic cache $ > >> {newPic}].png"] } { > >> - set chat_id [::MSN::chatTo $user] > >> - ::MSN::ChatQueue $chat_id [list > >> ::MSNP2P::loadUserPic > >> $chat_id $user] > >> - } else { > >> - #We already have the image so don't > >> open a convo to get it > >> just load it > >> - ::MSNP2P::loadUserPic "" $user > >> + status_log "picture changed for user $user\n" white > >> + > >> + if { [file readable "[file join $HOME displaypic cache > >> $ > >> {newPic}].png"] } { > >> + ;#it's possible that the user set again a DP that we > >> already > >> have in our cache so just load it again, even if we are HDN, or the > >> user is blocked. > >> + ::MSNP2P::loadUserPic "" $user > >> + ::abook::setContactData $user displaypicfile > >> $newPic > >> + } elseif { [::config::getKey lazypicretrieval] || > >> [::MSN::userIsBlocked $user]} { > >> + global sb_list > >> + > >> + foreach sb $sb_list { > >> + set users_in_chat [$sb cget -users] > >> + if { [lsearch $users_in_chat $user] != > >> -1 } { > >> + status_log "User changed image > >> while image in use!! > >> Updating!!\n" white > >> + ::MSNP2P::loadUserPic > >> [::MSN::ChatFor $sb] $user > >> + ::abook::setContactData $user > >> displaypicfile $newPic > >> + } > >> } > >> + } elseif { [::MSN::myStatusIs] != "FLN" && > >> [::MSN::myStatusIs] ! > >> = "HDN"} { > >> + set chat_id [::MSN::chatTo $user] > >> + ::MSN::ChatQueue $chat_id [list > >> ::MSNP2P::loadUserPic $chat_id > >> $user] > >> + ::abook::setContactData $user displaypicfile > >> $newPic > >> + } else { > >> + set pic_changed 0 > >> } > >> } > >> + } else { > >> + set pic_changed 0 > >> } > >> > >> + if { $state_changed || $nick_changed || $pic_changed} { > >> + ::MSN::contactListChanged > >> + } > >> > >> - ::MSN::contactListChanged > >> if { $state_changed || $nick_changed } { > >> > >> foreach chat_id [::ChatWindow::getAllChatIds] { > > > >> proc cmsn_change_state {recv} { > >> global remote_auth HOME > >> > >> if {[lindex $recv 0] == "FLN"} { > >> #User is going offline > >> set user [lindex $recv 1] > >> set evpar(user) user > >> set user_name "" > >> set substate "FLN" > >> set evpar(substate) substate > >> set msnobj [::abook::getVolatileData $user msnobj ""] > >> # status_log "contactStateChange in protocol cmsn_change_state > >> FLN" > >> } elseif {[lindex $recv 0] == "ILN"} { > >> #Initial status when we log in > >> set user [lindex $recv 3] > >> set encoded_user_name [lindex $recv 4] > >> set user_name [urldecode [lindex $recv 4]] > >> set substate [lindex $recv 2] > >> set msnobj [urldecode [lindex $recv 6]] > >> #Add clientID to abook > >> add_Clientid $user [lindex $recv 5] > >> #Previous clientname info is now inaccurate > >> ::abook::setContactData $user clientname "" > >> } else { > >> #Coming online or changing state > >> set user [lindex $recv 2] > >> set evpar(user) user > >> set encoded_user_name [lindex $recv 3] > >> set user_name [urldecode [lindex $recv 3]] > >> set substate [lindex $recv 1] > >> set evpar(substate) substate > >> set msnobj [urldecode [lindex $recv 5]] > >> #Add clientID to abook > >> add_Clientid $user [lindex $recv 4] > >> > >> # status_log "contactStateChange in protocol cmsn_change_state > >> $user" > >> } > >> > >> set oldstate [::abook::getVolatileData $user state] > >> if { $oldstate != $substate } { > >> set state_changed 1 > >> } else { > >> set state_changed 0 > >> } > >> > >> # we shouldn't add ChangeState PostEvent if ILN > >> if { $state_changed } { > >> #an event used by guicontactlist to know when a contact changed > >> > >> state > >> after 500 [list ::Event::fireEvent contactStateChange protocol > >> $user] > >> > >> ::plugins::PostEvent ChangeState evpar > >> } > >> > >> > >> if { $msnobj == "" } { > >> set msnobj -1 > >> } > >> > >> if {$user_name == ""} { > >> set user_name [::abook::getContactData $user nick] > >> set nick_changed 0 > >> } elseif { $user_name != [::abook::getContactData $user nick]} { > >> #Nick differs from the one on our list, so change it > >> #in the server list too > >> ::abook::setContactData $user nick $user_name > >> # ::MSN::changeName $user [encoding convertto utf-8 > >> $encoded_user_name] 1 > >> > >> #an event used by guicontactlist to know when we changed our > >> nick > >> ::Event::fireEvent contactNickChange protocol $user > >> > >> set nick_changed 1 > >> > >> if {[::config::getKey protocol] == 11} { > >> if {$::msnp13 != 1} { > >> # This check below is because today I received > >> a NLN for a user > >> # who doesn't appear in ANY of my 5 MSN lists > >> (RL,AL,BL,FL,PL) > >> # so amsn just sent the SBP with an empty > >> string for the > >> contactguid, > >> # which resulted in a wrongly formed SBP, which > >> resulted in the > >> msn server disconnecting me... :@ > >> if { [::abook::getContactData $user > >> contactguid] != "" } { > >> ::MSN::WriteSB ns "SBP" > >> "[::abook::getContactData $user > >> contactguid] MFN [urlencode $user_name]" > >> } > >> } > >> } > >> ::log::eventnick $user $user_name > >> } else { > >> set nick_changed 0 > >> } > >> > >> set custom_user_name [::abook::getDisplayNick $user] > >> > >> # set state_no [::MSN::stateToNumber $substate ] ;#actually this > >> var is never used. > >> > >> > >> #alarm system (that must replace the one that was before) - KNO > >> if {[lindex $recv 0] !="ILN" && $state_changed} { > >> > >> if {[lindex $recv 0] == "FLN"} { > >> #User disconnected > >> > >> if { ( [::alarms::isEnabled $user] == 1 )&& > >> ( [::alarms::getAlarmItem $user ondisconnect] == 1) } { > >> run_alarm $user $user $custom_user_name [trans > >> disconnect > >> $custom_user_name] > >> } elseif { ( [::alarms::isEnabled all] == 1 )&& > >> ( [::alarms::getAlarmItem all ondisconnect] == 1) } { > >> run_alarm all $user $custom_user_name [trans > >> disconnect > >> $custom_user_name] > >> } > >> } else { > >> set status "[trans [::MSN::stateToDescription > >> $substate]]" > >> if { ( [::alarms::isEnabled $user] == 1 )&& > >> ( [::alarms::getAlarmItem $user onstatus] == 1) } { > >> run_alarm $user $user $custom_user_name "[trans > >> changestate > >> $custom_user_name $status]" > >> } elseif { ( [::alarms::isEnabled all] == 1 )&& > >> ( [::alarms::getAlarmItem all onstatus] == 1)} { > >> run_alarm all $user $custom_user_name "[trans > >> changestate > >> $custom_user_name $status]" > >> } > >> } > >> } > >> #end of alarm system > >> > >> if { $state_changed } { > >> set maxw [expr {([::skin::getKey notifwidth]-53)*2} ] > >> set short_name [trunc $custom_user_name . $maxw splainf] > >> > >> #User logsout > >> if {$substate == "FLN"} { > >> #Register last logout, last seen and notify it in the > >> events > >> ::abook::setAtomicContactData $user [list last_logout > >> last_seen] \ > >> [list [clock format [clock seconds] -format "%D - > >> %H:%M:%S"] > >> [clock format [clock seconds] -format "%D - %H:%M:%S"]] > >> ::log::event disconnect $custom_user_name > >> > >> # Added by Yoda-BZH > >> if { $remote_auth == 1 } { > >> set nameToWriteRemote "$user_name ($user)" > >> write_remote "** $nameToWriteRemote [trans > >> logsout]" event > >> } > >> > >> if { ([::config::getKey notifyoffline] == 1 && > >> [::abook::getContactData $user notifyoffline -1] != 0) > >> || > >> [::abook::getContactData $user notifyoffline -1] == 1 } > >> { > >> #Show notify window if globally enabled, and > >> not locally > >> disabled, or if just locally enabled > >> ::amsn::notifyAdd "$short_name\n[trans > >> logsout]." "" offline > >> offline $user > >> } > >> > >> # User was online before, so it's just a status change, and > >> it's > >> not > >> # an initial state notification > >> } elseif {[::abook::getVolatileData $user state FLN] != "FLN" > >> && > >> [lindex $recv 0] != "ILN" } { > >> > >> #Notify in the events > >> ::log::event state $custom_user_name > >> [::MSN::stateToDescription > >> $substate] > >> > >> # Added by Yoda-BZH > >> if { $remote_auth == 1 } { > >> set nameToWriteRemote "$user_name ($user)" > >> write_remote "** [trans changestate > >> $nameToWriteRemote [trans > >> [::MSN::stateToDescription $substate]]]" event > >> } > >> > >> if {([::config::getKey notifystate] == 1 && > >> [::abook::getContactData $user notifystatus -1] != 0) || > >> [::abook::getContactData $user notifystatus -1] == 1 } { > >> ::amsn::notifyAdd "$short_name\n[trans > >> statechange]\n[trans > >> [::MSN::stateToDescription $substate]]." \ > >> "::amsn::chatUser $user" state state $user > >> } > >> > >> } elseif {[lindex $recv 0] == "NLN"} { ;# User was offline, > >> now > >> online > >> > >> #Register last login and notify it in the events > >> ::abook::setContactData $user last_login [clock format > >> [clock > >> seconds] -format "%D - %H:%M:%S"] > >> ::log::event connect $custom_user_name > >> ::abook::setVolatileData $user PSM "" > >> #Register PostEvent "UserConnect" for Plugins, email = > >> email > >> user_name=custom nick > >> set evPar(user) user > >> set evPar(user_name) custom_user_name > >> #Reset clientname, if it's not M$N it will set it again > >> #later on with x-clientcaps > >> ::abook::setContactData $user clientname "" > >> ::plugins::PostEvent UserConnect evPar > >> > >> # Added by Yoda-BZH > >> if { $remote_auth == 1 } { > >> set nameToWriteRemote "$user_name ($user)" > >> write_remote "** $nameToWriteRemote [trans > >> logsin]" event > >> } > >> > >> if { ([::config::getKey notifyonline] == 1 && > >> [::abook::getContactData $user notifyonline -1] != 0) || > >> [::abook::getContactData $user notifyonline -1] == 1 } { > >> ::amsn::notifyAdd "$short_name\n[trans > >> logsin]." > >> "::amsn::chatUser $user" online online $user > >> } > >> > >> if { ( [::alarms::isEnabled $user] == 1 )&& > >> ( [::alarms::getAlarmItem $user onconnect] == 1)} { > >> run_alarm $user $user $custom_user_name > >> "$custom_user_name > >> [trans logsin]" > >> } elseif { ( [::alarms::isEnabled all] == 1 )&& > >> ( [::alarms::getAlarmItem all onstatus] == 1)} { > >> run_alarm all $user $custom_user_name > >> "$custom_user_name [trans > >> logsin]" > >> } > >> } > >> } > >> > >> # Retreive the new display picture if it changed > >> # set oldmsnobj [::abook::getVolatileData $user msobj] > >> #set list_users [lreplace $list_users $idx $idx [list $user > >> $user_name $state_no $msnobj]] > >> > >> if {$state_changed} { > >> ::abook::setVolatileData $user state $substate > >> } > >> ::abook::setVolatileData $user msnobj $msnobj > >> set oldPic [::abook::getContactData $user displaypicfile] > >> set newPic [::MSNP2P::GetFilenameFromMSNOBJ $msnobj] > >> > >> if { $oldPic != $newPic } { > >> set pic_changed 1 > >> > >> if { $newPic == "" } { > >> ::skin::getDisplayPicture $user 1 > >> } else { > >> status_log "picture changed for user $user\n" white > >> > >> if { [file readable "[file join $HOME displaypic cache > >> $ > >> {newPic}].png"] } { > >> ;#it's possible that the user set again a DP that we > >> already > >> have in our cache so just load it again, even if we are HDN, or the > >> user is blocked. > >> ::MSNP2P::loadUserPic "" $user > >> ::abook::setContactData $user displaypicfile > >> $newPic > >> } elseif { [::config::getKey lazypicretrieval] || > >> [::MSN::userIsBlocked $user]} { > >> global sb_list > >> > >> foreach sb $sb_list { > >> set users_in_chat [$sb cget -users] > >> if { [lsearch $users_in_chat $user] != > >> -1 } { > >> status_log "User changed image > >> while image in use!! Updating!! > >> \n" white > >> ::MSNP2P::loadUserPic > >> [::MSN::ChatFor $sb] $user > >> ::abook::setContactData $user > >> displaypicfile $newPic > >> } > >> } > >> } elseif { [::MSN::myStatusIs] != "FLN" && > >> [::MSN::myStatusIs] ! > >> = "HDN"} { > >> set chat_id [::MSN::chatTo $user] > >> ::MSN::ChatQueue $chat_id [list > >> ::MSNP2P::loadUserPic $chat_id > >> $user] > >> ::abook::setContactData $user displaypicfile > >> $newPic > >> } else { > >> set pic_changed 0 > >> } > >> } > >> } else { > >> set pic_changed 0 > >> } > >> > >> if { $state_changed || $nick_changed || $pic_changed} { > >> ::MSN::contactListChanged > >> } > >> > >> if { $state_changed || $nick_changed } { > >> > >> foreach chat_id [::ChatWindow::getAllChatIds] { > >> if { $chat_id == $user } { > >> ::ChatWindow::TopUpdate $chat_id > >> } else { > >> foreach user_in_chat [::MSN::usersInChat > >> $chat_id] { > >> if { $user_in_chat == $user } { > >> ::ChatWindow::TopUpdate $chat_id > >> break > >> } > >> } > >> } > >> } > >> } > >> } > >> ------------------------------------------------------------------------- > >> SF.Net email is sponsored by: > >> Check out the new SourceForge.net Marketplace. > >> It's the best place to buy or sell services > >> for just about anything Open Source. > >> http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace > >> _______________________________________________ > >> Amsn-devel mailing list > >> Amsn-devel@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/amsn-devel > > > > > > ------------------------------------------------------------------------- > > SF.Net email is sponsored by: > > Check out the new SourceForge.net Marketplace. > > It's the best place to buy or sell services > > for just about anything Open Source. > > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace > > _______________________________________________ > > Amsn-devel mailing list > > Amsn-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/amsn-devel > > > ------------------------------------------------------------------------- > SF.Net email is sponsored by: > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services > for just about anything Open Source. > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace > _______________________________________________ > Amsn-devel mailing list > Amsn-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/amsn-devel ------------------------------------------------------------------------- SF.Net email is sponsored by: Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ Amsn-devel mailing list Amsn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/amsn-devel