/** * {@inheritdoc} */ public function renderRelationField($name, $label, $mode, $value = '', $expanded = false, $buttons = true) { self::$logger->debug('>>renderRelationField(name=[' . $name . '], label=[' . $label . '], mode=[' . $mode . '], value=[' . $value . '], expanded=[' . $expanded . '], buttons=[' . $buttons . '])'); $config = ConfigProvider::getInstance(); $html = ''; $rel = $this->BO->getPropObject($name); if ($mode == 'create' || $mode == 'edit') { if ($rel->getRelationType() == 'MANY-TO-MANY') { try { // check to see if the rel is on this class $rel->getSide(get_class($this->BO)); $widget = new RecordSelector($rel, $label, $name, get_class($this->BO)); $html .= $widget->render($expanded, $buttons); } catch (IllegalArguementException $iae) { // the rel may be on a parent class $widget = new RecordSelector($rel, $label, $name, get_parent_class($this->BO)); $html .= $widget->render($expanded, $buttons); } } else { $rel = new RecordSelector($rel, $label, $name); $html .= $rel->render($expanded, $buttons); } } if ($mode == 'view') { if ($rel->getRelationType() == 'MANY-TO-ONE') { $html .= $this->renderDefaultField($name, $label, 'view', $rel->getRelatedClassDisplayFieldValue()); } elseif ($rel->getRelationType() == 'MANY-TO-MANY') { try { // check to see if the rel is on this class $rel->getSide(get_class($this->BO)); $html .= $this->renderDefaultField($name, $label, 'view', $rel->getRelatedClassDisplayFieldValue(get_class($this->BO))); } catch (IllegalArguementException $iae) { // the rel may be on a parent class $html .= $this->renderDefaultField($name, $label, 'view', $rel->getRelatedClassDisplayFieldValue(get_parent_class($this->BO))); } } else { $rel = new RecordSelector($rel, $label, $name); $html .= $rel->render($expanded, $buttons); } } self::$logger->debug('<<renderRelationField [' . $html . ']'); return $html; }
/** * Handles get requests. * * @param Alpha\Util\Http\Request $request * * @return Alpha\Util\Http\Response * * @since 1.0 * * @throws Alpha\Exception\ResourceNotFoundException */ public function doGet($request) { self::$logger->debug('>>doGet(request=[' . var_export($request, true) . '])'); $params = $request->getParams(); $relationObject = new Relation(); $body = ''; try { $relationType = $params['relationType']; $ActiveRecordOID = $params['ActiveRecordOID']; $field = $params['field']; } catch (\Exception $e) { self::$logger->error('Required param missing for RecordSelectorController controller[' . $e->getMessage() . ']'); throw new ResourceNotFoundException('File not found'); } if ($relationType == 'MANY-TO-MANY') { try { $relatedClassLeft = urldecode($params['relatedClassLeft']); $relatedClassLeftDisplayField = $params['relatedClassLeftDisplayField']; $relatedClassRight = urldecode($params['relatedClassRight']); $relatedClassRightDisplayField = $params['relatedClassRightDisplayField']; $accessingClassName = urldecode($params['accessingClassName']); $lookupOIDs = $params['lookupOIDs']; } catch (\Exception $e) { self::$logger->error('Required param missing for RecordSelectorController controller[' . $e->getMessage() . ']'); throw new ResourceNotFoundException('File not found'); } $relationObject->setRelatedClass($relatedClassLeft, 'left'); $relationObject->setRelatedClassDisplayField($relatedClassLeftDisplayField, 'left'); $relationObject->setRelatedClass($relatedClassRight, 'right'); $relationObject->setRelatedClassDisplayField($relatedClassRightDisplayField, 'right'); $relationObject->setRelationType($relationType); $relationObject->setValue($ActiveRecordOID); $recSelector = new RecordSelector($relationObject, '', $field, $accessingClassName); $body .= $recSelector->renderSelector($field, explode(',', $lookupOIDs)); } else { try { $relatedClass = urldecode($params['relatedClass']); $relatedClassField = $params['relatedClassField']; $relatedClassDisplayField = $params['relatedClassDisplayField']; } catch (\Exception $e) { self::$logger->error('Required param missing for RecordSelectorController controller[' . $e->getMessage() . ']'); throw new ResourceNotFoundException('File not found'); } $relationObject->setRelatedClass($relatedClass); $relationObject->setRelatedClassField($relatedClassField); $relationObject->setRelatedClassDisplayField($relatedClassDisplayField); $relationObject->setRelationType($relationType); $relationObject->setValue($ActiveRecordOID); $recSelector = new RecordSelector($relationObject); $body .= $recSelector->renderSelector($field); } self::$logger->debug('<<__doGet'); return new Response(200, $body, array('Content-Type' => 'text/html')); }