/** * Save the object to the database (and optionally solr) based on the structure of the object * Takes care of determining whether or not the object is new or not. * * @param $dataObject * @param $form */ static function saveObject($structure, $dataType) { global $logger; //Check to see if we have a new object or an exiting object to update $object = new $dataType(); DataObjectUtil::updateFromUI($object, $structure); $primaryKeySet = false; foreach ($structure as $property) { if (isset($property['primaryKey']) && $property['primaryKey'] == true) { if (isset($object->{$property}['property']) && !is_null($object->{$property}['property']) && strlen($object->{$property}['property']) > 0) { $object = new $dataType(); $object->{$property}['property'] = $object->{$property}['property']; if ($object->find(true)) { $logger->log("Loaded existing object from database", PEAR_LOG_DEBUG); } else { $logger->log("Could not find existing object in database", PEAR_LOG_ERR); } //Reload from UI DataObjectUtil::updateFromUI($object, $structure); $primaryKeySet = true; break; } } } $validationResults = DataObjectUtil::validateObject($structure, $object); $validationResults['object'] = $object; if ($validationResults['validatedOk']) { //Check to see if we need to insert or update the object. //We can tell which to do based on whether or not the primary key is set if ($primaryKeySet) { $result = $object->update(); $validationResults['saveOk'] = $result == 1; } else { $result = $object->insert(); $validationResults['saveOk'] = $result; } if (!$validationResults['saveOk']) { //TODO: Display the PEAR error (in certain circumstances only?) $error =& PEAR_Singleton::getStaticProperty('DB_DataObject', 'lastError'); if (isset($error)) { $validationResults['errors'][] = 'Save failed ' . $error->getMessage(); } else { $validationResults['errors'][] = 'Save failed'; } } } return $validationResults; }
function launch() { global $configArray; global $interface; global $user; $interface->assign('canAddNew', $this->canAddNew()); $interface->assign('canDelete', $this->canDelete()); $interface->assign('showReturnToList', $this->showReturnToList()); $interface->assign('showExportAndCompare', $this->showExportAndCompare()); //Figure out what mode we are in if (isset($_REQUEST['objectAction'])) { $objectAction = $_REQUEST['objectAction']; } else { $objectAction = 'list'; } if ($objectAction == 'delete' && isset($_REQUEST['id'])) { parent::launch(); exit; } //Get all available widgets $availableWidgets = array(); $listWidget = new ListWidget(); if ($user->hasRole('libraryAdmin') || $user->hasRole('contentEditor')) { $homeLibrary = Library::getPatronHomeLibrary(); $listWidget->libraryId = $homeLibrary->libraryId; } $listWidget->orderBy('name ASC'); $listWidget->find(); while ($listWidget->fetch()) { $availableWidgets[$listWidget->id] = clone $listWidget; } $interface->assign('availableWidgets', $availableWidgets); //Get the selected widget if (isset($_REQUEST['id']) && is_numeric($_REQUEST['id'])) { $widget = $availableWidgets[$_REQUEST['id']]; $interface->assign('object', $widget); } //Do actions that require preprocessing if ($objectAction == 'save') { if (!isset($widget)) { $widget = new ListWidget(); } DataObjectUtil::updateFromUI($widget, $listWidget->getObjectStructure()); $validationResults = DataObjectUtil::saveObject($listWidget->getObjectStructure(), "ListWidget"); if (!$validationResults['validatedOk']) { $interface->assign('object', $widget); $interface->assign('errors', $validationResults['errors']); $objectAction = 'edit'; } else { $interface->assign('object', $validationResults['object']); $objectAction = 'view'; } } if ($objectAction == 'list') { $interface->setTemplate('listWidgets.tpl'); } else { if ($objectAction == 'edit' || $objectAction == 'add') { if (isset($_REQUEST['id'])) { $interface->assign('widgetid', $_REQUEST['id']); $interface->assign('id', $_REQUEST['id']); } $editForm = DataObjectUtil::getEditForm($listWidget->getObjectStructure()); $interface->assign('editForm', $editForm); $interface->setTemplate('listWidgetEdit.tpl'); } else { $interface->setTemplate('listWidget.tpl'); } } $interface->setPageTitle('List Widgets'); $interface->display('layout.tpl'); }
private function saveElement() { $listWidgetLinks = new ListWidgetListsLinks(); DataObjectUtil::updateFromUI($listWidgetLinks, $listWidgetLinks->getObjectStructure()); $validationResults = DataObjectUtil::saveObject($listWidgetLinks->getObjectStructure(), "ListWidgetListsLinks"); }
function updateFromUI($object, $structure) { require_once ROOT_DIR . '/sys/DataObjectUtil.php'; return DataObjectUtil::updateFromUI($object, $structure); }
function launch() { global $interface; global $user; $interface->assign('canAddNew', $this->canAddNew()); $interface->assign('canDelete', $this->canDelete()); $interface->assign('showReturnToList', $this->showReturnToList()); $interface->assign('showExportAndCompare', $this->showExportAndCompare()); //Figure out what mode we are in if (isset($_REQUEST['objectAction'])) { $objectAction = $_REQUEST['objectAction']; } else { $objectAction = 'list'; } if ($objectAction == 'delete' && isset($_REQUEST['id'])) { parent::launch(); exit; } //Get all available widgets $availableWidgets = array(); $listWidget = new ListWidget(); if ($user->hasRole('libraryAdmin') || $user->hasRole('contentEditor')) { $homeLibrary = Library::getPatronHomeLibrary(); $listWidget->libraryId = $homeLibrary->libraryId; } $listWidget->orderBy('name ASC'); $listWidget->find(); while ($listWidget->fetch()) { $availableWidgets[$listWidget->id] = clone $listWidget; } $interface->assign('availableWidgets', $availableWidgets); //Get the selected widget if (isset($_REQUEST['id']) && is_numeric($_REQUEST['id'])) { $widget = $availableWidgets[$_REQUEST['id']]; $interface->assign('object', $widget); } //Do actions that require pre-processing if ($objectAction == 'save') { if (!isset($widget)) { $widget = new ListWidget(); } DataObjectUtil::updateFromUI($widget, $listWidget->getObjectStructure()); $validationResults = DataObjectUtil::saveObject($listWidget->getObjectStructure(), "ListWidget"); if (!$validationResults['validatedOk']) { $interface->assign('object', $widget); $interface->assign('errors', $validationResults['errors']); $objectAction = 'edit'; } else { $interface->assign('object', $validationResults['object']); $objectAction = 'view'; } } if ($objectAction == 'list') { $interface->setTemplate('listWidgets.tpl'); } else { if ($objectAction == 'edit' || $objectAction == 'add') { if (isset($_REQUEST['id'])) { $interface->assign('widgetid', $_REQUEST['id']); $interface->assign('id', $_REQUEST['id']); } $editForm = DataObjectUtil::getEditForm($listWidget->getObjectStructure()); $interface->assign('editForm', $editForm); $interface->setTemplate('listWidgetEdit.tpl'); } else { // Set some default sizes for the iframe we embed on the view page switch ($widget->style) { case 'horizontal': $width = 650; $height = 275; break; case 'vertical': $width = 175; $height = 400; break; case 'text-list': $width = 400; $height = 200; break; case 'single': case 'single-with-next': $width = 225; $height = 275; break; } $interface->assign('width', $width); $interface->assign('height', $height); $interface->setTemplate('listWidget.tpl'); } } $interface->assign('sidebar', 'MyAccount/account-sidebar.tpl'); $interface->setPageTitle('List Widgets'); $interface->display('layout.tpl'); }
function updateFromUI($object, $structure) { require_once ROOT_DIR . '/sys/DataObjectUtil.php'; DataObjectUtil::updateFromUI($object, $structure); $validationResults = DataObjectUtil::validateObject($structure, $object); return $validationResults; }