open( $zip, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE ) === true ) { $this->add_zip( $z, $path, '' ); $z->close(); } else { return( __( 'Temporary file creation failed.', 'luxeritas' ) . '
' . $zip ); } return true; } /*--------------------------------------------------------------------------- * ファイルをストリームに追加 (ディレクトリの場合は再帰的に配下を追加していく) *---------------------------------------------------------------------------*/ private function add_zip( $z, $path, $zip ) { $zip = ltrim( $zip, '/' ); if( is_dir( $zip ) === false ) { $z->addEmptyDir( $zip ); } foreach( (array)$this->get_file_list( $path ) as $val ) { $val = str_replace( DSEP, '/', $val ); if( is_dir( $path . '/' . $val ) === true ) { $this->add_zip( $z, $path . '/' . $val, $zip . '/' . $val ); } else { $z->addFile( $path . '/' . $val, $zip . '/' . $val ); } } } /*--------------------------------------------------------------------------- * ディレクトリ内のファイル一覧取得 *---------------------------------------------------------------------------*/ private function get_file_list( $path ) { $ret = array(); if( is_dir( $path ) === true ) { foreach( (array)glob( $path . '/' . '*' ) as $val ) { $ret[] = basename( $val ); } } return $ret; } } endif;