Example #1
0
 /**
  * {@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'));
 }