rootDir = $rootDir; $this->objectName = $objectName; $this->dirName = $dirName; } public function set_base_dir( $dir ){ $this->baseDir = $dir; } public function get_dir( $id, $absolute = FALSE ){ $dir = ( $this->baseDir ? "{$this->baseDir}/" : '' ) . "{$this->dirName}/{$id}"; return $absolute ? "{$this->rootDir}/{$dir}" : $dir; } public function get_list(){ $dir = ( $this->baseDir ? "{$this->baseDir}/" : '' ) . $this->dirName; if ( ! file_exists( $dir ) ){ return array (); } $listing = scandir( $dir ); $objectList = array (); foreach ( $listing as $objectId ){ if ( $objectId[0] != '.' ){ $objectId = ( $this->baserDir ? "{$this->baserDir}/" : '' ) . $objectId; if ( $data = $this->get_data( $objectId ) ){ $objectList[] = $data; } } } return $objectList; } public function get_data( $id ){ $dir = $this->get_dir( $id, TRUE ); if ( ! is_dir( $dir ) ){ return FALSE; } $listing = glob( "{$dir}/[0-9]*", GLOB_NOSORT ); if ( empty( $listing ) ){ return FALSE; } rsort( $listing ); $receipt = yaml_parse( file_get_contents( "{$listing[0]}" ) ); $element = "{$this->objectName}-Data"; if ( empty( $receipt[ $element ] ) ){ return FALSE; } $data = $receipt[ $element ]; if ( method_exists( $this, 'update_calculated_fields' ) ){ call_user_func( [ $this, 'update_calculated_fields' ], $data ); } return $data; } public function purge_data( $data ){ $validKeys = [ 'id' => 0, 'name' => 0, 'date' => 0, 'client_data' => 0, 'estimated_turnout' => 0, 'naming_rules' => 0, 'credential_rules' => 0, 'lot_code_rules' => 0, ]; return array_intersect_key( $data, $validKeys ); } } // end of file lib/data_objects.class.php