message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); break; } $dataf = new FFDB("data.txt"); $array = $dataf->get_table($recip); $more_parts = explode(' ', $msg_parts[1], 10); //$irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $data->nick.': Searching for "'.$msg_parts[1].'"...'); $results = 0; $i = 1; $by = null; foreach ($array as $id => $stuff) { $search = ''; foreach ($more_parts as $ids => $stuff) { $by_pos = strpos($more_parts[$ids], "+by:"); if ($by_pos !== false) { //echo "Looking for messages by: ".trim($more_parts[$ids],"+by:")."\n"; $by = trim($more_parts[$ids],"+by:"); } else { $pos = strpos(strtolower($array[$id]['msg']), strtolower($more_parts[$ids])); if ($pos === False) { $search .= '0'; } else { $search .= '1'; } } } $pos = strpos($search, '0'); if ($pos === False) { $time = date('m/d/Y h:m:s e',$array[$id]['time']); if ($i < 6) { if ($by == $array[$id]['user']) { $msg = $i.". ".ucfirst($array[$id]['user'])." said \"".$array[$id]['msg']."\" on ".$time."."; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); unset($array[$id]); $i++; } elseif ($by == null) { $msg = $i.". ".ucfirst($array[$id]['user'])." said \"".$array[$id]['msg']."\" on ".$time."."; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); unset($array[$id]); $i++; } $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, "I = $i"); } $results++; } } if ($results > 0) { $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, "Found ".number_format($results)." results."); } else { $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, "No results found."); } } // // Recall a message from a date/time // if ($msg_parts[0] == "recall") { $dataf = new FFDB("data.txt"); $array = $dataf->get_table($recip); $recall = strtotime($msg_parts[1]); if ($recall === false) { $msg = "Date is not compatable."; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); } elseif ($recall > strtotime("now")) { $msg = "The future isn't written."; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); } else { $result = 1; $i = 1; foreach ($array as $id => $stuff) { if ($array[$id]['time'] == $recall) { //Ok, so the time is the same (by golly) if ($i < 6) { $msg = $result.". ".$array[$id]['user']." said ".$array[$id]['msg']."."; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); $i++; } $result++; } for ($offset = 1; $offset < 900; $offset++) { if ($recall-$offset == $array[$id]['time'] || $recall+$offset == $array[$id]['time']) { if ($i < 6) { $msg = $result.". ".$array[$id]['user']." said ".$array[$id]['msg']."."; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); $i++; } $result++; } } } if ($result == 1) { $msg = "No results found."; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); } else { $msg = number_format($result)." results found."; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); } } } // // Gets the beginning of time // if ($msg_parts[0] == "time") { $dataf = new FFDB("data.txt"); $array = $dataf->get_table($recip); $time['past']['time'] = 1000000000; $time['past']['msg'] = ""; $time['past']['user'] = ""; foreach ($array as $id => $stuff) { if (strtotime("now") - $array[$id]['time'] < $time['past']['time']) { $time['past']['time'] = strtotime("now") - $array[$id]['time']; $time['past']['msg'] = $array[$id]['msg']; $time['past']['user'] = $array[$id]['user']; } } $msg = "Past: ".$time['past']['user']." said \"".$time['past']['msg']."\" on ".date('m/d/Y h:m:s e',$time['past']['time'])."."; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); } // // Get the last message posted by a user. // if ($msg_parts[0] == "last") { $dataf = new FFDB("data.txt"); $array = $dataf->get_table($recip); $today = strtotime("now"); $last = array('dif' => 1000000000, 'msg' => '', 'user' => ''); if ($msg_parts[1] != "") { //Search for a user foreach ($array as $id => $stuff) { $time = $array[$id]['time']; if ($today-$time < $last['dif'] && $last['user'] == $msg_parts[1]) { $last['dif'] = $today - $time; $last['msg'] = $array[$id]['msg']; $last['user'] = $array[$id]['user']; } } if ($last['msg'] != "") { $msg = "Last message was \"".$last['msg']."\" by ".$last['user']."."; } else { $msg = "No user found."; } $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); } else { //Or give the last message by any user foreach ($array as $id => $stuff) { $time = $array[$id]['time']; if ($today-$time < $last['dif']) { $last['dif'] = $today - $time; $last['msg'] = $array[$id]['msg']; $last['user'] = $array[$id]['user']; } } $msg = "Last message was \"".$last['msg']."\" by ".$last['user']."."; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); } } // // Help // if ($msg_parts[0] == "help") { $msg = "Commands: search, last, recall"; $irc->message(SMARTIRC_TYPE_CHANNEL, $recip, $msg); } // // Quit // if ($msg_parts[0] == "quit") { if (!admin_identify($data->host,$data->nick,$data->channel)) { return; } $irc->quit('Everything has its time and everything dies.'); } ?>