function getContacts($db, $person) { list($start, $end) = mailTimeFrame($db); if (isset($_GET['start'])) { $start = $_GET['start']; } if (isset($_GET['end'])) { $end = $_GET['end']; } // TODO add window handling if needed, should be enough if the subquery // return messages in the interval //and date(message.delivered)>='$start' AND //date(message.delivered)<'$end'"; $q = "select distinct person.fullname as contact\n from role, email, person\n where role.msg_id in (select message.id\n from message, role, email, person\n where message.id==role.msg_id and\n role.email_id==email.id and\n email.owner_id==person.id and\n person.fullname like '{$person}' and\n date(message.delivered)>='{$start}' AND\n date(message.delivered)<'{$end}') and\n role.email_id==email.id and\n email.owner_id==person.id and\n person.fullname not like '{$person}';"; $results = array(); $r = $db->query($q); foreach ($r as $row) { $results[] = array("name" => $row['contact']); } return $results; }
<?php /* Maelstrom - visualizing email contacts Copyright© 2008-2009 Stefan Marsiske <my name at gmail.com> */ $MAILBOXOWNER = ""; //IMPORTANT CONFIGURE THESE!!!! $dburl = 'sqlite:' . $_SERVER['DOCUMENT_ROOT'] . '/maelstrom/db/messages.db'; try { $db = new PDO($dburl); } catch (PDOException $exception) { die($exception->getMessage()); } list($start, $end) = mailTimeFrame($db); if (isset($_GET['start'])) { $start = $_GET['start']; } if (isset($_GET['end'])) { $end = $_GET['end']; } // get all mails from person function contactMails($db) { global $MAILBOXOWNER; global $start, $end; if (isset($_GET['c'])) { $person = $_GET['c']; } else { $person = $MAILBOXOWNER; } $q = "select count(message.id) as count,\n date(message.delivered) as delivered\n from message, role, email, person\n where message.id=role.msg_id and\n role.email_id=email.id and\n email.owner_id==person.id and\n person.fullname=='{$person}'\n group by delivered\n order by delivered"; //and