6.0.0-beta1
▾
Tasks
New Task
Search
Photos
Wiki
▾
Tickets
New Ticket
Search
dev.horde.org
Toggle Alerts Log
Help
11/27/25
H
istory
A
ttachments
C
omment
W
atch
Download
Comment on [#13865] Application settings for "horde" application not updatable in IMAP/Kolab back-end
*
Your Email Address
*
Spam protection
Enter the letters below:
.__ .__ .__.. ,.__ [__)[ __| | \./ [__) [__)[_./|__\ | |
Comment
> as you probably have noticed on the Horde mailing list, I ran into > problems storing Horde preferences in our Kolab backend. > > Yesterday, I have done some tracing in the Horde code, and > pin-pointed the path leading to the problem. But I'm still far from > solving the riddle and ask for your help. > > The symptom is that Horde prefs (the ones for > "<application>horde</application>", vs. i.e. > "<application>imp</application>") are not *updated* in the IMAP > store. Initial save works, but once the settings are stored, no new > settings will be persisted. > > Using the web UI, I receive the green "OK" feedback when storing > these preferences... but further debugging showed that an exception > is thrown, which somewhere along the way is caught and not reported > "upstream": > > --- cut here --- > 2015-02-16T18:07:06+01:00 DEBUG: Variable information: > object(Horde_Kolab_Storage_Object_Exception)#984 (10) { > ["details"]=> > NULL > ["logged"]=> > bool(false) > ["_logLevel":protected]=> > int(0) > ["message":protected]=> > string(99) "Failed writing the Kolab object: Failed parsing Kolab > object input data of type string! Input was: > " > ["string":"Exception":private]=> > string(0) "" > ["code":protected]=> > int(0) > ["file":protected]=> > string(65) > "/usr/share/php5/PEAR/Horde/Kolab/Storage/Object/Writer/Format.php" > ["line":protected]=> > int(94) > ["trace":"Exception":private]=> > array(5) { > [0]=> > array(6) { > ["file"]=> > string(51) "/usr/share/php5/PEAR/Horde/Kolab/Storage/Object.php" > ["line"]=> > int(443) > ["function"]=> > string(4) "save" > ["class"]=> > string(40) "Horde_Kolab_Storage_Object_Writer_Format" > [...] > --- cut here --- > > > I found that exception by entering successive trace points in the > code and then adding a "try/catch" block in Storage/Data/Base.php, > method modify(): > > --- cut here --- > if (!$object instanceOf Horde_Kolab_Storage_Object) { > $object_array = $object; > $object = $oldObject; > $object->setData($object_array); > } > > $object->setDriver($this->_driver); > try { > $result = $object->save($writer); > } catch (Horde_Kolab_Storage_Exception $e) { > Horde::debug( $e); > } > --- cut here --- > > Further debugging brought me to Kolab/Format/Xml.php, method save(): > > --- cut here --- > public function save($object, $options = array()) > { > Horde::debug( $object); > if (!isset($options['previous'])) { > $this->_xmldoc = $this->_getParser()->getDocument(); > } else { > $parse_options = $options; > unset($parse_options['previous']); > Horde::debug( $options); > $this->_xmldoc = $this->_getParser()->parse( > $options['previous'], $parse_options > ); > Horde::debug( "TP0c"); > } > $this->_refreshParser(); > --- cut here --- > > I hit both the first and second trace point, but not the third > ("TP0c"), hence the exception seems to be thrown in > $this->_getParser()->parse(). > > That parse() method receives two arguments, $options['previous'] and > $parse_options (which is $options minus $options['previous'], > $options is traced as: > > -- cut here --- > 2015-02-16T18:07:06+01:00 DEBUG: Variable information: > array(1) { > ["previous"]=> > resource(7460) of type (stream) > } > > Backtrace: > 1. Horde_Prefs->store() > 2. Horde_Prefs_Storage_KolabImap->store() > /usr/share/php5/PEAR/Horde/Prefs.php:433 > 3. Horde_Kolab_Storage_Data_Base->modify() > /usr/share/php5/PEAR/Horde/Prefs/Storage/KolabImap.php:137 > 4. Horde_Kolab_Storage_Object->save() > /usr/share/php5/PEAR/Horde/Kolab/Storage/Data/Base.php:303 > 5. Horde_Kolab_Storage_Object_Writer_Format->save() > /usr/share/php5/PEAR/Horde/Kolab/Storage/Object.php:443 > 6. Horde_Kolab_Format_Xml->save() > /usr/share/php5/PEAR/Horde/Kolab/Storage/Object/Writer/Format.php:92 > 7. Horde::debug() /usr/share/php5/PEAR/Horde/Kolab/Format/Xml.php:271 > --- cut here --- > > The stream is read in parse() (but empty?) and at last _parseXml() > receives that empty string as first parameter: > > --- cut here --- > 2015-02-16T18:28:10+01:00 DEBUG: Variable information: > string(0) "" > > Backtrace: > 1. Horde_Prefs->store() > 2. Horde_Prefs_Storage_KolabImap->store() > /usr/share/php5/PEAR/Horde/Prefs.php:433 > 3. Horde_Kolab_Storage_Data_Base->modify() > /usr/share/php5/PEAR/Horde/Prefs/Storage/KolabImap.php:137 > 4. Horde_Kolab_Storage_Object->save() > /usr/share/php5/PEAR/Horde/Kolab/Storage/Data/Base.php:302 > 5. Horde_Kolab_Storage_Object_Writer_Format->save() > /usr/share/php5/PEAR/Horde/Kolab/Storage/Object.php:443 > 6. Horde_Kolab_Format_Xml->save() > /usr/share/php5/PEAR/Horde/Kolab/Storage/Object/Writer/Format.php:92 > 7. Horde_Kolab_Format_Xml_Parser->parse() > /usr/share/php5/PEAR/Horde/Kolab/Format/Xml.php:274 > 8. Horde_Kolab_Format_Xml_Parser->_parseXml() > /usr/share/php5/PEAR/Horde/Kolab/Format/Xml/Parser.php:81 > 9. Horde::debug() /usr/share/php5/PEAR/Horde/Kolab/Format/Xml/Parser.php:114 > --- cut here --- > > which is generated in Format/Xml/Parser.php: > --- cut here --- > private function _parseXml($input, $options = array()) > { > Horde::debug( $input); > --- cut here --- > > When storing other applications' preferences, data can be read from > the according stream. > > I have no idea how to continue from here. Can you make anything from > this and share either a fix or at least a pointer to where I should > continue debugging? > > Not reporting the exception, but rather telling the user that saving > the prefs was successful, is an error on its own ;) > > Regards, > Jens
Attachment
Watch this ticket
N
ew Ticket
M
y Tickets
S
earch
Q
uery Builder
R
eports
Saved Queries
Open Bugs
Bugs waiting for Feedback
Open Bugs in Releases
Open Enhancements
Enhancements waiting for Feedback
Bugs with Patches
Enhancements with Patches
Release Showstoppers
Stalled Tickets
New Tickets
Horde 5 Showstoppers