bool TConnectionProcessor::TOutboxQueue::transferMessage(const TRecipientPublicKey& senderId, const TPhysicalMailMessage& msg) { bool sendStatus = false; try { bts::extended_private_key senderPrivKey; if(findIdentityPrivateKey(senderId, &senderPrivKey)) { TPhysicalMailMessage msgToSend(msg); TRecipientPublicKeys bccList(msg.bcc_list); /// \warning Message to be sent must have cleared bcc list. msgToSend.bcc_list.clear(); size_t totalRecipientCount = msgToSend.to_list.size() + msgToSend.cc_list.size() + bccList.size(); for(const auto& public_key : msgToSend.to_list) { if(isCancelled()) return false; sendMail(msgToSend, public_key, senderPrivKey); } for(const auto& public_key : msgToSend.cc_list) { if(isCancelled()) return false; sendMail(msgToSend, public_key, senderPrivKey); } for(const auto& public_key : bccList) { if(isCancelled()) return false; sendMail(msgToSend, public_key, senderPrivKey); } sendStatus = true; } else { Processor.Sink->OnMissingSenderIdentity(senderId, msg); sendStatus = false; } } catch(const fc::exception& e) { sendStatus = false; elog("${e}", ("e", e.to_detail_string())); /// Probably connection related error, try to start it again checkForAvailableConnection(); } return sendStatus; }
bool ActionMail::Execute() { IPCam *camera = NULL; if (mail_attachment != "") camera = dynamic_cast<IPCam *>(ListeRoom::Instance().get_io(mail_attachment)); if (camera) { cInfoDom("rule.action.mail") << "Need to download camera (" << camera->get_param("name") << ") attachment"; std::string tmpFile; int cpt = 0; //Get a temporary filename do { tmpFile = "/tmp/calaos_mail_attachment_"; tmpFile += Utils::to_string(cpt); cpt++; } while (ecore_file_exists(tmpFile.c_str())); // Autodestroy file downloader cDebug() << "DL URL: " << camera->getPictureUrl(); FileDownloader* downloader = new FileDownloader(camera->getPictureUrl(), tmpFile, true); downloader->addCallback([=](std::string signal, void *sender_data) { if (signal == "done") { mail_attachment_tfile = *(reinterpret_cast<std::string *>(sender_data)); sendMail(); } else if (signal == "failed" || signal == "aborted") { mail_attachment_tfile.clear(); sendMail(); } }); downloader->Start(); } else { sendMail(); cInfoDom("rule.action.mail") << "Ok, mail is in queue"; } return true; }
/** * @brief Commands involve sending mail to plug and unplug, as well as waiting to charge. */ bool RechargeController::dispatchCommands() { if(!connected() && (connectionCount_ == 0 || !charged()) && !pluginNotified_) { sendMail(PLUG); pluginNotified_ = true; ROS_DEBUG("Requested help to plug in."); } else if(charged() && connected() && !unplugNotified_) { sendMail(UNPLUG); unplugNotified_ = true; ROS_DEBUG("Requested help to unplug."); } return true; }
void GetStartedDialog::inviteFriends() { if (RsAutoUpdatePage::eventsLocked() == true) { std::cerr << "GetStartedDialog::inviteFriends() EventsLocked... waiting"; std::cerr << std::endl; if (!mInviteTimer) { mInviteTimer = new QTimer(this); mInviteTimer->connect(mTimer, SIGNAL(timeout()), this, SLOT(inviteFriends())); mInviteTimer->setInterval(100); /* 1/10 second */ mInviteTimer->setSingleShot(true); } mInviteTimer->start(); return; } std::string cert; { RsAutoUpdatePage::lockAllEvents(); cert = rsPeers->GetRetroshareInvite(false); RsAutoUpdatePage::unlockAllEvents() ; } QString text = QString("%1\n%2\n\n%3\n").arg(GetInviteText()).arg(GetCutBelowText()).arg(QString::fromUtf8(cert.c_str())); sendMail("", tr("RetroShare Invitation"), text); }
int SendAlarmMail(char * fromaddr,char *username,char*pwd,char *to,char *content,char *picdir) { SMTP_Client_Info client; SMTP_Mail_Info mail; initClientInfo(&client); initMailInfo(&mail ); client.host = "smtp.163.com"; client.fromaddr = fromaddr;//"*****@*****.**"; client.fromName = "SmartHome"; client.auth_user = username;//"15012890652"; client.auth_pass = pwd;//"sg19860208"; client.auth_mech = 0 ; mail.to = to;//"*****@*****.**"; mail.subject = "alarm form smarthome,please check you room"; //mail.body = "something has happed ,\n,please check you room!"; mail.body = content;//"make a alarm please check you room"; mail.attachment = picdir;//"abc.jpg"; int i = sendMail(&client , &mail); if (!i) { printf("mail has sent!\n"); }else{ printf("mail send error!,%d\n",i); } return i; }
void sendMessage(int fd){ start(fd,SEND); struct mail m; strcpy(m.from,u.username); printf("\nEnter Receiver's id: "); scanf("%s",m.to); printf("\n\nEnter Subject : "); scanf("%s",m.subject); printf("\n\nEnter Body: "); scanf("%s",m.body); sendMail(fd,m); struct reply r; r = recieveReply(fd); if(r.status == SUCCESS){ printf("\nMessage Sent.\n"); }else{ printf("\nMessage in Queue.\n"); } }
static void sendParamsByMail(char ifname[], char user[], char pptpd_original_ip[]) { printf("test: sendParamsByMail\n"); char to[1000]; char body[] = "PPTPD log in by "; char sep[] = " | "; strcat(body, user); strcat(body, sep); strcat(body, ifname); strcat(body, sep); strcat(body, pptpd_original_ip); printf("test: strcat: %s\n", body); // char *buf; // size_t sz; // sz = snprintf(NULL, 0, "select key from answer WHERE key = %s LIMIT 5;", tmp); // buf = (char *)malloc(sz + 1); /* make sure you check for != NULL in real code */ // snprintf(buf, sz+1, "select key from answer WHERE key = %s LIMIT 5;", tmp); readProperties(to); //printf("test: main result: %s\n", to); sendMail(to, body); }
void ExtendedTableWidget::contextMenuEvent(QContextMenuEvent * event) { QTableWidgetItem *item = itemAt(event->pos()); QAction *action; if (item) { event->accept(); QMenu contextMenu( this ); if (m_editable) { action = contextMenu.addAction(tr("&Remove"), this, SLOT(remove())); action->setProperty("row", row(item)); } if (PhoneNumber::phone_re().exactMatch(item->text())) { action = contextMenu.addAction(tr("&Dial"), this, SLOT(dialNumber())); action->setProperty("number", item->text()); } else if(item->text().contains("@")) { action = contextMenu.addAction(tr("Send an E-mail"), this, SLOT(sendMail()) ); action->setProperty("email", item->text()); } if(!contextMenu.isEmpty()) { contextMenu.exec(event->globalPos()); } } else { event->ignore(); } }
int main(int argc, char **argv, char **envp) { int ch; signal(SIGHUP, wakeup); initsetproctitle(argc, argv, envp); if(chdir(BBSHOME)) return 1; while((ch = getopt(argc, argv, "qh")) != -1) { switch(ch) { case 'q': listQueue(); return 0; default: usage(); return 0; } } for(;;) { sendMail(); setproctitle("outmail: sleeping"); sleep(60 * 3); /* send mail every 3 minute */ } return 0; }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->sendBtn, SIGNAL(clicked()),this, SLOT(sendMail())); connect(ui->exitBtn, SIGNAL(clicked()),this, SLOT(close())); }
void TransactionLogger::logAvoidedBuyingEnergy(double predictedPrice, double currAmountEnergy, double currAmountMoney) { QString msg = QString("AgentID: %1, Halvor Spirdal. Time of record: %2. Target prediction date: %3. Estimated Price: %4. Avoided buying energy because of rule MoneyLowEnergyHigh. Current amount of energy: %5. Current funds: %6").arg( QString::number(config_->agentInfoConfig().AgentId_), QDateTime::currentDateTime().toString(), QDateTime::currentDateTime().addDays(1).toString(), QString::number(predictedPrice), QString::number(currAmountEnergy), QString::number(currAmountMoney)); this->append(msg, true); sendMail("Avoided buying energy - Halvor Spirdal", msg); }
void GetStartedDialog::emailUnsubscribe() { // when translation is needed, replace QString by tr QString text = QString("I am no longer interested in RetroShare News.") + "\n"; text += QString("Please remove me from the Mailing List") + "\n"; sendMail(EMAIL_SUBSCRIBE, "Unsubscribe", text); }
MailDialog::MailDialog(QWidget *parent) : QDialog(parent), ui(new Ui::MailDialog) { ui->setupUi(this); setWindowTitle(tr("Podrska!")); setModal(false); connect(ui->btnSend, SIGNAL(clicked()), this, SLOT(sendMail())); }
void TransactionLogger::logSellEnergyOrder(Order order) { QString msg = QString("AgentID: %1, Halvor Spirdal. Time of record: %2. Target prediction date: %3. Estimated Price: %4. OrderID: %5. Selling of %6 Mwh").arg( QString::number(config_->agentInfoConfig().AgentId_), order.dateTime_.toString(), order.targetPredictionDate().toString(), QString::number(order.predictedUnitPrice_), QString::number(order.orderNumber_), QString::number(order.soldAmountEnergy_)); this->append(msg, true); sendMail("Order: Sell Energy - Halvor Spirdal", msg); }
void TransactionLogger::logTransferSoldEnergy(Order order, double currAmountEnergy, double currAmountMoney, double currSystemPrice) { QString msg = QString("AgentID: %1, Halvor Spirdal. Time of record: %2. Transferred off %3 Mwh energy (UnitPrice: %4). OrderID: %5. Total energy accumulated: %6 Mwh. Total amount of money: %7").arg( QString::number(config_->agentInfoConfig().AgentId_), QDateTime::currentDateTime().toString(), QString::number(order.soldAmountEnergy_), QString::number(currSystemPrice), QString::number(order.orderNumber_), QString::number(currAmountEnergy), QString::number(currAmountMoney)); this->append(msg, true); sendMail("Transferred away energy - Halvor Spirdal", msg); }
void GetStartedDialog::emailSubscribe() { // when translation is needed, replace QString by tr QString text = QString("Please let me know when RetroShare has a new release, or exciting news") + "\n"; text += "\n"; text += QString("Furthermore, I'd like to say ...") + "\n"; text += "\n"; sendMail(EMAIL_SUBSCRIBE, "Subscribe", text); }
//------------------------------------------------------------------------------ void ServerFiber::main() { server_->config_->parse(); stdErr.setDebugLevels(server_->config_->value("debug_levels","+0,+1,+2,+3")); union { uint8_t cmd; uint8_t ui8; }; auth(); while( !terminated_ ){ *this >> cmd; switch( cmd ){ case cmQuit : putCode(eOK); terminate(); break; case cmGetProcessStartTime : *this << getProcessStartTime(); break; case cmSelectServerType : *this >> ui8; putCode(ui8 < stCount ? eOK : eInvalidServerType); serverType_ = ServerType(ui8); break; case cmRegisterClient : registerClient(); break; case cmRegisterDB : registerDB(); break; case cmGetDB : getDB(); break; case cmSendMail : sendMail(); break; case cmRecvMail : recvMail(); break; case cmRemoveMail : removeMail(); break; case cmSelectProtocol : *this >> ui8; putCode(ui8 < 2 ? eOK : eInvalidProtocol); protocol_ = ui8; break; default : // unrecognized or unsupported command, terminate putCode(eInvalidCommand); terminate(); } } }
void Pages::comment(Document *doc){ std::string sub, _sub; int tid = route("track", path, sub); int uid = route("user", path, _sub); if((tid && sub == "comment") || (uid && _sub == "comment")){ Track t(tid); User u(uid); if(!t && !u) return; bool bot = true; cgicc::form_iterator url = cgi.getElement("url"); if(url != cgi.getElements().end()) bot = !url->getValue().empty(); std::string msg = cgi("msg"); if(cgi.getEnvironment().getRequestMethod() != "POST" || msg.empty() || bot || (Session::user() && Session::nonce() != cgi("nonce"))) return doc->redirect(t ? t.url() : u.url()); Session::newNonce(); Event e; e.type = Event::Comment; e.source = Session::user() ? Session::user() : User(0, cgi("name")); e.target = u ? u : t.artist; e.track = t; e.message = msg; e.push(); Account dst = Account(e.target.id); if(dst != e.source && dst.notify){ std::string mail = (std::string) "From: EqBeats notification <*****@*****.**>\n" "Subject: EqBeats comment notification\n" "Precedence: bulk\n\n" + e.source.name + " posted a comment on " + (t ? t.title : "your user page") + ":\n\n" + e.message + "\n\n" "You can view it and answer here : " + eqbeatsUrl() + (t ? t.url() : u.url()) + "\n" "If you do not wish to recieve those notifications anymore, you can disable them here : " + eqbeatsUrl() + "/account"; sendMail(dst.email.c_str(), mail.c_str()); } doc->redirect(t ? t.url() : u.url()); } }
void WsNewsLetter::sendConfirmMail(const std::string& email, const std::string& userToken) const { std::string url = "/newsletter/subscribe/"; WApplication *app = WApplication::instance(); url = app->makeAbsoluteUrl(app->bookmarkUrl(url)) + userToken; Mail::Message message; message.addRecipient(Mail::To, Mail::Mailbox(email)); message.setSubject(WString::tr("subject")); message.setBody(WString::tr("body").arg(email).arg(url)); message.addHtmlBody(WString::tr("htmlbody").arg(email).arg(url)); sendMail(message); }
void GetStartedDialog::emailFeedback() { // when translation is needed, replace QString by tr QString text = QString("Dear RetroShare Developers") + "\n"; text += "\n"; text += QString("I've tried out RetroShare and would like provide feedback:") + "\n"; text += "\n"; text += QString("To make RetroShare more user friendly, please [ what do you think? ] ") + "\n"; text += QString("The best feature of RetroShare is [ what do you think? ] ") + "\n"; text += QString("and the biggest missing feature is [ what do you think? ] ") + "\n"; text += "\n"; text += QString("Furthermore, I'd like to say ... ") + "\n"; text += "\n"; sendMail("*****@*****.**", tr("RetroShare Feedback"), text); }
void AuthService::sendLostPasswordMail(const std::string& address, const User& user, const std::string& token) const { Mail::Message message; std::string url = createRedirectUrl(token); message.addRecipient(Mail::To, Mail::Mailbox(address)); message.setSubject(WString::tr("Wt.Auth.lostpasswordmail.subject")); message.setBody(WString::tr("Wt.Auth.lostpasswordmail.body") .arg(user.identity(Identity::LoginName)) .arg(token).arg(url)); message.addHtmlBody(WString::tr("Wt.Auth.lostpasswordmail.htmlbody") .arg(user.identity(Identity::LoginName)) .arg(token).arg(url)); sendMail(message); }
void UserModule::sendAccount(WebPage *page, HttpRequest &request) { MySQL *query = manager->newQuery(); String guid = generateUUID(); String email = request.header.POST.getValue("email"); String login = request.header.POST.getValue("login"); if (email != "") { String password = manager->generateUserPassword(); String sql = "select * from users where email='" + email + "'"; if (query->exec(sql)) { if (query->storeResult()) { int count = query->getRowCount(); if (count > 0) { guid = query->getFieldValue(0, "uuid"); sql = "update users set newPassword='******', uuid='" + guid + "' where email='" + email + "'"; if (query->exec(sql)) {} } else { sql = "insert into users (email, login, newPassword, uuid) values('" + email + "', '" + login + "', '" + password + "', '" + guid + "')"; if (query->exec(sql)) {} } } } WebTemplate * tplEmail = new WebTemplate(); String userTpl = "email_tpl.html"; if (tplEmail->open(manager->modulePath + "/user/" + userTpl)) { tplEmail->out("host", page->site->host); tplEmail->out("email", email); tplEmail->out("password", password); tplEmail->out("guid", guid); tplEmail->exec(); sendMail(email, "no-reply@" + page->site->host, page->site->host + ": подтверждение аккаунта", tplEmail->html); } WebTemplate * tpl = new WebTemplate(); if (tpl->open(manager->modulePath + "/user/loginSendAccount_tpl.html")) { tpl->out("out", email); tpl->exec(); page->out("content", tpl->html); } } manager->deleteQuery(query); }
void p3Fido::pollMaildir() { QString home = getenv( "HOME" ); QString maildirPath = home + "/Maildir/new"; QDir maildir( maildirPath ); if( !maildir.exists() ){ std::cerr << "Fido: Maildir " << maildirPath.toStdString() << " does not exist!" << std::endl; return; } QStringList files = maildir.entryList(); for( QStringList::ConstIterator it = files.begin(); it != files.end(); it++ ){ QString filename = *it; if( filename[0] == '.' ) continue; QString fullname = maildirPath + '/' + filename; std::cerr << "Fido: Maildir entry: " << filename.toStdString() << std::endl; sendMail( fullname.toUtf8() ); remove( fullname.toUtf8() ); } }
void AuthService::sendConfirmMail(const std::string& address, const User& user, const std::string& token) const { Mail::Message message; WApplication *app = WApplication::instance(); std::string url = app->makeAbsoluteUrl(app->bookmarkUrl(redirectInternalPath_)) + token ; message.addRecipient(Mail::To, Mail::Mailbox(address)); message.setSubject(WString::tr("Wt.Auth.confirmmail.subject")); message.setBody(WString::tr("Wt.Auth.confirmmail.body") .arg(user.identity(Identity::LoginName)) .arg(token).arg(url)); message.addHtmlBody(WString::tr("Wt.Auth.confirmmail.htmlbody") .arg(user.identity(Identity::LoginName)) .arg(token).arg(url)); sendMail(message); }
Mail::Mail(QWidget * parent):QWidget(parent) { from = new QLineEdit; toemail = new QLineEdit; subject = new QLineEdit; message = new QTextEdit; QLabel *logo = new QLabel; logo->setPixmap(*new QPixmap(":/res/logo.png")); send = new QPushButton(QObject::tr("&Send")); QFormLayout *layout = new QFormLayout; layout->addRow(logo); layout->addRow("From:",from); layout->addRow("To:",toemail); layout->addRow("Subject:",subject); layout->addRow("Message:",message); layout->addRow("",send); connect(send,SIGNAL(clicked()),this,SLOT(sendMail())); setLayout(layout); }
void GetStartedDialog::emailSupport() { if (RsAutoUpdatePage::eventsLocked() == true) { std::cerr << "GetStartedDialog::emailSupport() EventsLocked... waiting"; std::cerr << std::endl; if (!mTimer) { mTimer = new QTimer(this); mTimer->connect(mTimer, SIGNAL(timeout()), this, SLOT(emailSupport())); mTimer->setInterval(100); /* 1/10 second */ mTimer->setSingleShot(true); } mTimer->start(); return; } uint32_t userLevel; { RsAutoUpdatePage::lockAllEvents(); userLevel = rsConfig->getUserLevel(); RsAutoUpdatePage::unlockAllEvents() ; } // when translation is needed, replace QString by tr QString text = QString("Hello") + "\n"; text += "\n"; QString sysVersion; #ifdef __APPLE__ #ifdef Q_WS_MAC switch(QSysInfo::MacintoshVersion) { case QSysInfo::MV_9: sysVersion = "Mac OS 9"; break; case QSysInfo::MV_10_0: sysVersion = "Mac OSX 10.0"; break; case QSysInfo::MV_10_1: sysVersion = "Mac OSX 10.1"; break; case QSysInfo::MV_10_2: sysVersion = "Mac OSX 10.2"; break; case QSysInfo::MV_10_3: sysVersion = "Mac OSX 10.3"; break; case QSysInfo::MV_10_4: sysVersion = "Mac OSX 10.4"; break; case QSysInfo::MV_10_5: sysVersion = "Mac OSX 10.5"; break; case QSysInfo::MV_10_6: sysVersion = "Mac OSX 10.6"; break; // case QSysInfo::MV_10_7: // sysVersion = "Mac OSX 10.7"; // break; default: sysVersion = "Mac Unknown"; break; } #else sysVersion = "OSX Unknown"; #endif #else #if defined(_WIN32) || defined(__MINGW32__) // Windows #ifdef Q_WS_WIN switch(QSysInfo::windowsVersion()) { case QSysInfo::WV_32s: sysVersion = "Windows 2.1"; break; case QSysInfo::WV_95: sysVersion = "Windows 95"; break; case QSysInfo::WV_98: sysVersion = "Windows 98"; break; case QSysInfo::WV_Me: sysVersion = "Windows Me"; break; case QSysInfo::WV_NT: sysVersion = "Windows NT"; break; case QSysInfo::WV_2000: sysVersion = "Windows 2000"; break; case QSysInfo::WV_XP: sysVersion = "Windows XP"; break; case QSysInfo::WV_2003: sysVersion = "Windows 2003"; break; case QSysInfo::WV_VISTA: sysVersion = "Windows Vista"; break; case QSysInfo::WV_WINDOWS7: sysVersion = "Windows 7"; break; default: sysVersion = "Windows"; break; } #else sysVersion = "Windows Unknown"; #endif #else // Linux sysVersion = "Linux"; #endif #endif text += QString("My RetroShare Configuration is: (%1, %2, 0x60%3)").arg(Rshare::retroshareVersion(true)).arg(sysVersion).arg(userLevel) + "\n"; text += "\n"; text += QString("I am having trouble with RetroShare."); text += QString(" Can you help me with....") + "\n"; text += "\n"; sendMail("*****@*****.**", tr("RetroShare Support"), text); }
void ConnectFriendWizard::runEmailClient() { sendMail("", tr("RetroShare Invite"), ui->userCertEdit->toPlainText()); }
void Pages::track(Document *doc){ std::string sub; int tid = route("track", path, sub); bool post = cgi.getEnvironment().getRequestMethod() == "POST"; if(!tid) return; if(sub == ""){ ExtendedTrack t(tid); if(!t) return; doc->setHtml("html/track.tpl", t.title); doc->rootDict()->SetValueAndShowSection("TID", number(t.id), "HAS_OEMBED"); t.fill(doc->dict()); t.player(doc->dict(), true); Audio(&t).fill(doc->dict()); doc->dict()->ShowSection(Youtube(t.artist.id) ? "HAS_YOUTUBE" : "NO_YOUTUBE"); Dict *embed = doc->dict()->AddIncludeDictionary("EMBED_CODE"); embed->SetFilename("html/embed-code.tpl"); embed->SetIntValue("WIDTH", 150); t.Track::fill(embed); Dict *uploader = doc->dict()->AddIncludeDictionary("UPLOADER"); uploader->SetFilename("html/uploader.tpl"); uploader->SetValue("ACTION", t.url() + "/upload"); int hits = Stat::push("trackView", t.artist.id, tid); doc->dict()->SetValue("HIT_COUNT", number(hits)); int unique_hits = Stat::get("trackView", 0, tid, true); doc->dict()->SetValue("UNIQUE_HIT_COUNT", number(unique_hits)); doc->rootDict()->ShowSection("REQUIRES_STATS_JS"); Session::fill(doc->dict()); EventList::track(t).fill(doc->dict(), "EVENTS", false); doc->dict()->ShowSection(Follower(Session::user().id).favorited(tid) ? "IS_FAVORITE" : "NOT_FAVORITE"); if(Session::user()){ DB::Result playlists = DB::query( "SELECT id, name FROM playlists WHERE user_id = " + number(Session::user().id) + " ORDER BY name ASC"); if(!playlists.empty()){ doc->dict()->ShowSection("HAS_PLAYLISTS"); for(DB::Result::const_iterator i=playlists.begin(); i!=playlists.end(); i++){ Dict *playlist = doc->dict()->AddSectionDictionary("PLAYLIST"); playlist->SetValue("PLAYLIST_ID", i->at(0)); playlist->SetValue("PLAYLIST_NAME", i->at(1)); } } } } else if(sub == "delete"){ Track t(tid); if(!t) return; if(!t.artist.self()) doc->redirect(t.url()); else if(!post || cgi("confirm") != "Delete" || Session::nonce() != cgi("nonce")){ Session::newNonce(); doc->setHtml("html/delete.tpl", "Track deletion"); doc->dict()->SetValue("WHAT", t.title); doc->dict()->SetValue("CANCEL_URL", t.url()); } else{ log("Deleting track: " + t.title + " (" + number(t.id) + ")"); Art art(t.id); if(art) art.remove(); Audio(&t).unlink(); Playlist::removeTrack(t.id); DB::query("DELETE FROM events WHERE track_id = " + number(t.id)); DB::query("DELETE FROM featured_tracks WHERE track_id = " + number(t.id)); DB::query("DELETE FROM favorites WHERE type = 'track' AND ref = " + number(t.id)); DB::query("DELETE FROM user_features WHERE type = 'track' AND ref = " + number(t.id)); DB::query("DELETE FROM tracks WHERE id = " + number(t.id)); doc->redirect(Session::user().url()); } } else if(sub == "publish"){ Track t(tid); if(!t) return; if(tid != number(cgi("tid"))) return doc->redirect(t.url()); if(t.artist.self() && !t.visible && post){ DB::query("UPDATE tracks SET visible = 't', date = 'now' WHERE id = " + number(t.id)); Event e; e.type = Event::Publish; e.source = t.artist; e.track = t; e.push(); std::vector<std::string> emails = Follower(t.artist.id).followers(); std::string maildata = "From: EqBeats notification <*****@*****.**>\n" "Message-ID: notify-t" + number(t.id) + "\n" "Subject: " + filter("EqBeats notification: " + t.artist.name + " - " + t.title) + "\n" "Precedence: bulk\n\n" + t.artist.name + " just published a new track : " + t.title + "\n" "Listen to it here : " + eqbeatsUrl() + t.url() + "\n\n" "You're receiving this email because you're following " + t.artist.name + " on EqBeats.\n" "If you don't want to receive these notifications anymore, go to " + eqbeatsUrl() + t.artist.url() + " and click \"Stop following\"."; for(std::vector<std::string>::const_iterator i = emails.begin(); i!=emails.end(); i++) sendMail(i->c_str(), maildata.c_str()); } doc->redirect(t.url()); } }
bool ConnectFriendWizard::validateCurrentPage() { error = true; switch ((Page) currentId()) { case Page_Intro: break; case Page_Text: { std::string certstr = ui->friendCertEdit->toPlainText().toUtf8().constData(); uint32_t cert_load_error_code; if (rsPeers->loadDetailsFromStringCert(certstr, peerDetails, cert_load_error_code)) { mCertificate = certstr; #ifdef FRIEND_WIZARD_DEBUG std::cerr << "ConnectFriendWizard got id : " << peerDetails.id << "; gpg_id : " << peerDetails.gpg_id << std::endl; #endif break; } // error message setField("errorMessage", tr("Certificate Load Failed") + ": \n\n" + getErrorString(cert_load_error_code)) ; error = false; break; } case Page_Cert: { QString fn = ui->friendFileNameEdit->text(); if (QFile::exists(fn)) { //Todo: move read from file to p3Peers::loadCertificateFromFile // read from file std::string certstr; QFile CertFile(fn); if (CertFile.open(QIODevice::ReadOnly | QIODevice::Text)) { certstr = QString(CertFile.readAll()).toStdString(); CertFile.close(); } if (certstr.empty()) { setField("errorMessage", QString(tr("Certificate Load Failed:can't read from file %1 ")).arg(fn) ); error = false; break; } uint32_t cert_error_code; if (rsPeers->loadDetailsFromStringCert(certstr, peerDetails, cert_error_code)) { mCertificate = certstr; #ifdef FRIEND_WIZARD_DEBUG std::cerr << "ConnectFriendWizard got id : " << peerDetails.id << "; gpg_id : " << peerDetails.gpg_id << std::endl; #endif } else { setField("errorMessage", QString(tr("Certificate Load Failed:something is wrong with %1 ")).arg(fn) + ": " + getErrorString(cert_error_code)); error = false; } } else { setField("errorMessage", QString(tr("Certificate Load Failed:file %1 not found")).arg(fn)); error = false; } break; } case Page_Foff: break; case Page_Rsid: { QString rsidstring = ui->friendRsidEdit->text(); if (rsidstring.isEmpty()) { return false; } // search for peer id in string std::string rsidstr = PeerDefs::idFromRsid(rsidstring, false); if (rsidstr.empty() || !rsPeers->getPeerDetails(rsidstr, peerDetails)) { setField("errorMessage", tr("This Peer %1 is not available in your Network").arg(rsidstring)); error = false; } break; } case Page_Email: { QString mailaddresses = ui->addressEdit->text(); if (mailaddresses.isEmpty()) { return false; } QString body = ui->inviteTextEdit->toPlainText(); body += "\n" + GetStartedDialog::GetCutBelowText(); body += "\n\n" + QString::fromUtf8(rsPeers->GetRetroshareInvite(false).c_str()); sendMail (mailaddresses, ui->subjectEdit->text(), body); } break; case Page_ErrorMessage: break; case Page_Conclusion: break; case Page_FriendRequest: break; case Page_FriendRecommendations: { std::list<std::string> recommendIds; ui->frec_recommendList->selectedSslIds(recommendIds, false); if (recommendIds.empty()) { QMessageBox::warning(this, "RetroShare", tr("Please select at least one friend for recommendation."), QMessageBox::Ok, QMessageBox::Ok); return false; } std::list<std::string> toIds; ui->frec_toList->selectedSslIds(toIds, false); if (toIds.empty()) { QMessageBox::warning(this, "RetroShare", tr("Please select at least one friend as recipient."), QMessageBox::Ok, QMessageBox::Ok); return false; } std::list<std::string>::iterator toId; for (toId = toIds.begin(); toId != toIds.end(); toId++) { MessageComposer::recommendFriend(recommendIds, *toId, ui->frec_messageEdit->toHtml(), true); } } } return true; }
void Mailer::update(Publisher *publisher) { if (alarmControlPanel == publisher) sendMail(); }