mFilters = $filters; $this->mOperator = $operator; $this->mSender = $sender; $this->mSmstype = $sms_type; } public function run() { $params = params_table::instance()->find_params($this->mSmstype); $mod_member = Model('member'); $i = 0; while (true) { $start = $i * 1000; $items = $mod_member->field('*')->order('member_id asc')->limit("{$start},1000")->select(); if(empty($items)) break; $i++; $match_users = []; foreach ($items as $item) { $minfo = new member_info($item); if($this->filtrate($minfo)) { $match_users[] = $minfo; } } $ret = $this->mOperator->operate($match_users,$params); if($ret != false) { $this->mSender->run($match_users,$ret); } } } public function count() { $mod_member = Model('member'); $count = 0; $i = 0; while (true) { $start = $i * 1000; $items = $mod_member->field('*')->order('member_id asc')->limit("{$start},1000")->select(); if(empty($items)) break; $i++; foreach ($items as $item) { $minfo = new member_info($item); if($this->filtrate($minfo)) { $count++; } } } return $count; } private function filtrate(member_info $minfo) { foreach ($this->mFilters as $filter) { if($filter->filtrate($minfo) == false) { return false; } } return true; } }