+ flags_needed = 'o'; syntax = "<nickname>|<ip>|<hostmask>|<channel> <server>";
+ }
+
+ std::string timestring(time_t time)
+ {
+ char timebuf[60];
+ struct tm *mytime = gmtime(&time);
+ strftime(timebuf, 59, "%Y-%m-%d %H:%M:%S UTC (%s)", mytime);
+ return std::string(timebuf);
+ }
+
+ void dumpExt(User* user, const std::string& checkstr, Extensible* ext)
+ {
+ std::stringstream dumpkeys;
+ for(Extensible::ExtensibleStore::const_iterator i = ext->GetExtList().begin(); i != ext->GetExtList().end(); i++)
+ {
+ ExtensionItem* item = i->first;
+ std::string value = item->serialize(FORMAT_USER, ext, i->second);
+ if (!value.empty())
+ user->SendText(checkstr + " meta:" + item->name + " " + value);
+ else if (!item->name.empty())
+ dumpkeys << " " << item->name;
+ }
+ if (!dumpkeys.str().empty())
+ user->SendText(checkstr + " metadata", dumpkeys);