public static function sendNotificationToAdmin($args) { list($idsite, $idvisitor, $message) = $args; $visitorInfo = ChatPersonnalInformation::get($idvisitor); $subject = "New message on " . ChatSite::getSiteName($idsite); $mail = new Mail(); $mail->setFrom(Config::getInstance()->General['noreply_email_address'], "Piwik Chat"); $mail->setSubject($subject); $mail->setBodyHtml("Name : " . $visitorInfo['name'] . "<br />\n Email : " . $visitorInfo['email'] . "<br />\n Phone : " . $visitorInfo['phone'] . "<br />\n Comments : " . $visitorInfo['comments'] . "<br />\n <br /><br />\n Message:<br />{$message}"); foreach (ChatCommon::getUsersBySite($idsite) as $user) { if (empty($user['email'])) { continue; } if (ChatPiwikUser::isStaffOnline($user['login'])) { continue; } $mail->addTo($user['email']); try { $mail->send(); } catch (Exception $e) { throw new Exception("An error occured while sending '{$subject}' " . " to " . implode(', ', $mail->getRecipients()) . ". Error was '" . $e->getMessage() . "'"); } $mail->clearRecipients(); } }
public static function getUnreadConversations($login) { $conversations = array(); $rows = Db::fetchAll("SELECT idvisitor, lastviewed, lastsent FROM " . Common::prefixTable('chat_history_admin') . " WHERE login = ? AND lastsent > lastviewed", array($login)); $rows = ChatCommon::formatRows($rows); foreach ($rows as $row) { $conversations[$row['idvisitor']] = $row; } return $conversations; }
public static function get($idvisitor) { $row = Db::fetchRow("SELECT * FROM " . Common::prefixTable('chat_personnal_informations') . " WHERE idvisitor = ?", array(@Common::hex2bin($idvisitor))); if (!$row) { $row = array('name' => NULL, 'email' => NULL, 'phone' => NULL, 'comments' => NULL); } else { $row = ChatCommon::formatRow($row); } return $row; }
public function getListConversations() { $rows = Db::fetchAll("SELECT\n\t\t\tidvisitor, \n\t\t\tMAX(idmessage) AS maxid, \n\t\t\t(SELECT t2.content FROM " . Common::prefixTable('chat') . " AS t2 WHERE t2.idvisitor = t1.idvisitor ORDER BY t2.idmessage DESC LIMIT 1) AS content,\n\t\t\t(SELECT t2.microtime FROM " . Common::prefixTable('chat') . " AS t2 WHERE t2.idvisitor = t1.idvisitor ORDER BY t2.idmessage DESC LIMIT 1) AS microtime,\n\t\t\t(SELECT t3.name FROM " . Common::prefixTable('chat_personnal_informations') . " AS t3 WHERE t3.idvisitor = t1.idvisitor) AS name,\n\t\t\t(SELECT t3.email FROM " . Common::prefixTable('chat_personnal_informations') . " AS t3 WHERE t3.idvisitor = t1.idvisitor) AS email\n\t\tFROM " . Common::prefixTable('chat') . " AS t1\n\t\tWHERE idsite = ?\n\t\tGROUP BY idvisitor\n\t\tORDER BY microtime DESC", array($this->idsite)); $rows = ChatCommon::formatRows($rows); return $rows; }