je souhaiterais générer automatiquement une image JPG de la première page des PDFs uploadés en back-end.
Pour cela, je pense utiliser l'extension php "imagick".
Je suppose qu'il est opportun d'utiliser le hook postUpload de Contao (https://docs.contao.org/books/api/extensions/hooks/postUpload.html), mais je n'ai aucune expérience des hooks et aucune doc n'est disponible sur le sujet.
Par rapport au peu que j'ai compris, voici ce que j'ai fait :
J'ai dupliqué le dossier \system\modules\core\drivers que j'ai renommé, mettons "imagick", et placé dans \system\modules.
Dans ce nouveau dossier, j'ai créé un dossier config dans lequel j'ai enregistré un fichier config.php contenant le hook suivant :
Code : Tout sélectionner
<?php
// Put your custom configuration here
$GLOBALS['TL_HOOKS']['postUpload'][] = array('MyClass', 'myPostUpload');
Puis à la racine de mon dossier, un fichier MyClass.php contenant :
Code : Tout sélectionner
public function myPostUpload($arrFiles)
{
// Do something
print ("test ok");
}
A ce stade, je reçois une erreur php quand je tente d'uploader un fichier depuis le backend :
Code : Tout sélectionner
Warning: in_array() expects parameter 2 to be array, null given in system\modules\core\library\Contao\System.php on line 140
#0 [internal function]: __error(2, 'in_array() expe...', 'C:\Program File...', 140, Array)
#1 system\modules\core\library\Contao\System.php(140): in_array('getInstance', NULL)
#2 system\modules\core\drivers\DC_Folder.php(975): Contao\System->import('MyClass')
#3 system\modules\core\classes\Backend.php(650): Contao\DC_Folder->move()
#4 system\modules\core\controllers\BackendMain.php(131): Contao\Backend->getBackendModule('files')
#5 contao\main.php(20): Contao\BackendMain->run()
#6 {main}
Fatal error: Class 'MyClass' not found in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\monsite\system\modules\core\library\Contao\System.php on line 140
Je rajoute donc un fichier autoload.php dans mon dossier config pour charger la classe MyClass :
Code : Tout sélectionner
<?php
/**
* Register the classes
*/
ClassLoader::addClasses(array
(
'Contao\Imagick' => 'system/modules/imagick/MyClass.php'
));
Hélas, cela ne change rien... même erreur PHP...
Si un(e) fin(e) connaisseur des Hooks pouvait me donner un petit coup de main à comprendre là où fait fait une grosse bouse, je lui en serait éternellement reconnaissant.
Merci d'avance
Vinny
NB : ma version de contao : 3.5.14