function process($plist) { // Check if uptime is set to determine this is a new client $new_client = $this->uptime ? FALSE : TRUE; require_once APP_PATH . 'lib/CFPropertyList/CFPropertyList.php'; $parser = new CFPropertyList(); $parser->parse($plist, CFPropertyList::FORMAT_XML); $mylist = $parser->toArray(); // Remove serial_number from mylist, use the cleaned serial that was provided in the constructor. unset($mylist['serial_number']); // If console_user is empty, retain previous entry if (!$mylist['console_user']) { unset($mylist['console_user']); } // If long_username is empty, retain previous entry if (array_key_exists('long_username', $mylist) && empty($mylist['long_username'])) { unset($mylist['long_username']); } $this->merge($mylist)->register()->save(); if ($new_client) { store_event($this->serial_number, 'reportdata', 'info', 'new_client'); } }
/** * Store event * * Store event for this model, assumes we have a serial_number * * @param string $type Use one of 'danger', 'warning', 'info' or 'success' * @param string $msg The message **/ public function store_event($type, $msg, $data = '') { store_event($this->serial_number, $this->tablename, $type, $msg, $data); }
/** * Report broken client * * Use this method to report on client-side * errors that prevent the client to * report properly * * @author AvB **/ function broken_client() { // At least, we need a serial number if (!isset($_POST['serial'])) { $this->msg("Serial is missing", TRUE); } // Register check in reportdata $report = new Reportdata_model($_POST['serial']); $report->register()->save(); // Clean POST data $data['module'] = isset($_POST['module']) ? $_POST['module'] : 'generic'; $data['type'] = isset($_POST['type']) ? $_POST['type'] : 'danger'; $data['msg'] = isset($_POST['msg']) ? $_POST['msg'] : 'Unknown'; $data['timestamp'] = time(); // Store event store_event($_POST['serial'], $data['module'], $data['type'], $data['msg']); echo "Recorded this message: " . $data['msg'] . "\n"; }