Projet

Général

Profil

Paste
Statistiques
| Branche: | Révision:

ryxeo-glpi-git / htdocs / epack / lib / tests / simplecheck.php @ 1c14bcc4

Historique | Voir | Annoter | Télécharger (3,5 ko)

1
<?php
2
/**
3
 * Simple Check file : checking your system about php-zip module
4
 * The output file checkresult.odt must be readable by an oasis document application as openoffice.org
5
 * You need PHP 5.2 at least
6
 * You need Zip Xml Extensions (or PclZip library instead if Zip extension)
7
 * Encoding : ISO-8859-1
8
 *
9
 * @copyright  GPL License 2008 - Julien Pauli - Cyril PIERRE de GEYER - Anaska (http://www.anaska.com)
10
 * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
11
 * SVN Revision - $Rev: 36 $
12
 * Last commit by $Author: neveldo $
13
 * Date - $Date: 2009-06-04 15:45:12 +0200 (jeu., 04 juin 2009) $
14
 * SVN Revision - $Rev: 36 $
15
 * Id : $Id: simplecheck.php 36 2009-06-04 13:45:12Z neveldo $
16
 */
17

    
18
        //  instantiate the Exception class
19
        class OdfException extends Exception{}
20

    
21
        // checking php-zip module
22

    
23
        if ( !class_exists('ZipArchive') )
24
        {
25
          throw new OdfException('ZipArchive extension not loaded - check your php settings, PHP5.2 minimum with php-zip extension is required');
26
        }
27

    
28
        // checking php-xml module
29

    
30
        if ( !class_exists('DOMDocument') )
31
        {
32
          throw new OdfException('DOMDocument extension not loaded - check your php settings, PHP5.2 minimum with php-xml extension is required');
33
        }
34

    
35
        // start code ...
36

    
37
        $filename = "simplecheck.odt"; // must exist in same path as this script
38

    
39
        // load the oasis document via php-lib library
40

    
41
        $file = new ZipArchive();
42
        if ( $file->open($filename) !== true )
43
        {
44
          throw new OdfException("Error while Opening the file '$filename' - Check your odt file");
45
        }
46

    
47
        // read content.xml from the oasis document
48

    
49
        if (($contentXml = $file->getFromName('content.xml')) === false)
50
        {
51
          throw new OdfException("Nothing to parse - check that the content.xml file is correctly formed");
52
        }
53

    
54
        // close the original oasis document
55

    
56
        $file->close();
57

    
58
        // for futur use, with load content.xml via DOMDocument library :
59

    
60
        $odt_content = new DOMDocument('1.0', 'utf-8');
61
        if ($odt_content->loadXML( $contentXml ) == FALSE)
62
        {
63
          throw new OdfException('Unable to load content.xml by DOMDocument library ', __METHOD__);
64
        }
65

    
66
        // here, we dont use the temp function but local temporary file
67
            
68
        $tmpfile = md5(uniqid()).'.odt';
69
        if( !@copy($filename, $tmpfile) );
70
        {
71
            // we do not test, because sometime it return false anyway !!
72
            // $errors = error_get_last();
73
            // throw new OdfException("Can not copy the tempfile in $tmpfile :[".$errors['message'] ."]/[".$errors['type']."]");        
74
        }
75

    
76
        // futur use here : $odt_content modifications ...
77

    
78

    
79

    
80

    
81
        // open the temporary zipfile
82

    
83
        if( $file->open($tmpfile, ZIPARCHIVE::CREATE) != TRUE )
84
        {
85
          @unlink($tmpfile); // erase temporary file
86
          throw new OdfException("Error while Opening the tempfile '$tmpfile' - Check your odt file");
87
        }
88

    
89
        // for futur use here : with overwrite content.xml in zip file via DOMDocument library :
90

    
91
        if (! $file->addFromString('content.xml', $odt_content->saveXML()) )
92
        {
93
                 @unlink($tmpfile); // erase temporary file
94
            throw new OdfException('Error during file export');
95
        }
96
        
97
        // close the temporary zipfile
98

    
99
        $file->close();
100

    
101
        // send the new checkresult.odt file via http :
102

    
103
        $name = "checkresult.odt";
104
        $size = filesize($tmpfile);
105
        header('Content-type: application/vnd.oasis.opendocument.text');
106
        header('Content-Disposition: attachment; filename="'.$name.'"');
107
        header("Content-Length: ".$size); 
108
        readfile($tmpfile); // output
109
        @unlink($tmpfile); // erase temporary file
110
        exit; // be sure nothing else is write after
111

    
112
?>
Redmine Appliance - Powered by TurnKey Linux