+ if (((ucrec*)(*i))->channel != NULL)
+ {
+ Srv->PartUserFromChannel(user,((ucrec*)(*i))->channel->name,"Unparking");
+ }
+ }
+ // remove all their old modes
+ WriteServ(user->fd,"MODE %s -%s",user->nick,user->FormatModes());
+ // now, map them to the parked user, while nobody can see :p
+ Srv->PseudoToUser(user,unpark,"Unparked to "+std::string(parameters[0]));
+ // set all their new modes
+ WriteServ(unpark->fd,"MODE %s +%s",unpark->nick,unpark->FormatModes());
+ // spool their away log to them
+ WriteServ(unpark->fd,"NOTICE %s :*** You are now unparked. You have successfully taken back the nickname and privilages of %s.",unpark->nick,unpark->nick);
+ for (awaylog::iterator i = awy->begin(); i != awy->end(); i++)
+ {
+ char timebuf[MAXBUF];
+ tm *timeinfo = localtime(&i->tm);
+ strlcpy(timebuf,asctime(timeinfo),MAXBUF);
+ timebuf[strlen(timebuf)-1] = '\0';
+ WriteServ(unpark->fd,"NOTICE %s :From %s at %s: \2%s\2",unpark->nick,i->from.c_str(),timebuf,i->text.c_str());
+ }
+ DELETE(awy);
+ unpark->Shrink("park_awaylog");
+ unpark->Shrink("park_key");
+ for (parkinfo::iterator j = pinfo.begin(); j != pinfo.end(); j++)
+ {
+ if (j->nick == std::string(unpark->nick))
+ {
+ pinfo.erase(j);
+ break;
+ }