Re: [fw-general] Re: Zend_Date Behavior: PEBKAC or Bug?
On Thu, Mar 3, 2011 at 1:57 AM, David Muir davidkmuir+z...@gmail.comwrote: Zend_Date is next to useless for validating dates: http://framework.zend.com/issues/browse/ZF-7583 Well, that confirms that. Thanks. You're better off building your own date validator. Everything seems to work as expected as long as you make sure the date is in the expected format (in my case, by inserting a Zend_Validate_Regex rule before Zend_Validate_Date). For example, with that setup, an input of 29.2.2008 (February 29, 2008, a leap year) validates, while an input of 29.2.2009 (February 29, 2009, not a leap year) fails validation, as expected. An input of 2.29.2011 throws an exception (Unable to parse date '2.29.2011' using 'd.M.' (M d)), which is also expected. It's apparently the format that's near useless for validation. It's only seems to be good for hinting at the order in which the various parts should appear in the input. Ryan
Re: [fw-general] Zend_Date Behavior: PEBKAC or Bug?
On Wed, Mar 2, 2011 at 10:56 PM, Simon Walter si...@gikaku.com wrote: On Thursday, March 03, 2011, Ryan Lange wrote: [date_format] = string(5) d.M.y I may be very very wrong about this, but wouldn't that be allowing a single digit for for any of the date parts? Here is what I read: M Month, one or two digit d Day of the month, one or two digit y Year, at least one digit Maybe you should be doing: dd.MM. Maybe you could use a constant, and that will help with localization: Zend_Date::DATE_SHORT That doesn't seem to make a difference. A format of dd.MM. should fail to parse 29.2.2008, but it doesn't. Similarly, a year part of y, yy, or all produce the same result (a successful parsing), whether the year part of the input is 08 or 2008. It seems that the format is only good for hinting at the order of the parts in the input and not the overall format of the input or even the size of the parts. Ryan
[fw-general] Zend_Date Behavior: PEBKAC or Bug?
I'm having an issue with Zend_Date (and, by extension, Zend_Validate_Date) that would seem to qualify as unexpected behavior, but I'm not sure if it's legitimately unexpected or if it's my expectations that are out of whack. First off, some basic information: I'm seeing this issue in ZF 1.11.3 on a FreeBSD 6.4 system with PHP 5.2.14. Ultimately, I'm using Zend_Validate_Date to validate date inputs from a form (e.g. date of birth). Given this code... ?php require 'Zend/Debug.php'; require 'Zend/Locale/Format.php'; Zend_Debug::dump( Zend_Locale_Format::getDate( '123', array( 'date_format' = 'd.M.y', 'format_type' = 'iso', 'fix_date' = false ) ) ); ? ...I would expect it to be unable to parse 123 as a date, since it doesn't follow the specified format. Unfortunately, I get the following output: array(5) { [date_format] = string(5) d.M.y [locale] = string(5) en_US [day] = string(2) 12 [month] = string(1) 3 [year] = bool(false) } This is a problem, because Zend_Validate_Date considers this a valid date. ?php require 'Zend/Debug.php'; require 'Zend/Validate/Date.php'; $validator = new Zend_Validate_Date( array( 'format' = 'd.M.y' ) ); Zend_Debug::dump( $validator-isValid( '123' ) ); ? Output: bool(true) Now, if I use a value of 12.3 instead of 123, I get expected output: array(4) { [date_format] = string(5) d.M.y [locale] = string(5) en_US [day] = string(2) 12 [month] = string(1) 3 } bool(false) So... is what I've described above expected behavior and I'm just doing it wrong, or is it a legitimate bug? (Either way, I suppose I'll need to throw Zend_Validate_Regex into the mix to make sure the input is in the correct format.) Thanks in advance, Ryan Lange
[fw-general] Detecting a routing error in a controller plugin
In an application that I'm creating, I have the need to have all view scripts (including those for modules) in a non-standard directory, as well as change the default extension. The relevant directory structure would look like this: base path/ application/ modules/ ModuleName/ public/ Templates/ zf-views/ module-name/ index/ index.tpl.php error/ error.tpl.php I've decided to use a controller plugin to do this globally: ?php class Emg_Plugin_View extends Zend_Controller_Plugin_Abstract { /** * @var Zend_Controller_Action_Helper_ViewRenderer */ protected $_view_renderer; /** * Sets the view script extension and the base script path before routing * occurs. * * This is done so that, if there's a routing error (e.g. invalid module, * controller, or action), the view script for the error controller can be * found. * * We can't check for the requested module and adjust the path accordingly * because that information hasn't been extracted from the requested URI at * this point. * * @param Zend_Controller_Request_Abstract $request * @return void */ public function routeStartup( Zend_Controller_Request_Abstract $request ) { $this-_getViewRenderer()-setViewSuffix( 'tpl.php' ); $this-_getView()-setScriptPath( PUBLIC_PATH . '/Templates/zf-views' ); } /** * Adjusts the script path for modules. * * @param Zend_Controller_Request_Abstract $request * @return void */ public function dispatchLoopStartup( Zend_Controller_Request_Abstract $request ) { if( 'default' != $request-getModuleName() ) { $this-_getView()-setScriptPath( PUBLIC_PATH . '/Templates/zf-views/' . $request-getModuleName() ); } } /** * @return Zend_Controller_Action_Helper_ViewRenderer */ protected function _getViewRenderer() { if( null === $this-_view_renderer ) { $this-_view_renderer = Zend_Controller_Action_HelperBroker::getStaticHelper( 'ViewRenderer' ); } return $this-_view_renderer; } /** * @return Zend_View_Interface */ protected function _getView() { return $this-_getViewRenderer()-view; } } The problem I'm running into is that if a non-existent controller or action is requested in the ModuleName module (let's say /module-name/foo), I get the following exception: Fatal error: Uncaught exception 'Zend_View_Exception' with message 'script 'error/error.tpl.php' not found in path (base path/application/views/scripts/:base path/htdocs/Templates/zf-views/module-name/)' in base path/library/Zend/View/Abstract.php:980 Stack trace: #0 base path/library/Zend/View/Abstract.php(876): Zend_View_Abstract-_script('error/error.tpl...') #1 base path/library/Zend/Controller/Action/Helper/ViewRenderer.php(898): Zend_View_Abstract-render('error/error.tpl...') #2 base path/library/Zend/Controller/Action/Helper/ViewRenderer.php(919): Zend_Controller_Action_Helper_ViewRenderer-renderScript('error/error.tpl...', NULL) #3 base path/library/Zend/Controller/Action/Helper/ViewRenderer.php(958): Zend_Controller_Action_Helper_ViewRenderer-render() #4 base path/library/ in base path/library/Zend/View/Abstract.php on line 980 Not surprisingly, given the code above, it's trying to look for the error view script in ModuleName's view script path. What I need to do is, in dispatchLoopStartup(), forgo updating the script path with the module name if there's been a routing error. I'm just not sure how to go about that. I've tried both of the following if conditions... if( 'default' != $request-getModuleName() 'error' != $request-getControllerName() ) { ...and... if( 'default' != $request-getModuleName() null === $request-getParam( 'error_handler' ) ) { ...but neither have solved my problem. Any help would be appreciated. Any suggestions on how to handle the situation in general more elegantly would also be appreciated. ;o) Thanks, Ryan Lange
Re: [fw-general] Detecting a routing error in a controller plugin
Hi Hector, Thanks for the response. If I'm understanding you correctly, you're suggesting I do something like this: class ErrorController extends Zend_Controller_Action { /** * @return void */ public function errorAction() { // Snipped code... $this-renderScript( '../error/error.tpl.php' ); } } There are two issues with this, though: 1) it requires disabling LFI protection, and 2) with LFI protection disabled, it works in the case of modules (e.g. /module-name/foo), but breaks when routing errors occur in the default module (e.g. /foo). Thanks again, Ryan On Fri, Feb 18, 2011 at 4:27 PM, Hector Virgen djvir...@gmail.com wrote: In your error controller, at the end of the errorAction() method, make a call to $this-renderScript() and pass in a relative path to your error script template -- relative as in relative to one of your view script paths. I hope this helps! -- *Hector Virgen* Sr. Web Developer http://www.virgentech.com On Fri, Feb 18, 2011 at 12:14 PM, Ryan Lange cl1mh422...@gmail.comwrote: In an application that I'm creating, I have the need to have all view scripts (including those for modules) in a non-standard directory, as well as change the default extension. The relevant directory structure would look like this: base path/ application/ modules/ ModuleName/ public/ Templates/ zf-views/ module-name/ index/ index.tpl.php error/ error.tpl.php I've decided to use a controller plugin to do this globally: ?php class Emg_Plugin_View extends Zend_Controller_Plugin_Abstract { /** * @var Zend_Controller_Action_Helper_ViewRenderer */ protected $_view_renderer; /** * Sets the view script extension and the base script path before routing * occurs. * * This is done so that, if there's a routing error (e.g. invalid module, * controller, or action), the view script for the error controller can be * found. * * We can't check for the requested module and adjust the path accordingly * because that information hasn't been extracted from the requested URI at * this point. * * @param Zend_Controller_Request_Abstract $request * @return void */ public function routeStartup( Zend_Controller_Request_Abstract $request ) { $this-_getViewRenderer()-setViewSuffix( 'tpl.php' ); $this-_getView()-setScriptPath( PUBLIC_PATH . '/Templates/zf-views' ); } /** * Adjusts the script path for modules. * * @param Zend_Controller_Request_Abstract $request * @return void */ public function dispatchLoopStartup( Zend_Controller_Request_Abstract $request ) { if( 'default' != $request-getModuleName() ) { $this-_getView()-setScriptPath( PUBLIC_PATH . '/Templates/zf-views/' . $request-getModuleName() ); } } /** * @return Zend_Controller_Action_Helper_ViewRenderer */ protected function _getViewRenderer() { if( null === $this-_view_renderer ) { $this-_view_renderer = Zend_Controller_Action_HelperBroker::getStaticHelper( 'ViewRenderer' ); } return $this-_view_renderer; } /** * @return Zend_View_Interface */ protected function _getView() { return $this-_getViewRenderer()-view; } } The problem I'm running into is that if a non-existent controller or action is requested in the ModuleName module (let's say /module-name/foo), I get the following exception: Fatal error: Uncaught exception 'Zend_View_Exception' with message 'script 'error/error.tpl.php' not found in path (base path/application/views/scripts/:base path/htdocs/Templates/zf-views/module-name/)' in base path/library/Zend/View/Abstract.php:980 Stack trace: #0 base path/library/Zend/View/Abstract.php(876): Zend_View_Abstract-_script('error/error.tpl...') #1 base path/library/Zend/Controller/Action/Helper/ViewRenderer.php(898): Zend_View_Abstract-render('error/error.tpl...') #2 base path/library/Zend/Controller/Action/Helper/ViewRenderer.php(919): Zend_Controller_Action_Helper_ViewRenderer-renderScript('error/error.tpl...', NULL) #3 base path/library/Zend/Controller/Action/Helper/ViewRenderer.php(958): Zend_Controller_Action_Helper_ViewRenderer-render() #4 base path/library/ in base path/library/Zend/View/Abstract.php on line 980 Not surprisingly, given the code above, it's trying to look for the error view script in ModuleName's view script path. What I need to do is, in dispatchLoopStartup(), forgo updating the script path with the module name if there's been a routing error. I'm just not sure how to go about that. I've tried both of the following if conditions... if( 'default' != $request-getModuleName() 'error' != $request
Re: [fw-general] Letter case problem in Zend_Http_Response
Hi all, On Fri, Oct 15, 2010 at 1:12 AM, Matthew Weier O'Phinney matt...@zend.com wrote: I think this may be due to how PHP handles header names, particularly the Location header. However, I'm not 100% positive; hopefully Shahar (author of the component) will jump in to respond. The problem is if the response header contains two words or more, e.g. Content-Type It will be converted into Content-type IMHO, it is so strange and I see no point of converting, unless it is part of some standard.
Re: [fw-general] Letter case problem in Zend_Http_Response
On Fri, Oct 15, 2010 at 9:23 PM, Matthew Weier O'Phinney matt...@zend.com wrote: Again, are you running into _actual_ issues? Whether or not the conversion is necessary is a pointless argument at this point; the question is: is the behavior leading to problems? And would changing it open new issues elsewhere? Not an actual issue, otherwise I have already reported a bug. I just want to make sure if it is just a matter of author's taste, or in fact I have missed some important stuffs. When you do something, there must be some reasons behind, that's what I want to classify.
[fw-general] Letter case problem in Zend_Http_Response
I have read the Zend_Http_Response: http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Http/Response.php The headers were constructed using... $this-headers[ucwords(strtolower($name))] = $value; So only 1st character will be upper case, others will be lower case. Is it part of a standard? If yes, any document/reference/link? Thanks.
Re: [fw-general] Letter case problem in Zend_Http_Response
Hi, On Fri, Oct 15, 2010 at 12:32 AM, Artem Stepin aste...@24h.de wrote: this should help: http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 Each header field consists of a name followed by a colon (:) and the field value. Field names are case-insensitive. So I just wonder why only 1st letter is uppercase.
[fw-general] Zend_Log_Writer_Db and Firebug don't seem to work well together...
There's no outright conflict, per se, but the expectations of each writer can create issues when logging objects (at least). Zend_Log_Writer_Firebug can handle objects, but Zend_Log_Writer_Db, at some point in its execution, apparently attempts to call the __toString() magic method on objects. This causes a couple issues: 1) For classes, like Zend_Controller_Request_Http, that don't implement the __toString() magic method, logging an instance of that class causes Zend_Log_Writer_Db to throw an exception while Zend_Log_Writer_Firebug will handle it just fine. 2) What if you want to log the structure of, say, an instance of Zend_Form (for debugging), not the string representation? You could use something like print_r() and pass the output to the logger to accomodate Zend_Log_Writer_Db, but then you lose out on the object rendering feature of Zend_Log_Writer_Firebug. Does anyone have any suggestions for working around these issues? Thanks in advance, Ryan
[fw-general] Re: Zend_Log_Writer_Db and Firebug don't seem to work well together...
On Mon, Oct 11, 2010 at 11:57 AM, Ryan Lange cl1mh422...@gmail.com wrote: There's no outright conflict, per se, but the expectations of each writer can create issues when logging objects (at least). Zend_Log_Writer_Firebug can handle objects, but Zend_Log_Writer_Db, at some point in its execution, apparently attempts to call the __toString() magic method on objects. This causes a couple issues: 1) For classes, like Zend_Controller_Request_Http, that don't implement the __toString() magic method, logging an instance of that class causes Zend_Log_Writer_Db to throw an exception while Zend_Log_Writer_Firebug will handle it just fine. 2) What if you want to log the structure of, say, an instance of Zend_Form (for debugging), not the string representation? You could use something like print_r() and pass the output to the logger to accomodate Zend_Log_Writer_Db, but then you lose out on the object rendering feature of Zend_Log_Writer_Firebug. Does anyone have any suggestions for working around these issues? Thanks in advance, Ryan I thought maybe I'd extend Zend_Log_Writer_Db and modify the _write() method to convert non-string event messages to strings using print_r(), but all of the class properties of Zend_Log_Writer_Db ($_db, $_table, and $_columnMap) are set to private. So, naturally, when my overridden _write() method makes sure that the $_db property is not null, it's denied access and results in an exception informing me that it is null. Bleh... Ryan
Re: [fw-general] Re: Rendering miscellaneous view scripts from within an action
On Thu, Aug 12, 2010 at 9:42 AM, Ryan Lange cl1mh422...@gmail.com wrote: On Wed, Aug 11, 2010 at 12:22 PM, Hector Virgen djvir...@gmail.comwrote: You could also use a partial. Partials handle the cloning/var-clearing for you. Also, be careful with getViewScript(), because it adds a suffix based on the context. It's .phtml by default, but it could be .ajax.phtml if you're using the AjaxContext action helper. -- Hector Virgen Sent on my Droid X Regarding using a partial, do you mean something like this? ?php $mail-setBodyHtml( $this-view-partial( 'emails/client.phtml' ) ); ? It turns out that this does not work for my purposes. The initial problem that I encountered exists with this method, too; the module, controller, and action parts aren't present in the view script path. It appears that I must make use of the ViewRenderer helper if I want to prevent potential refactoring errors down the road. I'll just have to work around the possible context switching issue if I ever encounter it. Thanks, Ryan
Re: [fw-general] can _getParam() get $_POST['bar']['foo'] ?
Currently, _getParam() can't access $_POST['person']['email'] directly. I miss this ability myself. I might be nice to add support by passing an array of keys: $this-_getParam(array('person', 'email'), $default); I believe this would need to be added to the controller and request classes. File a ticket in JIRA, and I'll take a look. On Mon, Aug 30, 2010 at 9:14 AM, David Mintz da...@davidmintz.org wrote: Just wondering if there's a way for a controller to use $this-_getParam() directly to get a POST datum which itself is within an array. Like with a subform for example. So if you have $_POST['person']['email'] can you get at the email in one _getParam() call? Or do you have to $person = $this-_getParam('person') ; and then work with $person['email'] ? -- Support real health care reform: http://phimg.org/ -- David Mintz http://davidmintz.org/ -- Jordan Ryan Moore
[fw-general] [Zend_Form] Filtering or validating a composite element's array of values
I have a composite element (MultiCheckbox for pre-defined values + Text for custom values; all having the same name) that is having validation problems. The field is required (at the very least, one of the checkboxes must be checked *or* there must be a value in the text field). The problem is that text fields are always submitted and a NotEmpty validator will fail on an empty text field, even if one of the boxes is checked. Even a custom validator that uses the $context parameter is not ideal, as it will still be called for each and every value in the element's array. A similar problem with Zend_Filter_Input was worked around by hacking in a TRAVERSE_ARRAY boolean option, but that seems impossible to implement in Zend_Form without rebuilding the entire Zend_Form_Element_* family on top of a custom validator class. Does anyone have any thoughts on this? Thanks, Ryan
[fw-general] Re: [Zend_Form] Filtering or validating a composite element's array of values
On Mon, Aug 30, 2010 at 1:29 PM, Ryan Lange cl1mh422...@gmail.com wrote: I have a composite element (MultiCheckbox for pre-defined values + Text for custom values; all having the same name) that is having validation problems. The field is required (at the very least, one of the checkboxes must be checked *or* there must be a value in the text field). The problem is that text fields are always submitted and a NotEmpty validator will fail on an empty text field, even if one of the boxes is checked. Even a custom validator that uses the $context parameter is not ideal, as it will still be called for each and every value in the element's array. A similar problem with Zend_Filter_Input was worked around by hacking in a TRAVERSE_ARRAY boolean option, but that seems impossible to implement in Zend_Form without rebuilding the entire Zend_Form_Element_* family on top of a custom validator class. Does anyone have any thoughts on this? Thanks, Ryan Wait... I think I'm missing the trees for the forest here. I think the solution is to just override the isValid() method of my composite element. /facepalm Ryan
Re: [fw-general] Re: Rendering miscellaneous view scripts from within an action
On Wed, Aug 11, 2010 at 12:22 PM, Hector Virgen djvir...@gmail.com wrote: You could also use a partial. Partials handle the cloning/var-clearing for you. Also, be careful with getViewScript(), because it adds a suffix based on the context. It's .phtml by default, but it could be .ajax.phtml if you're using the AjaxContext action helper. -- Hector Virgen Sent on my Droid X Regarding using a partial, do you mean something like this? ?php $mail-setBodyHtml( $this-view-partial( 'emails/client.phtml' ) ); ? That would probably be a lot cleaner. The only problem I see with that method—in my case, specifically—is that I send two slightly different emails containing roughly the same information; one to our client(s), the other as an internal notification. Using a full view object allows me to assign the view variables once, then render two different scripts. I'm not opposed to assigning the information for each email (it may be good to enforce some separation), but is there a way to avoid this? I think placeholders would do the trick, but it sounds like anything put in a placeholder would be available to all view scripts, not just the email-related scripts. Hmm... Thanks, Ryan
[fw-general] Re: Rendering miscellaneous view scripts from within an action
If anyone's interested, I've found a workable solution: ?php $mail_view = clone $this-view; $mail_view-clearVars(); $mail = new Zend_Mail( 'UTF-8' ); $mail-setBodyHtml( $mail_view-render( $this-getHelper( 'ViewRenderer' )-getViewScript( 'emails/client' ) ) ); ? This code is placed within an action method. Cloning the controller's view object allows me to use the automatically generated paths for the view rather than build them up from scratch myself. So, the view script that gets rendered might be something like /application/views/scripts[controller]/[action]/emails/client.[suffix] or, if within a module, /application/modules/[module]/views/scripts[controller]/[action]/emails/client.[suffix]. This only works because ViewRenderer::getViewScript() accepts directory separators in the action name. That seems odd to me, but I'm thankful for it at the moment. On Wed, Feb 24, 2010 at 9:46 PM, Ryan Lange cl1mh422...@gmail.com wrote: Using the Zend_Application and the whole MVC shebang I have a controller action that needs to assemble and send an HTML email. I want to use Zend_View to render the body of the email and would like to keep the view script in a subfolder of the controller's view script folder. I understand that the ViewRenderer action helper is responsible for setting the script path based on module/controller when auto-rendering, but I'm not sure how to use that to my advantage for mid-action rendering, or if it's even possible. I could set the script path manually, but I was hoping for an easier and less error-prone (say, in the event of a refactoring) method. Thanks in advance, Ryan
[fw-general] Issues with non-default view script path in Zend_Application
I'm writing an application in 1.10.7 using Zend_Application. Due to front-end design considerations, I have to change the location of the view scripts (and only the view scripts). I have a few issues, though... == #1: Repetition == It appears that this needs to be done in each module's bootstrap. So, I do this in the default bootstrap file: ?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initModifiedView() { $this-bootstrap( 'View' ); $view = $this-getResource( 'View' ); $view-setScriptPath( realpath( APPLICATION_PATH . '/../custom/path' ) ); } } ? But I also have to do this in the Module bootstrap file, adding the module's name to the path: ?php class Module_Bootstrap extends Zend_Application_Module_Bootstrap { protected function _initModifiedView() { $this-bootstrap( 'View' ); $view = $this-getResource( 'View' ); $view-setScriptPath( realpath( APPLICATION_PATH . '/../custom/path/module' ) ); } } ? Is there a better way to do this globally and still have modules looking in the correct directory? A controller plugin, perhaps? (I'm hoping a better solution to this issue will make the next two disappear.) == #2: Default Paths Still Present == Zend_View::setScriptPath() overrides the default path(s). Unfortunately, that doesn't appear to be the case here. Dumping the view object (inside of a view script) reveals that the default path is still being checked. [script] = array(2) { [0] = string(86) [base]/application/views/scripts/ [1] = string(69) [base]/custom/path/ } [script] = array(2) { [0] = string(86) [base]/application/modules/module/views/scripts/ [1] = string(69) [base]/custom/path/module/ } While this makes sense to me—these paths must be generated some time after bootstrapping and then added to the view resource object—it's not very optimal. I'd like to completely override the default view script path. Any suggestions? == #3: Error Handling in Modules == If ErrorController::errorAction() needs to be invoked by an exception in a module, it seems to check the default default view script path, the Module default view script path, and the Module custom view script path, but *not* the default custom view script path: [base]/application/views/scripts/ [base]/application/modules/module/views/scripts/ [base]/custom/path/module/ Consequently, with my setup, the view script for the error controller/action can't be found, resulting in a fatal error. Any help with these would be much appreciated. Thanks, Ryan
[fw-general] [Zend_Queue] How do you deal with repeated failures?
I'm using Zend_Queue (Db adapter, specifically) to store emails that are generated by a front-end script to be processed by a back-end script (via cron). Nothing out of the ordinary, really. The problem is that these emails can fail for any number of reasons (the user entering information on the front-end script may typo their email address; the recipient's email address may no longer be valid; etc.). These errors are logged so that they can be investigated by a human, but I'd like for the queue to just give up on the problematic email after a few tries. Unfortunately, there's doesn't seem to be a built-in mechanism for keeping track of the number of times a specific message has been receive()d. Does anyone have any tips on how to handle this situation? Thanks, Ryan
Re: [fw-general] Disable prepare statement in Zend_Db_Select
Hi, On Tue, Jun 8, 2010 at 12:47 AM, Bill Karwin b...@karwin.com wrote: Keep in mind that the round-trip you fear incurs too much overhead is actually not always a problem. This article shows that at least in some cases, a prepared MySQL query actually runs 14% _faster_ than a non-prepared query: http://www.mysqlperformanceblog.com/2006/08/02/mysql-prepared-statements/ After reading the article, I think 'Query cache does not work is a strong enough reason not to use prepare statement.
[fw-general] Disable prepare statement in Zend_Db_Select
Hello, I have traced the source code of ZFW, and found the database adapter Zend_Db_Adapter_Mysqli always do a prepare when execute any SQL. However, I found it is not needed, since most of my query only run once in their life cycle - no reuse is needed. It is possible to disable auto prepare so it can save a MySQL roundtrip for the prepare statement? Thanks.
Re: [fw-general] Re: Trying to add some data to database from a form
On Mar 19, 2010, at 14:56, stelios wrote: ok i figured out the problem with your help, thanks for giving me to understand how it works. i moved my .php files here application\custom\modules and my images at application\custom\art so i have to change the image links in my php files can you help me ? first it is wrong to put my php code under this directories ? / logo.png what i have to put in logo.png place in order to work ? i put APPLICATION_PATH./custom/art/logo.png but it doesn't work. Images and anything else that needs to be served up directly by the web server goes in the public directory. As vb said, please spend some more time reading how the framework works. Maybe go through a couple tutorials. It will help make things a bit clearer.
Re: [fw-general] Getting error when I try to create first project command line
On Mar 19, 2010, at 13:25, Jason Lehman wrote: I followed the installation directions but when I run the client I get: PHP Fatal error: Cannot access self:: when no class scope is active in /var/backup/zendframeworks/ZendFramework-1.10.2/library/Zend/Tool/Framework/Provider/Signature.php on line 355 I have the path to the library in my php.ini and I see it when I do a php -i on the command line. I am on CentOS 5.3 and using php 5.1.6 and ZendFramework 1.10.2. PHP 5.2.4 or later is required. http://framework.zend.com/manual/en/requirements.introduction.html
Re: [fw-general] Problems with Zend_Mail
On Mar 17, 2010, at 02:58, Mads Lie Jensen wrote: I'm using Zend_Mail to send out emails from inside a controller. The mail is sent like this: $tilmeldingAdresse = $this-_config-email-tilmelding-adresse; $tilmeldingNavn = utf8_decode($this-_config-email-tilmelding-navn); $mail = new Zend_Mail('iso-8859-15'); $mail-setBodyText($content) -setBodyHtml($contentHtml) -setFrom($tilmeldingAdresse, $tilmeldingNavn) -addCc($tilmeldingAdresse, $tilmeldingNavn) -setHeaderEncoding(Zend_Mime::ENCODING_BASE64) -setSubject('Tilmelding til Lionsmesse'); if ($til) { $mail-addTo($til, ''); } $mail-send(); Mail is sent ok, and when testing it arrives in my own mailbox as it should, looking ok. But, some users, all using Outlook Express to view their emails gets this: From: =?iso-8859-1?Q?Lions=20Club=20Vr=E5?= Cc: tilmeld...@vishvaddukan.dk Date: Thu, 04 Mar 2010 16:14:34 +0100 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline MIME-Version: 1.0 Message-Id: 20100304151434.b08d967a...@quercus.palustris.dk X-CM-Analysis: v=1.1 cv=x4l5IIzddOdcCTxRlIDdCFlHT+bXbyaqAaDtMn28a6o= c=1 sm=0 a=Jf0yzMfKMQz/KcSIlVTSog==:17 a=69EAbJre:8 a=gWR6SqXC:8 a=W3anHg1yuHC3kRP9Y-gA:9 a=noP2OTjU9ZttMICO4cZeWNtITM4A:4 a=j_f3kYImlrQA:10 a=EfJqPEOeqlMA:10 a=HpAAvcLHHh0Zw7uRqdWCyQ==:117 =0ATak for tilmeldingen til Kunstmesse 2010=0A=0ADenne messe finder sted= L=F8rdag den 25. september 2010 - s=F8ndag den 26. september 2010=0A=0A= Du har indtastet f=F8lgende data:=0A=0A Tilmelding nr.: 125=0A= Navn: Morten Gaarden=0A Adresse: Pr=E6steg=E5rdsvej 49=0A = Postnr./by: 9480 L=F8kken=0A Telefon: 23367889=0A = Email: mortengaar...@hotmail.com=0a Jeg udstiller: Malerier=0A Beskr= ivelse:=0A=0A=0A=0A Stand nr.: 24 - Type 5 - 3,5x3,5 meter - 1100,- kr.= =0A=0A=0A Tilbeh=F8r:=0ABord - 50,- kr.=0AStol= - 10,- kr.=0AStr=F8m - 100,- kr.=0A=0A=0A Pris i a= lt: 1260 kr.=0A=0AVi skal have din indbetaling hurtigst muligt, og senes= t d.=0Amandag den 5. juli 2010.=0A=0ABel=F8bet (1260,- kr.) skal inds=E6= ttes p=E5 konto: 9070 1620353066- HUSK at angive navn samt tilmeldingsnr= . 125=0A=0AN=E5r din indbetaling er registreret vil du v=E6re at finde p= =E5 siden http://www.vishvaddukan.dk/udstilling/udstillere/.=0A=0A=0A--= =0AMed venlig hilsen,=0ALions Club, Vr=E5.=0A What am I doing wrong here? In my own mailprogram (Forte Agent) it is showing as a nicely formatted text-email. Viewing it from my gmail account it is also shown as expected. I haven't used Zend_Mail, but I have done some newsletter emailing so I have some experience with common mail sending errors. Mail standards say line endings in email must be the DOS CRLF pair, on all platforms. In your email I see a lot of =0A which is the encoding for the UNIX LF line ending. Is it possible your code, or Zend Framework code, is using \n or PHP_EOL as a line separator? If so, that would be an error; the line separator must be \r\n. Some mail servers and mail clients are pickier about this than others, which would explain why only some of your users see this problem.
[fw-general] Re: Purpose of .zfproject.xml project file (was: Re: Quickstart and enable layout 1.10.2)
On Mar 13, 2010, at 06:43, Rob Allen wrote: On 11 Mar 2010, at 16:32, Jeffery wrote: I had copied the visible directories and files to another location. I missed the .zfproject.xml file It's a shame there's not a zf recreated projectfile command :) Does the .zfproject.xml file in fact serve any purpose at all other than wasting my time? I have found it very inconvenient to need to update it every time I manually add a model or controller or whatever, or to fix it after I zf created something only to decide I needed to rename it later, but actually the application seems to work fine no matter what the project file contains, or indeed even if I delete the project file entirely. So what is it there for?
[fw-general] Generate code coverage report using phpunit/xdebug - using autoload
Hi, Is it possible to config/bootstrap so it can generate code coverage report if I am using autoload? I am following the codes in: http://code.google.com/p/zendcasts/source/browse/trunk/zc25-unit-testing/tests/application/bootstrap.php Any suggestion is highly recommended.
[fw-general] Redundant include paths in Zend_Tool-generated projects?
When you create a project with Zend_Tool, it appears to add library/ to the include path twice; once in application/configs/application.ini and again in public/index.php. == application/configs/application.ini == includePaths[] = APPLICATION_PATH /../library == public/index.php == set_include_path( implode( PATH_SEPARATOR, array( realpath( APPLICATION_PATH . '/../library' ), get_include_path(), ) ) ); Am I correct in assuming that this is simply redundant?
Re: [fw-general] Redundant include paths in Zend_Tool-generated projects?
On Mon, Mar 1, 2010 at 11:46 AM, Hector Virgen djvir...@gmail.com wrote: That looks redundant to me. Can you verify that your include path actually contains the same path twice? -- Hector Yep. get_include_path() returns /path/to/application/../library:/path/to/library:.:/usr/local/php5/lib/php.
[fw-general] Is there a way to suppress specific validator error messages?
My specific concern is with Zend_Validate_EmailAddress and host name validation. In the case of an input like exam...@examplecom (missing period in the host name), the validator returns 3 distinct error messages. Zend_Validate_EmailAddress sets its own message for host name validation failure, but it also pulls in all error messages (in this case, 2) from the Zend_Validate_Hostname instance it uses. Now, showing the user 3 error messages that say essentially the same thing (Your email address appears to be invalid) seems a bit much. Keep in mind that this is not a question about *customizing* validator messages. I use Zend_Translate for that purpose, but, in my case, I'm still left with 3 identical error messages. I'm wondering if anyone knows of a way to simply throw away specific error messages. (On a whim, I tried setting the message templates to NULL, but that just ends up returning an empty string.) Thanks in advance, Ryan
Re: [fw-general] custom validation error messages in ZF = 1.8
It appears I was using an older version of ZF (1.9.1, specifically). This issue was apparently fixed in v1.9.3 ( http://framework.zend.com/issues/browse/ZF-7034). Silly me. On Tue, Dec 1, 2009 at 11:14 AM, Ryan Lange cl1mh422...@gmail.com wrote: It looks like Zend_Filter_Input, for some reason, automatically runs a NotEmpty validator on every field. The message you're seeing is Zend_Filter_Input's NOT_EMPTY_MESSAGE. Setting the ALLOW_EMPTY meta command will get rid of it, but, of course, won't run your own NotEmpty validator. I haven't figured out a way to override this, though. And customizing NOT_EMPTY_MESSAGE is out of the question, because I want per-field messages (that don't reference the field name). Does anyone have a solution? On Thu, Aug 20, 2009 at 10:59 AM, David Mintz da...@davidmintz.orgwrote: I could use some help figuring out how to override the default validation error messages with my own. Consider this snippet, based on the example in the docs: $validators = array( 'month' = array( 'NotEmpty', 'Digits', 'messages' = array( 0 ='my custom message: this is empty', 1='my custom message: this ain\'t digits!'), ) ); $input = new Zend_Filter_Input(null,$validators, array( 'month'='' ) ); if ($input-isValid()) { echo input is valid\n ; } else { print_r($input-getMessages()); } Output when I run this in 1.7.8: Array ( [month] = Array ( [isEmpty] = my custom message: this is empty yo [stringEmpty] = '' is an empty string ) ) Output when I run this in 1.9.0: (undesired): Array ( [month] = Array ( [isEmpty] = You must give a non-empty value for field 'month' ) ) I am having this problem with several Zend validation classes, not just Zend_Validate_NotEmpty. Any help is much appreciated. -- David Mintz http://davidmintz.org/ The subtle source is clear and bright The tributary streams flow through the darkness
Re: [fw-general] custom validation error messages in ZF = 1.8
It looks like Zend_Filter_Input, for some reason, automatically runs a NotEmpty validator on every field. The message you're seeing is Zend_Filter_Input's NOT_EMPTY_MESSAGE. Setting the ALLOW_EMPTY meta command will get rid of it, but, of course, won't run your own NotEmpty validator. I haven't figured out a way to override this, though. And customizing NOT_EMPTY_MESSAGE is out of the question, because I want per-field messages (that don't reference the field name). Does anyone have a solution? On Thu, Aug 20, 2009 at 10:59 AM, David Mintz da...@davidmintz.org wrote: I could use some help figuring out how to override the default validation error messages with my own. Consider this snippet, based on the example in the docs: $validators = array( 'month' = array( 'NotEmpty', 'Digits', 'messages' = array( 0 ='my custom message: this is empty', 1='my custom message: this ain\'t digits!'), ) ); $input = new Zend_Filter_Input(null,$validators, array( 'month'='' ) ); if ($input-isValid()) { echo input is valid\n ; } else { print_r($input-getMessages()); } Output when I run this in 1.7.8: Array ( [month] = Array ( [isEmpty] = my custom message: this is empty yo [stringEmpty] = '' is an empty string ) ) Output when I run this in 1.9.0: (undesired): Array ( [month] = Array ( [isEmpty] = You must give a non-empty value for field 'month' ) ) I am having this problem with several Zend validation classes, not just Zend_Validate_NotEmpty. Any help is much appreciated. -- David Mintz http://davidmintz.org/ The subtle source is clear and bright The tributary streams flow through the darkness
Re: [fw-general] User uploads file bigger than what's allowed in php.ini, can it be caught?
This is an old thread, but I noticed that no one actually hit upon the *real* problem. On Mon, Feb 16, 2009 at 7:28 AM, bytte thomas.bytteb...@gmail.com wrote: Bug in my code or bug in Zend Framework? Neither. It's an unfortunate short-coming of PHP itself. http://us3.php.net/manual/en/ini.core.php#ini.post-max-size : If the size of post data is greater than post_max_size, the $_POST and $_FILES superglobals are empty. Files are uploaded as post data. If the file being uploaded pushes the post data beyond the size allowed in php.ini, you get empty $_POST and $_FILES superglobals, which is why ZF complains about not being able to find your file field.
Re: [fw-general] Split controller actions into multiple classes
Hello, On Mon, Sep 21, 2009 at 9:55 PM, Matthew Weier O'Phinney matt...@zend.com wrote: If it is repetitive presentation logic you could sub-class the Zend_Controller_Action or create action helpers if the repeating logic are cross cutting concerns. Keep in mind the saying is fat model thin controller not just thin controller For example, do you think the following code is a thick controller? and difficult to manage? http://howachen.googlepages.com/test.php For me, it is. It would be better to manage if each action is in a separate PHP class file, isn't?
[fw-general] Split controller actions into multiple classes
Hello, I have a controller that contains too many line of codes, which made the controller too large. So I want to split each action into eactly one class files. Is it recommended? If not, what are the recommended way to make the controller thin? Thanks.
Re: [fw-general] Split controller actions into multiple classes
Hello, On Fri, Sep 18, 2009 at 9:48 PM, Sudheer Satyanarayana sudhee...@binaryvibes.co.in wrote: On Friday 18 September 2009 07:10 PM, Ryan Chan wrote: Consider splitting your code into multiple controllers and perhaps modules. Do you have model classes by the way? Consider the following design. Model class: = User Controller: = Auth Actions: = Registration Login Logout ResetPassword EmailVerification as you can see, even I put a lot of code in model - User, that are still too many action in auth controller. Thanks...
[fw-general] Why serialize twice for Zend_Cache?
Hello, I am using Zend_Cache with Zend_Cache_Backend_Memcached (which is using php_memcache) extension. Since the php_memcache extension already do serialization automatically, but Zend_Cache would need me to serialize me before saving into cache, so this turn out that the data actually stored in memcached was serialize twice times. Anyone got the same experience. Thanks.
[fw-general] Lazy loading of Zend DB
Hello, I followed the tutorial at: http://framework.zend.com/docs/quickstart/create-a-model-and-database-table However, I am using pdo_mysql. It seems that if I put db setting, resources.db.adapter = xxx in the application.ini config, even my controller action don't need the database query, the zfw still need to create connection to the DB? Is it possible to connect only if needed? Thanks.
Re: [fw-general] Unit Testing ZFW
Hello, On Mon, Aug 3, 2009 at 10:08 PM, Tim Fountaint...@tfountain.co.uk wrote: When you increased the memory limit, did the error above change to Allowed memory size of 1073741824 bytes exhausted...? If not, remember that the command line version of PHP has its own php.ini file, so make sure you're editing the correct one. -- Yes, when memory is increased to 1GB, then it will die at another place. I have verified my memory setting using php -i | grep memory Anyone can run the unit test successfully?
[fw-general] Put each action in a separate PHP file?
Hello, As a ZFW learner, I tried the quick start: http://framework.zend.com/docs/quickstart/create-a-form My problem is when the controller contains many action - it make the file too large to edit. So I want to split each action into a separate PHP file, is it possible? Thanks...
[fw-general] Unit Testing ZFW
Today I have downloaded 1.9. ZFW. I want to test its by running... php -f AllTests.php Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 7680 bytes) in /home/ZendFramework/tests/Zend/Config/Writer/XmlTest.php on line 54 I have checked my php.ini - memory limit is 32M. Even I increased the value to 1GB, memory exhausted still exist, anything I missed? Thanks.
Re: [fw-general] Zend Framework 1.9.0 Released!
I, for one, have really been looking forward to this release. Speaking as one of the folks that started using ZF back in 0.2, it really has come a long way. Kudos to everyone. Many of us would still be using if it weren't for you guys. The Zend Framework team announces the immediate availability of version 1.9.0! http://framework.zend.com/download/latest Kudos and thanks go out to the huge number of community contributors who helped make this release possible. This release has been almost entirely community driven, with the Zend team contributing primarily feature additions to existing components and working on maintenance of the project. If you submitted an issue report, a documentation improvement, a patch, a documentation translation, or a component, let it be known that you helped make this release what it is! The big stories in this release can be summed up in two phrases: enterprise tools and PHP 5.3 support. With Zend Framework making inroads to Enterprises, it's not surprising that we are seeing a number of components geared towards the Enterprise. In this release, we add two new components -- Zend_Queue and Zend_Test_PHPUnit_Db -- as well as additions to existing components -- Zend_Ldap, Zend_Rest_Route, and Zend_Db_Adapter_Sqlsrv -- that target such development. Zend_Queue provides a common API for interacting with queue services such as Apache's ActiveMQ, MemcacheQ, and Zend Platform's Job Queue. Zend_Test_PHPUnit_Db brings DBUnit support to our Zend_Test offering, and provides integration with Zend_Db. Our Zend_Ldap support is now much more robust, and allows connectivity with MS ActiveDirectory and Novell's eDirectory, as well as full CRUD and tree manipulation options. Zend_Rest_Route allows developers to quickly develop RESTful MVC applications, which are increasingly gaining traction when serving public APIs. Zend_Db_Adapter_Sqlsrv interfaces with Microsoft's SQL Server driver for PHP. A month ago, the PHP team released the long-awaited PHP 5.3, which offers many improvements to the object model, as well as increased performance. Upgrading to PHP 5.3 is mostly straightforward, but, as with any release of this magnitude, sometimes takes some work. We have carefully audited our code and combed through our testbed in order to provide first-class compatibility for PHP 5.3 in Zend Framework -- while simultaneously continuing to support PHP 5.2.4 and above. Using Zend Framework on PHP 5.2 or 5.3 should be seamless and pose no issues for developers. New features in Zend Framework 1.9.0 include: * Zend_Queue and Zend_Service_Amazon_Sqs, which provide the ability to use local and remote messaging and queue services for offloading asynchronous processes. (Contributed by Justin Plock and Daniel Lo) * Zend_Queue_Adapter_PlatformJobQueue, a Zend_Queue adapter for Zend Platform's Job Queue. (Contributed by Zend Technologies) * Zend_Rest_Route, Zend_Rest_Controller, and Zend_Controller_Plugin_PutHandler, which aid in providing RESTful resources via the MVC layer. (Contributed by Luke Crouch, SourceForge) * Zend_Feed_Reader, which provides a common API to RSS and Atom feeds, as well as extensions to each format, caching, and a slew of other functionality. (Contributed by Pádraic Brady and Jurrien Stutterheim) * Zend_Db_Adapter_Sqlsrv, a Zend_Db adapter for Microsoft's SQL Server driver for PHP. (Contributed by Juozas Kaziukenas and Rob Allen) * Zend_Db_Table updates to allow using Zend_Db_Table as a concrete class by passing it one or more table definitions via the constructor. (Contributed by Ralph Schindler) * Zend_Test_PHPUnit_Db, which provides Zend_Db support for PHPUnit's DBUnit support, allowing developers to do functional and integration testing against databases using data fixtures. (Contributed by Benjamin Eberlei) * Annotation processing support for Zend_Pdf, as well as performance improvements. (Contributed by Alexander Veremyev) * Zend_Dojo custom build layer support. (Contributed by Matthew Weier O'Phinney) * Dojo upgraded to 1.3.2. * Numerous Zend_Ldap improvements, including full support for CRUD operations, search, and manipulating tree structures. (Contributed by Stefan Gehrig) * Zend_Log_Writer_Syslog, a Zend_Log writer for writing to your system log. (Contributed by Thomas Gelf) * Zend_View_Helper_BaseUrl, a view helper for returning the current base URL to your application, as well as for constructing URLs to public resources. (Contributed by Robin Skoglund and Geoffrey Tran) * Zend_Date now has support for the DateTime extension. (Contributed by Thomas Weidner) * Zend_Locale has been upgraded to CLDR 1.7. (Contributed by Thomas Weidner) * Zend_Translate now has plurals support for the Gettext, Csv, and Array adapters. (Contributed by Thomas Weidner) * PHP 5.3 compatibility, including
Re: [fw-general] Return last inserted id
$row-save() returns the primary key value of the row. so try: return $row-save(); Ryan Mauger Daniel Latter wrote: Hi, How can I get the last inserted ID from a newly inserted row? My class extends Zend_Db_Table and uses code similar to: $row = $this-createRow(); $row-title = $feedDetails['feedTitle']; $row-description = $feedDetails['feedDesc'];; $row-link = $feedDetails['feedLink']; $row-save(); return $this-lastInsertId(); -- this doesnt work I would be grateful if someone could let me know what I'm doing wrong,? I have seen in the docs this: $db--lastInsertId(), but can I access the same or similar from my class that extends Zend_Db_Table. Thank You Daniel Latter
[fw-general] Zend_ProgressBar (Ideas?)
Howdy folks, I have to confess that I am truly pleased with Zend_ProgressBar. However, I had a couple thoughts once I actually started using it. I am sending this message to the mailing list because I'm not entirely sure it is within the scope/context of Zend_ProgressBar. I wonder if it's not a good idea to allow single instances of ZPB (namespaces). For instance, in my case I'm doing a search index rebuild of a large resultset. In particular I flush my index tables, fetch all my records and insert the index values into one table and the relations to another. However, I'd like this process to be running a single instance at a time. For example, if I request /resource/intense/rebuild-search-index/, the process will start. However, if I request it again, I'd like the process to not start again, but update with the current progress. I had already considered adjusting Zend_ProgressBar::$_min to use Zend_ProgressBar::$_current as an offset, but in this particular case I don't think it applies. I'm including some code as an example. One caveat I can think of is sharing process information across sessions/users, so it may be a good idea to pass in a cache object, or explicitly define a cache prefix? I also don't think this would be considered adapter functionality, as it seems fairly global to Zend_ProgressBar. Other potential usage scenarios would be converting a video from one type to another, or converting a CMYK image to RGB (using a filename as a prefix), etc. The methods I propose (though their functionality, names and usage aren't in stone, I leave that to the devs) include: setSingleInstance() // sets ZPB to allow a single instance of a progress bar, cross user setCacheInstance() // Either setting a Zend_Cache instance, or just a namespace setIgnoreUserAbort() // sets ignore_user_abort() - just a thought, not sure if it is needed isIdle() // Returns (bool) where singleInstance is registered (but not running?) isRunning() // returns (bool) if running getCurrent() // Current record convenience method removeCache() // flushes the cache object rewind() // Potentially not the best method name, but it would flush the cache, reset user abort, etc. Just let me know if I'm out of my mind! Thanks folks, -Ryan ?php require_once 'Zend/ProgressBar.php'; require_once 'Zend/ProgressBar/Adapter/JsPush.php'; class Resource_IntenseController extends My_Controller { private $_cacheObj = NULL; public function init() { $frontendOptions = array('automatic_serialization' = true); $backendOptions = array( 'cache_dir' = 'cache/progressbar', 'file_name_prefix' = 'myNamespace' ); $this-_cacheObj = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions); } private function _exampleRecordList() { if(!$records = $this-_cacheObj-load('index_process')) { $records = IndexFactory::getInstance()-fetchLargeResultsetForReindexing('*'); $this-_cacheObj-save($records, 'index_process'); } return $records; } public function indexAction() { // ... } public function rebuildSearchIndexAction() { $this-noRender(); if (isset($_GET['progress'])) { $rows = $this-_exampleRecordList(); $cnt = count($rows); $adapter = new Zend_ProgressBar_Adapter_JsPush(array('updateMethodName' = 'Zend_ProgressBar_Update', 'finishMethodName' = 'Zend_ProgressBar_Finish')); $progressBar = new Zend_ProgressBar($adapter, 0, $cnt, 'index_Process'); $progressBar-setSingleInstance('my_namespace') // Or true, and use _persistenceNamespace as a namespace adapter. It would allow single instances of multiple namespaces -setCacheInstance($this-_cache) -setIgnoreUserAbort(); try { if($progressBar-isIdle() === (bool) TRUE) { do { $runningStatus = $progressBar-isRunning(); $currentRecord = $rows[$progressBar-getCurrent()]; Records_IndexFactory::getInstance()-insertSearchIndex($currentRecord, 'my_large_search_index'); $text = Starting record $currentRecord of $cnt; $progressBar-update($currentRecord, $text); usleep(10
RE: [fw-general] ZF Snapshots
Thanks Wil! A checkout was my next step! I'll do that. -Ryan _ From: Wil Sinclair [mailto:[EMAIL PROTECTED] Sent: May 6, 2008 6:58 PM To: Ryan Brooks; Zend Framework (General List) Subject: RE: [fw-general] ZF Snapshots Some of the scripts that we run on our servers broke when we migrated all ZF systems last week. I believe the script that creates the snapshots was one of them. We should have this resolved in the next few days. In the meantime, you might consider checking out trunk using SVN. Thanks for the patience! ,Wil From: Ryan Brooks [mailto:[EMAIL PROTECTED] Sent: Tuesday, May 06, 2008 5:52 PM To: Zend Framework (General List) Subject: [fw-general] ZF Snapshots I might have missed an update during the weekend, but currently the nightly builds are 404ing on me. Any idea when these will be back up? Ryan Brooks Web Developer Technophile http://www.zed23.com/ zed23.com
[fw-general] Webinar - Thanks!
Howdy folks, Just wanted to extend my gratitude to the ZF team for putting the webinar together; some very cool discussion and questions. Also want to pose the question: anyone blogging about it now that it is over? Ryan Brooks Web Developer Technophile http://www.zed23.com/ zed23.com
RE: [fw-general] Our new Zend Framework Architect
Can I have his old job? ;) I kid. Seriously though, I for one am please that Matthew is moving up! Way to climb the corporate ladder. Course, you know Matthew that now we'll all be expecting bigger and better things! -Ryan -Original Message- From: Wil Sinclair [mailto:[EMAIL PROTECTED] Sent: April 7, 2008 2:36 PM To: fw-general@lists.zend.com Subject: [fw-general] Our new Zend Framework Architect Matthew Weier O'Phinney Software Architect | [EMAIL PROTECTED] Zend - The PHP Company | http://www.zend.com/ Yikes! I knew there was something I forgot to do on Friday. Without further ado, it's my immense pleasure to announce that Matthew has been promoted to Software Architect at Zend. I'm sure I don't have to explain what he's done to deserve this here. ;) He'll still maintain his existing components and develop new components. But he'll also be heading up efforts that involve cross-cutting concerns with all components. The general consistency of design and quality across all components should benefit greatly from his attention. In addition, he will be heading up the initiative to define exactly what we'll be doing for the 2.0 release. This is of course a critical role as we make the right tradeoffs between improvements and backwards compatibility. Congrats Matthew! ,Wil
Re: [fw-general] Zend_Form and slashes
Not that I want to contradict Matthew, but last I checked magic_quotes_gpc can't be set at runtime. Try setting it in your php.ini, or alter your .htaccess file with: php_value magic_quotes_gpc off -Ryan On Mon, 31 Mar 2008 22:15:52 -0400, Matthew Weier O'Phinney [EMAIL PROTECTED] wrote: -- dowker [EMAIL PROTECTED] wrote (on Monday, 31 March 2008, 02:32 PM -0700): I have the following code in IndexController.php. If I submit the form with the value Help's Needed! (without the double quotes) in Field 1, the form will fail validation (because Field 2 is empty), and will repopulate Field 1 with Help\'s Needed! (without the double quotes). Aren't the slashes stripped by Zend_Form? If not, What's the best way to filter them out? Thanks. Best way? Turn off magic_quotes_gpc. Zend_Form isn't adding them; PHP is, because that setting is on. Turn it off early in your bootstrap: ini_set('magic_quotes_gpc', false); (Most default configurations have this off currently, for this very reason.) -- Matthew Weier O'Phinney PHP Developer| [EMAIL PROTECTED] Zend - The PHP Company | http://www.zend.com/ -- http://www.zed23.com/
RE: [fw-general] ZF Packaging
I would prefer not to use PEAR. Seems like a silver bullet solution to me... I have an anal-retentive need to know exactly what is going on in my projects. Doesn't mean that PEAR doesn't work for the rest of you, but I would like to continue to download it, unpack it and move it myself. On Tue, 22 Jan 2008 16:01:05 -0800, Wil Sinclair [EMAIL PROTECTED] wrote: Actually, I'm a bit ignorant since I'm a relative PHP newbie, but let me turn that question around- why would a PEAR channel be a good way to distribute ZF? That is, considering the current ZF installation is basically download, decompress, and update include path, what does PEAR bring to the table that I'm missing? ,Wil From: Bryce Lohr [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 22, 2008 2:13 PM To: fw-general@lists.zend.com Subject: Re: [fw-general] ZF Packaging I second the request for PEAR channel. Is there any reason why that would not be a good way to distribute the framework? Regards, Bryce Lohr Pádraic Brady wrote: Hi Will, It sounds good - an optional lean package would frighten off far less prospective users who have heard tales about HDD's dying from the strain of downloading the ZF ;). I would still like to see a PEAR channel emerge at some point though - that may be a fanciful concept but I gather from the last paragraph something along those lines is under consideration? Hope someone comes up with colourful names for these variants! Best regards, Paddy Pádraic Brady http://blog.astrumfutura.com http://www.patternsforphp.com OpenID Europe Foundation http://www.openideurope.eu/ - Original Message From: Wil Sinclair [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] To: fw-general@lists.zend.com Sent: Tuesday, January 22, 2008 8:36:39 PM Subject: [fw-general] ZF Packaging As part of the 1.5 release process, we've been reviewing the size of our distribution package and what contributes the most weight. We've determined that there are a few 'heavyweights' that we currently have in the zips/tarballs that many- if not most- users will never need. These include the unit tests, the demos, and the locale files (currently consuming ~8MB uncompressed on my hdd :O). With these components, the 1.0.3 release is ~5.3MB compressed on my hdd. We would like to distribute, starting with the 1.5 RC1, a 'lean and mean' ZF package alongside the 'everything' package. The 'lean and mean' package would not contain the tests, demos, locale files, or extras. 'Everything' would include, well, everything- even docs in html format. To facilitate access to the omissions from the 'lean and mean' release, we would provide a download action for the CLI tool so they can be retrieved and installed in the correct place with a single command. Thomas can give more details about how the locale-aware components would behave in this proposal. Thoughts? Thanks. ,Wil
[fw-general] php|architect's Guide to Programming with ZF - Should I?
Hi guys, It seems to be out now. http://www.phparch.com/c/books/id/9780973862157 Just wondering if you all have looked at it, and if it is worth the purchase. -Ryan
Re: [fw-general] php|architect's Guide to Programming with ZF - Should I?
Not exactly new (been using since 0.2)... I saw your comments on ZF guide; is it worthwhile buying for those that aren't new to it? On Mon, 21 Jan 2008 17:47:05 +0100, Christian Schmidt [EMAIL PROTECTED] wrote: On Jan 21, 2008 5:26 PM, [EMAIL PROTECTED] wrote: Hi guys, It seems to be out now. http://www.phparch.com/c/books/id/9780973862157 Just wondering if you all have looked at it, and if it is worth the purchase. I bought the book and already posted a comment on the books website (zfguide.com) If you are new to ZF it is a good point to start with. regards, Chris
Re: [fw-general] Subclassing Zend_Controller_Action, possible ?
abstract class YourSubController extends Zend_Controller_Action { public function init() { // ... } } On Fri, 18 Jan 2008 16:27:38 + (UTC), Juan Felipe Alavarez Saldarriaga [EMAIL PROTECTED] wrote: Hey :) Question, is there a way to sub-classing the Zend_Controller_Action, I mean, I need to set some variables and objects in the init() method for all the controllers that I have, is that possible ? Thx for any help.
Re: [fw-general] Zend Framework 1.5 Preview Release schedule
Matthew, Thanks a lot for the breakdown. It gives me something I can send to my staff in a form they'll understand!!! I check the proposals regularly (in the hopes that Zend_Services_Amazon_S3 will get attention) but this answers my question. Can't wait to toy with Zend_Build Zend_Console. -Ryan PS: Wil, thanks for your response, I'll be sure to keep a closer eye on the issue tracker. On Thu, 10 Jan 2008 15:26:03 -0500, Matthew Weier O'Phinney [EMAIL PROTECTED] wrote: -- [EMAIL PROTECTED] [EMAIL PROTECTED] wrote (on Thursday, 10 January 2008, 01:03 PM -0600): Perhaps I shouldn't be asking this via this forum, but is it possible to get an outline of what we can expect in 1.5? I checked the Zend Blog, and it tells us high level stuff like 'command line tooling, forms, and authentication' - is there anything you can tell us folk who use the framework daily yet don't watch the commits too closely? Okay, off the top of my head, new and/or improved components include: * Zend_Auth_Adapter_Ldap * Zend_Build/Zend_Console * Zend_Controller additional action helpers * ContextSwitch and AjaxContext * Json * AutoComplete * Zend_Form * Zend_InfoCard * Zend_Layout * Zend_OpenId * Zend_Search_Lucene improvements and bugfixes * Zend_View enhancements: * actions * partials * placeholders * New Zend_Service consumables (not sure which ones will be final) I'm sure there's more, but, as I said, that's off the top of my head. A good place to look is on the wiki proposals page (look at what's currently in the incubator, and see what core proposals may be present that you haven't seen before), and also in the issue tracker. If not, I as well as others eagerly anticipate the new release! -Ryan On Thu, 10 Jan 2008 13:33:19 -0500, Darby Felton [EMAIL PROTECTED] wrote: Hi all, It's that time again when Zend Framework is ramping up for another release, and this one is shaping up to be quite significant. New features that were not merged to the release-1.0 branch and were not included with mini-release versions (i.e., 1.0.1, 1.0.2, and 1.0.3) will be included with this next release, Zend Framework 1.5 Preview Release. The purpose of this message is to let developers know of the currently planned schedule for the release. The code freeze for this release is planned for Tuesday, January 22 at 21:00 (PST). Upon commencement of the code freeze, nothing should be merged to the upcoming 1.5 release branch without approval from one of the Zend team (Alex, Matthew, Wil, or myself). Development may of course continue in the trunk as usual, and the release branch code freeze would be lifted as soon as the release is made available. :) Thank you all for contributing to Zend Framework and making these releases possible! :) Best regards, Darby -- Matthew Weier O'Phinney PHP Developer| [EMAIL PROTECTED] Zend - The PHP Company | http://www.zend.com/
Re: [fw-general] Zend_Mail Bug?
Jacky Chen wrote: Hi Simone, the code for sending emails are following: $tr = new Zend_Mail_Transport_Smtp($mailConfig-host, $mailConfig-options-toArray()); Zend_Mail::setDefaultTransport($tr); $mail = new Zend_Mail('utf8'); $mail-setBodyHtml($body); $mail-setBodyText($body); $mail-setFrom($mailConfig-from, $mailConfig-sender); $mail-addTo($email); $mail-setSubject($subject); try { $mail-send(); return true; } catch (Exception $e) { return false; } and the subject and body contains Chinese characters. Shouldn't the character encoding in the line... $mail = new Zend_Mail('utf8'); ...be 'utf-8' (with the dash), not 'utf8'?
Re: [fw-general] Zend_Cache simplexml_load_file( )
David, I'm an idiot. Apparently I wasn't thinking that part through. Heh. Thanks a lot, problem solved. -Ryan On Wed, 12 Dec 2007 16:44:32 +, David Goodwin [EMAIL PROTECTED] wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 To be clear, everything works as expected if I omit the caching, so I am confident it is not a problem with the feed. I could cache the view, but I really don't want to do that. Anyone have any thoughts? -Ryan You can't normally serialise native PHP objects, so perhaps you need to explicitly call '$simplexml-asXML()' and cache that (the xml string), and re-create the simplexml object manually from the cache? David. - -- David Goodwin Pale Purple Limited Office: 0845 0046746 Mobile: 07792380669 http://www.palepurple.co.ukCompany No: 5580814 'Business Web Application Development and Training in PHP' -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFHYA/w/ISo3RF5V6YRAoI1AKDR5J+klAKLIBf/B6Q8zXFxTzbwUgCdFz6M R0eSlZWWdV/N0T2O7KCKSqA= =brBa -END PGP SIGNATURE-
[fw-general] Problem with removeDefaultRoutes() and default error handling
In this project I'm working on I want to strictly control which routes are valid for the application. At the moment, I have three controllers: IndexController, ClientController, and ErrorController. I've set up 3 routes, like so: ?php $router-addRoute( 'client_list', new Zend_Controller_Router_Route( 'clients', [snipped] ) ); $router-addRoute( 'client_view', new Zend_Controller_Router_Route( 'client/:id', [snipped] ) ); $router-addRoute( 'client_edit', new Zend_Controller_Router_Route( 'client/:id/edit', [snipped] ) ); ? I also set the router with the front controller's setRouter() method. With the above setup, I can navigate to example.com/fake/ and will get the expected, and custom, error message. However, if I remove the default routes... ?php $router-removeDefaultRoutes(); $router-addRoute( 'client_list', new Zend_Controller_Router_Route( 'clients', [snipped] ) ); $router-addRoute( 'client_view', new Zend_Controller_Router_Route( 'client/:id', [snipped] ) ); $router-addRoute( 'client_edit', new Zend_Controller_Router_Route( 'client/:id/edit', [snipped] ) ); ? ...navigating to example.com/fake/ no longer invokes the expected error message, but instead invokes the index action of IndexController. Is this a bug, or am I missing something? Thanks, Ryan Lange
[fw-general] How are you using Zend_Filter_Input?
I'm curious how others are using the current (as of ZF 1.0.2) implementation of Zend_Filter_Input. I'm trying to use it for a contact form, but everything I've typed out seems clumsy and overly complicated. (Maybe that's just the cost of flexibility, though, because even the less basic examples in the documentation look extremely convoluted.) For instance, I have one hidden field (using CSS) on the form that's used in spam detection. This field needs to remain completely untouched by the filters I set, but in order to do that, I have to explicitly assign the filters to /every/ other field (14 of them) rather than use the * wildcard. Also, I have no clue how to handle multiple fields of the same name. This same contact form allows the user to provide their phone number if they wish. This consists of 4 fields that represent parts of a U.S. telephone number, all with the name phone[]: ([___]) [___]-[] ext. [_] If any one can provide any insight or examples of their own of their, that'd be great. Thanks, Ryan Lange
Re: [fw-general] thought experiment: standalone app module within an app
David, As with all things in our line of work, the answer is 'Well, it depends'. I think the biggest problem you should consider is namespaces (or lack thereof). If you try to plan for a potential migration and attempt to forecast the problems you'll have, I don't think you'll have too many issues. -Ryan On Wed, 3 Oct 2007 16:06:15 -0400, David Mintz [EMAIL PROTECTED] wrote: Hello I am thinking I need to develop my project as a standalone, independent ZF app but later might want it to become a module within a larger app. How hellish could that conversion process be? In my imagination, I think not too terribly hellish but maybe you guys know otherwise. Thanks.
Re: [fw-general] using Zend_Auth with a custom Sessio n Save Handler ?
I would like to say that I've been using this for some time as well, and it works splendidly. /2c -Ryan On Mon, 24 Sep 2007 12:57:59 -0700 (PDT), Jordan Raub [EMAIL PROTECTED] wrote: Sweet! I thought this went to the wayside. I've been using it too on my stuff with no problems. Do you think this could make it into the trunk soon? Here is the link to the proposal too http://framework.zend.com/wiki/display/ZFPROP/Zend_Session_SaveHandler_DbTable Thanks, Jordan He that teaches himself hath a fool for his master. -- Benjamin Franklin Poor is the pupil who does not surpass his master. -- Leonardo da Vinci. - Original Message From: Simon Mundy [EMAIL PROTECTED] To: Truppe Steven [EMAIL PROTECTED] Cc: fw-general@lists.zend.com Sent: Saturday, September 22, 2007 7:10:53 PM Subject: Re: [fw-general] using Zend_Auth with a custom Session Save Handler ? The Zend_Session_SaveHandler_DbTable component is tucked away in the incubator - I've had it running now for the last couple of weeks in combination with Zend_Auth and it's been working wonderfully. It's been used in conjunction with a series of linked microsites using different subdomains and this approach has been the most effective way for me to manage sessions smoothly across them all (especially if I decide to offload my database and sessions to a standalone server down the track). First you set up your session table. Here's my MySQL dump (nearly identical to the example shown on the proposal page for Zend_Session_SaveHandler_DbTable):- CREATE TABLE `session_list` ( `id` varchar(32) collate utf8_unicode_ci NOT NULL, `save_path` varchar(32) collate utf8_unicode_ci NOT NULL, `name` varchar(32) collate utf8_unicode_ci NOT NULL default '', `modified` int(11) default NULL, `lifetime` int(11) default NULL, `data` text collate utf8_unicode_ci, PRIMARY KEY (`id`,`save_path`,`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci PACK_KEYS=1; Here's an example of my config.ini file:- [all] ; - ; Database connection ; - db.connection = pdo_mysql db.host = localhost db.username = myusername db.password = mypassword db.dbname = mydatabase ; - ; Session ; - session.cookie_domain = mydomain.com.au session.name = mycustomsessionname session.remember_me_seconds = 864000 session.use_only_cookies = on sessionhandler.name = session_list sessionhandler.lifetime = 864000 sessionhandler.primary = id sessionhandler.dataColumn = data sessionhandler.modifiedColumn = modified sessionhandler.lifetimeColumn = lifetime sessionhandler.overrideLifetime = true This is how I set it up in my bootstrap:- // Set up database $db = Zend_Db::factory($config-db-connection, $config-db-toArray()); Zend_Db_Table::setDefaultAdapter($db); // Set session defaults Zend_Session::setOptions($config-session-toArray()); Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config-sessionhandler-toArray())); And then continue to use Zend_Auth as you would normally. Note that the storage engine for Zend_Auth bears no relation to the session at all - this will be a completely separate table (if you're using database authentication). Hope this gets you on the way! Cheerio Hi, i have a class that implements Zend_Session_SaveHandler_Interface to save the session data inside a database. now i want this save handler to be used to store the identity after authentication. in the manual i found this: /By default, Zend_Auth provides persistent storage of the identity from a successful authentication attempt using the PHP session. Upon a successful authentication attempt, Zend_Auth::authenticate() stores the identity from the authentication result into persistent storage. Unless configured otherwise, Zend_Auth uses a storage class named Zend_Auth_Storage_Session, which, in turn, uses Zend_Session. A custom class may instead be used by providing an object that implements Zend_Auth_Storage_Interface to Zend_Auth::setStorage()./ What does that mean for the Zend_Session_SaveHandler implementation ? Is Zend_Auth_Storage_Interface the same interface ?? I only found Zend_Session::setSaveHandler() but i have no idea how to use this in combination with Zend_Auth (because Zend_Auth handles Zend_Session internal). I hope someone can help me with this. best regards, Truppe Steven
Re: [fw-general] Jira is down...
Jira issues again :( --- Proxy Error The proxy server received an invalid response from an upstream server. The proxy server could not handle the request GET /issues/secure/BrowseProject.jspa. Reason: Error reading from remote server On 9/17/07, till [EMAIL PROTECTED] wrote: On 9/17/07, Thomas Weidner [EMAIL PROTECTED] wrote: Definitly not... I AM NOT THE FAULT !! You just work too much on it. :P C'mon, just admit it!!! Till
Re: [fw-general] Status of the Zend_Service_Amazon_S3 p roposal
I too have been hoping to hear something about this, and was disappointed after seeing the comment Travis posted regarding lack of interest. -Ryan On Tue, 14 Aug 2007 16:50:50 +0200, Jean-Marc Fontaine [EMAIL PROTECTED] wrote: Hello, I would like to know if the Zend_Service_Amazon_S3 proposal has been accepted and if not could someone review it, please ? http://framework.zend.com/wiki/display/ZFPROP/Zend_Services_Amazon_S3+-+Travis+Swicegood?showComments=trueshowCommentArea=true#addcomment I need such a component and I guess I am not the only one. Regards. Jean-Marc Kanopée - Développement Informatique Durable 56 rue de Saint André 59800 Lille Tél : 03 20 74 61 25 Portable : 06 88 56 50 79 Fax : 03 20 06 51 26 Web : http://www.kanopee.net/
Re: [fw-general] no php closing tag?
This is actually a pretty common question. Taken straight from the Zend Coding Standards (draft) seen at: http://framework.zend.com/wiki/display/ZFDEV/PHP+Coding+Standard+(draft) For files that contain only PHP code, the closing tag (?) is to be omitted. It is not required by PHP, and omitting it prevents trailing whitespace from being accidentally injected into the output. Generally, as such, it's a good idea to omit the closing tag in PHP files containing only PHP code (such as class files). For things like views, which are mixes of PHP and HTML, close all PHP. This will prevent you from encountering trailing whitespace, which can be a bit of a headache. On Sat, 11 Aug 2007 20:58:18 -0700, Stanislav Malyshev [EMAIL PROTECTED] wrote: After going through the docs I realized that the examples with no end ? was not a typo. Is that for every php script that uses in the framework or just the framework classes? Will something bad happen if you do use '?' ? How did that design decision come about? Nothing bad happens if you use ?. However, if you use ? and after it put some whitespace, something bad does happen - this whitespace gets output, and it might be output in wrong place at the wrong time. Since closing ? is not required and anyway nothing is going to happen after ?, many people omit it. -- Stanislav Malyshev, Zend Software Architect [EMAIL PROTECTED] http://www.zend.com/ (408)253-8829 MSN: [EMAIL PROTECTED]
[fw-general] Error Handling w/ Zend DB
I'm trying to handle errors appropriately after an insert into MySQL with Zend_DB and the MySQLi plugin, but I'm having a rough time determining the cause of the error. For example, I'd like my application to catch the exception, determine if the exception occurred due to a unique key violation, and then if so, identify the column that is causing the violation. I noticed that the type of the exception returned is Zend_Db_Statement_Mysqli_Exception, and here's all of the information I could get out of it - getCode(): 0 getFile(): D:\Apache224\htdocs\CK\library\Zend\Db\Statement\Mysqli.php getLine(): 237 getMessage(): Mysqli statement execute error : Duplicate entry '1' for key 1 Does this mean that I need to parse the message to determine exactly what caused the exception, or is there some other way for me to perform error handling w/ Zend DB? Thanks, - Ryan
[fw-general] quoteInto vs bound parameters
I've been looking through the Zend_Db documentation, and I'm wondering why you would ever want to use quoteInto() or quote() as opposed to binding your parameters in an array. What's the advantage to quoteInto()/quote()? Isn't the separation of data provided by bound parameters always going to be more secure than attempting to manipulate the strings? As I understand it, all statements are prepared anyhow, so why not use more bound parameters? For example, wouldn't bound parameters always avoid bizarre problems like unicode SQL injections [http://bugs.mysql.com/bug.php?id=22243], whereas with quote/quoteInto you're trusting the string parse to get it right? I'm curious because it looks like relatively few methods (none?) in Zend_Db_Table support bound parameters. To use binding, I need to go to the adapter every time, which makes my Zend_Db_Table class somewhat less convenient. I'm new to ZF, so maybe I'm just missing something really obvious here. I'd appreciate it if anyone could provide some insight. Thanks, - Ryan
[fw-general] ZF changing the cwd
Sorry for both posts in such a short period of time, but I even though I've worked around this in my own environment, I thought this post might save someone else some debug effort. I'm setting include_path with relative paths in php.ini (and appending to it in my bootstrap script) and I'm using numerous Zend_* classes all throughout my code without any trouble, but at one point in my application I hit an error that indicates Zend_Filter is unable to find Zend_Loader. This doesn't make sense because I use Zend_Loader all over the place, including in my bootstrap script. After further investigation, it looks like something is altering my working directory. I put in an echo getcwd(); at the beginning of my app, and another right before I access Zend_Filter (for the 2nd or 3rd time...), and getcwd() clearly demonstrates that the working directory has changed - IINITIAL CWD: D:\Apache224\htdocs\main Session open... Reading session... GC-ing sessions... Writing session... PRE-FILTER CWD: D:\Apache224 *Warning*: Zend_Filter::require_once(Zend/Loader.php) [ function.Zend-Filter-require-oncehttp://localhost/CK/function.Zend-Filter-require-once]: failed to open stream: No such file or directory in * D:\Apache224\htdocs\CK\library\Zend\Filter.php* on line *88* *Fatal error*: Zend_Filter::require_once() [function.requirehttp://localhost/CK/function.require]: Failed opening required 'Zend/Loader.php' (include_path='.;./application/controllers;./application/models;./application/config;./application/util;./library') Some random Googling brought me to this page - http://www.php.net/ob_start Some web servers (e.g. Apache) change the working directory of a script when calling the callback function. You can change it back by e.g. chdir(dirname($_SERVER['SCRIPT_FILENAME'])) in the callback function. I'm using Apache, so I did a quick search through the ZF code and I found 12 different occurrences of ob_start. To narrow it down, I threw echo statements before each one, and the only one being called is the one in Zend\Controller\Dispatcher\Standard.php on line 233. Could this be a potential defect? Known issue? Right now, I'm using absolute paths in my include_path to work around it. Thanks, - Ryan
Re: [fw-general] Error handling with mysqli adapter
Thanks Eric - this was right on the money. I found my answer here - http://www.mail-archive.com/[EMAIL PROTECTED]/msg28759.html I have a custom session handler that's actually doing the write, and it looks like PHP is running it after the script is finished executing. If I move the same code into a normal block, I see a sane error message. Thanks again, - Ryan On 7/18/07, Eric Coleman [EMAIL PROTECTED] wrote: On Jul 18, 2007, at 11:15 PM, Ryan Graciano wrote: Fatal error: Exception thrown without a stack frame in Unknown on line 0 If you search php.internals you'll find a thread about this. I can't remember what the exact error message actually means (Positive it was discussed though).
[fw-general] Using the Redirector helper outside of an Action Controller
I'm trying to implement a little routing in my bootstrap script (before the dispatcher starts). Essentially, under very specific conditions, I need to alter the controller that is invoked. I found Zend_Controller_Action_HelperBroker and the Redirector, but I can't seem to get them to function outside of an Action Controller. I've tried various combinations of code similar to this - $redirector = Zend_Controller_Action_HelperBroker::getExistingHelper('Redirector'); $redirector-goto('index'); ...but nothing seems to work. I've looked through the docs, and all of the examples seem to function inside of a controller. Is there an easy way to accomplish what I'm trying to do? Thanks, - Ryan
Re: [fw-general] Re: Zend_Config and YAML using the Syck extension
Awesome, blogrolled just for that. Thanks! On Fri, 13 Jul 2007 18:12:17 +0300, Shahar Evron [EMAIL PROTECTED] wrote: How stupid, I forgot the like: http://prematureoptimization.org/blog/archives/39 Shahar ;) On Fri, 2007-0
Re: [fw-general] Searching database
Hi José, Have you checked the manual for Zend_Db_Table? ?php $table = new Bugs(); $where = $table-getAdapter()-quoteInto('bug_status = ?', 'NEW'); $order = 'bug_id'; // Return the 21st through 30th rows $count = 10; $offset = 20; $rows = $table-fetchAll($where, $order, $count, $offset); ? This is outlined further at http://framework.zend.com/manual/en/zend.db.table.html -Ryan On Thu, 12 Jul 2007 12:54:09 -0300, José de Menezes Soares Neto [EMAIL PROTECTED] wrote: everyone forget things :P can I limit the numbers of results of a query using fetchAll()? 2007/7/11, ViShap [EMAIL PROTECTED]: ACK josé, look for tutorials and books to get the basics of php =) good ressources are google, o´reilleys and of corse ZEND (articles and tutorials)! regards 2007/7/12, till [EMAIL PROTECTED]: On 7/11/07, ViShap [EMAIL PROTECTED] wrote: (...) 2007/7/11, José de Menezes Soares Neto [EMAIL PROTECTED]: (...) Guys, not to be mean - well forget that! ;-) But maybe a PHP primer is necessary here and this should be discussed off list? Regards, Till
Re: [fw-general] Zend Framework Applications Questionnaire
This are especially exciting times for the ZF, its users and Zend itself. I for one cannot wait to hear about what cool things people are doing with the framework I, for one, have grown rather fond of. -Ryan Hi, I'm relaying this for our marketing team: Thanks to all the hard work the community has put in we are just about ready to release Zend Framework 1.0 As part of this release we will be doing significant updates to the website and other outreach. This should help make people aware of the power of Zend Framework and all the efforts going on in the community. To help out with this, we'd like to create a list of Zend Framework applications. If you could please take just 5 minutes to fill out this questionnaire, that would be immensely helpful. http://www.zoomerang.com/survey.zgi?p=WEB226LT2YCPPA We hope to feature some of your great work at the framework.zend.com site and even if not, would love to hear what you've been up to with ZF. Thanks, Bill Karwin
Re: [fw-general] HTTP Client
On 6/13/07, Matthew Weier O'Phinney [EMAIL PROTECTED] wrote: -- Ian Warner [EMAIL PROTECTED] wrote (on Wednesday, 13 June 2007, 11:51 PM +0100): Hi I want to send the following XMl through HTTP Client as a POST $XMLDATA = '?xml version=1.0 encoding=ISO-8859-1?'; $XMLDATA .= 'ResponseService Version=2.3'; $XMLDATA .= Header; $XMLDATA .= Partnertest/Partner; $XMLDATA .= Passwordtest/Password; $XMLDATA .= Companytest/Company; $XMLDATA .= /Header; $XMLDATA .= ResponseList; $XMLDATA .= Response; $XMLDATA .= TransactionID99/TransactionID; $XMLDATA .= OriginatingNumber12345/OriginatingNumber; $XMLDATA .= Time . date('YmdHi') . /Time; $XMLDATA .= Data . $message . /Data; $XMLDATA .= Destination . $destination . /Destination; $XMLDATA .= Operator23433/Operator; $XMLDATA .= /Response; $XMLDATA .= /ResponseList; $XMLDATA .= /ResponseService; $client-setParameterPost(array('XMLDATA' = $XMLDATA)); On the other end I SIMPLE XML this but I get load of errors due to HTTP client urlencoding and addingslashes. If it is urlencoding why does it need to addslashes? anyway to get round this ? Send it as a RAW POST: $clent-setRawData($XMLDATA); and read the raw post on the server side. This is the typical way XML is transmitted via HTTP (XML-RPC and SOAP both use it, and it's the recommended way to POST or PUT data to REST). Depending on what the server requires, you might also need to set the Content-Type header to the appropriate value. For Zend_Gdata, we use application/atom+xml, but I suspect text/xml would be more appropriate in your situation. $client-setHeaders('Content-Type', 'application/atom+xml'); Cheers, -Ryan -- Matthew Weier O'Phinney PHP Developer| [EMAIL PROTECTED] Zend - The PHP Company | http://www.zend.com/
RE: [fw-general] Zend_Db_Table_Row __get()
It appears that all column preparation has been removed on each row. 0.8 Usage: CREATE TABLE `accounts` ( `id` int(11) NOT NULL auto_increment, `date_entered` datetime default NULL, `date_modified` datetime default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB; foreach($this-account as $account) { echo $account-dateModified; } Current 0.9 Usage: (untested) foreach($this-account as $account) { echo $account-date_modified; } I never liked the camel-casing. I found it confusing. I like the 0.9 usage better because I know exactly what to expect. The camel-casing limited system predictability. (This can of course be argued both ways). Bug? Feature? -Original Message- From: Aaron Egaas [mailto:[EMAIL PROTECTED] Sent: March 19, 2007 10:26 AM To: fw-general@lists.zend.com Subject: [fw-general] Zend_Db_Table_Row __get() Hello, Prior to 0.9, I was using underscored field names in my MySQL database and relying on Zend_Db's inflector to produce nice Camel-cased field names within the Zend framework. Since 0.9 with the inflector gone, I switched my field name in the database to camel case so I didn't have to refactor a lot of code. Unforunately I think I found a bug when I did this. All over my app I get exceptions saying the field (jobId for example) isn't found! I dumped out the Db_Row and all the fieldnames have been lower cased. I'm using MySQL's PDO. Anyone know whats causing my plight? -Aaron Egaas -- View this message in context: http://www.nabble.com/Zend_Db_Table_Row-__get%28%29-tf3428196s16154.html#a95 55537 Sent from the Zend Framework mailing list archive at Nabble.com.
RE: [fw-general] Zend_Db_Table_Row __get()
Doesn't seem to make much sense as an element of consistency has been lost here. Hmm. Good point. -Original Message- From: Jon [mailto:[EMAIL PROTECTED] Sent: March 19, 2007 10:53 AM To: fw-general@lists.zend.com Subject: RE: [fw-general] Zend_Db_Table_Row __get() I don't understand why the camel case conversion has been dropped? As far as I can see all variables (in ZF) are camelCased, even the PDF document Best Practices of PHP Development written by Zend states that all variables should be camelCased. So why change it for Zend_Db? Doesn't seem to make much sense as an element of consistency has been lost here. -Original Message- From: Art Hundiak [mailto:[EMAIL PROTECTED] Sent: 19 March 2007 16:42 To: fw-general@lists.zend.com Subject: RE: [fw-general] Zend_Db_Table_Row __get() Basic problem is that the pdo adapter has: // force names to lower case $this-_connection-setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); You will have to figure out how to change it to CASE_NATURAL. Even then I suspect you might have trouble with case sensitivity. I myself rather liked the camel case conversion. It being dropped is one of the reasons I gave up on Zend_Db. It appears that all column preparation has been removed on each row. 0.8 Usage: CREATE TABLE `accounts` ( `id` int(11) NOT NULL auto_increment, `date_entered` datetime default NULL, `date_modified` datetime default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB; foreach($this-account as $account) { echo $account-dateModified; } Current 0.9 Usage: (untested) foreach($this-account as $account) { echo $account-date_modified; } I never liked the camel-casing. I found it confusing. I like the 0.9 usage better because I know exactly what to expect. The camel-casing limited system predictability. (This can of course be argued both ways). Bug? Feature? -Original Message- From: Aaron Egaas [mailto:[EMAIL PROTECTED] Sent: March 19, 2007 10:26 AM To: fw-general@lists.zend.com Subject: [fw-general] Zend_Db_Table_Row __get() Hello, Prior to 0.9, I was using underscored field names in my MySQL database and relying on Zend_Db's inflector to produce nice Camel-cased field names within the Zend framework. Since 0.9 with the inflector gone, I switched my field name in the database to camel case so I didn't have to refactor a lot of code. Unforunately I think I found a bug when I did this. All over my app I get exceptions saying the field (jobId for example) isn't found! I dumped out the Db_Row and all the fieldnames have been lower cased. I'm using MySQL's PDO. Anyone know whats causing my plight? -Aaron Egaas -- View this message in context: http://www.nabble.com/Zend_Db_Table_Row-__get%28%29-tf3428196s16154.html#a95 55537 Sent from the Zend Framework mailing list archive at Nabble.com.
[fw-general] $db-setRowClass $db-setRowsetClass
Hi guys, this email will be a little long to explain my confusion, please bear with me. I am trying to create some domain logic in my result objects so I have access to methods on rowsets and rows. It kinda works, but kinda doesn't. Unfortunately I think I am either missing something completely, or what I'm trying to do just isn't possible. I am using the latest nightly build. This all came from wanting to change this: $article = $db-query($sql)-fetchObject(__CLASS__); Here's my error: Fatal error: Uncaught exception 'Zend_Db_Table_Row_Exception' with message 'Unrecognized method 'helloWorld()'' in D:\_php\www\includes\Zend\Db\Table\Row\Abstract.php Well, that's obvious - I'm trying to access a non-existent method. However, here's some code. I hope that you'll be able to understand at a glance what I'm trying to do. I have stripped out most of my un-needed code. I can verify that the database has connected, and the view object does exist. class AccountsController extends BootstrapController { public function indexAction() { $accounts = new Accounts(); $this-view-accounts = $accounts-fetchAll(); Zend_Debug::dump($this-view-accounts); // debug foreach($this-view-accounts as $account) { echo $account-helloWorld(); // This is the cause of our problem } } } class Accounts extends Zend_Db_Table { public function _setup($config = array()) { $this-_name = 'accounts'; $this-setRowClass('Account'); // this seems to be ignored $this-setRowsetClass('AccountsRowset'); parent::_setup($config); } } class AccountsRowset extends Zend_Db_Table_Rowset { public function _setup($config = array()) { $this-_name = 'accounts'; $this-setRowClass('Account'); // this seems to be ignored parent::_setup($config); } } class Account extends Zend_Db_Table_Row { public function _setup($config = array()) { $this-_name = 'accounts'; parent::_setup($config); } public function helloWorld() { return 'hello ' . $this-name; } } Now. When I look at the dump(), I can see the data. The row class and rowset class is being set. However, it is still calling Zend_Db_Table_Row. To aid in debugging, here is my dump. object(AccountsRowset)#20 (8) { [_data:protected] = array(2) { [0] = array(7) { [id] = string(1) 1 [date_entered] = string(19) 2007-03-17 21:24:38 [date_modified] = NULL [created_by] = string(1) 1 [assigned_user_id] = NULL [name] = string(1) d [deleted] = NULL } [1] = array(7) { [id] = string(1) 2 [date_entered] = string(19) 2007-03-19 11:45:17 [date_modified] = NULL [created_by] = string(1) 1 [assigned_user_id] = NULL [name] = string(4) [deleted] = NULL } } [_table:protected] = object(Accounts)#19 (8) { [_db:protected] = object(Zend_Db_Adapter_Pdo_Mysql)#12 (5) { [_pdoType:protected] = string(5) mysql [_config:protected] = array(6) { [dbtype] = string(9) pdo_mysql [host] = string(9) localhost [username] = string(4) root [password] = string(0) [dbname] = string(3) crm [debugEnabled] = string(4) true } [_fetchMode:protected] = int(2) [_profiler:protected] = object(Zend_Db_Profiler)#14 (4) { [_queryProfiles:protected] = array(0) { } [_enabled:protected] = bool(false) [_filterElapsedSecs:protected] = NULL [_filterTypes:protected] = NULL } [_connection:protected] = object(PDO)#17 (0) { } } [_name:protected] = string(8) Accounts [_cols:protected] = array(7) { [0] = string(2) id [1] = string(12) date_entered [2] = string(13) date_modified [3] = string(10) created_by [4] = string(16) assigned_user_id [5] = string(4) name [6] = string(7) deleted } [_primary:protected] = string(2) id [_rowClass:protected] = string(7) Account [_rowsetClass:protected] = string(14) AccountsRowset [_referenceMap:protected] = array(0) { } [_dependentTables:protected] = array(0) { } } [_connected:protected] = bool(true) [_tableClass:protected] = string(8) Accounts [_rowClass:protected] = string(17) Zend_Db_Table_Row [_pointer:protected] = int(0) [_count:protected] = int(2) [_rows:protected] = array(0) { } } I'm hoping someone can help me out. I'm kinda at a loss. -Ryan
RE: [fw-general] $db-setRowClass $db-setRowsetClass
Update: Now I know I've missed something. In my debugging process, here's what I did. Open: Zend/DB/Table/Rowset/Abstract.php Goto Line: 71 Replace Value of: protected $_rowClass = 'Zend_Db_Table_Row' With: protected $_rowClass = 'Account' Have access to Account-helloWorld(); I'll keep digging, I seem to be missing a step along the way. -Ryan PS: Undo changes, save. ;) _ From: Ryan Brooks [mailto:[EMAIL PROTECTED] Sent: March 19, 2007 1:32 PM To: fw-general@lists.zend.com Subject: [fw-general] $db-setRowClass $db-setRowsetClass Hi guys, this email will be a little long to explain my confusion, please bear with me. I am trying to create some domain logic in my result objects so I have access to methods on rowsets and rows. It kinda works, but kinda doesn't. Unfortunately I think I am either missing something completely, or what I'm trying to do just isn't possible. I am using the latest nightly build. This all came from wanting to change this: $article = $db-query($sql)-fetchObject(__CLASS__); Here's my error: Fatal error: Uncaught exception 'Zend_Db_Table_Row_Exception' with message 'Unrecognized method 'helloWorld()'' in D:\_php\www\includes\Zend\Db\Table\Row\Abstract.php Well, that's obvious - I'm trying to access a non-existent method. However, here's some code. I hope that you'll be able to understand at a glance what I'm trying to do. I have stripped out most of my un-needed code. I can verify that the database has connected, and the view object does exist. class AccountsController extends BootstrapController { public function indexAction() { $accounts = new Accounts(); $this-view-accounts = $accounts-fetchAll(); Zend_Debug::dump($this-view-accounts); // debug foreach($this-view-accounts as $account) { echo $account-helloWorld(); // This is the cause of our problem } } } class Accounts extends Zend_Db_Table { public function _setup($config = array()) { $this-_name = 'accounts'; $this-setRowClass('Account'); // this seems to be ignored $this-setRowsetClass('AccountsRowset'); parent::_setup($config); } } class AccountsRowset extends Zend_Db_Table_Rowset { public function _setup($config = array()) { $this-_name = 'accounts'; $this-setRowClass('Account'); // this seems to be ignored parent::_setup($config); } } class Account extends Zend_Db_Table_Row { public function _setup($config = array()) { $this-_name = 'accounts'; parent::_setup($config); } public function helloWorld() { return 'hello ' . $this-name; } } Now. When I look at the dump(), I can see the data. The row class and rowset class is being set. However, it is still calling Zend_Db_Table_Row. To aid in debugging, here is my dump. object(AccountsRowset)#20 (8) { [_data:protected] = array(2) { [0] = array(7) { [id] = string(1) 1 [date_entered] = string(19) 2007-03-17 21:24:38 [date_modified] = NULL [created_by] = string(1) 1 [assigned_user_id] = NULL [name] = string(1) d [deleted] = NULL } [1] = array(7) { [id] = string(1) 2 [date_entered] = string(19) 2007-03-19 11:45:17 [date_modified] = NULL [created_by] = string(1) 1 [assigned_user_id] = NULL [name] = string(4) [deleted] = NULL } } [_table:protected] = object(Accounts)#19 (8) { [_db:protected] = object(Zend_Db_Adapter_Pdo_Mysql)#12 (5) { [_pdoType:protected] = string(5) mysql [_config:protected] = array(6) { [dbtype] = string(9) pdo_mysql [host] = string(9) localhost [username] = string(4) root [password] = string(0) [dbname] = string(3) crm [debugEnabled] = string(4) true } [_fetchMode:protected] = int(2) [_profiler:protected] = object(Zend_Db_Profiler)#14 (4) { [_queryProfiles:protected] = array(0) { } [_enabled:protected] = bool(false) [_filterElapsedSecs:protected] = NULL [_filterTypes:protected] = NULL } [_connection:protected] = object(PDO)#17 (0) { } } [_name:protected] = string(8) Accounts [_cols:protected] = array(7) { [0] = string(2) id [1] = string(12) date_entered [2] = string(13) date_modified [3] = string(10) created_by [4] = string(16) assigned_user_id [5] = string(4) name [6] = string(7) deleted } [_primary:protected] = string(2) id [_rowClass:protected] = string(7) Account [_rowsetClass:protected] = string(14) AccountsRowset [_referenceMap:protected] = array(0) { } [_dependentTables:protected] = array(0
RE: [fw-general] $db-setRowClass $db-setRowsetClass
Hi Simon, Art friends, Thanks to Art's awesome debugging prowess (I.e. he saw something that I didn't) it turns out that this entire problem was due to a typo in Zend_Db_Table_Abstract. The fix follows: GOTO: Line 582 FIND CODE BLOCK: $data = array( 'table'= $this, 'data' = $this-_fetch('All', $where, $order, $count, $offset), 'rowclass' = $this-_rowClass ); REPLACE WITH: $data = array( 'table'= $this, 'data' = $this-_fetch('All', $where, $order, $count, $offset), 'rowClass' = $this-_rowClass ); Commit at your leisure. I have tested this initially and it seems to work for me. I will continue to advise as I use. Simon, Art, thanks for your help! -Ryan PS: Simon, I'll look into getting some unit tests going. -Original Message- From: Art Hundiak [mailto:[EMAIL PROTECTED] Sent: March 19, 2007 3:18 PM To: Ryan Brooks Cc: 'Simon Mundy'; fw-general@lists.zend.com Subject: RE: [fw-general] $db-setRowClass $db-setRowsetClass In Zend_Db_Table_Abstract::fetchAll() we have $data = array( 'table'= $this, 'data' = $this-_fetch('All', $where, $order, $count, $offset), 'rowclass' = $this-_rowClass ); return new $this-_rowsetClass($data); And in Zend_Db_Table_Rowset_Abstract::__construct() we have: if (isset($config['rowClass'])) { $this-_rowClass = $config['rowClass']; } Almost as though the code was released without testing. Which I guess is consistent with the fact that there are no DB_Table/Row tests in the delivered version. Hi Simon, Yup, setting protected $_rowClass = 'Account'; does work. However, I plan on lazy loading a lot of my definitions so I can do something like: class Accounts extends Custom_Db_Table_Which_Extends_Zend_Db_Table implements Custom_Action_Insert_Delete_Authorize { public function _setup($config = array()) { $this-_name = __CLASS__; $this-setRowClass( Utility_String_Ucfirst::returnString( Utility_String_Inflector_Singularize::returnString( $this-_name))); parent::_setup($config); } } Really it's six in one and half a dozen in the other, just a personal preference, seeing how far I can push ZF. Unfortunately, this method didn't work from my initial tests, bringing us to the problem at hand. Alas, I do need the custom rowset. I have some methods on the entire resultset that I'd like to use in the future. (For instance, pagination utilizing view helpers). I'd really like if you (or someone) can poke around and see what's going wrong, if anything. Otherwise my experience during my upgrade has been very positive. Thanks! Hope to hear from you soon! -Ryan _ From: Simon Mundy [mailto:[EMAIL PROTECTED] Sent: March 19, 2007 2:35 PM To: Ryan Brooks Cc: fw-general@lists.zend.com Subject: Re: [fw-general] $db-setRowClass $db-setRowsetClass Hi Ryan I had a quick look at your table/row definitions. This will work:- class Accounts extends Zend_Db_Table { protected $_name = 'accounts'; protected $_rowClass = 'Account'; } You don't need the extra Rowset definition if there's no specific functionality you need to add - in most cases the default rowSet class is adequate. What puzzles me is that your '$this-setRowClass('Account')' _should_ have worked. I'll do some digging later to see if anything is awry and post a JIRA issue if it turns out to be the case. Cheers Update: Now I know I've missed something. In my debugging process, here's what I did. Open: Zend/DB/Table/Rowset/Abstract.php Goto Line: 71 Replace Value of: protected $_rowClass = 'Zend_Db_Table_Row' With: protected $_rowClass = 'Account' Have access to Account-helloWorld(); I'll keep digging, I seem to be missing a step along the way. -Ryan PS: Undo changes, save. ;) -- Simon Mundy | Director | PEPTOLAB 202/258 Flinders Lane | Melbourne | Victoria | Australia | 3000 Voice +61 (0) 3 9654 4324 | Mobile 0438 046 061 | Fax +61 (0) 3 9654 4124 http://www.peptolab.com
Re: [fw-general] PHP Adoption and the Zend Framework
Paul Court wrote: I am 99% sure the default ubuntu (6.10) server comes with PHP 5 (If you choose the LAMP option). I don't remember doing any other webstuff and my server signature is thus... Apache/2.0.55 (Ubuntu) PHP/5.1.6 mod_ssl/2.0.55 OpenSSL/0.9.8b Server at mail2 Port 443 (Sorry, Paul. Meant to send this to the list, not you directly. ;-) ) Off-topic question... I have a VM with Ubuntu 6.06 LTS installed, and the default is PHP 5.1.2. Unfortunately, for some unknown reason, Canonical decided not to compile in the PDO extension. Have they fixed this oversight in 6.10? Thanks, Ryan