public static function daemon() { $data = Keyword::where('status', '1')->get(); foreach ($data as $row) { $name = $row['name']; $keyword = $row['keyword']; $url = $row['url']; $joingroup_id = $row['joingroup_id']; $text_reply = $row['text_reply']; /* Pakai keyword */ if ($keyword != '') { $second_keyword_count = preg_match_all("/\\[([^\\]]*)\\]/", $keyword, $second_keyword_match); //[] $main_keyword = Keyword::main($keyword); $db = Keyword::inbox($main_keyword); if ($db) { // Ada inbox yang sesuai keyword foreach ($db as $key) { //set inbox:prosessed to true Inbox::process($key->id); // Action URL request if ($url != '') { unset($query); unset($patterns); unset($replacements); $url_match = Keyword::url($url); $query = ['sender' => urlencode($key->hp), 'message' => urlencode(trim(substr($key->isi, strlen($main_keyword)))), 'content' => urlencode($key->isi), 'time' => urlencode($key->waktu)]; foreach ($url_match as $key1) { $patterns[] = '/\\${' . $key1 . '}/'; $replacements[] = $query[$key1]; } $newurl = preg_replace($patterns, $replacements, $url); //${} /* SECOND KEYWORD [] (belum selesai)*/ if ($second_keyword_count > 0) { unset($patterns2); unset($replacements2); $main_keyword_count = strlen($main_keyword); $first = strtok($key->isi, " "); $explode_keyword = explode(']', substr($keyword, strlen($main_keyword))); $delimiter = substr($explode_keyword[1], 0, strpos($explode_keyword[1], '[')); foreach ($second_keyword_match[1] as $key2) { $patterns2[] = '/\\$\\[' . $key2 . '\\]/'; $replacements2[] = $key->isi; #substr($key->isi, $main_keyword_count); } $newest_url = preg_replace($patterns2, $replacements2, $newurl) . ' (baru)<br>keyword:' . $keyword . '||isi:' . $key->isi . '<br>'; $return_url[] = $newest_url; } else { $return_url[] = $newurl; } } else { $return_url[] = ''; } // Auto add to contact and group if ($joingroup_id) { $firstname = $keyword ? $keyword : $name; $contactname = $firstname . '-' . substr($key->hp, -3); $cc = new ContactController(); $cc->newContact($key->hp, $contactname, $joingroup_id); } // Autoreply if ($text_reply) { Outbox::create(['DestinationNumber' => $key->hp, 'TextDecoded' => $text_reply, 'CreatorID' => 'keywords.' . $row['id']]); } } } else { // Inbox tidak ada yang sesuai filter keyword $return_url[] = ''; } } else { //maaf keyword salah / tidak sesuai format $db = Inbox::where('Processed', 'false')->get(); // dd($db); } } return $return_url; }