[Phpfreechat-svn] SF.net SVN: phpfreechat: [1201] trunk/src
Status: Beta
Brought to you by:
kerphi
From: <ke...@us...> - 2007-10-28 21:28:01
|
Revision: 1201 http://phpfreechat.svn.sourceforge.net/phpfreechat/?rev=1201&view=rev Author: kerphi Date: 2007-10-28 14:28:05 -0700 (Sun, 28 Oct 2007) Log Message: ----------- Add a test for filemtime behavior (could be problematic on special filesystems) in the file container init step Modified Paths: -------------- trunk/src/containers/file.class.php trunk/src/pfcglobalconfig.class.php trunk/src/phpfreechat.class.php Modified: trunk/src/containers/file.class.php =================================================================== --- trunk/src/containers/file.class.php 2007-10-28 19:22:11 UTC (rev 1200) +++ trunk/src/containers/file.class.php 2007-10-28 21:28:05 UTC (rev 1201) @@ -64,6 +64,24 @@ $errors = array_merge($errors, @test_writable_dir($c->container_cfg_chat_dir, "container_cfg_chat_dir")); $errors = array_merge($errors, @test_writable_dir($c->container_cfg_server_dir, "container_cfg_chat_dir/serverid")); + // test the filemtime php function because it doesn't work on special filesystem + // example : NFS, VZFS + $filename = $c->data_private_path.'/filemtime.test'; + $timetowait = 2; + if (is_writable(dirname($filename))) + { + file_put_contents($filename,'some-data1-'.time(), LOCK_EX); + clearstatcache(); + $time1 = filemtime($filename); + sleep($timetowait); + file_put_contents($filename,'some-data2-'.time(), LOCK_EX); + clearstatcache(); + $time2 = filemtime($filename); + unlink($filename); + if ($time2-$time1 != $timetowait) + $errors[] = "filemtime php fuction is not usable on your filesystem. Please do not use the 'file' container (try the 'mysql' container) or swith to another filesystem."; + } + return $errors; } Modified: trunk/src/pfcglobalconfig.class.php =================================================================== --- trunk/src/pfcglobalconfig.class.php 2007-10-28 19:22:11 UTC (rev 1200) +++ trunk/src/pfcglobalconfig.class.php 2007-10-28 21:28:05 UTC (rev 1201) @@ -1045,14 +1045,13 @@ if (!$this->isInit()) $this->init(); $errors =& $this->getErrors(); - if (count($errors) > 0) + if (count($errors) == 0) { - @unlink($cachefile_lock); // destroy the lock file for the next attempt - echo "<p>"._pfc("Please correct these errors").":</p><ul>"; foreach( $errors as $e ) echo "<li>".$e."</li>"; echo "</ul>"; - exit; + // save the validated config in cache + $this->saveInCache(); } - // save the validated config in cache - $this->saveInCache(); + else + @unlink($cachefile_lock); // destroy the lock file for the next attempt return false; // new cache created } } Modified: trunk/src/phpfreechat.class.php =================================================================== --- trunk/src/phpfreechat.class.php 2007-10-28 19:22:11 UTC (rev 1200) +++ trunk/src/phpfreechat.class.php 2007-10-28 21:28:05 UTC (rev 1201) @@ -98,22 +98,27 @@ { $c =& pfcGlobalConfig::Instance(); $u =& pfcUserConfig::Instance(); - + $output = ''; - pfcI18N::SwitchOutputEncoding($c->output_encoding); - - $path = $c->getFilePathFromTheme('chat.js.tpl.php'); - $t = new pfcTemplate($path); - $t->assignObject($u,"u"); - $t->assignObject($c,"c"); - $output .= $t->getOutput(); + if (count($c->getErrors()) > 0) + { + $output .= "<p>phpFreeChat cannot be initialized, please correct these errors:</p><ul>"; + foreach( $c->getErrors() as $e ) $output .= "<li>".$e."</li>"; $output .= "</ul>"; + } + else + { + pfcI18N::SwitchOutputEncoding($c->output_encoding); + + $path = $c->getFilePathFromTheme('chat.js.tpl.php'); + $t = new pfcTemplate($path); + $t->assignObject($u,"u"); + $t->assignObject($c,"c"); + $output .= $t->getOutput(); + + pfcI18N::SwitchOutputEncoding(); + } - pfcI18N::SwitchOutputEncoding(); - /* - $output .= " // ]]>\n"; - $output .= "</script>\n"; - */ if($return) return $output; else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |