public function exportAction()
{
$this->checkPermission("translations");
$admin = $this->getParam("admin");
// clear translation cache
Translation\AbstractTranslation::clearDependentCache();
if ($admin) {
$list = new Translation\Admin\Listing();
} else {
$list = new Translation\Website\Listing();
}
$list->setOrder("asc");
$list->setOrderKey("key");
$condition = $this->getGridFilterCondition();
if ($condition) {
$list->setCondition($condition);
}
$list->load();
$translations = array();
$translationObjects = $list->getTranslations();
// fill with one dummy translation if the store is empty
if (empty($translationObjects)) {
if ($admin) {
$t = new Translation\Admin();
$languages = Tool\Admin::getLanguages();
} else {
$t = new Translation\Website();
$languages = Tool::getValidLanguages();
}
foreach ($languages as $language) {
$t->addTranslation($language, "");
}
$translationObjects[] = $t;
}
foreach ($translationObjects as $t) {
$translations[] = array_merge(array("key" => $t->getKey(), "creationDate" => $t->getCreationDate(), "modificationDate" => $t->getModificationDate()), $t->getTranslations());
}
//header column
$columns = array_keys($translations[0]);
if ($admin) {
$languages = Tool\Admin::getLanguages();
} else {
$languages = Tool::getValidLanguages();
}
//add language columns which have no translations yet
foreach ($languages as $l) {
if (!in_array($l, $columns)) {
$columns[] = $l;
}
}
$headerRow = array();
foreach ($columns as $key => $value) {
$headerRow[] = '"' . $value . '"';
}
$csv = implode(";", $headerRow) . "\r\n";
foreach ($translations as $t) {
$tempRow = array();
foreach ($columns as $key) {
$value = $t[$key];
//clean value of evil stuff such as " and linebreaks
if (is_string($value)) {
$value = Tool\Text::removeLineBreaks($value);
$value = str_replace('"', '"', $value);
$tempRow[$key] = '"' . $value . '"';
} else {
$tempRow[$key] = $value;
}
}
$csv .= implode(";", $tempRow) . "\r\n";
}
$suffix = $admin ? "admin" : "website";
header('Content-type: text/csv; charset=UTF-8');
header("Content-Disposition: attachment; filename=\"export_ " . $suffix . "_translations.csv\"");
ini_set('display_errors', false);
//to prevent warning messages in csv
echo $csv;
die;
}