示例#1
0
 /**
  * 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;
 }
示例#2
0
 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");
 }
示例#4
0
 function updateFromUI($object, $structure)
 {
     require_once ROOT_DIR . '/sys/DataObjectUtil.php';
     return DataObjectUtil::updateFromUI($object, $structure);
 }
示例#5
0
 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');
 }
示例#6
0
 function updateFromUI($object, $structure)
 {
     require_once ROOT_DIR . '/sys/DataObjectUtil.php';
     DataObjectUtil::updateFromUI($object, $structure);
     $validationResults = DataObjectUtil::validateObject($structure, $object);
     return $validationResults;
 }