Esempio n. 1
0
File: SMS.php Progetto: bonan/neotor
 /**
  * @param Irc $parent
  * @param $data
  * @param $extra
  * @return bool
  */
 public function privmsg($parent, $data, $extra)
 {
     extract($extra);
     $network = $parent->getNetworkName();
     $cmd = '';
     $data = '';
     if (strpos($msg, " ") !== false) {
         list(, $cmd) = explode(' ', trim($msg), 2);
         $cmd = trim($cmd);
         if (strpos($cmd, " ") !== false) {
             list($cmd, $data) = explode(' ', $cmd, 2);
             $data = trim($data);
         }
     }
     if (substr_count($msg, " ") > 2) {
         list(, $cmd, $data) = explode(' ', trim($msg), 3);
     }
     if ($private) {
         if (empty($cmd)) {
             $parent->privmsg($replyto, "Registrera: !sms reg #kanal dittnummer");
             $parent->privmsg($replyto, "Verifiera nummer: !sms verify koden");
             return true;
         }
         $cmd = strtolower($cmd);
         if ($cmd == 'reg' || $cmd == 'register') {
             if (strpos($data, ' ') !== false) {
                 list($chan, $num) = explode(' ', $data, 2);
                 $chan = trim($chan);
                 $num = trim($num);
             }
             if (!in_array(strtolower($chan), self::$channels[$network])) {
                 $parent->privmsg($replyto, "Ogiltig kanal, har kanalen sms-funktionen aktiverad?");
                 return true;
             }
             if (preg_match(self::$number, $num) == 0) {
                 $parent->privmsg($replyto, "Ogiltigt nummer, ange endast siffror. t.ex: !sms reg {$chan} 0701234567");
                 return true;
             }
             $confirm = '';
             $t = "abcdefghijklmnopqrstuvwxyz0123456789";
             for ($i = 0; $i < 6; $i++) {
                 $confirm .= substr($t, rand(0, strlen($t) - 1), 1);
             }
             if (!$this->service->sendSms($num, "Din verifieringskod är: {$confirm} - Om du inte vet vad det här är kan du ignorera detta sms")) {
                 $parent->privmsg($replyto, "Kunde inte skicka SMS, prova igen om en stund");
                 return true;
             }
             $this->service->regUser($nick, $chan, $network, $num, $confirm);
             $parent->privmsg($replyto, "Ditt nummer har sparats/uppdaterats för {$chan}. " . "Ett SMS har skickats för att verifiera ditt nummer, vänligen skriv /msg {$parent->me()->nick} !sms verify koden");
         }
         if ($cmd == 'verify') {
             $code = trim($data);
             if ($this->service->verifyUser($nick, $code)) {
                 $parent->privmsg($replyto, "Ditt nummer har verifierats, du kan nu skicka sms till och ta emot sms från kanalen.");
             } else {
                 $parent->privmsg($replyto, "Koden är ogiltig");
             }
         }
     } else {
         if (!in_array($target, self::$channels[$network])) {
             return false;
         }
         if (!empty($cmd) && strtolower($cmd) == "list" && empty($data)) {
             $users = $this->service->listUsers($network, $target);
             $this->parent->notice($nick, "SMS-Användare i {$target}: " . implode(', ', $users));
             return true;
         }
         if (empty($cmd) || empty($data)) {
             $parent->privmsg($replyto, "{$nick}: Syntax: !sms nick meddelande, t.ex: !sms {$nick} Hej! - !sms list, Lista med användare - För registrering: /msg {$parent->me()->nick} !sms reg {$target} 07xxxxxxxx");
             return true;
         }
         $tonick = $cmd;
         $number = $this->service->getNumber($tonick, $target, $network);
         if ($number === false) {
             $parent->privmsg($replyto, "{$nick}: {$tonick} är inte registrerad. /msg {$parent->me()->nick} !sms reg {$target} nummer");
             return true;
         }
         $smsprefix = "<{$nick}@{$target}> ";
         $smstext = $smsprefix . $data;
         if (strlen($smstext) > 160) {
             $parent->privmsg($replyto, "{$nick}: Ditt sms får max vara " . (160 - strlen($smsprefix)) . " tecken, nuvarande: " . strlen($data) . " tecken");
             return true;
         }
         if ($this->service->sendSms($number, $smstext, 1)) {
             $this->service->insertHistory($nick, $tonick, $target, $network, $number, 1);
             $parent->privmsg($replyto, "04[SMS] Skickar sms till {$tonick}: 12{$smstext}");
             return true;
         } else {
             $parent->privmsg($replyto, "{$nick}: Meddelandet kunde inte skickas, prova igen om en stund");
             return true;
         }
     }
 }