entityName)) { $name = get_class($this); if (preg_match('@\\\\([\w]+)$@', $name, $matches)) { $name = $matches[1]; } if ($name != 'Record') { $this->entityName = Util::normilizeScopeName($name); } } } public function setEntityName($entityName) { $this->entityName = $entityName; } protected function getServiceFactory() { return $this->injections['serviceFactory']; } protected function getSelectManagerFactory() { return $this->injections['selectManagerFactory']; } protected function getAcl() { return $this->injections['acl']; } protected function getFileManager() { return $this->injections['fileManager']; } protected function getPreferences() { return $this->injections['preferences']; } protected function getMetadata() { return $this->injections['metadata']; } protected function getRepository() { return $this->getEntityManager()->getRepository($this->entityName); } protected function getRecordService($name) { if ($this->getServiceFactory()->checkExists($name)) { $service = $this->getServiceFactory()->create($name); } else { $service = $this->getServiceFactory()->create('Record'); $service->setEntityName($name); } return $service; } protected function prepareEntity($entity) { } public function getEntity($id = null) { $entity = $this->getRepository()->get($id); if (!empty($entity) && !empty($id)) { $this->loadAdditionalFields($entity); if (!$this->getAcl()->check($entity, 'read')) { throw new Forbidden(); } } if (!empty($entity)) { $this->prepareEntityForOutput($entity); } return $entity; } protected function getStreamService() { if (empty($this->streamService)) { $this->streamService = $this->getServiceFactory()->create('Stream'); } return $this->streamService; } protected function loadIsFollowed(Entity $entity) { if ($this->getStreamService()->checkIsFollowed($entity)) { $entity->set('isFollowed', true); } else { $entity->set('isFollowed', false); } } protected function loadLinkMultipleFields(Entity $entity) { $fieldDefs = $this->getMetadata()->get('entityDefs.' . $entity->getEntityName() . '.fields', array()); foreach ($fieldDefs as $field => $defs) { if (isset($defs['type']) && $defs['type'] == 'linkMultiple') { $columns = null; if (!empty($defs['columns'])) { $columns = $defs['columns']; } $entity->loadLinkMultipleField($field, $columns); } } } protected function loadParentNameFields(Entity $entity) { $fieldDefs = $this->getMetadata()->get('entityDefs.' . $entity->getEntityName() . '.fields', array()); foreach ($fieldDefs as $field => $defs) { if (isset($defs['type']) && $defs['type'] == 'linkParent') { $id = $entity->get($field . 'Id'); $scope = $entity->get($field . 'Type'); if ($scope) { if ($foreignEntity = $this->getEntityManager()->getEntity($scope, $id)) { $entity->set($field . 'Name', $foreignEntity->get('name')); } } } } } protected function loadAdditionalFields($entity) { $this->loadLinkMultipleFields($entity); $this->loadParentNameFields($entity); $this->loadIsFollowed($entity); $this->loadEmailAddressField($entity); $this->loadPhoneNumberField($entity); } protected function loadEmailAddressField(Entity $entity) { $fieldDefs = $this->getMetadata()->get('entityDefs.' . $entity->getEntityName() . '.fields', array()); if (!empty($fieldDefs['emailAddress']) && $fieldDefs['emailAddress']['type'] == 'email') { $dataFieldName = 'emailAddressData'; $entity->set($dataFieldName, $this->getEntityManager()->getRepository('EmailAddress')->getEmailAddressData($entity)); } } protected function loadPhoneNumberField(Entity $entity) { $fieldDefs = $this->getMetadata()->get('entityDefs.' . $entity->getEntityName() . '.fields', array()); if (!empty($fieldDefs['phoneNumber']) && $fieldDefs['phoneNumber']['type'] == 'phone') { $dataFieldName = 'phoneNumberData'; $entity->set($dataFieldName, $this->getEntityManager()->getRepository('PhoneNumber')->getPhoneNumberData($entity)); } } protected function getSelectManager($entityName) { return $this->getSelectManagerFactory()->create($entityName); } protected function storeEntity(Entity $entity) { return $this->getRepository()->save($entity); } protected function isValid($entity) { $fieldDefs = $entity->getFields(); if ($entity->hasField('name') && !empty($fieldDefs['name']['required'])) { if (!$entity->get('name')) { return false; } } return true; } protected function stripTags($string) { return strip_tags($string, '