diff --git a/lib/widgets/FieldsetDisplayRegistry.inc.php b/lib/widgets/FieldsetDisplayRegistry.inc.php index 9ca62ba..07a18c0 100644 --- a/lib/widgets/FieldsetDisplayRegistry.inc.php +++ b/lib/widgets/FieldsetDisplayRegistry.inc.php @@ -6,31 +6,31 @@ * Document Management Made Simple * Copyright (C) 2008 KnowledgeTree Inc. * Portions copyright The Jam Warehouse Software (Pty) Limited - * + * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 3 as published by the * Free Software Foundation. - * + * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . - * - * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco, + * + * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco, * California 94120-7775, or email info@knowledgetree.com. - * + * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU General Public License version 3. - * + * * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by - * KnowledgeTree" logo and retain the original copyright notice. If the display of the + * KnowledgeTree" logo and retain the original copyright notice. If the display of the * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices - * must display the words "Powered by KnowledgeTree" and retain the original + * must display the words "Powered by KnowledgeTree" and retain the original * copyright notice. * Contributor( s): ______________________________________ * @@ -43,9 +43,9 @@ require_once(KT_LIB_DIR . '/widgets/widgetfactory.inc.php'); require_once(KT_LIB_DIR . '/validation/validatorfactory.inc.php'); class KTFieldsetDisplayRegistry { - + var $fieldset_types = array(); - + // {{{ getSingleton function &getSingleton () { if (!KTUtil::arrayGet($GLOBALS, 'oKTFieldsetDisplayRegistry')) { @@ -63,14 +63,26 @@ class KTFieldsetDisplayRegistry { function registerFieldsetDisplay($nsname, $className) { $this->fieldset_types[$nsname] = $className; } - + function getHandler($nsname) { if (!array_key_exists($nsname, $this->fieldset_types)) { - // unfortunately, we need to do a bit more spelunking here. + // unfortunately, we need to do a bit more spelunking here. // if its conditional, we use a different item. ns is unsufficient. - // + // // FIXME this is slightly wasteful from a performance POV, though DB caching should make it OK. $oFieldset =& KTFieldset::getByNamespace ($nsname); + if (PEAR::isError($oFieldset)) + { + global $default; + $default->log->error('Could not resolve Fieldset by namespace: ' . $nsname . '. Error: ' . $oFieldset->getMessage()); + return 'SimpleFieldsetDisplay'; + } + if (is_a($oFieldset, 'KTEntityNoObjects')) + { + global $default; + $default->log->error('Could not resolve Fieldset by namespace: ' . $nsname . '. Error: KTEntityNoObjects returned.'); + return 'SimpleFieldsetDisplay'; + } if ($oFieldset->getIsConditional() && KTMetadataUtil::validateCompleteness($oFieldset)) { return 'ConditionalFieldsetDisplay'; } else { @@ -80,7 +92,7 @@ class KTFieldsetDisplayRegistry { return $this->fieldset_types[$nsname]; } } - + // simple function to adapt a fieldset to a form // passing in $oDocument will set the initial default // values to those attached to the document. @@ -89,10 +101,10 @@ class KTFieldsetDisplayRegistry { function formAdaptor($oFieldset, $oDocument = null) { $widgets = array(); $validators = array(); - + $oVF =& KTValidationFactory::getSingleton(); - $oWF =& KTWidgetFactory::getSingleton(); - + $oWF =& KTWidgetFactory::getSingleton(); + $fields =& $oFieldset->getFields(); foreach ($fields as $oField) { // FIXME we probably want to use some form of factory here. @@ -100,7 +112,7 @@ class KTFieldsetDisplayRegistry { if ($field->getHasLookup()) { // lookups if ($field->getHasLookupTree()) { - // tree + // tree // FIXME we don't handle trees yet continue; /* @@ -108,13 +120,13 @@ class KTFieldsetDisplayRegistry { $fieldTree = new MDTree(); $fieldTree->buildForField($field->getId()); $fieldTree->setActiveItem($current_value); - $fieldOptions['tree'] = $fieldTree->_evilTreeRenderer($fieldTree, $fieldName); - $oField = new KTTreeWidget($fieldLabel, $fieldDescription, $fieldName, $fieldValue, $page, $fieldRequired, null, $fieldErrors, $fieldOptions); - + $fieldOptions['tree'] = $fieldTree->_evilTreeRenderer($fieldTree, $fieldName); + $oField = new KTTreeWidget($fieldLabel, $fieldDescription, $fieldName, $fieldValue, $page, $fieldRequired, null, $fieldErrors, $fieldOptions); + */ } else { // normal - + $widgets[] = $oWF->get('ktcore.widgets.entityselection', array( 'label' => $oField->getName(), 'name' => 'metadata_' . $oField->getId(), @@ -124,14 +136,14 @@ class KTFieldsetDisplayRegistry { 'label_method' => 'getName', 'required' => $oField->getIsMandatory(), )); - + if ($oField->getIsMandatory()) { $validators[] = $oVF->get('ktcore.validators.required', array( 'test' => $field_name, 'basename' => 'metadata_', )); } - + $validators[] = $oVF->get('ktcore.validators.membership', array( 'test' => $field_name, 'output' => $field_name, @@ -150,10 +162,10 @@ class KTFieldsetDisplayRegistry { 'test' => $field_name, 'basename' => $field_name, )); - } - } + } + } } - + return array( 'widgets' => $widgets, 'validators' => $validators, diff --git a/plugins/tagcloud/TagCloudPlugin.php b/plugins/tagcloud/TagCloudPlugin.php index 15cf962..c6df912 100644 --- a/plugins/tagcloud/TagCloudPlugin.php +++ b/plugins/tagcloud/TagCloudPlugin.php @@ -7,31 +7,31 @@ * Document Management Made Simple * Copyright (C) 2008 KnowledgeTree Inc. * Portions copyright The Jam Warehouse Software (Pty) Limited - * + * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 3 as published by the * Free Software Foundation. - * + * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . - * - * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco, + * + * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco, * California 94120-7775, or email info@knowledgetree.com. - * + * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU General Public License version 3. - * + * * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by - * KnowledgeTree" logo and retain the original copyright notice. If the display of the + * KnowledgeTree" logo and retain the original copyright notice. If the display of the * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices - * must display the words "Powered by KnowledgeTree" and retain the original + * must display the words "Powered by KnowledgeTree" and retain the original * copyright notice. * Contributor( s): ______________________________________ * @@ -76,23 +76,27 @@ require_once(KT_LIB_DIR . '/templating/templating.inc.php'); // Check if the tagcloud fielset entry exists, if not, create it - if(!TagCloudPlugin::tagFieldsetExists()){ + $iFieldsetId = TagCloudPlugin::tagFieldsetExists(); + if(PEAR::isError($iFieldsetId)){ + return false; + } + if($iFieldsetId !== false){ $oFieldset = TagCloudPlugin::createFieldset(); - if (PEAR::isError($oFieldset)) { + if (PEAR::isError($oFieldset) || is_null($oFieldset)) { return false; } - if($oFieldset){ - // make the fieldset id viewable - $iFieldsetId = $oFieldset->iId; - } - }else{ // if the entry exists, make the fieldset id viewable anyway - $iFieldsetId = TagCloudPlugin::tagFieldsetExists(); + // make the fieldset id viewable + $iFieldsetId = $oFieldset->iId; } // Check if the tagcloud document field entry exists, if not, create it - if(!TagCloudPlugin::tagFieldExists()){ + $fExists = TagCloudPlugin::tagFieldExists(); + if(PEAR::isError($fExists)){ + return false; + } + if($fExists !== false){ $oField = TagCloudPlugin::createDocumentField($iFieldsetId); - if (PEAR::isError($oField)) { + if (PEAR::isError($oField) || is_null($oField)) { return false; } } @@ -156,8 +160,9 @@ require_once(KT_LIB_DIR . '/templating/templating.inc.php'); $sTag = DBUtil::getOneResultKey(array($sQuery), 'id'); if (PEAR::isError($sTag)) { - // XXX: log error - return false; + global $default; + $default->log->error('Error resolving Tag Cloud field: '. $sTag->getMessage()); + return $sTag; } if(!is_null($sTag)){ @@ -178,8 +183,9 @@ require_once(KT_LIB_DIR . '/templating/templating.inc.php'); $iFieldset = DBUtil::getOneResultKey(array($sQuery), 'id'); if (PEAR::isError($iFieldset)) { - // XXX: log error - return false; + global $default; + $default->log->error('Error resolving Tag Cloud fieldset: '. $iFieldset->getMessage()); + return $iFieldset; } if(!is_null($iFieldset)){