diff --git a/2020/include/functions.php b/2020/include/functions.php index d543016..71719f1 100644 --- a/2020/include/functions.php +++ b/2020/include/functions.php @@ -1,149 +1,150 @@ . /** * Require a certain page from the template directory * * @param $name string page name (to be sanitized) * @param $args mixed arguments to be passed to the page scope */ function template_2020( $template_name, $template_args = [] ) { extract( $template_args, EXTR_SKIP ); return require ABSPATH . "/2020/template/$template_name.php"; } /** * Spawn a 2020 Event * * @param int $id Event ID */ function event_2020( $id ) { $event = ( new QueryEvent() ) ->whereEventID( $id ) ->select( Conference::fields() ) ->select( Event::fields() ) ->select( Room::fields() ) ->select( Track::fields() ) ->select( Room::fields() ) ->select( Chapter::fields() ) ->selectEventHasVideo() + ->selectEventHasDocument() ->joinConference() ->joinTrack( 'LEFT' ) ->joinRoom( 'LEFT' ) ->joinChapter( 'LEFT' ) ->queryRow(); template_2020( 'event-brief', [ 'event' => $event, ] ); } /** * Print an icon for the 2020 website * * See https://materializecss.com/icons.html * * @param string $name Icon name * @param string $classes CSS classes * @return string */ function icon_2020( $name, $classes = null ) { $classes = $classes ? " $classes" : ''; return sprintf( '%s', $classes, $name ); } /** * Query some Event Users * * @param Event $event * @param string $role Choose 'speaker' or 'moderator' * @return Generator */ function event_users_2020( $event, $role ) { $users = ( new QueryEventUser() ) ->joinUser() ->whereEvent( $event ) ->whereEventUserRole( $role ) ->orderByEventUserOrder() ->queryGenerator(); return $users; } /** * Link to an User of the itWikiCon 2020 * * @param User $user * @return string HTML firm */ function user_link_2020( $user ) { $name = esc_html( $user->getUserDisplayName() ); // print the Meta-wiki permalink if( $user->has( User::META_WIKI ) ) { $name = HTML::a( $user->getUserMetaWikiURL(), $name ); } return $name; } /** * Print the URL to a Sharable * * @param Event $event * @param Sharable $sharable * @param string $text * @return string HTML */ function sharable_edit( $event, $sharable = null, $text = null ) { $s = ''; // no editable, no party if( $event->isEventEditable() ) { // displayed text if( !$text ) { $text = $sharable ? __( "modifica" ) : __( "aggiungi" ); } // edit or creation URL $url = $sharable ? $sharable->getSharableEditURL() : Sharable::editURL( [ 'event_ID' => $event->getEventID(), ] ); // create link $s = HTML::a( $url, esc_html( $text ) ); } // [edit] if( $s ) { $s = "[$s]"; } return $s; } diff --git a/2020/template/event-brief.php b/2020/template/event-brief.php index 54f6cdb..bed9102 100644 --- a/2020/template/event-brief.php +++ b/2020/template/event-brief.php @@ -1,111 +1,133 @@ . +/** + * Template used to display a single event briefly + * + * Variables that should be available: + * + * $event Event: current Event + * Note that the Event should have these additional attributes: + * event_has_video + * event_has_document + */ + // query all the Users maintaining this Event $users = ( new QueryEventUser() ) ->joinUser() ->whereEvent( $event ) ->whereEventUserIsSpeaker() ->orderByEventUserOrder() ->queryGenerator(); ?>
hasEventLanguage() && $event->getEventLanguage() !== 'it' ): ?> getEventLanguage() ) ?>

isEventAborted() ): ?> getEventTitle() ) ?> getEventTitle() ) ?>

getEventStart( 'H:i' ) ?>–getEventEnd( 'H:i' ) ?>
has( User::META_WIKI ) ) { // print the Meta-wiki permalink echo HTML::a( $user->getUserMetaWikiURL(), esc_html( $user->getUserDisplayName() ) ); } else { echo esc_html( $user->getUserDisplayName() ); } ?>
isEventAborted() && !$event->isEventPassed() ): ?>

getRoomURL(), $event->getRoomName(). 'play_arrow', null, 'btn white blue-text waves-effect' ) ?>

get( 'event_has_video' ) ): ?>

- +

+ + get( 'event_has_document' ) ): ?> +

+ + + + +

+ + + isEventEditable() ): ?> getEventEditURL(), '[edit]' ) ?>
diff --git a/2020/www/event.php b/2020/www/event.php index b456e2d..68da29c 100644 --- a/2020/www/event.php +++ b/2020/www/event.php @@ -1,377 +1,378 @@ . // load all the stuff require 'load.php'; // the Event we want to visit $event = null; // load this conference //$conference = ( new QueryConference() ) // ->whereConferenceUID( THIS_CONFERENCE_UID ) // ->queryRow(); // no conference no party //if( !$conference ) { // error_die( sprintf( // "missing conference %s", // THIS_CONFERENCE_UID // ) ); //} // event UID $event_slug = $_SERVER['PATH_INFO'] ?? null; if( !$event_slug ) { error_die( "missing event UID" ); } // remove unuseful slashes $event_slug = trim( $event_slug, _ ); // 123-something $event_slug_parts = explode( '-', $event_slug ); // no ID no party $event_ID = $event_slug_parts[0] ?? 0; $event_ID = (int) $event_ID; if( $event_ID ) { // Event $event = FullEvent::factory() ->whereEventID( $event_ID ) ->queryRow(); } else { // else use the complete Event slug // Event $event = FullEvent::factory() ->whereEventUID( $event_slug ) ->queryRow(); } // no Event no party if( !$event ) { error_die( "missing event $event_slug" ); } // inherit the Conference information from the Event object // the $conference is read from the website header $conference = $event; // check if this is the correct permalink if( site_page( $_SERVER['REQUEST_URI'], true ) !== $event->getEventStandardURL( true ) ) { http_redirect( $event->getEventStandardURL( true ) ); } // Event speakers $speakers = event_users_2020( $event, 'speaker' ); $moderators = event_users_2020( $event, 'moderator' ); // create an array of links $links_speaker = []; $links_moderator = []; foreach( $speakers as $user ) { $links_speaker[] = user_link_2020( $user ); } foreach( $moderators as $user ) { $links_moderator[] = user_link_2020( $user ); } // print the website header template_2020( 'header', [ 'conference' => $conference, 'title' => $event->getEventTitle(), 'url' => $event->getEventURL(), ] ); ?>

getEventTitle() ) ?> – getConferenceAcronym() ) ?>

.

factorySharebleByEvent() ->select( Sharable::fields() ) ->whereSharableIsRoot() ->selectSharableHasChildren() ->queryGenerator(); ?> valid() ): ?>
get( 'sharable_has_children' ) ) { $child_sharables = ( new QuerySharable() ) ->whereSharableParent( $sharable ) ->queryResults(); } $all_sharables = array_merge( [ $sharable ], $child_sharables ); ?>
isSharableDownloadable() ): ?> isSharableVideo() ): ?> +

isEventPassed() ): ?>

getEventStart( 'd' ) ?> getEventStart( 'H:i' ) ?>–getEventEnd( 'H:i' ) ?> in stanza "getRoomName() ) ?>":

getSharablePath(), icon_2020('attachment', 'left') . esc_html( $child_sharable->getSharableMIME() ), null, null, 'target="_blank"' ), $sharable->getSharableLicense()->getLink() ) ?>

getSharablePath(), icon_2020('attachment', 'left') . esc_html( $child_sharable->getSharableTitle() ), null, null, 'target="_blank"' ), $sharable->getSharableLicense()->getLink() ) ?>

getSharablePath(), icon_2020('share', 'left') . esc_html( $sharable->getSharableTitle( [ 'prop' => true ] ) ), null, null, 'target="_blank"' ), $sharable->getSharableLicense()->getLink() ) ?>

hasEventAbstract() ): ?>

getEventAbstractHTML( [ 'p' => 'flow-text', ] ) ?>
isEventPassed() ): ?>

getEventStart( 'd' ) ?> getEventStart( 'H:i' ) ?>–getEventEnd( 'H:i' ) ?> in getRoomName() ) ?>.

play_arrow getRoomName() ) ?>

hasEventDescription() ): ?> getEventDescription() ?>

getEventExternalURL(), __( "Maggiori informazioni su Meta-wiki" ) ) ?>

factoryPreviousFullEvent( [ 'whatever-room' => true ] ) ->select( Event::fields() ) ->select( Conference::fields() ) ->limit( 2 ) ->queryResults(); // next talk in the same room $nexts = $event->factoryNextFullEvent( [ 'whatever-room' => true ] ) ->select( Event::fields() ) ->select( Conference::fields() ) ->limit( 2 ) ->queryResults(); // in the meanwhile $durings = $event->factoryMeanwhileFullEvent() ->limit( 2 ) ->queryResults(); ?>

navigate_before

getEventURL(), esc_html( $previous->getEventTitle() ) ) ?>

navigate_next

getEventURL(), esc_html( $next->getEventTitle() ) ) ?>

play_arrow

getEventURL(), esc_html( $during->getEventTitle() ) ) ?>

isEventEditable() ): ?>

getEventEditURL(), '[edit]' ) ?>

$conference, ] );