fwrite( json_encode([ $state['global_state'], $state['chips'] ]).PHP_EOL ); $f = null; /* [3] Get chip list (chips) =========================================================*/ /* (1) Check data */ if( !isset($arr_r['chips']) || !is_array($arr_r['chips']) ) return 127; /* (2) Reset file */ file_put_contents(CHIPS_CONF, ''); /* (3) Replace content */ $f = new SplFileObject(CHIPS_CONF, 'w'); foreach($arr_r['chips'] as $chip) $f->fwrite( json_encode([ (int) $chip['position'], $chip['pins'], $chip['states'] ]).PHP_EOL ); $f = null; /* [4] Get auth list (permissions) =========================================================*/ /* (1) Check data */ if( !isset($arr_r['permissions']) || !is_array($arr_r['permissions']) ) return 127; /* (2) Reset file */ file_put_contents(AUTH_CONF, ''); /* (3) Replace content */ $f = new SplFileObject(AUTH_CONF, 'w'); foreach($arr_r['permissions'] as $code=>$perm) $f->fwrite( json_encode([ $code, (int) $perm['id_user'], $perm['actions'] ]).PHP_EOL ); $f = null; /* [5] Get action list (with timeout) =========================================================*/ /* (1) Check data */ if( !isset($arr_r['actions']) || !is_array($arr_r['actions']) ) return 127; /* (2) Reset file */ file_put_contents(ACTIONS_CONF, ''); /* (3) Replace content */ $f = new SplFileObject(ACTIONS_CONF, 'w'); foreach($arr_r['actions'] as $timeout=>$actions) foreach($actions as $action) $f->fwrite( json_encode([ (int) $timeout, (int) $action['id_action'], $action['previous'], $action['action'] ]).PHP_EOL ); $f = null; /* [6] Remove history entries =========================================================*/ /* (0) We are done if @init */ if( $init ) return 0; /* (1) Check history entries count */ if( !isset($arr_r['saved']) || !is_array($arr_r['saved']) ) return 127; /* (2) Check history count */ if( !isset($arr_r['saved']['history']) || !is_numeric($arr_r['saved']['history']) ) return 127; /* (3) Fetch number of entries */ $saved = intval($arr_r['saved']['history']); $saved = $saved < 0 ? 0 : $saved; // prevent negative /* (4) Truncate the log file */ $saved++; // because need to be excluded $truncated = syscall(SOURCE_DIR."/lib/file/truncate mfrc522 {$saved}"); /* (5) Manage error */ if( $truncated === false ) return 127; return 0; } /* Manage init vs. sync */ $is_init = false; if( $argc > 1 && $argv[1] == 'init' ) $is_init = true; $exec = api_deploy($is_init); echo $exec; die($exec); ?>