_p->ctrl->noOutput = true; } public function timerStart() { $mtime = microtime (); $mtime = explode (' ', $mtime); $mtime = $mtime [1] + $mtime [0]; $this->startTime = $mtime; } public function timerStop() { $mtime = microtime (); $mtime = explode (' ', $mtime); $mtime = $mtime [1] + $mtime [0]; $this->endTime = $mtime; $totaltime = round ( ($this->endTime - $this->startTime), 5 ); return $totaltime; } public function reminderAction(){ $this->_p->ctrl->noOutput = true; $this->_p->ctrl->appendTime = true; $this->timerStart(); $query = "SELECT u.`id`, u.`fullname`, u.`email`, u.`hash`, s.`timezone` FROM `users` u LEFT JOIN `reminders` rm ON rm.`user_id` = u.`id` AND rm.`date` = CURDATE() LEFT JOIN `settings` s ON s.`user_id` = u.`id` LEFT JOIN `posts` p ON p.`user_id` = u.`id` AND p.`date` = DATE(CONVERT_TZ(UTC_TIMESTAMP, 'UTC', s.`timezone`)) WHERE HOUR(CONVERT_TZ(UTC_TIMESTAMP, 'UTC', s.`timezone`)) = s.`notify_hour` AND s.`notify` = 1 AND u.`active` = 1 AND rm.`id` IS NULL AND p.`id` IS NULL GROUP BY u.`id` LIMIT 0,200"; $users = $this->_p->db->getResult($query); $time = $this->timerStop(); $i = 0; foreach($users as $k => $v){ $this->_p->tpl->assign("user", $v); $email = $this->_p->tpl->fetch('emails/remindEmail.html'); $reply = substr($v->hash, 0, 8) . '_' . date('Y-m-d') . '@' . $this->_p->conf->mail_domain; $subject = "یادآوری نوشتن در ۳۱ شب - " . $this->_p->date->date("j F", false, true); $hdrs = array( 'Reply-To' => $reply ); if( $this->_p->mailer->send($v->email, $subject, $email, $hdrs) ){ $this->_p->db->execute("INSERT INTO `reminders` (`user_id`, `date`) VALUES(?,CURDATE())", $v->id); $i++; } } echo "Email Reminder has been sent to " .$i. " People - $time Seconds"; } public function display() { return null; } }