diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitEventsApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitEventsApiController.php index 404c3f20..8eb2df64 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitEventsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitEventsApiController.php @@ -141,7 +141,15 @@ final class OAuth2SummitEventsApiController extends OAuth2ProtectedController $response = $strategy->getEvents(['summit_id' => $summit_id]); $filename = "activities-" . date('Ymd'); - $list = $response->toArray(null, [], ['none'],[],SerializerRegistry::SerializerType_CSV); + $list = $response->toArray( + null, + [], + ['none'], + [ + 'current_user' => $this->resource_server_context->getCurrentUser(true) + ], + SerializerRegistry::SerializerType_CSV + ); return $this->export ( diff --git a/app/Http/Utils/PagingResponse.php b/app/Http/Utils/PagingResponse.php index fe39e270..f309f487 100644 --- a/app/Http/Utils/PagingResponse.php +++ b/app/Http/Utils/PagingResponse.php @@ -12,6 +12,8 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ + +use Illuminate\Support\Facades\Log; use models\utils\IEntity; use ModelSerializers\SerializerRegistry; /** @@ -109,7 +111,10 @@ final class PagingResponse { if($i instanceof IEntity) { + $start = microtime(true); $i = SerializerRegistry::getInstance()->getSerializer($i, $serializer_type)->serialize($expand, $fields, $relations, $params); + $end = microtime(true); + Log::debug(sprintf("PagingResponse::toArray serialization delta %s", $end - $start)); } $items[] = $i; } diff --git a/app/ModelSerializers/Summit/Presentation/AdminPresentationCSVSerializer.php b/app/ModelSerializers/Summit/Presentation/AdminPresentationCSVSerializer.php index cae7742c..f17ed17e 100644 --- a/app/ModelSerializers/Summit/Presentation/AdminPresentationCSVSerializer.php +++ b/app/ModelSerializers/Summit/Presentation/AdminPresentationCSVSerializer.php @@ -13,6 +13,7 @@ **/ use Illuminate\Support\Facades\Log; use Libs\ModelSerializers\AbstractSerializer; +use models\main\Member; use models\summit\Presentation; /** * Class AdminPresentationCSVSerializer @@ -34,8 +35,8 @@ final class AdminPresentationCSVSerializer extends AdminPresentationSerializer if(!$presentation instanceof Presentation) return $values; $serializerType = SerializerRegistry::SerializerType_Public; - $currentUser = $this->resource_server_context->getCurrentUser(); - if(!is_null($currentUser) && $currentUser->isAdmin()){ + + if(isset($params['current_user']) && $params['current_user'] instanceof Member && $params['current_user']->isAdmin()){ $serializerType = SerializerRegistry::SerializerType_Private; } @@ -66,6 +67,7 @@ final class AdminPresentationCSVSerializer extends AdminPresentationSerializer $values['speaker_titles'] = ""; $values['speaker_companies'] = ""; + if($presentation->getSpeakers()->count() > 0){ $speaker_ids = []; @@ -109,6 +111,7 @@ final class AdminPresentationCSVSerializer extends AdminPresentationSerializer } } + if(isset($values['description'])){ $values['description'] = strip_tags($values['description']); } @@ -117,6 +120,7 @@ final class AdminPresentationCSVSerializer extends AdminPresentationSerializer } // add video column + $values['video'] = ''; $values['public_video'] = ''; diff --git a/app/ModelSerializers/Summit/Presentation/AdminSummitEventCSVSerializer.php b/app/ModelSerializers/Summit/Presentation/AdminSummitEventCSVSerializer.php index a9fcb6ec..39a4bdcf 100644 --- a/app/ModelSerializers/Summit/Presentation/AdminSummitEventCSVSerializer.php +++ b/app/ModelSerializers/Summit/Presentation/AdminSummitEventCSVSerializer.php @@ -33,9 +33,11 @@ class AdminSummitEventCSVSerializer extends SummitEventSerializer if(isset($values['description'])){ $values['description'] = strip_tags($values['description']); } + if($summit_event->hasCategory()){ $values['track'] = $summit_event->getCategory()->getTitle(); } + return $values; } } \ No newline at end of file diff --git a/app/ModelSerializers/Summit/SummitEventSerializer.php b/app/ModelSerializers/Summit/SummitEventSerializer.php index fdc4b4da..ef0699b0 100644 --- a/app/ModelSerializers/Summit/SummitEventSerializer.php +++ b/app/ModelSerializers/Summit/SummitEventSerializer.php @@ -14,6 +14,7 @@ use App\Facades\ResourceServerContext; use Libs\ModelSerializers\AbstractSerializer; +use models\main\Member; use models\summit\SummitEvent; /** @@ -104,7 +105,8 @@ class SummitEventSerializer extends SilverStripeSerializer * @param array $params * @return array */ - public function serialize($expand = null, array $fields = array(), array $relations = array(), array $params = array()) + public function serialize( + $expand = null, array $fields = array(), array $relations = array(), array $params = array()) { $event = $this->object; if (!$event instanceof SummitEvent) return []; @@ -146,7 +148,7 @@ class SummitEventSerializer extends SilverStripeSerializer $values['current_attendance'] = $attendance; } - if ($event->hasAccess(ResourceServerContext::getCurrentUser())) { + if (isset($params['current_user']) && $params['current_user'] instanceof Member && $event->hasAccess($params['current_user'])) { $values['streaming_url'] = $event->getStreamingUrl(); $values['etherpad_link'] = $event->getEtherpadLink(); } diff --git a/tests/BrowserKitTestCase.php b/tests/BrowserKitTestCase.php index 31f11fe5..dba2e842 100644 --- a/tests/BrowserKitTestCase.php +++ b/tests/BrowserKitTestCase.php @@ -50,18 +50,6 @@ abstract class BrowserKitTestCase extends BaseTestCase { Model::unguard(); DB::setDefaultConnection("model"); - DB::table('Group_Members')->delete(); - DB::table('Member')->delete(); - DB::table('Group')->delete(); - - DB::table('Summit')->delete(); - DB::table('SummitEventType')->delete(); - DB::table('PresentationType')->delete(); - DB::table('SummitAbstractLocation')->delete(); - DB::table('SummitGeoLocatedLocation')->delete(); - DB::table('SummitVenue')->delete(); - DB::table('PresentationTrackChairView')->delete(); - Artisan::call('doctrine:migrations:migrate', ["--connection" => 'config']); Artisan::call('doctrine:migrations:migrate', ["--connection" => 'model']); //Mail::pretend(true); diff --git a/tests/OAuth2SummitEventsApiTest.php b/tests/OAuth2SummitEventsApiTest.php index 3fea8c3d..2c1c084d 100644 --- a/tests/OAuth2SummitEventsApiTest.php +++ b/tests/OAuth2SummitEventsApiTest.php @@ -490,7 +490,7 @@ final class OAuth2SummitEventsApiTest extends ProtectedApiTest { $params = array ( - 'id' => self::$summit->getId(), + 'id' => 31, //'expand' => 'feedback', /*'filter' => [ 'published==1'