]> _ Git - fluidbook-toolbox.git/commitdiff
wait #6266 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 11 Sep 2023 14:54:19 +0000 (16:54 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 11 Sep 2023 14:54:19 +0000 (16:54 +0200)
app/Http/Controllers/Admin/Operations/Tools/FluidbookReferencesURL.php [new file with mode: 0644]
app/Http/Controllers/Admin/ToolsController.php
app/Models/FluidbookReference.php [new file with mode: 0644]
resources/views/tools/sidebar.blade.php

diff --git a/app/Http/Controllers/Admin/Operations/Tools/FluidbookReferencesURL.php b/app/Http/Controllers/Admin/Operations/Tools/FluidbookReferencesURL.php
new file mode 100644 (file)
index 0000000..f4ecee3
--- /dev/null
@@ -0,0 +1,112 @@
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\Tools;
+// __('!! Outils')
+use App\Models\FluidbookReference;
+use Cubist\Backpack\Magic\Fields\Checkbox;
+use Cubist\Backpack\Magic\Fields\Code;
+use Cubist\Backpack\Magic\Fields\Integer;
+use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Cubist\Backpack\Magic\Fields\StandardFile;
+use Cubist\Backpack\Magic\Fields\Text;
+use Cubist\Backpack\Magic\Form;
+use Cubist\Excel\ExcelToArray;
+use Exception;
+use PhpOffice\PhpSpreadsheet\Reader\Csv;
+use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
+
+trait FluidbookReferencesURL
+{
+    use BaseTool;
+
+    protected static $_db = ['10doigts' => '10 doigts',
+        'ascocelda' => 'Asco & Celda',
+        'wesco' => 'Wesco',
+        'mopec' => 'Mopec',
+        'intex' => 'Intex',
+        'grosfillex' => 'Grosfillex'];
+
+    public function fluidbookrefurl()
+    {
+        ksort(self::$_db);
+
+        $form = new Form(backpack_url('tools/dofluidbookrefurl'));
+        $form->setEnctype('multipart/form-data');
+        $form->setTitle(__('Importer une base de données de références Fluidbook'));
+        $form->setSubmitLabel(__('Importer'));
+        $form->setSubmitIcon('las la-link');
+        $form->addField('file', StandardFile::class, __('Base de données'), ['accept' => '.xlsx;.csv', 'hint' => __('Feuille Excel ou CSV contenant deux colonnes.') . ' ' . __('Colonne A : Référence') . ', ' . __('Colonne B : URL')]);
+        $form->addField('type', SelectFromArray::class, __('Importer dans'), ['default' => '10doigts', 'allows_null' => false, 'options' => self::$_db]);
+
+        return view('tools.form', ['form' => $form]);
+
+    }
+
+
+    public function dofluidbookrefurl()
+    {
+        global $core;
+
+
+        $file = request()->file('file');
+        $type = request('type');
+        if (!isset(self::$_db[$type])) {
+            abort(404, 'DB type not found');
+        }
+
+        if (strtolower($file->getClientOriginalExtension()) === 'xlsx') {
+            $reader = new Xlsx();
+        } else if (strtolower($file->getClientOriginalExtension()) === 'csv') {
+            $reader = new Csv();
+            $reader->setDelimiter(';');
+        }
+        $xls = $reader->load($file->getPathname());
+        $sheet = $xls->getSheet(0);
+        $maxRow = $sheet->getHighestRow('A');
+
+        $updated = 0;
+
+        $add = [];
+
+        for ($i = 1; $i <= $maxRow; $i++) {
+            $acell = $sheet->getCell('A' . $i);
+            $bcell = $sheet->getCell('B' . $i);
+            $ref = trim($acell->getOldCalculatedValue()) ?: trim($acell->getFormattedValue());
+            $url = trim($bcell->getOldCalculatedValue()) ?: trim($bcell->getFormattedValue());
+
+            if ($url == '' || $ref == '') {
+                continue;
+            }
+
+            $fref = self::_formatWsReferenceRef($ref, $type);
+            $furl = self::_formatWsReferenceUrl($url, $type);
+
+            $add[$fref] = $furl;
+        }
+
+        FluidbookReference::withoutGlobalScopes()->whereIn('ref', array_keys($add))->whereType($type)->forceDelete();
+
+        foreach ($add as $fref => $furl) {
+            $i = new FluidbookReference(['ref' => $fref, 'url' => $furl, 'type' => $type]);
+            $i->saveQuietly();
+            $updated++;
+        }
+        return $this->_success(__(':updated liens insérés ou mis à jour', ['updated' => $updated]));
+    }
+
+    public static function _formatWsReferenceRef($ref, $type)
+    {
+        if ($type === '10doigts') {
+            if (stripos($ref, 'ic') === 0) {
+                return 'C' . substr($ref, 2);
+            }
+        }
+        return $ref;
+    }
+
+    public static function _formatWsReferenceUrl($url, $type)
+    {
+        return $url;
+    }
+
+}
index afa953bc6d683cec519930a9b195b772a2ee03e0..e8d9a027b9c09ba23e3644c9b72312a43bcdd530 100644 (file)
@@ -11,10 +11,10 @@ use App\Http\Controllers\Admin\Operations\Tools\FluidbookAssetsDownloader;
 use App\Http\Controllers\Admin\Operations\Tools\FluidbookBranchCreate;
 use App\Http\Controllers\Admin\Operations\Tools\FluidbookBranchRemove;
 use App\Http\Controllers\Admin\Operations\Tools\FluidbookCopyLinks;
+use App\Http\Controllers\Admin\Operations\Tools\FluidbookReferencesURL;
 use App\Http\Controllers\Admin\Operations\Tools\GitReposCreate;
 use App\Http\Controllers\Admin\Operations\Tools\ImagesResizer;
 use App\Http\Controllers\Admin\Operations\Tools\JSON2Excel;
-use App\Http\Controllers\Admin\Operations\Tools\PDF2SVGOperation;
 use App\Http\Controllers\Admin\Operations\Tools\SVGCleaner;
 use App\Http\Controllers\Admin\Operations\Tools\TextToSpeech;
 use App\Http\Controllers\Controller;
@@ -33,6 +33,8 @@ class ToolsController extends Controller
     use ImagesResizer;
     use FluidbookCopyLinks;
     use SVGCleaner;
+    use FluidbookReferencesURL;
+
 
     protected function index($tool, $args = '')
     {
diff --git a/app/Models/FluidbookReference.php b/app/Models/FluidbookReference.php
new file mode 100644 (file)
index 0000000..09173da
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+
+namespace App\Models;
+
+use App\Models\Base\ToolboxModel;
+use Cubist\Backpack\Magic\Fields\Text;
+use Cubist\Backpack\Magic\Fields\URL;
+
+class FluidbookReference extends ToolboxModel
+{
+    protected $table = 'fluidbook_reference_url';
+    protected $_options = ['name' => 'fluidbook-reference-url',
+        'singular' => 'référence',
+        'plural' => 'références'];
+
+    static $_permissionBase = 'fluidbook-reference-url';
+
+    public function setFields()
+    {
+        parent::setFields();
+        $this->addField('ref', Text::class, __("Référence"));
+        $this->addField('type', Text::class, __("Type"));
+        $this->addField('url', URL::class, __('URL'));
+    }
+}
index 49507f3eeaee7ef4826a1fc195a1588b95d1caf0..dbeddf03d09c87760cff55f990386db80fe333f7 100644 (file)
@@ -33,6 +33,9 @@
     <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookbranchremove') }}'><i
                 class='nav-icon la la-git'></i>
             <span>{{__('Supprimer une branche du player fluidbook')}}</span></a></li>
+    <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookrefurl') }}'><i
+                class='nav-icon las la-link'></i>
+            <span>{{__('Importer des bases de données de références fluidbook')}}</span></a></li>
     <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/favicongen') }}'><i
                 class='nav-icon las la-icons'></i>
             <span>{{__('Générer des favicons')}}</span></a></li>