From 531a1559566d9c75481f4bddece6bfcf878f889e Mon Sep 17 00:00:00 2001 From: "godzilla80@gmx.net" <> Date: Fri, 5 Jun 2009 09:13:51 +0000 Subject: Fix Issue#117 - Consider TValidationSummary.DisplayMode="HeaderOnly" if TValidationSummary.ShowMessageBox is set --- HISTORY | 1 + framework/Web/Javascripts/source/prado/validator/validation3.js | 3 +++ 2 files changed, 4 insertions(+) diff --git a/HISTORY b/HISTORY index c68999cd..373b9dae 100644 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,6 @@ Version 3.1.6 to be released BUG: Issue#98 - Missing file in quickstart demo (Chrisotphe) +BUG: Issue#117 - Consider TValidationSummary.DisplayMode="HeaderOnly" if TValidationSummary.ShowMessageBox is set (Yves) BUG: Issue#164 - CultureInfo::validCulture should be declared as a static method (Christophe) Version 3.1.5 May 24, 2009 diff --git a/framework/Web/Javascripts/source/prado/validator/validation3.js b/framework/Web/Javascripts/source/prado/validator/validation3.js index 850536ab..18b1d0c2 100644 --- a/framework/Web/Javascripts/source/prado/validator/validation3.js +++ b/framework/Web/Javascripts/source/prado/validator/validation3.js @@ -727,6 +727,9 @@ Prado.WebUI.TValidationSummary.prototype = */ formatMessageBox : function(messages) { + if(this.options.DisplayMode == 'HeaderOnly' && this.options.HeaderText) + return this.options.HeaderText; + var output = this.options.HeaderText ? this.options.HeaderText + "\n" : ""; for(var i = 0; i < messages.length; i++) { -- cgit v1.2.3 From 4b32a36b9df4b21c8d8a9f3ebc2051fd8a37fb48 Mon Sep 17 00:00:00 2001 From: "godzilla80@gmx.net" <> Date: Sun, 7 Jun 2009 07:12:35 +0000 Subject: Fixed Issue#175 - TBulletedList: Introduce TBulletStyle::None --- HISTORY | 1 + framework/Web/UI/WebControls/TBulletedList.php | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/HISTORY b/HISTORY index 373b9dae..2c7ed70b 100644 --- a/HISTORY +++ b/HISTORY @@ -2,6 +2,7 @@ Version 3.1.6 to be released BUG: Issue#98 - Missing file in quickstart demo (Chrisotphe) BUG: Issue#117 - Consider TValidationSummary.DisplayMode="HeaderOnly" if TValidationSummary.ShowMessageBox is set (Yves) BUG: Issue#164 - CultureInfo::validCulture should be declared as a static method (Christophe) +ENH: Issue#175 - TBulletedList: Introduce TBulletStyle::None (Yves) Version 3.1.5 May 24, 2009 BUG: Issue#55 - TPropertyAccess.get and has don't recognize magic getter __get (Yves) diff --git a/framework/Web/UI/WebControls/TBulletedList.php b/framework/Web/UI/WebControls/TBulletedList.php index 60cf743e..5f4aa49c 100644 --- a/framework/Web/UI/WebControls/TBulletedList.php +++ b/framework/Web/UI/WebControls/TBulletedList.php @@ -103,6 +103,10 @@ class TBulletedList extends TListControl implements IPostBackEventHandler $needStart=false; switch($this->getBulletStyle()) { + case TBulletStyle::None: + $writer->addStyleAttribute('list-style-type','none'); + $needStart=true; + break; case TBulletStyle::Numbered: $writer->addStyleAttribute('list-style-type','decimal'); $needStart=true; @@ -452,6 +456,7 @@ class TBulletedListEventParameter extends TEventParameter class TBulletStyle extends TEnumerable { const NotSet='NotSet'; + const None='None'; const Numbered='Numbered'; const LowerAlpha='LowerAlpha'; const UpperAlpha='UpperAlpha'; -- cgit v1.2.3 From 6eba9f44164f0ba85ddd3619ee5008d13f531d58 Mon Sep 17 00:00:00 2001 From: "godzilla80@gmx.net" <> Date: Sun, 7 Jun 2009 07:38:09 +0000 Subject: enhancement: introduce protected property "Published" in TAssetManager to allow subclasses access --- HISTORY | 1 + framework/Web/TAssetManager.php | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/HISTORY b/HISTORY index 2c7ed70b..06635ee3 100644 --- a/HISTORY +++ b/HISTORY @@ -3,6 +3,7 @@ BUG: Issue#98 - Missing file in quickstart demo (Chrisotphe) BUG: Issue#117 - Consider TValidationSummary.DisplayMode="HeaderOnly" if TValidationSummary.ShowMessageBox is set (Yves) BUG: Issue#164 - CultureInfo::validCulture should be declared as a static method (Christophe) ENH: Issue#175 - TBulletedList: Introduce TBulletStyle::None (Yves) +ENH: TAssetManager: introduce protected property "Published" to allow subclasses access (Yves) Version 3.1.5 May 24, 2009 BUG: Issue#55 - TPropertyAccess.get and has don't recognize magic getter __get (Yves) diff --git a/framework/Web/TAssetManager.php b/framework/Web/TAssetManager.php index 7925d209..4abd1788 100644 --- a/framework/Web/TAssetManager.php +++ b/framework/Web/TAssetManager.php @@ -178,6 +178,24 @@ class TAssetManager extends TModule } } + /** + * @return array List of published assets + * @since 3.1.6 + */ + protected function getPublished() + { + return $this->_published; + } + + /** + * @param $values List of published assets + * @since 3.1.6 + */ + protected function setPublished($values=array()) + { + $this->_published = $values; + } + /** * Returns the published path of a file path. * This method does not perform any publishing. It merely tells you @@ -269,7 +287,7 @@ class TAssetManager extends TModule if(@filemtime($dst.DIRECTORY_SEPARATOR.$file)<@filemtime($src.DIRECTORY_SEPARATOR.$file)) { @copy($src.DIRECTORY_SEPARATOR.$file,$dst.DIRECTORY_SEPARATOR.$file); - @chmod($dst.DIRECTORY_SEPARATOR.$file, PRADO_CHMOD); + @chmod($dst.DIRECTORY_SEPARATOR.$file, PRADO_CHMOD); } } else -- cgit v1.2.3 From cb8f2362ca522fc04b71eaf4d61cb30ad0e73ddf Mon Sep 17 00:00:00 2001 From: "godzilla80@gmx.net" <> Date: Sun, 7 Jun 2009 08:13:34 +0000 Subject: Fixed Issue #168 - TSqlMapXmlConfiguration: CacheModel properties are not set --- HISTORY | 1 + .../Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/HISTORY b/HISTORY index 06635ee3..2e69dc13 100644 --- a/HISTORY +++ b/HISTORY @@ -2,6 +2,7 @@ Version 3.1.6 to be released BUG: Issue#98 - Missing file in quickstart demo (Chrisotphe) BUG: Issue#117 - Consider TValidationSummary.DisplayMode="HeaderOnly" if TValidationSummary.ShowMessageBox is set (Yves) BUG: Issue#164 - CultureInfo::validCulture should be declared as a static method (Christophe) +BUG: Issue#168 - TSqlMapXmlConfiguration: CacheModel properties are not set (Yves) ENH: Issue#175 - TBulletedList: Introduce TBulletStyle::None (Yves) ENH: TAssetManager: introduce protected property "Published" to allow subclasses access (Yves) diff --git a/framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php b/framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php index 462b356f..f6e0acd5 100644 --- a/framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php +++ b/framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php @@ -712,6 +712,20 @@ class TSqlMapXmlMappingConfiguration extends TSqlMapXmlConfigBuilder } $cache = Prado::createComponent($cacheModel->getImplementationClass()); $this->setObjectPropFromNode($cache,$node,$properties); + + foreach($node->xpath('property') as $propertyNode) + { + $name = $propertyNode->attributes()->name; + if($name===null || $name==='') continue; + + $value = $propertyNode->attributes()->value; + if($value===null || $value==='') continue; + + if( !TPropertyAccess::has($cache, $name) ) continue; + + TPropertyAccess::set($cache, $name, $value); + } + $this->loadFlushInterval($cacheModel,$node); $cacheModel->initialize($cache); -- cgit v1.2.3 From 72f37d54a27a3011cea4d52a78d87b472530fda3 Mon Sep 17 00:00:00 2001 From: "godzilla80@gmx.net" <> Date: Sun, 7 Jun 2009 08:51:24 +0000 Subject: Enhancement: TFirePhpLogRoute: bypass to TBrowserLogRoute if headers already sent / php.ini (output_buffering=Off, implicit_flush=On) --- HISTORY | 1 + framework/Util/TLogRouter.php | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/HISTORY b/HISTORY index 2e69dc13..9aaa8e29 100644 --- a/HISTORY +++ b/HISTORY @@ -5,6 +5,7 @@ BUG: Issue#164 - CultureInfo::validCulture should be declared as a static method BUG: Issue#168 - TSqlMapXmlConfiguration: CacheModel properties are not set (Yves) ENH: Issue#175 - TBulletedList: Introduce TBulletStyle::None (Yves) ENH: TAssetManager: introduce protected property "Published" to allow subclasses access (Yves) +ENH: TFirePhpLogRoute: bypass to TBrowserLogRoute if headers already sent / php.ini (output_buffering=Off, implicit_flush=On) (Yves) Version 3.1.5 May 24, 2009 BUG: Issue#55 - TPropertyAccess.get and has don't recognize magic getter __get (Yves) diff --git a/framework/Util/TLogRouter.php b/framework/Util/TLogRouter.php index b7b2f0a3..64a241fb 100644 --- a/framework/Util/TLogRouter.php +++ b/framework/Util/TLogRouter.php @@ -1015,6 +1015,18 @@ class TFirePhpLogRoute extends TLogRoute { if(empty($logs) || $this->getApplication()->getMode()==='Performance') return; + if( headers_sent() ) { + echo ' +
+ TFirePhpLogRoute.GroupLabel "' . $this -> getGroupLabel() . '" - + Routing to FirePHP impossible, because headers already sent! +
+ '; + $fallback = new TBrowserLogRoute(); + $fallback->processLogs($logs); + return; + } + require_once Prado::getPathOfNamespace('System.3rdParty.FirePHPCore') . '/FirePHP.class.php'; $firephp = FirePHP::getInstance(true); $firephp -> setOptions(array('useNativeJsonEncode' => false)); -- cgit v1.2.3 From 5eca5a71c6d3ce82bb15bce57a06f7d84b011c8f Mon Sep 17 00:00:00 2001 From: "godzilla80@gmx.net" <> Date: Sun, 7 Jun 2009 12:31:01 +0000 Subject: Fixed Issue#174 - TErrorHandler: HTTP error messages contains sensitive information --- HISTORY | 1 + framework/Exceptions/TErrorHandler.php | 45 +++++++++++++++++++++++++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/HISTORY b/HISTORY index 9aaa8e29..8a2138da 100644 --- a/HISTORY +++ b/HISTORY @@ -3,6 +3,7 @@ BUG: Issue#98 - Missing file in quickstart demo (Chrisotphe) BUG: Issue#117 - Consider TValidationSummary.DisplayMode="HeaderOnly" if TValidationSummary.ShowMessageBox is set (Yves) BUG: Issue#164 - CultureInfo::validCulture should be declared as a static method (Christophe) BUG: Issue#168 - TSqlMapXmlConfiguration: CacheModel properties are not set (Yves) +ENH: Issue#174 - TErrorHandler: HTTP error messages contains sensitive information (Yves) ENH: Issue#175 - TBulletedList: Introduce TBulletStyle::None (Yves) ENH: TAssetManager: introduce protected property "Published" to allow subclasses access (Yves) ENH: TFirePhpLogRoute: bypass to TBrowserLogRoute if headers already sent / php.ini (output_buffering=Off, implicit_flush=On) (Yves) diff --git a/framework/Exceptions/TErrorHandler.php b/framework/Exceptions/TErrorHandler.php index fa8e6d4a..3b5927d6 100644 --- a/framework/Exceptions/TErrorHandler.php +++ b/framework/Exceptions/TErrorHandler.php @@ -139,6 +139,33 @@ class TErrorHandler extends TModule } } + + /** + * @param string $value + * @param Exception|null$exception + * @return string + * @since 3.1.6 + */ + protected static function hideSecurityRelated($value, $exception=null) + { + $aRpl = array(); + if($exception !== null && $exception instanceof Exception) + { + $aTrace = $exception->getTrace(); + foreach($aTrace as $item) + { + $file = $item['file']; + $aRpl[dirname($file) . DIRECTORY_SEPARATOR] = '' . DIRECTORY_SEPARATOR; + } + } + $aRpl[$_SERVER['DOCUMENT_ROOT']] = '${DocumentRoot}'; + $aRpl[str_replace('/', DIRECTORY_SEPARATOR, $_SERVER['DOCUMENT_ROOT'])] = '${DocumentRoot}'; + $aRpl[PRADO_DIR . DIRECTORY_SEPARATOR] = '${PradoFramework}' . DIRECTORY_SEPARATOR; + $aRpl = array_reverse($aRpl, true); + + return str_replace(array_keys($aRpl), $aRpl, $value); + } + /** * Displays error to the client user. * THttpException and errors happened when the application is in Debug @@ -154,18 +181,30 @@ class TErrorHandler extends TModule $content=$this->getErrorTemplate($statusCode,$exception); $serverAdmin=isset($_SERVER['SERVER_ADMIN'])?$_SERVER['SERVER_ADMIN']:''; - if($this->getApplication()->getMode()===TApplicationMode::Debug) + + $isDebug = $this->getApplication()->getMode()===TApplicationMode::Debug; + + $errorMessage = $exception->getMessage(); + if($isDebug) $version=$_SERVER['SERVER_SOFTWARE'].' PRADO/'.Prado::getVersion(); else + { $version=''; + $errorMessage = self::hideSecurityRelated($errorMessage, $exception); + } $tokens=array( '%%StatusCode%%' => "$statusCode", - '%%ErrorMessage%%' => htmlspecialchars($exception->getMessage()), + '%%ErrorMessage%%' => htmlspecialchars($errorMessage), '%%ServerAdmin%%' => $serverAdmin, '%%Version%%' => $version, '%%Time%%' => @strftime('%Y-%m-%d %H:%M',time()) ); - header("HTTP/1.0 $statusCode ".$exception->getMessage()); + + if($isDebug) + header("HTTP/1.0 $statusCode ".$exception->getMessage(), true, $statusCode); + else + header("HTTP/1.0 $statusCode", true, $statusCode); + echo strtr($content,$tokens); } -- cgit v1.2.3