summaryrefslogtreecommitdiff
path: root/inc/io.php
diff options
context:
space:
mode:
authorandi <andi@splitbrain.org>2005-01-12 21:24:54 +0100
committerandi <andi@splitbrain.org>2005-01-12 21:24:54 +0100
commitf3f0262c480d7e509b008d37c90aed884532bba8 (patch)
tree40b7e7dbf9f52a6b48af7b2f4090ab4cd2fd3f1e /inc/io.php
downloadrpg-f3f0262c480d7e509b008d37c90aed884532bba8.tar.gz
rpg-f3f0262c480d7e509b008d37c90aed884532bba8.tar.bz2
Initial revision.
darcs-hash:20050112202454-9977f-60936f24fe2092a30223627e0683de2df61d0c4a.gz
Diffstat (limited to 'inc/io.php')
-rw-r--r--inc/io.php139
1 files changed, 139 insertions, 0 deletions
diff --git a/inc/io.php b/inc/io.php
new file mode 100644
index 000000000..c84604a43
--- /dev/null
+++ b/inc/io.php
@@ -0,0 +1,139 @@
+<?
+require_once("inc/common.php");
+require_once("inc/parser.php");
+
+
+
+
+/**
+ * Returns the parsed text from the given sourcefile. Uses cache
+ * if exists. Creates it if not.
+ */
+function io_cacheParse($file){
+ global $conf;
+ global $CACHEGROUP;
+ global $parser; //we read parser options
+ $parsed = '';
+ $cache = $conf['datadir'].'/.cache/';
+ $cache .= md5($file.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'].$CACHEGROUP);
+ $purge = $conf['datadir'].'/.cache/purgefile';
+
+ // check if cache can be used
+ $cachetime = @filemtime($cache);
+
+ if( @file_exists($cache) // does the cachefile exist
+ && @file_exists($file) // and does the source exist
+ && !isset($_REQUEST['purge']) // no purge param was set
+ && filesize($cache) // and contains the cachefile any data
+ && ((time() - $cachetime) < $conf['cachetime']) // and is cachefile young enough
+ && ($cachetime > filemtime($file)) // and newer than the source
+ && ($cachetime > @filemtime($purge)) // and newer than the purgefile
+ && ($cachetime > filemtime('conf/dokuwiki.php')) // and newer than the config file
+ && ($cachetime > @filemtime('conf/local.php')) // and newer than the local config file
+ && ($cachetime > filemtime('inc/parser.php')) // and newer than the parser
+ && ($cachetime > filemtime('inc/format.php'))) // and newer than the formating functions
+ {
+ $parsed = io_readFile($cache); //give back cache
+ $parsed .= "\n<!-- cachefile $cache used -->\n";
+ }elseif(@file_exists($file)){
+ $parsed = parse(io_readFile($file)); //sets global parseroptions
+ if($parser['cache']){
+ io_saveFile($cache,$parsed); //save cachefile
+ $parsed .= "\n<!-- no cachefile used, but created -->\n";
+ }else{
+ @unlink($cache); //try to delete cachefile
+ $parsed .= "\n<!-- no cachefile used, caching forbidden -->\n";
+ }
+ }
+
+ return $parsed;
+}
+
+/**
+ * Returns content of $file as cleaned string. Uses gzip if extension
+ * is .gz
+ */
+function io_readFile($file){
+ $ret = '';
+ if(@file_exists($file)){
+ if(substr($file,-3) == '.gz'){
+ $ret = join('',gzfile($file));
+ }else{
+ $ret = join('',file($file));
+ }
+ }
+ return cleanText($ret);
+}
+
+/**
+ * Saves $content to $file. Uses gzip if extension
+ * is .gz
+ *
+ * returns true on success
+ */
+function io_saveFile($file,$content){
+ io_makeFileDir($file);
+ if(substr($file,-3) == '.gz'){
+ $fh = @gzopen($file,'wb9');
+ if(!$fh){
+ msg("Writing $file failed",-1);
+ return false;
+ }
+ gzwrite($fh, $content);
+ gzclose($fh);
+ }else{
+ $fh = @fopen($file,'wb');
+ if(!$fh){
+ msg("Writing $file failed",-1);
+ return false;
+ }
+ fwrite($fh, $content);
+ fclose($fh);
+ }
+ return true;
+}
+
+/**
+ * Create the directory needed for the given file
+ */
+function io_makeFileDir($file){
+ global $conf;
+
+ $dir = dirname($file);
+ umask($conf['dmask']);
+ if(!is_dir($dir)){
+ io_mkdir_p($dir) || msg("Creating directory $dir failed",-1);
+ }
+ umask($conf['umask']);
+}
+
+/**
+ * Creates a directory hierachy.
+ *
+ * @see http://www.php.net/manual/en/function.mkdir.php
+ * @author <saint@corenova.com>
+ */
+function io_mkdir_p($target){
+ if (is_dir($target)||empty($target)) return 1; // best case check first
+ if (@file_exists($target) && !is_dir($target)) return 0;
+ if (io_mkdir_p(substr($target,0,strrpos($target,'/'))))
+ return @mkdir($target,0777); // crawl back up & create dir tree
+ return 0;
+}
+
+/**
+ * Runs an external command and returns it's output as string
+ * inspired by a patch by Harry Brueckner <harry_b@eml.cc>
+ */
+function io_runcmd($cmd){
+ $fh = popen($cmd, "r");
+ if(!$fh) return false;
+ $ret = '';
+ while (!feof($fh)) {
+ $ret .= fread($fh, 8192);
+ }
+ pclose($fh);
+ return $ret;
+}
+
+?>