use \App\Http\Controllers\Admin\Operations\ChangeownerOperation;
use \App\Http\Controllers\Admin\Operations\ChangestatusOperation;
use \App\Http\Controllers\Admin\Operations\FluidbookCollection\SettingsExportOperation;
-
+ use \App\Http\Controllers\Admin\Operations\FluidbookCollection\AuditLinksOperation;
/*
--- /dev/null
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\FluidbookCollection;
+
+
+use App\Models\FluidbookAuditLink;
+use Cubist\Util\Files\Files;
+use Illuminate\Support\Facades\Route;
+use PhpOffice\PhpSpreadsheet\Spreadsheet;
+use PhpOffice\PhpSpreadsheet\Style\Alignment;
+use PhpOffice\PhpSpreadsheet\Style\Fill;
+use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
+use PhpOffice\PhpSpreadsheet\Style\Protection;
+use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
+
+trait AuditLinksOperation
+{
+ protected function setupAuditLinksRoutes($segment, $routeName, $controller)
+ {
+ Route::match(['get','post'],$segment . '/{id}/export_excel', $controller . '@exportExcel')->name("download_audit_links");
+ }
+
+ public function exportExcel() {
+ $errorlinks = FluidbookAuditLink::whereNotNull('error_code')->get()->toArray();
+ //$redirectionlinks = FluidbookAuditLink::whereNull('redirection_code')->get()->toArray();
+
+ $errorKeys = array_keys($errorlinks[0]);
+
+ $excel = new Spreadsheet();
+
+ $excel->getDefaultStyle()
+ ->getNumberFormat()
+ ->setFormatCode(
+ NumberFormat::FORMAT_TEXT
+ );
+ $sheet = $excel->getActiveSheet();
+ $sheetname_error = "Erreurs";
+ $sheet->setTitle($sheetname_error);
+
+ $excel->getActiveSheet()->getProtection()->setSheet(true);
+ $excel->getDefaultStyle()->getProtection()->setLocked(false);
+
+ $line = 1;
+ $columns = 0;
+ $c = 0;
+
+ for ($i = 1; $i < sizeof($errorKeys); $i++) {
+ $c++;
+ $columns = max($columns, $c);
+ $cell = $sheet->getCellByColumnAndRow($c, $line);
+ $cell->setValue($errorKeys[$i]);
+ $style = $sheet->getStyleByColumnAndRow($c, $line);
+ $style->getFont()->setBold(true);
+ $style->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
+ }
+
+ $maxColSize = [];
+
+ for ($i = 0; $i < sizeof($errorlinks); $i++) {
+ $c = 1;
+ $line++;
+ foreach ($errorlinks[$i] as $k => $value) {
+ if($k === "id") {
+ continue;
+ }
+ $columns = max($columns, $c);
+ $maxColSize[$c][] = strlen($value);
+ $sheet->getCellByColumnAndRow($c, $line)->setValue($value);
+ $style = $sheet->getStyleByColumnAndRow($c, $line);
+ if ($k !== "new_url") {
+ $style->getProtection()->setLocked(Protection::PROTECTION_PROTECTED);
+ }
+ $style->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
+ $style->getAlignment()->setWrapText(false);
+ $c++;
+ }
+ }
+
+ $j = 1;
+ for ($i = 0; $i <= $columns; $i++) {
+ if (array_key_exists($j, $maxColSize)) {
+ if (max($maxColSize[$j]) > 50) {
+ $sheet->getColumnDimensionByColumn($j)->setWidth(100);
+ } else {
+ $sheet->getColumnDimensionByColumn($j)->setAutoSize(true);
+ }
+ } else {
+ $sheet->getColumnDimensionByColumn($j)->setAutoSize(true);
+ }
+ $j++;
+ }
+
+ // Direct download
+ $tmpfile = Files::tempnam() . '.xlsx';
+ $writer = new Xlsx($excel);
+ $writer->save($tmpfile);
+
+ return response()->download($tmpfile, 'erreurs.xlsx')->deleteFileAfterSend();
+ }
+}
use App\Models\Traits\CheckHash;
use Cubist\Backpack\Magic\Fields\Integer;
use Cubist\Backpack\Magic\Fields\Text;
+use App\Http\Controllers\Admin\Operations\ChangeownerOperation;
+use App\Http\Controllers\Admin\Operations\ChangestatusOperation;
class FluidbookAuditLink extends ToolboxModel
{
use ToolboxDownloadable;
protected $table = 'fluidbook_audit_link';
- protected $_options = ['name' => 'fluidbook_audit_link',
- 'singular' => 'audit_link',
- 'plural' => 'audit_links'];
+ protected $_options = ['name' => 'fluidbook-audit_link',
+ 'singular' => 'auditlink',
+ 'plural' => 'auditlinks'];
- protected static $_permissionBase = 'fluidbook_audit_link';
+ protected static $_permissionBase = 'fluidbook-collection';
public function setFields()
{
use App\Fluidbook\Compiler\Links;
use App\Http\Controllers\Admin\Operations\ChangeownerOperation;
use App\Http\Controllers\Admin\Operations\ChangestatusOperation;
+use App\Http\Controllers\Admin\Operations\FluidbookCollection\AuditLinksOperation;
use App\Http\Controllers\Admin\Operations\FluidbookCollection\DownloadOperation;
use App\Http\Controllers\Admin\Operations\FluidbookCollection\PreviewOperation;
use App\Http\Controllers\Admin\Operations\FluidbookCollection\SettingsExportOperation;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Auth;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
+use PhpOffice\PhpSpreadsheet\Style\Alignment;
+use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
+use PhpOffice\PhpSpreadsheet\Style\Protection;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Typesense\Client;
use Typesense\Exceptions\ConfigError;
DownloadOperation::class,
ChangeownerOperation::class,
ChangestatusOperation::class,
- SettingsExportOperation::class
+ SettingsExportOperation::class,
+ AuditLinksOperation::class
];
protected static $_permissionBase = 'fluidbook-collection';
$this->addField('enable_audit', Checkbox::class, __('Activer l’audit des liens'), ['default' => false]);
$this->addField('download_audit', LinkButton::class, __('Télécharger l\'audit'), [
'when' => ["enable_audit" => 1],
- 'value' => backpack_url('/'),
+ 'value' => './export_excel',
'translatable' => false,
'attributes' => [ 'class' => 'form-control some-class'],
]);
);
}
-
public function uploadFreeFile($uploadedFile, $attribute, $operation = 'move')
{
$field = $this->getField($attribute);
$c->update(['publications' => json_encode($publications)]);
}
}
-
- public function exportExcel() {
- $excel = new Spreadsheet();
-
- $excel->getDefaultStyle()
- ->getNumberFormat()
- ->setFormatCode(
- NumberFormat::FORMAT_TEXT
- );
- $sheet = $excel->getActiveSheet();
- $sheetname = "Export";
- $sheet->setTitle($sheetname);
-
- // Direct download
- /*$tmpfile = Files::tempnam() . '.xlsx';
- $writer = new Xlsx($excel);
- $writer->save($tmpfile);
- return $tmpfile*/
- }
}