Page MenuHomeGitPull.it

D42.1742291595.diff
No OneTemporary

Size
10 KB
Referenced Files
None
Subscribers
None

D42.1742291595.diff

diff --git a/includes/class-DailyEvents.php b/includes/class-DailyEvents.php
--- a/includes/class-DailyEvents.php
+++ b/includes/class-DailyEvents.php
@@ -1,6 +1,6 @@
<?php
-# Linux Day 2016 - List events daily
-# Copyright (C) 2016, 2017 Valerio Bozzolan, Ludovico Pavesi, Linux Day Torino
+# from Linux Day 2016 - now Suckless Conference
+# Copyright (C) 2016, 2017, 2018, 2019, 2020 Valerio Bozzolan, Ludovico Pavesi, Linux Day Torino
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@@ -21,29 +21,47 @@
class DailyEvents {
/**
- * Get daily events from a conference and a chapter
+ * Get the daily Event(s) from a Conference and a Chapter ID
+ *
+ * As default the Event(s) are joined with Track, Chapter and Room.
*
* @param $conference object Conference
* @param $chapter object Chapter
- * @param $fields array Fields to be selected
+ * @param $fields array Fields to be selected from the full Event object
+ * @param $additional_conditions callable Callback that can be used to apply additional Query conditions. First argument: Query object.
* @return array
*/
- public static function fromConferenceChapter( $conference, $chapter, $fields = [] ) {
+ public static function fromConferenceChapter( $conference, $chapter, $fields = [], $additional_conditions = null ) {
$conference_ID = $conference->getConferenceID();
$chapter_ID = $chapter->getChapterID();
- $events = FullEvent::factoryByConferenceChapter( $conference_ID, $chapter_ID )
+ // prepare the query
+ $events_query = ( new QueryEvent() )
+ ->joinTrack()
+ ->joinChapter()
+ ->joinRoom()
+ ->whereConferenceID( $conference_ID )
+ ->whereChapterID( $chapter_ID )
->select( $fields )
->orderBy( Event::START )
- ->orderBy( Track::ORDER )
- ->queryResults();
+ ->orderBy( Track::ORDER );
+
+ // check if we should apply additional conditions
+ if( $additional_conditions ) {
+ $additional_conditions( $events_query );
+ }
+ // query all the Events in an array
+ $events = $events_query->queryResults();
+
+ // index all the Events
$incremental_hour = 0;
$last_hour = -1;
$last_event_ID = -1;
foreach( $events as $i => $event ) {
- // Remember that it's a JOIN with duplicates
+
+ // Remember that it's a JOIN with duplicates (TODO: untrue now I think)
if( $last_event_ID === $event->getEventID() ) {
unset( $events[ $i ] );
continue;
@@ -66,7 +84,8 @@
// Fill `->hour`
$event->hour = $incremental_hour;
- $last_event_ID = $event->event_ID;
+ // (TODO: remove, should work)
+ $last_event_ID = $event->getEventID();
$last_hour = $hour;
}
diff --git a/includes/class-QueryChapter.php b/includes/class-QueryChapter.php
new file mode 100644
--- /dev/null
+++ b/includes/class-QueryChapter.php
@@ -0,0 +1,82 @@
+<?php
+# Linux Day Torino website - classes
+# Copyright (C) 2020 Valerio Bozzolan
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Methods related to a QueryChapter class
+ */
+trait QueryChapterTrait {
+
+ /**
+ * Where the Chapter is...
+ *
+ * @param object $event Chapter
+ * @return self
+ */
+ public function whereChapter( $event ) {
+ return $this->whereChapterID( $event->getChapterID() );
+ }
+
+ /**
+ * Where the Chapter ID is...
+ *
+ * @param int $id Chapter ID
+ * @return self
+ */
+ public function whereChapterID( $id ) {
+ return $this->whereInt( $this->CHAPTER_ID, $id );
+ }
+
+ /**
+ * Join a generic table with the Chapter table
+ *
+ * @param string $type Join type
+ * @return self
+ */
+ public function joinChapter( $type = 'INNER' ) {
+
+ // build the:
+ // INNER JOIN chapter ON (chapter.chapter_ID = chapter_ID)
+ return $this->joinOn( $type, Chapter::T, Chapter::ID_, $this->CHAPTER_ID );
+ }
+
+}
+
+/**
+ * Utility used to Query a Chapter.
+ */
+class QueryChapter {
+
+ use QueryChapterTrait;
+
+ /**
+ * Full name of the column of the Chapter ID
+ */
+ protected $CHAPTER_ID = 'chapter_ID';
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+
+ parent::__construct();
+
+ $this->from( Chapter::T );
+
+ $this->defaultClass( Chapter::class );
+ }
+
+}
diff --git a/includes/class-QueryEvent.php b/includes/class-QueryEvent.php
--- a/includes/class-QueryEvent.php
+++ b/includes/class-QueryEvent.php
@@ -1,6 +1,6 @@
<?php
# Linux Day Torino website - classes
-# Copyright (C) 2018, 2019 Valerio Bozzolan, Linux Day Torino
+# Copyright (C) 2018, 2019, 2020 Valerio Bozzolan, Linux Day Torino
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@@ -17,6 +17,9 @@
// load dependent traits
class_exists( QueryConference::class, true );
+class_exists( QueryChapter ::class, true );
+class_exists( QueryTrack ::class, true );
+class_exists( QueryRoom ::class, true );
/**
* Methods for a QueryEvent class
@@ -69,6 +72,9 @@
class QueryEvent extends Query {
use QueryEventTrait;
+ use QueryChapterTrait;
+ use QueryTrackTrait;
+ use QueryRoomTrait;
/**
* Univoque Event ID column name
@@ -129,16 +135,6 @@
->whereInt( EventUser::USER_, $user->getUserID() );
}
- /**
- * Join a table with the Chapter table
- *
- * @param string $type Join type
- * @return self
- */
- public function joinChapter( $type = 'INNER' ) {
- return $this->joinOn( $type, 'chapter', 'chapter.chapter_ID' , $this->CHAPTER_ID );
- }
-
/**
* Join a table with the Track table
*
diff --git a/includes/class-QueryRoom.php b/includes/class-QueryRoom.php
new file mode 100644
--- /dev/null
+++ b/includes/class-QueryRoom.php
@@ -0,0 +1,82 @@
+<?php
+# Linux Day Torino website - classes
+# Copyright (C) 2020 Valerio Bozzolan
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Methods related to a QueryRoom class
+ */
+trait QueryRoomTrait {
+
+ /**
+ * Where the Room is...
+ *
+ * @param object $event Room
+ * @return self
+ */
+ public function whereRoom( $event ) {
+ return $this->whereRoomID( $event->getRoomID() );
+ }
+
+ /**
+ * Where the Room ID is...
+ *
+ * @param int $id Room ID
+ * @return self
+ */
+ public function whereRoomID( $id ) {
+ return $this->whereInt( $this->ROOM_ID, $id );
+ }
+
+ /**
+ * Join a generic table with the Room table
+ *
+ * @param string $type Join type
+ * @return self
+ */
+ public function joinRoom( $type = 'INNER' ) {
+
+ // build the:
+ // INNER JOIN room ON (room.room_ID = room_ID)
+ return $this->joinOn( $type, Room::T, Room::ID_, $this->ROOM_ID );
+ }
+
+}
+
+/**
+ * Utility used to Query a Room.
+ */
+class QueryRoom {
+
+ use QueryRoomTrait;
+
+ /**
+ * Full name of the column of the Room ID
+ */
+ protected $ROOM_ID = 'room_ID';
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+
+ parent::__construct();
+
+ $this->from( Room::T );
+
+ $this->defaultClass( Room::class );
+ }
+
+}
diff --git a/includes/class-QueryTrack.php b/includes/class-QueryTrack.php
new file mode 100644
--- /dev/null
+++ b/includes/class-QueryTrack.php
@@ -0,0 +1,82 @@
+<?php
+# Linux Day Torino website - classes
+# Copyright (C) 2020 Valerio Bozzolan
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Methods related to a QueryTrack class
+ */
+trait QueryTrackTrait {
+
+ /**
+ * Where the Track is...
+ *
+ * @param object $event Track
+ * @return self
+ */
+ public function whereTrack( $event ) {
+ return $this->whereTrackID( $event->getTrackID() );
+ }
+
+ /**
+ * Where the Track ID is...
+ *
+ * @param int $id Track ID
+ * @return self
+ */
+ public function whereTrackID( $id ) {
+ return $this->whereInt( $this->TRACK_ID, $id );
+ }
+
+ /**
+ * Join a generic table with the Track table
+ *
+ * @param string $type Join type
+ * @return self
+ */
+ public function joinTrack( $type = 'INNER' ) {
+
+ // build the:
+ // INNER JOIN track ON (track.track_ID = track_ID)
+ return $this->joinOn( $type, Track::T, Track::ID_, $this->TRACK_ID );
+ }
+
+}
+
+/**
+ * Utility used to Query a Track.
+ */
+class QueryTrack {
+
+ use QueryTrackTrait;
+
+ /**
+ * Full name of the column of the Track ID
+ */
+ protected $TRACK_ID = 'track_ID';
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+
+ parent::__construct();
+
+ $this->from( Track::T );
+
+ $this->defaultClass( Track::class );
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 18, 10:53 (13 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
825008
Default Alt Text
D42.1742291595.diff (10 KB)

Event Timeline