[], 'feature' => [], 'identity' => [ 'ap' => preg_replace('/\s+/', '', file_get_contents(TMP_DIR.'/net.ap')), 'ip' => preg_replace('/\s+/', '', file_get_contents(TMP_DIR.'/net.ip')) ] ]; /* (2) Fetch DEFAULT data log ---------------------------------------------------------*/ $f = new SplFileObject(DEFAULT_DATA, 'r'); while( !$f->eof() ){ /* (1) Try to parse each line */ $parsed = json_decode($f->fgets(), true); /* (2) Manage error */ if( is_null($parsed) ) continue; /* (3) Add entry to log */ $data['default'][] = $parsed; } /* (3) Fetch for each feature which generates data ---------------------------------------------------------*/ foreach(scandir(SOURCE_DIR.'/feature') as $feat_name){ /* (1) Ignore . and .. entries */ if( in_array($feat_name, ['.', '..']) ) continue; /* (2) Get absolute path */ $abs_path = SOURCE_DIR."/feature/$feat_name"; /* (3) Check if it is a directory */ if( !file_exists($abs_path) || !is_dir($abs_path) ) continue; /* (4) Store the feature entry (empty) */ $data['feature'][$feat_name] = []; /* (5) Check for feature access log */ if( !file_exists(DATA_DIR."/$feat_name") ) continue; /* (6) Try to read log file */ $f = new SplFileObject(DATA_DIR."/$feat_name", "r"); while( !$f->eof() ){ // {1} Try to parse JSON // $parsed = json_decode($f->fgets(), true); // {2} Manage error // if( is_null($parsed) ) continue; // {3} If correct -> add entry to feature // $data['feature'][$feat_name][] = $parsed; } /* (7) Free file handler */ $f = null; } return json_encode($data); } echo api_fetch(); ?>