-class USER_PROPERTIES : private NONCOPYABLE {
-/*
- В этом месте важен порядок следования приватной и открытой частей.
- Это связано с тем, что часть которая находится в публичной секции
- по сути является завуалированной ссылкой на закрытую часть. Т.о. нам нужно
- чтобы конструкторы из закрытой части вызвались раньше открытой. Поэтомому в
- начале идет закрытая секция
- * */
-
-private:
- USER_STAT stat;
- USER_CONF conf;
-
- std::map<std::string, USER_PROPERTY_BASE *> properties;
-public:
- USER_PROPERTIES(const std::string & sd);
-
- USER_STAT & Stat() { return stat; }
- USER_CONF & Conf() { return conf; }
- const USER_STAT & GetStat() const { return stat; }
- const USER_CONF & GetConf() const { return conf; }
- void SetStat(const USER_STAT & s) { stat = s; }
- void SetConf(const USER_CONF & c) { conf = c; }
-
- void SetProperties(const USER_PROPERTIES & p) { stat = p.stat; conf = p.conf; }
-
- std::string GetPropertyValue(const std::string & name) const;
-
- USER_PROPERTY_LOGGED<double> cash;
- USER_PROPERTY_LOGGED<DIR_TRAFF> up;
- USER_PROPERTY_LOGGED<DIR_TRAFF> down;
- USER_PROPERTY_LOGGED<double> lastCashAdd;
- USER_PROPERTY_LOGGED<time_t> passiveTime;
- USER_PROPERTY_LOGGED<time_t> lastCashAddTime;
- USER_PROPERTY_LOGGED<double> freeMb;
- USER_PROPERTY_LOGGED<time_t> lastActivityTime;
-
- USER_PROPERTY_LOGGED<std::string> password;
- USER_PROPERTY_LOGGED<int> passive;
- USER_PROPERTY_LOGGED<int> disabled;
- USER_PROPERTY_LOGGED<int> disabledDetailStat;
- USER_PROPERTY_LOGGED<int> alwaysOnline;
- USER_PROPERTY_LOGGED<std::string> tariffName;
- USER_PROPERTY_LOGGED<std::string> nextTariff;
- USER_PROPERTY_LOGGED<std::string> address;
- USER_PROPERTY_LOGGED<std::string> note;
- USER_PROPERTY_LOGGED<std::string> group;
- USER_PROPERTY_LOGGED<std::string> email;
- USER_PROPERTY_LOGGED<std::string> phone;
- USER_PROPERTY_LOGGED<std::string> realName;
- USER_PROPERTY_LOGGED<double> credit;
- USER_PROPERTY_LOGGED<time_t> creditExpire;
- USER_PROPERTY_LOGGED<USER_IPS> ips;
- USER_PROPERTY_LOGGED<std::string> userdata0;
- USER_PROPERTY_LOGGED<std::string> userdata1;
- USER_PROPERTY_LOGGED<std::string> userdata2;
- USER_PROPERTY_LOGGED<std::string> userdata3;
- USER_PROPERTY_LOGGED<std::string> userdata4;
- USER_PROPERTY_LOGGED<std::string> userdata5;
- USER_PROPERTY_LOGGED<std::string> userdata6;
- USER_PROPERTY_LOGGED<std::string> userdata7;
- USER_PROPERTY_LOGGED<std::string> userdata8;
- USER_PROPERTY_LOGGED<std::string> userdata9;
+class UserProperties
+{
+ /*
+ В этом месте важен порядок следования приватной и открытой частей.
+ Это связано с тем, что часть которая находится в публичной секции
+ по сути является завуалированной ссылкой на закрытую часть. Т.о. нам нужно
+ чтобы конструкторы из закрытой части вызвались раньше открытой. Поэтомому в
+ начале идет закрытая секция
+ * */
+
+ private:
+ UserStat stat;
+ UserConf conf;
+
+ Registry properties;
+ public:
+ explicit UserProperties(const Settings& s);
+
+ UserStat& Stat() { return stat; }
+ UserConf& Conf() { return conf; }
+ const UserStat& GetStat() const { return stat; }
+ const UserConf& GetConf() const { return conf; }
+ void SetStat(const UserStat& s) { stat = s; }
+ void SetConf(const UserConf& c) { conf = c; }
+
+ void SetProperties(const UserProperties& p) { stat = p.stat; conf = p.conf; }
+
+ std::string GetPropertyValue(const std::string & name) const;
+ bool Exists(const std::string & name) const;
+
+ UserPropertyLogged<double> cash;
+ UserPropertyLogged<DirTraff> up;
+ UserPropertyLogged<DirTraff> down;
+ UserPropertyLogged<double> lastCashAdd;
+ UserPropertyLogged<time_t> passiveTime;
+ UserPropertyLogged<time_t> lastCashAddTime;
+ UserPropertyLogged<double> freeMb;
+ UserPropertyLogged<time_t> lastActivityTime;
+
+ UserPropertyLogged<std::string> password;
+ UserPropertyLogged<int> passive;
+ UserPropertyLogged<int> disabled;
+ UserPropertyLogged<int> disabledDetailStat;
+ UserPropertyLogged<int> alwaysOnline;
+ UserPropertyLogged<std::string> tariffName;
+ UserPropertyLogged<std::string> nextTariff;
+ UserPropertyLogged<std::string> address;
+ UserPropertyLogged<std::string> note;
+ UserPropertyLogged<std::string> group;
+ UserPropertyLogged<std::string> email;
+ UserPropertyLogged<std::string> phone;
+ UserPropertyLogged<std::string> realName;
+ UserPropertyLogged<double> credit;
+ UserPropertyLogged<time_t> creditExpire;
+ UserPropertyLogged<UserIPs> ips;
+ UserPropertyLogged<std::string> userdata0;
+ UserPropertyLogged<std::string> userdata1;
+ UserPropertyLogged<std::string> userdata2;
+ UserPropertyLogged<std::string> userdata3;
+ UserPropertyLogged<std::string> userdata4;
+ UserPropertyLogged<std::string> userdata5;
+ UserPropertyLogged<std::string> userdata6;
+ UserPropertyLogged<std::string> userdata7;
+ UserPropertyLogged<std::string> userdata8;
+ UserPropertyLogged<std::string> userdata9;