dataDir = $dataDir; $this->config = $config; } public function set_base_dir( $baseDir = '' ){ $this->baseDir = rtrim( $baseDir, '/' ); } public function get_dir( $id, $absolute = FALSE ){ $relativeDir = ( $this->baseDir ? "{$this->baseDir}/" : '' ) . 'motions/' . substr( $id, 0, 7 ) . "/{$id}"; return ( $absolute ? $this->dataDir . '/' : '' ) . $relativeDir; } public function get_list( $daysBack = 7 ){ $daysBack = min( $daysBack, 28 ); $today = time(); $day = 0; $dayList = []; while ( $day <= $daysBack ){ $dayList[] = date( 'Ymd', $today - $day * 86400 ); $day++; } $month1 = substr( $dayList[ $daysBack ], 0, 6 ); $month2 = substr( $dayList[ 0 ], 0, 6 ); $monthPattern = $month1 == $month2 ? $month1 : "{{$month1},{$month2}}"; $dayList = implode( ',', $dayList ); $dir = "{$this->dataDir}/" . ( $this->baseDir ? "{$this->baseDir}/" : '' ) . 'motions'; $listing = glob( "{$dir}/{$monthPattern}/{{$dayList}}-*" ); $motions = []; foreach ( $listing as $item ){ if ( $data = $this->get_data( $item, TRUE ) ){ $motions[] = $data; } } return $motions; } public function get_data( $id ){ $dir = $id[0] == '/' ? $id : $this->get_dir( $id, TRUE ); if ( ! is_dir( $dir ) ){ return FALSE; } $listing = scandir( $dir, SCANDIR_SORT_DESCENDING ); $receipt = yaml_parse( file_get_contents( "{$dir}/{$listing[0]}" ) ); if ( empty( $receipt['Motion-Data'] ) ){ return FALSE; } return $receipt['Motion-Data']; } public function purge_data( $data ){ $validKeys = [ 'id' => 0, 'mover' => 0, 'subject' => 0, 'description' => 0 ]; return array_intersect_key( $data, $validKeys ); } } // end of file models/motions.class.php