Пример #1
0
 protected function preCreateHook(&$data)
 {
     $org = new Organization(U::array_value($data, 'organization'));
     // check creator permission
     $requester = $this->app['user'];
     $role = $org->getRoleOfUser($requester);
     if ($role < Volunteer::ROLE_VOLUNTEER && !$requester->isAdmin()) {
         $this->app['errors']->push(['error' => ERROR_NO_PERMISSION]);
         return false;
     }
     // make sure the place name is unique
     $name = U::array_value($data, 'name');
     if (!empty($name) && $name != $this->name && self::totalRecords(['organization' => $org->id(), 'name' => $name]) > 0) {
         $errorStack = $this->app['errors'];
         $errorStack->push(['error' => ERROR_VOLUNTEER_PLACE_NAME_TAKEN, 'params' => ['place_name' => $name]]);
         return false;
     }
     // volunteers cannot verify places
     if ($role < Volunteer::ROLE_ADMIN && !$requester->isAdmin()) {
         $data['verify_approved'] = false;
     }
     // geocode
     if (isset($data['address'])) {
         $data['coordinates'] = $this->geocode($data['address']);
     }
     return true;
 }