<?php defined('SYSPATH') or die('No direct access allowed.');

/**
 * This class is able to collect traffic information for People Agent
 *
 * @package    OSB
 * @subpackage Service
 * @category   Helpers
 * @author     Deon George
 * @copyright  (c) 2010 Open Source Billing
 * @license    http://dev.osbill.net/license.html
 */
class Service_Traffic_ADSL_PeopleAgent extends Service_Traffic_ADSL {
	private $login_user_field = 'username';
	private $login_pass_field = 'password';
	private $date_field = 'date';

	protected function getdata($date) {
		// Assume we have a bad fetch, unless otherwise specified.
		$this->fetchresult = FALSE;

		$return = array();
		$url_suffix = sprintf('traffic_V34_%s.xml',date('Ymd',strtotime($date)));

		try {
			$data = Remote::get($this->so->stats_url.$url_suffix,$this->curlopts+array(
				CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
				CURLOPT_USERPWD => sprintf('%s:%s',$this->so->stats_username,$this->so->stats_password),
				));
			}

		catch (Exception $e) {
			return;
		}

		$this->fetchresult = TRUE;
		foreach (XML::factory(null,null,$data)->get('user') as $user) {
			$attrs = array();

			$userattrs = $user->attributes();
			$attrs['service'] = $userattrs['username'];
			$attrs['date'] = $date;

			foreach ($user->year->month->day->get('hour') as $hour => $traffic) {
				foreach (array('external'=>'down_peak','internal'=>'internal','peering'=>'peer') as $t => $k) {
					$tatters = $traffic->$t->attributes();

					// Traffic is in bytes, need to convert to MB
					if (empty($attrs[$k]))
						$attrs[$k] = $tatters['bytes']/1000/1000;
					else
						$attrs[$k] += $tatters['bytes']/1000/1000;
				}
			}

			array_push($return,$attrs);
		}

		return $return;
	}
}
?>
