1: <?php
2:
3: namespace Alpha\Controller;
4:
5: use Alpha\Exception\ResourceNotFoundException;
6: use Alpha\View\Widget\RecordSelector;
7: use Alpha\Util\Logging\Logger;
8: use Alpha\Util\Http\Request;
9: use Alpha\Util\Http\Response;
10: use Alpha\Model\Type\Relation;
11:
12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53:
54: class RecordSelectorController extends Controller implements ControllerInterface
55: {
56: 57: 58: 59: 60: 61: 62:
63: private static $logger = null;
64:
65: 66: 67: 68: 69:
70: public function __construct()
71: {
72: self::$logger = new Logger('RecordSelectorController');
73: self::$logger->debug('>>__construct()');
74:
75:
76: parent::__construct('Public');
77:
78: self::$logger->debug('<<__construct');
79: }
80:
81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91:
92: public function doGet($request)
93: {
94: self::$logger->debug('>>doGet(request=['.var_export($request, true).'])');
95:
96: $params = $request->getParams();
97:
98: $relationObject = new Relation();
99:
100: $body = '';
101:
102: try {
103: $relationType = $params['relationType'];
104: $ActiveRecordOID = $params['ActiveRecordOID'];
105: $field = $params['field'];
106: } catch (\Exception $e) {
107: self::$logger->error('Required param missing for RecordSelectorController controller['.$e->getMessage().']');
108: throw new ResourceNotFoundException('File not found');
109: }
110:
111: if ($relationType == 'MANY-TO-MANY') {
112: try {
113: $relatedClassLeft = urldecode($params['relatedClassLeft']);
114: $relatedClassLeftDisplayField = $params['relatedClassLeftDisplayField'];
115: $relatedClassRight = urldecode($params['relatedClassRight']);
116: $relatedClassRightDisplayField = $params['relatedClassRightDisplayField'];
117: $accessingClassName = urldecode($params['accessingClassName']);
118: $lookupOIDs = $params['lookupOIDs'];
119: } catch (\Exception $e) {
120: self::$logger->error('Required param missing for RecordSelectorController controller['.$e->getMessage().']');
121: throw new ResourceNotFoundException('File not found');
122: }
123:
124: $relationObject->setRelatedClass($relatedClassLeft, 'left');
125: $relationObject->setRelatedClassDisplayField($relatedClassLeftDisplayField, 'left');
126: $relationObject->setRelatedClass($relatedClassRight, 'right');
127: $relationObject->setRelatedClassDisplayField($relatedClassRightDisplayField, 'right');
128: $relationObject->setRelationType($relationType);
129: $relationObject->setValue($ActiveRecordOID);
130:
131: $recSelector = new RecordSelector($relationObject, '', $field, $accessingClassName);
132: $body .= $recSelector->renderSelector($field, explode(',', $lookupOIDs));
133: } else {
134: try {
135: $relatedClass = urldecode($params['relatedClass']);
136: $relatedClassField = $params['relatedClassField'];
137: $relatedClassDisplayField = $params['relatedClassDisplayField'];
138: } catch (\Exception $e) {
139: self::$logger->error('Required param missing for RecordSelectorController controller['.$e->getMessage().']');
140: throw new ResourceNotFoundException('File not found');
141: }
142:
143: $relationObject->setRelatedClass($relatedClass);
144: $relationObject->setRelatedClassField($relatedClassField);
145: $relationObject->setRelatedClassDisplayField($relatedClassDisplayField);
146: $relationObject->setRelationType($relationType);
147: $relationObject->setValue($ActiveRecordOID);
148:
149: $recSelector = new RecordSelector($relationObject);
150: $body .= $recSelector->renderSelector($field);
151: }
152:
153: self::$logger->debug('<<__doGet');
154:
155: return new Response(200, $body, array('Content-Type' => 'text/html'));
156: }
157: }
158: