Forum CMS Made Simple FR
Désinstallation module - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Modules, Tags (https://forum.cmsmadesimple.fr/forum-14.html)
+--- Sujet : Désinstallation module (/thread-3823.html)



Désinstallation module - bobjo - 18/04/2016

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 2.1.2
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

Pour un module que je crée j'ai des tables dans ma BDD.

A l'installation pas de problème les tables sont bien créée.
Mais à la désinstallation les tables ne sont pas supprimées.

J'ai également pour ce module une feuille de style. Celle ci est créée à l'installation du module avec différents type de gabarit et gabarit.
J'arrive à supprimer les types de gabarit et les gabarits mais pas la feuille de style.

Je vous met le code

Suppression des tables :
Code :
[== PHP ==]
$db = $this->GetDb();
$tablePrefix = CMS_DB_PREFIX.'module_catalogue_';
$dict = NewDataDictionary( $db );

$sqlarray = $dict->DropTableSQL( $tablePrefix.'category');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'category_info');
$dict->ExecuteSQLArray($sqlarray);

Pour les tables j'essayé de mettre les nom de la table en dure sans utiliser la constante CMS_DB_PREFIX ou la variable que je crée mais cela ne change rien...

Suppression de la feuille de style :
Code :
[== PHP ==]
$stylesheet = CmsLayoutStylesheet::load('catalogue');
$stylesheet->delete();
Pour la supprétion de la feuille de style, j'ai essayé avec l'identifiant mais cela ne marche pas...

Si vous avez des idées ou la solution...

Cordialement bobjo


Désinstallation module - bobjo - 18/04/2016

Bon j'ai fais des testes.

J'ai mis le code pour supprimer le css et supprimer une table dans fichier d'administration de mon module.
Et la ça marche... Le css est bien supprimé et la table aussi...

Je comprend pas.

Je vous met tous le contenu de mon fichier uninstall.php peut-être il y a quelque chose que je ne voit pas.
Code :
[== PHP ==]
<?php
if (!isset($gCms)) exit;


//On supprime la permission
$this->RemovePermission(Catalogue::MANAGE_PERM);



// On supprime les référence
$this->RemovePreference();

// On supprime les gabarits
$this->DeleteTemplate();

//On supprime le css
//$stylesheet = new CmsLayoutStylesheet();
$stylesheet = CmsLayoutStylesheet::load('catalogue');
$stylesheet->delete();

//On supprime les tables
$db = $this->GetDb();
$tablePrefix = CMS_DB_PREFIX.'module_catalogue_';
$dict = NewDataDictionary( $db );

$sqlarray = $dict->DropTableSQL( $tablePrefix.'category');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'category_info');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'category_image');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'product');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'product_info');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'product_media');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'product_doc');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'product_feature');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'product_promo');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'product_sup_field');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'product_state');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'category_product');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'sup_field');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'feature');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'feature_value');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'image');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'image_lang');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'pack');
$dict->ExecuteSQLArray($sqlarray);

$sqlarray = $dict->DropTableSQL( $tablePrefix.'pack_lang');
$dict->ExecuteSQLArray($sqlarray);

//On supprime les images, les documents et les dossiers
//On supprime les documents
$path = CMS_ROOT_PATH.'/uploads/Catalogue/document';
if($dossier = opendir($path)){
    while(false !== ($fichier = readdir($dossier))){
        
        if(is_dir($path.'/'.$fichier)){
            rmdir($path.'/'.$fichier);
        }elseif(is_file($path.'/'.$fichier)){
            unlink($path.'/'.$fichier);
        }
        
    }
    
    rmdir($path);
    
}

//On supprime les images des produits
$path = CMS_ROOT_PATH.'/uploads/Catalogue/product';
if($dossier = opendir($path)){
    while(false !== ($dirProd = readdir($dossier))){
        if(is_dir($path.'/'.$dirProd) && ($dirProd == '..' || $dirProd == '.')){
            rmdir($path.'/'.$dirProd);
        }elseif(is_dir($path.'/'.$dirProd) && ($dirProd != '..' || $dirProd != '.')){
            if($dossierProd = opendir($path.'/'.$dirProd)){
                while(false !== ($fichier = readdir($dossierProd))){
                    unlink($path.'/'.$dirProd.'/'.$fichier);
                }
                rmdir($path.'/'.$dirProd);
            }
        }else{
            unlink($path.'/'.$dirProd);
        }
    }
    rmdir($path);
}

//On supprime les images des categories
$path = CMS_ROOT_PATH.'/uploads/Catalogue/category';
if($dossier = opendir($path)){
    while(false !== ($dirCat = readdir($dossier))){
        if(is_dir($path.'/'.$dirCat) && ($dirCat == '..' || $dirCat == '.')){
            
        }elseif(is_dir($path.'/'.$dirCat) && ($dirCat != '..' || $dirCat != '.')){
            if($dossierCat = opendir($path.'/'.$dirCat)){
                while(false !== ($fichier = readdir($dossierCat))){
                    unlink($path.'/'.$dirCat.'/'.$fichier);
                }
                rmdir($path.'/'.$dirCat);
            }
        }else{
            unlink($path.'/'.$dirCat);
        }
    }
    rmdir($path);
}

//On supprime les images les images par defaut
$path = CMS_ROOT_PATH.'/uploads/Catalogue';
if($dossier = opendir($path)){
    while(false !== ($fichier = readdir($dossier))){
        if(!is_dir($path.'/'.$fichier)){
            unlink($path.'/'.$fichier);
        }else{
            rmdir($path.'/'.$fichier);
        }
    }
}

//On supprime les dossier Catalogue qui doit être vide
rmdir(CMS_ROOT_PATH.'/uploads/Catalogue');

?>

Si vous trouvé quelque chose...

Cordialement

bobjo


Désinstallation module - bobjo - 18/04/2016

Je viens de m’apercevoir que la permission n'est pas supprimé.

Donc lors de la désinstallation sont bien supprimé:
les préférence
les templates (sauf le css)

Ne sont pas supprimé :
les permissions,
les tables,
les dossiers
le css

J'ai testé la supprétion des tables, des dossiers, du css dans un fichier de mon module et cela fonctionne.

Je comprend pas...

Cordialement

bobjo