$nb) { $text .= "http://".$pseudo.".skyrock.com/\n"; $text .= "Tu as "; $count = 0; if (!empty($nb['messages'])) { $count++; $text .= (int)$nb['messages'] . ' nouveaux messages'; } if (!empty($nb['comments'])) { if ($count > 0) { if (!isset($nb['friends'])) $text .= ' et '; else $text .= ', '; } $count++; $text .= (int)$nb['comments'] . ' nouveaux commentaires'; } if (!empty($nb['friends'])) { if ($count > 0) { $text .= ' et '; } $text .= (int)$nb['friends'] . ' demandes pour être ton ami-e'; } $text .= ".\n\n"; } $text .= "--\n Pour ne plus recevoir de messages de skyChecker clique ici :\n"; $text .= " ".$this->url."?".$this->cryptMail($mail)."\n"; mail($mail, 'Hey ca bouge sur tes sky !', $text, "From: skyChecker \nReply-To: skychecker@tilt.eu.org\nReturn-Path: skychecker@tilt.eu.org\n"); #echo "Sent a mail to ".$mail." for ".implode(", ", array_keys($pseudos))."
\n"; #echo $text; } public function cryptMail($mail) { $out = substr(md5($mail . "kik00lol"), 0, 8) . '@' . str_replace('@', 'S', $mail); return str_rot13($out); } public function decryptMail($in) { $in = str_rot13($in); list($check, $mail) = explode('@', $in); $mail = str_replace('S', '@', $mail); $check2 = substr(md5($mail . "kik00lol"), 0, 8); if ($check2 != $check) return false; return $mail; } public function getPseudoStatus($nbs) { $status = array( 'messages' => isset($nbs['messages']) ? (int)$nbs['messages'] : 0, 'comments' => isset($nbs['comments']) ? (int)$nbs['comments'] : 0, 'friends' => isset($nbs['friends']) ? (int)$nbs['friends'] : 0); return implode('.', $status); } public function doCron() { $res = DB::aQuery('SELECT id, pseudo, status FROM pseudos ORDER BY id;'); $pseudos = array(); foreach ($res as $row) { $nb = $this->getNumbers($row['id']); if (!empty($nb)) { // On envoie un mail que si le statut à changé depuis le dernier check $status = $this->getPseudoStatus($nb); if ($status != $row['status']) { $pseudos[$row['pseudo']] = $nb; DB::uQuery('UPDATE pseudos SET status="'.DB::esc($status).'" WHERE id="'.(int)$row['id'].'";'); } } else { // On remet à zéro mais on envoie pas de mail if ($row['status'] != '0.0.0') { DB::uQuery('UPDATE pseudos SET status="0.0.0" WHERE id="'.(int)$row['id'].'";'); } } //sleep(1); } $res = DB::aQuery('SELECT id, email FROM emails ORDER BY id;'); foreach ($res as $row) { $email = $row['email']; $result = DB::aQuery('SELECT pseudos.pseudo FROM pseudos, pseudos_emails WHERE pseudos_emails.id_email = "'.(int)$row['id'].'" AND pseudos_emails.id_pseudo = pseudos.id ORDER BY pseudos.id;'); $my_pseudos = array(); foreach ($result as $row) { if (!empty($pseudos[$row[0]])) { $my_pseudos[$row[0]] = $pseudos[$row[0]]; } } if (!empty($my_pseudos)) { $this->sendMail($email, $my_pseudos); } } return true; } public function getDebug() { $res = DB::aQuery('SELECT id, pseudo, status FROM pseudos ORDER BY id;'); return $res; } public function resetStatus() { DB::uQuery('UPDATE pseudos SET status="0.0.0";'); } public function getPseudosForMail($mail) { $res = DB::aQuery('SELECT id FROM emails WHERE email="'.DB::esc($mail).'";'); if (empty($res[0][0])) return false; $id = $res[0][0]; return DB::aQuery('SELECT p.id AS id, p.pseudo AS pseudo FROM pseudos AS p, pseudos_emails AS pe WHERE pe.id_email="'.(int)$id.'" AND pe.id_pseudo = p.id;'); } public function unsubscribe($mail, $id_pseudo) { $res = DB::aQuery('SELECT id FROM emails WHERE email="'.DB::esc($mail).'";'); if (empty($res[0][0])) return false; $id = $res[0][0]; DB::uQuery('DELETE FROM pseudos_emails WHERE id_email="'.(int)$id.'" AND id_pseudo="'.(int)$id_pseudo.'";'); // Nettoyage $res = DB::aQuery('SELECT COUNT(*) FROM pseudos_emails WHERE id_pseudo="'.(int)$id_pseudo.'";'); if (empty($res[0][0])) DB::uQuery('DELETE FROM pseudos WHERE id="'.(int)$id_pseudo.'";'); $res = DB::aQuery('SELECT COUNT(*) FROM pseudos_emails WHERE id_email="'.(int)$id.'";'); if (empty($res[0][0])) DB::uQuery('DELETE FROM emails WHERE id="'.(int)$id.'";'); return true; } } ?>