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

TandemPlugin: added CSV export for terminated pairs

git-svn-id: https://server2.data-quest.de/svn/studip-plugins/TandemPlugin@3070 6a1f69d7-6018-4d13-bf90-b098e98c258d
parent 717008c8
No related branches found
No related tags found
No related merge requests found
......@@ -48,7 +48,8 @@ class AdminController extends PluginController
PluginEngine::getURL(
$this->plugin,
['status' => $this->status, 'csv_export' => '1'],
'admin/pairs')
'admin/pairs'
)
);
$sidebar->addWidget($actions);
......@@ -85,13 +86,14 @@ class AdminController extends PluginController
//A CSV file with all pairs shall be created instead of
//showing the view.
$csv_text = implode(';',
['name1', 'vorname1', 'studiengang1', 'geschlecht1',
$csv_data = [];
$csv_data[] = [
'name1', 'vorname1', 'studiengang1', 'geschlecht1',
'muttersprache1', 'lernsprache1', 'Scheininteresse1',
'name2', 'vorname2', 'studiengang2', 'geschlecht2',
'muttersprache2', 'lernsprache2', 'Scheininteresse2',
'paarzeitaktiv']
) . "\n";
'paarzeitaktiv'
];
foreach($this->pairs as $pair) {
$user1_study_names = [];
......@@ -124,39 +126,39 @@ class AdminController extends PluginController
$user2_proofs .= 'T';
}
$csv_text .= implode(';',
[
$pair->request->user->nachname,
$pair->request->user->vorname,
implode(',', $user1_study_names),
(($pair->request->user->geschlecht == '1')
? 'm'
: ($pair->request->user->geschlecht == '2')
? 'w'
: '?'),
$pair->offer->target_language_id,
$pair->request->target_language_id,
$user1_proofs,
$pair->offer->user->nachname,
$pair->offer->user->vorname,
implode(',', $user2_study_names),
(($pair->offer->user->geschlecht == '1')
? 'm'
: ($pair->offer->user->geschlecht == '2')
? 'w'
: '?'),
$pair->request->target_language_id,
$pair->offer->target_language_id,
$user2_proofs,
date('d.m.Y H:i', $pair->chdate)
]
) . "\n";
$csv_data[] = [
$pair->request->user->nachname,
$pair->request->user->vorname,
implode(',', $user1_study_names),
(($pair->request->user->geschlecht == '1')
? 'm'
: ($pair->request->user->geschlecht == '2')
? 'w'
: '?'),
$pair->offer->target_language_id,
$pair->request->target_language_id,
$user1_proofs,
$pair->offer->user->nachname,
$pair->offer->user->vorname,
implode(',', $user2_study_names),
(($pair->offer->user->geschlecht == '1')
? 'm'
: ($pair->offer->user->geschlecht == '2')
? 'w'
: '?'),
$pair->request->target_language_id,
$pair->offer->target_language_id,
$user2_proofs,
date('d.m.Y H:i', $pair->chdate)
];
}
//The CSV file's content was created. Now we can send it:
$csv_text = array_to_csv($csv_data);
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename=' .
dgettext('TandemPlugin', 'Tandem-Paare') .
......@@ -173,6 +175,20 @@ class AdminController extends PluginController
public function terminated_pairs_action()
{
$sidebar = Sidebar::get();
$actions = new ActionsWidget();
$actions->addLink(
dgettext('TandemPlugin', 'CSV-Export'),
PluginEngine::getURL(
$this->plugin,
['csv_export' => '1'],
'admin/terminated_pairs'
)
);
$sidebar->addWidget($actions);
if(Navigation::hasItem('/tandemplugin/admin/terminated')) {
Navigation::activateItem('/tandemplugin/admin/terminated');
}
......@@ -183,6 +199,77 @@ class AdminController extends PluginController
'TRUE ORDER BY mkdate DESC',
[]
);
if(Request::get('csv_export')) {
//A CSV file with all terminated pairs shall be created instead of
//showing the view.
$csv_data = [];
$csv_data[] =[
'name1', 'vorname1', 'studiengang1', 'geschlecht1',
'muttersprache1', 'lernsprache1',
'name2', 'vorname2', 'studiengang2', 'geschlecht2',
'muttersprache2', 'lernsprache2',
'datum_auflösung'
];
foreach($this->terminated_pairs as $pair) {
$user1_study_names = [];
if($pair->requester->studycourses) {
foreach($pair->requester->studycourses as $studycourse) {
$user1_study_names[] = $studycourse->studycourse->name;
}
}
$user2_study_names = [];
if($pair->offerer->studycourses) {
foreach($pair->offerer->studycourses as $studycourse) {
$user2_study_names[] = $studycourse->studycourse->name;
}
}
$csv_data[] = [
$pair->requester->nachname,
$pair->requester->vorname,
implode(',', $user1_study_names),
(($pair->requester->geschlecht == '1')
? 'm'
: ($pair->requester->geschlecht == '2')
? 'w'
: '?'),
$pair->offerer_language_id,
$pair->requester_language_id,
$pair->offerer->nachname,
$pair->offerer->vorname,
implode(',', $user2_study_names),
(($pair->offerer->geschlecht == '1')
? 'm'
: ($pair->offerer->geschlecht == '2')
? 'w'
: '?'),
$pair->requester_language_id,
$pair->offerer_language_id,
date('d.m.Y H:i', $pair->mkdate)
];
}
//The CSV file's content was created. Now we can send it:
$csv_text = array_to_csv($csv_data);
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename=' .
dgettext('TandemPlugin', 'Tandem-Paare') .
'_' . date('Y-m-d') . '.csv');
//For Content-Length we must use strlen instead of mb_strlen
//to get the number of bytes rather than the number of characters:
header('Content-Length: ' . strlen($csv_text));
$this->render_text($csv_text);
}
}
......
pluginname=TandemPlugin
pluginclassname=TandemPlugin
origin=data-quest
version=0.6
version=0.6.1
description=Dieses Plugin ermglicht es, Sprachtandems innerhalb der Stud.IP Platform zu bilden.
studipMinVersion=3.5
studipMaxVersion=3.9.99
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment