Skip to content
Snippets Groups Projects
Commit 085b8396 authored by Moritz Strohm's avatar Moritz Strohm
Browse files

removed support for RRV1

parent 668f856b
No related branches found
No related tags found
No related merge requests found
...@@ -62,18 +62,8 @@ class Flexexport extends StudIPPlugin implements SystemPlugin ...@@ -62,18 +62,8 @@ class Flexexport extends StudIPPlugin implements SystemPlugin
public function loadJavascript() public function loadJavascript()
{ {
if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
PageLayout::addHeadElement(
'script',
[
'type' => 'text/javascript',
'src' => $this->getPluginUrl() . '/assets/Flexexport.js'
]
);
} else {
$this->addScript('assets/Flexexport.js'); $this->addScript('assets/Flexexport.js');
} }
}
/** /**
......
...@@ -213,21 +213,12 @@ class CourseDateDecorator extends Decorator ...@@ -213,21 +213,12 @@ class CourseDateDecorator extends Decorator
} }
if ($this->fields['room_name']->isEnabled()) { if ($this->fields['room_name']->isEnabled()) {
$room_name = ''; $room_name = '';
if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
//RRV1
$room = $course_date->room_assignment->resource;
if ($room) {
$room_name = $room->getName();
}
} else {
//RRV2
if ($course_date->room_booking->resource) { if ($course_date->room_booking->resource) {
$room = $course_date->room_booking->resource->getDerivedClassInstance(); $room = $course_date->room_booking->resource->getDerivedClassInstance();
if ($room instanceof \Room) { if ($room instanceof \Room) {
$room_name = $room->name; $room_name = $room->name;
} }
} }
}
$result[$this->fields['room_name']->getDisplayName()] = $room_name; $result[$this->fields['room_name']->getDisplayName()] = $room_name;
} }
if ($this->fields['course_name']->isEnabled()) { if ($this->fields['course_name']->isEnabled()) {
......
...@@ -70,29 +70,6 @@ class CourseDateAndRoomBookingExporter extends Exporter ...@@ -70,29 +70,6 @@ class CourseDateAndRoomBookingExporter extends Exporter
$template->set_attribute('hide_past_events', $this->config->getParameter('hide_past_events')); $template->set_attribute('hide_past_events', $this->config->getParameter('hide_past_events'));
$template->set_attribute('hide_exdates_without_comment', $this->config->getParameter('hide_exdates_without_comment')); $template->set_attribute('hide_exdates_without_comment', $this->config->getParameter('hide_exdates_without_comment'));
$building_search = null;
if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
//The old resource management system.
$building_category_name = \Config::get()->FLEXEXPORT_RRV1_BUILDING_CATEGORY_NAME;
$db = \DBManager::get();
$building_search = new \QuickSearch(
'selected_building_id',
new \SQLSearch(
sprintf(
"SELECT resources_objects.resource_id AS id, resources_objects.name AS name
FROM resources_objects
INNER JOIN resources_categories rc
ON resources_objects.category_id = rc.category_id
WHERE
rc.name = %s
AND
resources_objects.name LIKE :input
ORDER BY resources_objects.name",
$db->quote($building_category_name)
)
)
);
} else {
$building_search = new \QuickSearch( $building_search = new \QuickSearch(
'selected_building_id', 'selected_building_id',
new \SQLSearch( new \SQLSearch(
...@@ -107,7 +84,6 @@ class CourseDateAndRoomBookingExporter extends Exporter ...@@ -107,7 +84,6 @@ class CourseDateAndRoomBookingExporter extends Exporter
ORDER BY resources.name" ORDER BY resources.name"
) )
); );
}
$building_search->fireJSFunctionOnSelect('STUDIP.Flexexport.selectItem'); $building_search->fireJSFunctionOnSelect('STUDIP.Flexexport.selectItem');
$building_search->setAttributes( $building_search->setAttributes(
[ [
...@@ -118,28 +94,6 @@ class CourseDateAndRoomBookingExporter extends Exporter ...@@ -118,28 +94,6 @@ class CourseDateAndRoomBookingExporter extends Exporter
$selected_buildings = []; $selected_buildings = [];
if ($this->config->getParameter('building_ids')) { if ($this->config->getParameter('building_ids')) {
if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
//The old resource management system.
$building_category_name = \Config::get()->FLEXEXPORT_RRV1_BUILDING_CATEGORY_NAME;
$get_buildings_stmt = $db->prepare(
"SELECT `resource_id` AS id, ro.`name` AS name
FROM resources_objects ro
INNER JOIN resources_categories rc
ON ro.category_id = rc.category_id
WHERE
rc.name = :building_category_name
AND
ro.resource_id IN ( :building_ids )
ORDER BY ro.name ASC"
);
$get_buildings_stmt->execute(
[
'building_category_name' => $building_category_name,
'building_ids' => $this->config->getParameter('building_ids')
]
);
$selected_buildings = $get_buildings_stmt->fetchAll(\PDO::FETCH_OBJ);
} else {
$selected_buildings = \Building::findBySql( $selected_buildings = \Building::findBySql(
"INNER JOIN resource_categories rc "INNER JOIN resource_categories rc
ON resources.category_id = rc.id ON resources.category_id = rc.id
...@@ -153,7 +107,6 @@ class CourseDateAndRoomBookingExporter extends Exporter ...@@ -153,7 +107,6 @@ class CourseDateAndRoomBookingExporter extends Exporter
] ]
); );
} }
}
$template->set_attribute('selected_buildings', $selected_buildings); $template->set_attribute('selected_buildings', $selected_buildings);
$selected_institutes = []; $selected_institutes = [];
...@@ -348,56 +301,6 @@ class CourseDateAndRoomBookingExporter extends Exporter ...@@ -348,56 +301,6 @@ class CourseDateAndRoomBookingExporter extends Exporter
$room_ids = []; $room_ids = [];
if ($building_ids) { if ($building_ids) {
//Get all IDs of relevant rooms. //Get all IDs of relevant rooms.
if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
//The old resource management system.
$building_category_name = \Config::get()->FLEXEXPORT_RRV1_BUILDING_CATEGORY_NAME;
$get_room_ids_stmt = $db->prepare(
"SELECT DISTINCT `resource_id` FROM `resources_objects`
INNER JOIN `resources_categories` rc
ON rc.category_id = `resources_objects`.category_id
WHERE
rc.`is_room` > '0'
AND
`parent_id` IN (
SELECT `resource_id` FROM `resources_objects`
INNER JOIN `resources_categories` rc
ON rc.category_id = `resources_objects`.category_id
WHERE rc.`name` = :building_category_name
AND `resource_id` IN ( :building_ids )
)"
);
$get_room_ids_stmt->execute(
[
'building_category_name' => $building_category_name,
'building_ids' => $building_ids
]
);
$room_ids = $get_room_ids_stmt->fetchAll(\PDO::FETCH_COLUMN, 0);
//Now run another statement to get all room resources that may
//lie on layer below the already retrieved rooms. This is useful
//in case there are resource labels between the rooms and the
//buildings.
$get_2nd_room_ids_stmt = $db->prepare(
"SELECT DISTINCT `resource_id` FROM `resources_objects`
INNER JOIN `resources_categories` rc
ON rc.`category_id` = `resources_objects`.`category_id`
WHERE
rc.`is_room` > '0'
AND
`parent_id` IN (
SELECT `resource_id` FROM `resources_objects`
WHERE `parent_id` IN ( :building_ids )
)"
);
$get_2nd_room_ids_stmt->execute(['building_ids' => $building_ids]);
$second_layer_room_ids = $get_2nd_room_ids_stmt->fetchAll(\PDO::FETCH_COLUMN, 0);
$room_ids = array_merge(
$room_ids,
$second_layer_room_ids
);
} else {
//The new room management system.
$buildings = \Building::findMany($building_ids); $buildings = \Building::findMany($building_ids);
if ($buildings) { if ($buildings) {
foreach ($buildings as $building) { foreach ($buildings as $building) {
...@@ -410,26 +313,13 @@ class CourseDateAndRoomBookingExporter extends Exporter ...@@ -410,26 +313,13 @@ class CourseDateAndRoomBookingExporter extends Exporter
} }
} }
} }
}
} else { } else {
//Get all IDs of all rooms. //Get all IDs of all rooms.
if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
//Old resource management system.
$room_ids = $db->query(
"SELECT DISTINCT `resource_id` FROM `resources_objects`
INNER JOIN `resources_categories` rc
ON rc.category_id = `resources_objects`.category_id
WHERE
rc.`is_room` > '0'"
)->fetchAll(\PDO::FETCH_COLUMN, 0);
} else {
//New room management system.
$rooms = \Room::findAll(); $rooms = \Room::findAll();
foreach ($rooms as $room) { foreach ($rooms as $room) {
$room_ids[] = $room->id; $room_ids[] = $room->id;
} }
} }
}
$with_room_name = array_key_exists('room_name', $this->enabled_field_config); $with_room_name = array_key_exists('room_name', $this->enabled_field_config);
$course_dates_stmt_sql = "SELECT "; $course_dates_stmt_sql = "SELECT ";
$fields_sql = []; $fields_sql = [];
...@@ -474,12 +364,8 @@ class CourseDateAndRoomBookingExporter extends Exporter ...@@ -474,12 +364,8 @@ class CourseDateAndRoomBookingExporter extends Exporter
$fields_sql[] = "IF (r.`name` IS NOT NULL AND r.`name` <> '', r.`name`, `termine`.`raum`) AS room_name"; $fields_sql[] = "IF (r.`name` IS NOT NULL AND r.`name` <> '', r.`name`, `termine`.`raum`) AS room_name";
} }
if ($with_booking_description) { if ($with_booking_description) {
if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
$fields_sql[] = "rb.`user_free_name` AS booking_description";
} else {
$fields_sql[] = "rb.`description` AS booking_description"; $fields_sql[] = "rb.`description` AS booking_description";
} }
}
$course_dates_stmt_sql .= implode(', ', $fields_sql) . ' '; $course_dates_stmt_sql .= implode(', ', $fields_sql) . ' ';
$course_dates_stmt_sql .= "FROM `termine` "; $course_dates_stmt_sql .= "FROM `termine` ";
if ($with_room_name || $with_booking_description) { if ($with_room_name || $with_booking_description) {
...@@ -488,17 +374,6 @@ class CourseDateAndRoomBookingExporter extends Exporter ...@@ -488,17 +374,6 @@ class CourseDateAndRoomBookingExporter extends Exporter
} else { } else {
$course_dates_stmt_sql .= "LEFT JOIN "; $course_dates_stmt_sql .= "LEFT JOIN ";
} }
if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
$course_dates_stmt_sql .= "`resources_assign` rb
ON `termine`.`termin_id` = rb.`assign_user_id` ";
if ($building_ids) {
$course_dates_stmt_sql .= "INNER JOIN ";
} else {
$course_dates_stmt_sql .= "LEFT JOIN ";
}
$course_dates_stmt_sql .= "`resources_objects` r
ON rb.`resource_id` = r.`resource_id` ";
} else {
$course_dates_stmt_sql .= "`resource_bookings` rb $course_dates_stmt_sql .= "`resource_bookings` rb
ON `termine`.`termin_id` = rb.`range_id` "; ON `termine`.`termin_id` = rb.`range_id` ";
if ($building_ids) { if ($building_ids) {
...@@ -509,20 +384,14 @@ class CourseDateAndRoomBookingExporter extends Exporter ...@@ -509,20 +384,14 @@ class CourseDateAndRoomBookingExporter extends Exporter
$course_dates_stmt_sql .= "`resources` r $course_dates_stmt_sql .= "`resources` r
ON rb.`resource_id` = r.`id` "; ON rb.`resource_id` = r.`id` ";
} }
}
if ($institute_ids) { if ($institute_ids) {
$course_dates_stmt_sql .= "INNER JOIN `seminare` $course_dates_stmt_sql .= "INNER JOIN `seminare`
ON `termine`.`range_id` = `seminare`.`seminar_id` "; ON `termine`.`range_id` = `seminare`.`seminar_id` ";
} else if ($building_ids && !$with_room_name && !$with_booking_description) { } else if ($building_ids && !$with_room_name && !$with_booking_description) {
if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
$course_dates_stmt_sql .= "INNER JOIN `resources_assign` rb
ON `termine`.`termin_id` = rb.`assign_user_id` ";
} else {
$course_dates_stmt_sql .= "INNER JOIN `resource_bookings` rb $course_dates_stmt_sql .= "INNER JOIN `resource_bookings` rb
ON `termine`.`termin_id` = rb.`range_id` "; ON `termine`.`termin_id` = rb.`range_id` ";
} }
}
if (!$institute_ids && $with_course_name) { if (!$institute_ids && $with_course_name) {
$course_dates_stmt_sql .= "LEFT JOIN `seminare` $course_dates_stmt_sql .= "LEFT JOIN `seminare`
ON `termine`.`range_id` = `seminare`.`seminar_id` "; ON `termine`.`range_id` = `seminare`.`seminar_id` ";
...@@ -649,103 +518,6 @@ class CourseDateAndRoomBookingExporter extends Exporter ...@@ -649,103 +518,6 @@ class CourseDateAndRoomBookingExporter extends Exporter
$result = []; $result = [];
if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
//The old resource management system.
//use lib/resources/lib/AssignEventList.class.php
$room_name_stmt = $db->prepare(
'SELECT `name` FROM `resources_objects`
WHERE `resource_id` = :id'
);
//Extra performance penalty for the old room management system:
//After retrieving all relevant resource bookings, we have to filter
//out those that are already retrieved via course dates.
//To do that, we need to get all course date IDs into an array.
$course_date_ids = [];
foreach ($course_dates as $course_date) {
$course_date_ids[] = $course_date['course_date_id'];
}
$booking_data = [];
foreach ($room_ids as $room_id) {
$booking_data_object = new \AssignEventList(
$bookings_stmt_params['begin'],
$bookings_stmt_params['end'],
$room_id
);
while ($event = $booking_data_object->nextEvent()) {
if (in_array($event->assign_user_id, $course_date_ids)) {
//The booking belongs to a course date that has already
//been retrieved.
continue;
}
if ($hide_past_events) {
//Extra check, maybe a bug in AssignEventlist:
if ($event->end < $begin->getTimestamp()) {
continue;
}
}
$course_date_id = '';
$course_id = '';
if (\CourseDate::exists($event->assign_user_id)) {
$course_date_id = $event->assign_user_id;
}
if (\Course::exists($event->assign_user_id)) {
$course_id = $event->assign_user_id;
}
$now = time();
$data = [];
if ($with_begin) {
$data['begin'] = $event->begin;
}
if ($with_end) {
$data['end'] = $event->end;
}
if ($with_course_name) {
if ($course_id) {
$course = \Course::find($course_id);
$data['course_name'] = $course->name;
} else {
//No such course.
$data['course_name'] = '';
}
}
if ($with_course_date_id) {
$data['course_date_id'] = $course_date_id;
}
if ($with_course_id) {
$data['course_id'] = $course_id;
}
if ($with_status) {
$data['status'] =
($event->begin > $now) && ($event->begin <= ($now + 600))
? 'upcoming'
: (
($event->begin <= $now) && ($event->end >= $now)
? 'running'
: (($event->end < $now) ? 'past' : 'takes_place')
);
}
if ($with_today) {
$data['today'] = (date('dmY', $event->begin) == date('dmY', $now)
|| date('dmY', $event->end) == date('dmY', $now));
}
if ($with_room_name) {
$room_name_stmt->execute(['id' => $event->resource_id]);
$data['room_name'] = $room_name_stmt->fetchColumn();
}
if ($with_booking_description) {
$data['booking_description'] = $event->user_free_name;
}
$booking_data[] = $data;
}
}
$result = array_merge(
$course_dates,
$booking_data
);
} else {
//New room management system.
if ($building_ids) { if ($building_ids) {
$bookings_stmt_sql = "SELECT "; $bookings_stmt_sql = "SELECT ";
$fields_sql = []; $fields_sql = [];
...@@ -814,7 +586,6 @@ class CourseDateAndRoomBookingExporter extends Exporter ...@@ -814,7 +586,6 @@ class CourseDateAndRoomBookingExporter extends Exporter
OR OR
`end_time` BETWEEN :begin AND :end `end_time` BETWEEN :begin AND :end
)"; )";
$bookings_stmt = $db->prepare($bookings_stmt_sql); $bookings_stmt = $db->prepare($bookings_stmt_sql);
//Get all buildings and then store all room-IDs of the rooms //Get all buildings and then store all room-IDs of the rooms
//that lie in the selected buildings. //that lie in the selected buildings.
...@@ -949,7 +720,6 @@ class CourseDateAndRoomBookingExporter extends Exporter ...@@ -949,7 +720,6 @@ class CourseDateAndRoomBookingExporter extends Exporter
} }
$result[] = $result_row; $result[] = $result_row;
} }
}
uasort( uasort(
$result, $result,
......
...@@ -290,12 +290,8 @@ class CourseDateExporter extends Exporter ...@@ -290,12 +290,8 @@ class CourseDateExporter extends Exporter
$fields_sql[] = "IF (r.`name` IS NOT NULL AND r.`name` <> '', r.`name`, `termine`.`raum`) AS room_name"; $fields_sql[] = "IF (r.`name` IS NOT NULL AND r.`name` <> '', r.`name`, `termine`.`raum`) AS room_name";
} }
if ($with_booking_description) { if ($with_booking_description) {
if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
$fields_sql[] = "rb.`user_free_name` AS booking_description";
} else {
$fields_sql[] = "rb.`description` AS booking_description"; $fields_sql[] = "rb.`description` AS booking_description";
} }
}
if ($with_course_name) { if ($with_course_name) {
$fields_sql[] = "`seminare`.`name` AS course_name"; $fields_sql[] = "`seminare`.`name` AS course_name";
} }
...@@ -303,18 +299,11 @@ class CourseDateExporter extends Exporter ...@@ -303,18 +299,11 @@ class CourseDateExporter extends Exporter
$course_dates_stmt_sql .= "FROM `termine` "; $course_dates_stmt_sql .= "FROM `termine` ";
if ($with_room_name || $with_booking_description) { if ($with_room_name || $with_booking_description) {
if (version_compare($GLOBALS['SOFTWARE_VERSION'], '4.5', '<')) {
$course_dates_stmt_sql .= "LEFT JOIN `resources_assign` rb
ON `termine`.`termin_id` = rb.`assign_user_id`
LEFT JOIN `resources_objects` r
ON rb.`resource_id` = r.`resource_id` ";
} else {
$course_dates_stmt_sql .= "LEFT JOIN `resource_bookings` rb $course_dates_stmt_sql .= "LEFT JOIN `resource_bookings` rb
ON `termine`.`termin_id` = rb.`range_id` ON `termine`.`termin_id` = rb.`range_id`
LEFT JOIN `resources` r LEFT JOIN `resources` r
ON rb.`resource_id` = r.`id` "; ON rb.`resource_id` = r.`id` ";
} }
}
if ($institute_ids || $course_type || $with_course_name) { if ($institute_ids || $course_type || $with_course_name) {
$course_dates_stmt_sql .= "INNER JOIN `seminare` $course_dates_stmt_sql .= "INNER JOIN `seminare`
......
<?php
class RemoveRRV1Compat extends Migration
{
protected function up()
{
$c = Config::get();
$c->delete('FLEXEXPORT_RRV1_BUILDING_CATEGORY_NAME');
}
protected function down()
{
$c = Config::get();
$c->create(
'FLEXEXPORT_RRV1_BUILDING_CATEGORY_NAME',
[
'type' => 'string',
'section' => 'Flexexport',
'value' => 'Gebäude',
'comment' => 'Name der Ressourcenkategorie für Gebäude. Diese Eigenschaft ist ab Stud.IP 4.5 irrelevant!'
]
);
}
}
pluginname=Flexexport pluginname=Flexexport
pluginclassname=Flexexport pluginclassname=Flexexport
origin=data-quest origin=data-quest
version=0.7.2 version=0.7.3
studipMinVersion=4.3 studipMinVersion=4.5
studipMaxVersion=5.2.99 studipMaxVersion=5.2.99
description=Das Flexexport-Plugin erlaubt den Export von Stud.IP-Inhalten in verschiedenen Formaten. description=Das Flexexport-Plugin erlaubt den Export von Stud.IP-Inhalten in verschiedenen Formaten.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment