Changeset 383796f


Ignore:
Timestamp:
09/26/10 20:55:45 (4 years ago)
Author:
Antti-Juhani Kaijanaho <antti-juhani@…>
Branches:
master
Children:
4359ba9
Parents:
11cf105
git-author:
Antti-Juhani Kaijanaho <antti-juhani@…> (09/26/10 20:55:45)
git-committer:
Antti-Juhani Kaijanaho <antti-juhani@…> (09/26/10 20:55:45)
Message:

#76: Email subscription and unsubscription notifications

Signed-off-by: Antti-Juhani Kaijanaho <antti-juhani@…>

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • db/group.cc

    r11cf105 r383796f  
    2626#include "../msg/entity.hh" 
    2727#include "../msg/multipart.hh" 
     28#include "../msg/lexutils.hh" 
    2829#include "../msg/text_plain.hh" 
    2930#include "../smtp_client/smtp_client.hh" 
    3031#include "../tlate/data_model.hh" 
    3132#include "../tlate/group_value.hh" 
     33#include "../tlate/user_value.hh" 
    3234#include "../tlate/tlate.hh" 
    3335 
     
    147149        } 
    148150 
    149         void group::add_subscriber(boost::shared_ptr<user> u) 
    150         { 
     151        void group::send_submail(user::const_ptr u, const char *tln, 
     152                                 server::conn_cb cb) 
     153        { 
     154                std::string ton = u->get_display_name(); 
     155                std::string to = u->get_delivery_email(); 
     156                std::string from =  
     157                        config["alue-name"].as<std::string>() + 
     158                        " <" + 
     159                        config["operator-email"].as<std::string>() + 
     160                        ">"; 
     161 
     162                tlate::data_model::ptr mam(new tlate::data_model); 
     163                mam->insert("from", from); 
     164                mam->insert("to", 
     165                            ::msg::make_phrase(ton) + " <" + to + ">"); 
     166                mam->insert("user", new tlate::user_value(u)); 
     167                mam->insert("group", 
     168                            new tlate::group_value(shared_from_this(), u)); 
     169                if (u->is_delivery_email_verified()) 
     170                        mam->insert("verified"); 
     171 
     172                boost::shared_ptr<tlate::tlate> tl = tlate::tlate::parse(tln); 
     173                std::ostringstream mos; 
     174                mos << tl->eval(mam); 
     175                         
     176                std::list<std::string> recv; 
     177                recv.push_back(to); 
     178                                 
     179                cb.smtpc().send_mail(recv, mos.str()); 
     180        } 
     181 
     182        void group::add_subscriber(boost::shared_ptr<user> u, 
     183                                   server::conn_cb cb) 
     184        { 
     185                BOOST_ASSERT(u); 
    151186                ensure_subscriber_role(); 
    152187                u->add_role(subscriber_role); 
    153         } 
    154         void group::delete_subscriber(boost::shared_ptr<user> u) 
     188                send_submail(u, "sub.msg", cb); 
     189        } 
     190        void group::delete_subscriber(boost::shared_ptr<user> u, 
     191                                      server::conn_cb cb) 
    155192        { 
    156193                ensure_subscriber_role(); 
    157194                u->delete_role(subscriber_role); 
     195                send_submail(u, "unsub.msg", cb); 
    158196        } 
    159197        bool group::is_subscriber(boost::shared_ptr<const user> u) 
  • db/group.hh

    r1a970cd r383796f  
    9898                } 
    9999 
    100                 void add_subscriber(boost::shared_ptr<user> u); 
    101                 void delete_subscriber(boost::shared_ptr<user> u); 
     100                void add_subscriber(boost::shared_ptr<user> u, 
     101                                    server::conn_cb cb); 
     102                void delete_subscriber(boost::shared_ptr<user> u, 
     103                                       server::conn_cb cb); 
    102104                bool is_subscriber(boost::shared_ptr<const user> u); 
    103105        private: 
     
    121123                                  const std::set<boost::shared_ptr<role> > &); 
    122124 
     125                void send_submail(boost::shared_ptr<const user> u, 
     126                                  const char *tln, 
     127                                  server::conn_cb cb); 
     128 
    123129                boost::shared_ptr<msg> retrieve(number n) const { 
    124130                        static boost::shared_ptr<msg> null; 
  • http/sub.cc

    r751fac6 r383796f  
    9898                if (sub) 
    9999                { 
    100                         gr->add_subscriber(u); 
     100                        gr->add_subscriber(u, cb); 
    101101                        if (!u->is_delivery_email_verified()) 
    102102                                u->send_delivery_email_cookie 
     
    105105                else 
    106106                { 
    107                         gr->delete_subscriber(u); 
     107                        gr->delete_subscriber(u, cb); 
    108108                } 
    109109                throw resource_exception(resp); 
  • tlate/group_value.cc

    r4c34ee2 r383796f  
    2323#include "string_value.hh" 
    2424 
     25#include "../config.hh" 
    2526#include "../db/group.hh" 
    2627#include "../html/util.hh" 
     
    4950                        rv.reset(new sv(boost::lexical_cast<std::string> 
    5051                                        (gr->get_count()))); 
     52                else if (var == "post-address") 
     53                        rv.reset(new sv 
     54                                 (gr->name() + "@" + 
     55                                  config["canonical-name"].as<std::string>())); 
    5156                else if (var == "reading-authorized") 
    5257                { 
Note: See TracChangeset for help on using the changeset viewer.