source: branches/1.2/workflow/inc/local/functions/function.wf_write_file.php @ 1349

Revision 1349, 1.3 KB checked in by niltonneto, 15 years ago (diff)

Ticket #561 - Inclusão do módulo Workflow faltante nessa versão.

  • Property svn:executable set to *
Line 
1<?php
2/**
3 * Writes new contents to files.
4 * @param string $filename File's name to be written.
5 * @param string $content New contents to be inserted.
6 * @return boolean
7 * @license http://www.gnu.org/copyleft/gpl.html GPL
8 * @package Workflow
9 * @subpackage local
10 * @access public
11 */
12function wf_write_file($filename, $content)
13{
14        /* reject empty file name */
15        if (trim(basename($filename)) == '')
16                return false;
17
18        /* reject "php" extensions */
19        if (strpos(strtolower(strrchr($filename, '.')), 'php') !== false)
20                return false;
21
22        /* check if the file will be stored inside the process resource path */
23        if (strpos($filename, '..') !== false)
24                return false;
25
26        $processPath = GALAXIA_PROCESSES . SEP . $GLOBALS['workflow']['wf_normalized_name'] . SEP . 'resources';
27        $filename = $processPath . SEP . $filename;
28
29        $subDirectories = explode(SEP, substr($filename, strlen($processPath) + 1));
30
31        /* reject directories with empty name */
32        foreach ($subDirectories as $subDir)
33                if (trim($subDir) == "")
34                        return false;
35
36        array_pop($subDirectories);
37        $baseDir = $processPath;
38        foreach ($subDirectories as $subDir)
39        {
40                $baseDir .= SEP . $subDir;
41                if (!is_dir($baseDir))
42                        @mkdir($baseDir, 0770);
43        }
44
45        $fileHandle = fopen($filename, 'w+');
46        fwrite($fileHandle, $content);
47        fclose($fileHandle);
48
49        return true;
50}
51?>
Note: See TracBrowser for help on using the repository browser.