Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 11
Línea 134... Línea 134...
134
     * Ensure that an appropriate error is shown when the filedir directory
134
     * Ensure that an appropriate error is shown when the filedir directory
135
     * is not writable.
135
     * is not writable.
136
     *
136
     *
137
     * @covers ::__construct
137
     * @covers ::__construct
138
     */
138
     */
139
    public function test_readonly_filesystem_filedir() {
139
    public function test_readonly_filesystem_filedir(): void {
140
        $this->resetAfterTest();
140
        $this->resetAfterTest();
Línea 141... Línea 141...
141
 
141
 
142
        // Setup the filedir but remove permissions.
142
        // Setup the filedir but remove permissions.
Línea 158... Línea 158...
158
     * Ensure that an appropriate error is shown when the trash directory
158
     * Ensure that an appropriate error is shown when the trash directory
159
     * is not writable.
159
     * is not writable.
160
     *
160
     *
161
     * @covers ::__construct
161
     * @covers ::__construct
162
     */
162
     */
163
    public function test_readonly_filesystem_trashdir() {
163
    public function test_readonly_filesystem_trashdir(): void {
164
        $this->resetAfterTest();
164
        $this->resetAfterTest();
Línea 165... Línea 165...
165
 
165
 
166
        // Setup the trashdir but remove permissions.
166
        // Setup the trashdir but remove permissions.
Línea 181... Línea 181...
181
    /**
181
    /**
182
     * Test that the standard Moodle warning message is put into the filedir.
182
     * Test that the standard Moodle warning message is put into the filedir.
183
     *
183
     *
184
     * @covers ::__construct
184
     * @covers ::__construct
185
     */
185
     */
186
    public function test_warnings_put_in_place() {
186
    public function test_warnings_put_in_place(): void {
187
        $this->resetAfterTest();
187
        $this->resetAfterTest();
Línea 188... Línea 188...
188
 
188
 
Línea 189... Línea 189...
189
        $vfileroot = $this->setup_vfile_root(null);
189
        $vfileroot = $this->setup_vfile_root(null);
Línea 201... Línea 201...
201
     * Ensure that the default implementation of get_remote_path_from_hash
201
     * Ensure that the default implementation of get_remote_path_from_hash
202
     * simply calls get_local_path_from_hash.
202
     * simply calls get_local_path_from_hash.
203
     *
203
     *
204
     * @covers ::get_remote_path_from_hash
204
     * @covers ::get_remote_path_from_hash
205
     */
205
     */
206
    public function test_get_remote_path_from_hash() {
206
    public function test_get_remote_path_from_hash(): void {
207
        $filecontent = 'example content';
207
        $filecontent = 'example content';
208
        $contenthash = \file_storage::hash_from_string($filecontent);
208
        $contenthash = \file_storage::hash_from_string($filecontent);
209
        $expectedresult = (object) [];
209
        $expectedresult = (object) [];
Línea 210... Línea 210...
210
 
210
 
Línea 227... Línea 227...
227
     * Test the stock implementation of get_local_path_from_storedfile_with_recovery with no file found and
227
     * Test the stock implementation of get_local_path_from_storedfile_with_recovery with no file found and
228
     * a failed recovery.
228
     * a failed recovery.
229
     *
229
     *
230
     * @covers ::get_local_path_from_storedfile
230
     * @covers ::get_local_path_from_storedfile
231
     */
231
     */
232
    public function test_get_local_path_from_storedfile_with_recovery() {
232
    public function test_get_local_path_from_storedfile_with_recovery(): void {
233
        $filecontent = 'example content';
233
        $filecontent = 'example content';
234
        $file = $this->get_stored_file($filecontent);
234
        $file = $this->get_stored_file($filecontent);
235
        $fs = $this->get_testable_mock([
235
        $fs = $this->get_testable_mock([
236
            'get_local_path_from_hash',
236
            'get_local_path_from_hash',
237
            'recover_file',
237
            'recover_file',
Línea 255... Línea 255...
255
     * Test the stock implementation of get_local_path_from_storedfile_with_recovery with no file found and
255
     * Test the stock implementation of get_local_path_from_storedfile_with_recovery with no file found and
256
     * a failed recovery.
256
     * a failed recovery.
257
     *
257
     *
258
     * @covers ::get_local_path_from_storedfile
258
     * @covers ::get_local_path_from_storedfile
259
     */
259
     */
260
    public function test_get_local_path_from_storedfile_without_recovery() {
260
    public function test_get_local_path_from_storedfile_without_recovery(): void {
261
        $filecontent = 'example content';
261
        $filecontent = 'example content';
262
        $file = $this->get_stored_file($filecontent);
262
        $file = $this->get_stored_file($filecontent);
263
        $fs = $this->get_testable_mock([
263
        $fs = $this->get_testable_mock([
264
            'get_local_path_from_hash',
264
            'get_local_path_from_hash',
265
            'recover_file',
265
            'recover_file',
Línea 286... Línea 286...
286
     * @param   string  $hash contenthash to test
286
     * @param   string  $hash contenthash to test
287
     * @param   string  $hashdir Expected format of content directory
287
     * @param   string  $hashdir Expected format of content directory
288
     *
288
     *
289
     * @covers ::get_fulldir_from_hash
289
     * @covers ::get_fulldir_from_hash
290
     */
290
     */
291
    public function test_get_fulldir_from_hash($hash, $hashdir) {
291
    public function test_get_fulldir_from_hash($hash, $hashdir): void {
292
        global $CFG;
292
        global $CFG;
Línea 293... Línea 293...
293
 
293
 
294
        $fs = new file_system_filedir();
294
        $fs = new file_system_filedir();
295
        $method = new \ReflectionMethod(file_system_filedir::class, 'get_fulldir_from_hash');
295
        $method = new \ReflectionMethod(file_system_filedir::class, 'get_fulldir_from_hash');
Línea 307... Línea 307...
307
     * @param   string  $hash contenthash to test
307
     * @param   string  $hash contenthash to test
308
     * @param   string  $hashdir Expected format of content directory
308
     * @param   string  $hashdir Expected format of content directory
309
     *
309
     *
310
     * @covers ::get_fulldir_from_storedfile
310
     * @covers ::get_fulldir_from_storedfile
311
     */
311
     */
312
    public function test_get_fulldir_from_storedfile($hash, $hashdir) {
312
    public function test_get_fulldir_from_storedfile($hash, $hashdir): void {
313
        global $CFG;
313
        global $CFG;
Línea 314... Línea 314...
314
 
314
 
315
        $file = $this->getMockBuilder('stored_file')
315
        $file = $this->getMockBuilder('stored_file')
316
            ->disableOriginalConstructor()
316
            ->disableOriginalConstructor()
Línea 338... Línea 338...
338
     * @param   string  $hash contenthash to test
338
     * @param   string  $hash contenthash to test
339
     * @param   string  $hashdir Expected format of content directory
339
     * @param   string  $hashdir Expected format of content directory
340
     *
340
     *
341
     * @covers ::get_contentdir_from_hash
341
     * @covers ::get_contentdir_from_hash
342
     */
342
     */
343
    public function test_get_contentdir_from_hash($hash, $hashdir) {
343
    public function test_get_contentdir_from_hash($hash, $hashdir): void {
344
        $method = new \ReflectionMethod(file_system_filedir::class, 'get_contentdir_from_hash');
344
        $method = new \ReflectionMethod(file_system_filedir::class, 'get_contentdir_from_hash');
Línea 345... Línea 345...
345
 
345
 
346
        $fs = new file_system_filedir();
346
        $fs = new file_system_filedir();
Línea 357... Línea 357...
357
     * @param   string  $hash contenthash to test
357
     * @param   string  $hash contenthash to test
358
     * @param   string  $hashdir Expected format of content directory
358
     * @param   string  $hashdir Expected format of content directory
359
     *
359
     *
360
     * @covers ::get_contentpath_from_hash
360
     * @covers ::get_contentpath_from_hash
361
     */
361
     */
362
    public function test_get_contentpath_from_hash($hash, $hashdir) {
362
    public function test_get_contentpath_from_hash($hash, $hashdir): void {
363
        $method = new \ReflectionMethod(file_system_filedir::class, 'get_contentpath_from_hash');
363
        $method = new \ReflectionMethod(file_system_filedir::class, 'get_contentpath_from_hash');
Línea 364... Línea 364...
364
 
364
 
365
        $fs = new file_system_filedir();
365
        $fs = new file_system_filedir();
Línea 377... Línea 377...
377
     * @param   string  $hash contenthash to test
377
     * @param   string  $hash contenthash to test
378
     * @param   string  $hashdir Expected format of content directory
378
     * @param   string  $hashdir Expected format of content directory
379
     *
379
     *
380
     * @covers ::get_trash_fullpath_from_hash
380
     * @covers ::get_trash_fullpath_from_hash
381
     */
381
     */
382
    public function test_get_trash_fullpath_from_hash($hash, $hashdir) {
382
    public function test_get_trash_fullpath_from_hash($hash, $hashdir): void {
383
        global $CFG;
383
        global $CFG;
Línea 384... Línea 384...
384
 
384
 
385
        $fs = new file_system_filedir();
385
        $fs = new file_system_filedir();
386
        $method = new \ReflectionMethod(file_system_filedir::class, 'get_trash_fullpath_from_hash');
386
        $method = new \ReflectionMethod(file_system_filedir::class, 'get_trash_fullpath_from_hash');
Línea 398... Línea 398...
398
     * @param   string  $hash contenthash to test
398
     * @param   string  $hash contenthash to test
399
     * @param   string  $hashdir Expected format of content directory
399
     * @param   string  $hashdir Expected format of content directory
400
     *
400
     *
401
     * @covers ::get_trash_fulldir_from_hash
401
     * @covers ::get_trash_fulldir_from_hash
402
     */
402
     */
403
    public function test_get_trash_fulldir_from_hash($hash, $hashdir) {
403
    public function test_get_trash_fulldir_from_hash($hash, $hashdir): void {
404
        global $CFG;
404
        global $CFG;
Línea 405... Línea 405...
405
 
405
 
406
        $fs = new file_system_filedir();
406
        $fs = new file_system_filedir();
407
        $method = new \ReflectionMethod(file_system_filedir::class, 'get_trash_fulldir_from_hash');
407
        $method = new \ReflectionMethod(file_system_filedir::class, 'get_trash_fulldir_from_hash');
Línea 414... Línea 414...
414
    /**
414
    /**
415
     * Ensure that copying a file to a target from a stored_file works as anticipated.
415
     * Ensure that copying a file to a target from a stored_file works as anticipated.
416
     *
416
     *
417
     * @covers ::copy_content_from_storedfile
417
     * @covers ::copy_content_from_storedfile
418
     */
418
     */
419
    public function test_copy_content_from_storedfile() {
419
    public function test_copy_content_from_storedfile(): void {
420
        $this->resetAfterTest();
420
        $this->resetAfterTest();
421
        global $CFG;
421
        global $CFG;
Línea 422... Línea 422...
422
 
422
 
423
        $filecontent = 'example content';
423
        $filecontent = 'example content';
Línea 452... Línea 452...
452
    /**
452
    /**
453
     * Ensure that content recovery works.
453
     * Ensure that content recovery works.
454
     *
454
     *
455
     * @covers ::recover_file
455
     * @covers ::recover_file
456
     */
456
     */
457
    public function test_recover_file() {
457
    public function test_recover_file(): void {
458
        $this->resetAfterTest();
458
        $this->resetAfterTest();
Línea 459... Línea 459...
459
 
459
 
460
        // Setup the filedir.
460
        // Setup the filedir.
461
        // This contains a virtual file which has a cache mismatch.
461
        // This contains a virtual file which has a cache mismatch.
Línea 491... Línea 491...
491
    /**
491
    /**
492
     * Ensure that content recovery works.
492
     * Ensure that content recovery works.
493
     *
493
     *
494
     * @covers ::recover_file
494
     * @covers ::recover_file
495
     */
495
     */
496
    public function test_recover_file_already_present() {
496
    public function test_recover_file_already_present(): void {
497
        $this->resetAfterTest();
497
        $this->resetAfterTest();
Línea 498... Línea 498...
498
 
498
 
499
        // Setup the filedir.
499
        // Setup the filedir.
500
        // This contains a virtual file which has a cache mismatch.
500
        // This contains a virtual file which has a cache mismatch.
Línea 529... Línea 529...
529
    /**
529
    /**
530
     * Ensure that content recovery works.
530
     * Ensure that content recovery works.
531
     *
531
     *
532
     * @covers ::recover_file
532
     * @covers ::recover_file
533
     */
533
     */
534
    public function test_recover_file_size_mismatch() {
534
    public function test_recover_file_size_mismatch(): void {
535
        $this->resetAfterTest();
535
        $this->resetAfterTest();
Línea 536... Línea 536...
536
 
536
 
537
        // Setup the filedir.
537
        // Setup the filedir.
538
        // This contains a virtual file which has a cache mismatch.
538
        // This contains a virtual file which has a cache mismatch.
Línea 565... Línea 565...
565
    /**
565
    /**
566
     * Ensure that content recovery works.
566
     * Ensure that content recovery works.
567
     *
567
     *
568
     * @covers ::recover_file
568
     * @covers ::recover_file
569
     */
569
     */
570
    public function test_recover_file_has_mismatch() {
570
    public function test_recover_file_has_mismatch(): void {
571
        $this->resetAfterTest();
571
        $this->resetAfterTest();
Línea 572... Línea 572...
572
 
572
 
573
        // Setup the filedir.
573
        // Setup the filedir.
574
        // This contains a virtual file which has a cache mismatch.
574
        // This contains a virtual file which has a cache mismatch.
Línea 602... Línea 602...
602
     * Ensure that content recovery works when the content file is in the
602
     * Ensure that content recovery works when the content file is in the
603
     * alt trash directory.
603
     * alt trash directory.
604
     *
604
     *
605
     * @covers ::recover_file
605
     * @covers ::recover_file
606
     */
606
     */
607
    public function test_recover_file_alttrash() {
607
    public function test_recover_file_alttrash(): void {
608
        $this->resetAfterTest();
608
        $this->resetAfterTest();
Línea 609... Línea 609...
609
 
609
 
610
        // Setup the filedir.
610
        // Setup the filedir.
611
        // This contains a virtual file which has a cache mismatch.
611
        // This contains a virtual file which has a cache mismatch.
Línea 636... Línea 636...
636
     * Test that an appropriate error message is generated when adding a
636
     * Test that an appropriate error message is generated when adding a
637
     * file to the pool when the pool directory structure is not writable.
637
     * file to the pool when the pool directory structure is not writable.
638
     *
638
     *
639
     * @covers ::recover_file
639
     * @covers ::recover_file
640
     */
640
     */
641
    public function test_recover_file_contentdir_readonly() {
641
    public function test_recover_file_contentdir_readonly(): void {
642
        $this->resetAfterTest();
642
        $this->resetAfterTest();
Línea 643... Línea 643...
643
 
643
 
644
        $filecontent = 'example content';
644
        $filecontent = 'example content';
645
        $contenthash = \file_storage::hash_from_string($filecontent);
645
        $contenthash = \file_storage::hash_from_string($filecontent);
Línea 672... Línea 672...
672
    /**
672
    /**
673
     * Test adding a file to the pool.
673
     * Test adding a file to the pool.
674
     *
674
     *
675
     * @covers ::add_file_from_path
675
     * @covers ::add_file_from_path
676
     */
676
     */
677
    public function test_add_file_from_path() {
677
    public function test_add_file_from_path(): void {
678
        $this->resetAfterTest();
678
        $this->resetAfterTest();
679
        global $CFG;
679
        global $CFG;
Línea 680... Línea 680...
680
 
680
 
681
        // Setup the filedir.
681
        // Setup the filedir.
Línea 708... Línea 708...
708
     * Test that an appropriate error message is generated when adding an
708
     * Test that an appropriate error message is generated when adding an
709
     * unavailable file to the pool is attempted.
709
     * unavailable file to the pool is attempted.
710
     *
710
     *
711
     * @covers ::add_file_from_path
711
     * @covers ::add_file_from_path
712
     */
712
     */
713
    public function test_add_file_from_path_file_unavailable() {
713
    public function test_add_file_from_path_file_unavailable(): void {
714
        $this->resetAfterTest();
714
        $this->resetAfterTest();
Línea 715... Línea 715...
715
 
715
 
716
        // Setup the filedir.
716
        // Setup the filedir.
Línea 728... Línea 728...
728
     * Test that an appropriate error message is generated when specifying
728
     * Test that an appropriate error message is generated when specifying
729
     * the wrong contenthash when adding a file to the pool.
729
     * the wrong contenthash when adding a file to the pool.
730
     *
730
     *
731
     * @covers ::add_file_from_path
731
     * @covers ::add_file_from_path
732
     */
732
     */
733
    public function test_add_file_from_path_mismatched_hash() {
733
    public function test_add_file_from_path_mismatched_hash(): void {
734
        $this->resetAfterTest();
734
        $this->resetAfterTest();
Línea 735... Línea 735...
735
 
735
 
736
        $filecontent = 'example content';
736
        $filecontent = 'example content';
737
        $contenthash = \file_storage::hash_from_string($filecontent);
737
        $contenthash = \file_storage::hash_from_string($filecontent);
Línea 750... Línea 750...
750
     * Test that an appropriate error message is generated when an existing
750
     * Test that an appropriate error message is generated when an existing
751
     * file in the pool has the wrong contenthash
751
     * file in the pool has the wrong contenthash
752
     *
752
     *
753
     * @covers ::add_file_from_path
753
     * @covers ::add_file_from_path
754
     */
754
     */
755
    public function test_add_file_from_path_existing_content_invalid() {
755
    public function test_add_file_from_path_existing_content_invalid(): void {
756
        $this->resetAfterTest();
756
        $this->resetAfterTest();
Línea 757... Línea 757...
757
 
757
 
758
        $filecontent = 'example content';
758
        $filecontent = 'example content';
759
        $contenthash = \file_storage::hash_from_string($filecontent);
759
        $contenthash = \file_storage::hash_from_string($filecontent);
Línea 795... Línea 795...
795
     * Test that an appropriate error message is generated when adding a
795
     * Test that an appropriate error message is generated when adding a
796
     * file to the pool when the pool directory structure is not writable.
796
     * file to the pool when the pool directory structure is not writable.
797
     *
797
     *
798
     * @covers ::add_file_from_path
798
     * @covers ::add_file_from_path
799
     */
799
     */
800
    public function test_add_file_from_path_existing_cannot_write_hashpath() {
800
    public function test_add_file_from_path_existing_cannot_write_hashpath(): void {
801
        $this->resetAfterTest();
801
        $this->resetAfterTest();
Línea 802... Línea 802...
802
 
802
 
803
        $filecontent = 'example content';
803
        $filecontent = 'example content';
804
        $contenthash = \file_storage::hash_from_string($filecontent);
804
        $contenthash = \file_storage::hash_from_string($filecontent);
Línea 828... Línea 828...
828
    /**
828
    /**
829
     * Test adding a string to the pool.
829
     * Test adding a string to the pool.
830
     *
830
     *
831
     * @covers ::add_file_from_string
831
     * @covers ::add_file_from_string
832
     */
832
     */
833
    public function test_add_file_from_string() {
833
    public function test_add_file_from_string(): void {
834
        $this->resetAfterTest();
834
        $this->resetAfterTest();
835
        global $CFG;
835
        global $CFG;
Línea 836... Línea 836...
836
 
836
 
837
        $filecontent = 'example content';
837
        $filecontent = 'example content';
Línea 855... Línea 855...
855
     * Test that an appropriate error message is generated when adding a
855
     * Test that an appropriate error message is generated when adding a
856
     * string to the pool when the pool directory structure is not writable.
856
     * string to the pool when the pool directory structure is not writable.
857
     *
857
     *
858
     * @covers ::add_file_from_string
858
     * @covers ::add_file_from_string
859
     */
859
     */
860
    public function test_add_file_from_string_existing_cannot_write_hashpath() {
860
    public function test_add_file_from_string_existing_cannot_write_hashpath(): void {
861
        $this->resetAfterTest();
861
        $this->resetAfterTest();
Línea 862... Línea 862...
862
 
862
 
863
        $filecontent = 'example content';
863
        $filecontent = 'example content';
Línea 886... Línea 886...
886
     * Test adding a string to the pool when an item with the same
886
     * Test adding a string to the pool when an item with the same
887
     * contenthash is already present.
887
     * contenthash is already present.
888
     *
888
     *
889
     * @covers ::add_file_from_string
889
     * @covers ::add_file_from_string
890
     */
890
     */
891
    public function test_add_file_from_string_existing_matches() {
891
    public function test_add_file_from_string_existing_matches(): void {
892
        $this->resetAfterTest();
892
        $this->resetAfterTest();
893
        global $CFG;
893
        global $CFG;
Línea 894... Línea 894...
894
 
894
 
895
        $filecontent = 'example content';
895
        $filecontent = 'example content';
Línea 920... Línea 920...
920
    /**
920
    /**
921
     * Test the cleanup of deleted files when there are no files to delete.
921
     * Test the cleanup of deleted files when there are no files to delete.
922
     *
922
     *
923
     * @covers ::remove_file
923
     * @covers ::remove_file
924
     */
924
     */
925
    public function test_remove_file_missing() {
925
    public function test_remove_file_missing(): void {
926
        $this->resetAfterTest();
926
        $this->resetAfterTest();
Línea 927... Línea 927...
927
 
927
 
928
        $filecontent = 'example content';
928
        $filecontent = 'example content';
929
        $contenthash = \file_storage::hash_from_string($filecontent);
929
        $contenthash = \file_storage::hash_from_string($filecontent);
Línea 943... Línea 943...
943
     * Test the cleanup of deleted files when a file already exists in the
943
     * Test the cleanup of deleted files when a file already exists in the
944
     * trash for that path.
944
     * trash for that path.
945
     *
945
     *
946
     * @covers ::remove_file
946
     * @covers ::remove_file
947
     */
947
     */
948
    public function test_remove_file_existing_trash() {
948
    public function test_remove_file_existing_trash(): void {
949
        $this->resetAfterTest();
949
        $this->resetAfterTest();
Línea 950... Línea 950...
950
 
950
 
951
        $filecontent = 'example content';
951
        $filecontent = 'example content';
Línea 972... Línea 972...
972
    /**
972
    /**
973
     * Ensure that remove_file does nothing with an empty file.
973
     * Ensure that remove_file does nothing with an empty file.
974
     *
974
     *
975
     * @covers ::remove_file
975
     * @covers ::remove_file
976
     */
976
     */
977
    public function test_remove_file_empty() {
977
    public function test_remove_file_empty(): void {
978
        $this->resetAfterTest();
978
        $this->resetAfterTest();
979
        global $DB;
979
        global $DB;
Línea 980... Línea 980...
980
 
980
 
981
        $DB = $this->getMockBuilder(\moodle_database::class)
981
        $DB = $this->getMockBuilder(\moodle_database::class)
Línea 995... Línea 995...
995
     * Ensure that remove_file does nothing when a file is still
995
     * Ensure that remove_file does nothing when a file is still
996
     * in use.
996
     * in use.
997
     *
997
     *
998
     * @covers ::remove_file
998
     * @covers ::remove_file
999
     */
999
     */
1000
    public function test_remove_file_in_use() {
1000
    public function test_remove_file_in_use(): void {
1001
        $this->resetAfterTest();
1001
        $this->resetAfterTest();
1002
        global $DB;
1002
        global $DB;
Línea 1003... Línea 1003...
1003
 
1003
 
1004
        $filecontent = 'example content';
1004
        $filecontent = 'example content';
Línea 1028... Línea 1028...
1028
     * Ensure that remove_file removes the file when it is no
1028
     * Ensure that remove_file removes the file when it is no
1029
     * longer in use.
1029
     * longer in use.
1030
     *
1030
     *
1031
     * @covers ::remove_file
1031
     * @covers ::remove_file
1032
     */
1032
     */
1033
    public function test_remove_file_expired() {
1033
    public function test_remove_file_expired(): void {
1034
        $this->resetAfterTest();
1034
        $this->resetAfterTest();
1035
        global $DB;
1035
        global $DB;
Línea 1036... Línea 1036...
1036
 
1036
 
1037
        $filecontent = 'example content';
1037
        $filecontent = 'example content';
Línea 1060... Línea 1060...
1060
    /**
1060
    /**
1061
     * Test purging the cache.
1061
     * Test purging the cache.
1062
     *
1062
     *
1063
     * @covers ::empty_trash
1063
     * @covers ::empty_trash
1064
     */
1064
     */
1065
    public function test_empty_trash() {
1065
    public function test_empty_trash(): void {
1066
        $this->resetAfterTest();
1066
        $this->resetAfterTest();
Línea 1067... Línea 1067...
1067
 
1067
 
1068
        $filecontent = 'example content';
1068
        $filecontent = 'example content';