public function getTrackerStats() { $data = array('datasets' => array()); $start = Request::get('start', 'int') ?: -30; $end = Request::get('end', 'int') ?: 0; $sub_id = -1; $user_id = -1; $tracker = NULL; foreach ($_GET['sets'] as $set) { $tracker = isset($set['tracker']) ? intval($set['tracker']) : $tracker; $sub_id = isset($set['sub_id']) ? intval($set['sub_id']) : $sub_id; $user_id = isset($set['user_id']) ? intval($set['user_id']) : $user_id; if (empty($tracker)) { throw new \Exception('Invalid tracker'); } $data['datasets'][] = array('data' => array_values(Tracker::getHistory($tracker, $start, $end, $sub_id, $user_id)), 'label' => Tracker::getName($tracker)); } $data['labels'] = array(); $start += Time::today(); $end += Time::today(); for ($i = $start; $i <= $end; $i++) { $data['labels'][] = jdtogregorian($i); } Output::json($data); }
public function getGetData() { $start = Request::get('start', 'int', null, -30); $end = Request::get('end', 'int', null, 0); $message_id = Request::get('message_id', 'int'); $tracker = new Tracker(); $email_sent = $tracker->getHistory(Tracker::getTrackerId('Email Sent'), $start, $end, $message_id); $email_bounced = $tracker->getHistory(Tracker::getTrackerId('Email Bounced'), $start, $end, $message_id); $email_opened = $tracker->getHistory(Tracker::getTrackerId('Email Opened'), $start, $end, $message_id); $data = new ChartData(Time::today() + $start, Time::today() + $end); $data->addDataSet($email_sent, 'Sent'); $data->addDataSet($email_bounced, 'Bounced'); $data->addDataSet($email_opened, 'Opened'); $data->setXLabels(array_map('jdtogregorian', range(Time::today() + $start, Time::today() + $end))); $data->output(); }
/** * Insert a new user if he doesn't already exist. * * @param string $email * The new email * @param string $pass * The new password * @param string $first_name * The first name * @param string $last_name * The last name. * * @return integer * The new user's ID. */ protected static function insertUser($email, $pass = NULL, $first_name = '', $last_name = '') { $user_details = array('email' => Scrub::email(strtolower($email)), 'first' => $first_name, 'last' => $last_name, 'created' => Time::today(), 'confirmed' => static::requiresConfirmation() ? static::UNCONFIRMED : static::CONFIRMED, 'type' => 0, 'referrer' => 0); if ($pass) { $salt = static::getSalt(); $user_details['password'] = static::passHash($pass, $salt); $user_details['salt'] = bin2hex($salt); $user_details['registered'] = Time::today(); } return Database::getInstance()->insert('user', $user_details); }
public static function getHistoryAllSubIDs($tracker, $start = -30, $end = 0, $user_id = -1) { // Start the criteria with tracker id. if (is_array($tracker)) { $criteria = array('tracker_id' => array('IN', $tracker)); } else { $criteria = array('tracker_id' => $tracker); } // Filter by date range. $start = Time::today() + $start; $end = Time::today() + $end; $criteria['date'] = array('BETWEEN', $start, $end); // Add the user ID if required. if ($user_id != -1) { $criteria['user_id'] = $user_id; } // Run the query. $results = Database::getInstance()->select('tracker_event', $criteria, array('y' => array('expression' => 'COUNT(*)'), 'x' => 'date', 'set' => 'sub_id'), 'GROUP BY date, sub_id'); $data = new ChartData($start, $end); $data->createDataSets($results); return $data->getData(); }