Tutoriel + Mods : générer la table parentchilddepth [W-A]

Proposez ici vos templates, vos plugins ou demandez en un.
Tous les tutoriels disponibles pour Arfooo Annuaire sont disponible dans cette rubrique

Tutoriel + Mods : générer la table parentchilddepth [W-A]

Messagede Angra-Mainyu » Dim 1 Mai 2011 08:47

Bonjour,
de retour pour vous jouer un mauvais tour...

Voilà, j'ai repassé le cap des 15 mins de programmation par jour.

Pour mon besoin, il a fallu que je mette à jour la table categoryParent ( ouep, j'ai encore merdouillé quelque part ), mais aussi besoin de le faire plusieurs fois, alors j'ai fait quelques petites fonctions et modifications dans la partie admin.
Cela permettra à chacun de pouvoir mettre à jour cette table quand il le souhaitera en passant par son admin.

Pour commencer,
on rajoute deux fonctions dans le fichier /admin/controllers/mainController.php

Code: Tout sélectionner
          /*** Wa function
          cette fonction est appellé qu'une seule fois,
       elle vide la table categoryParent et commence avec la racine pour catégorie ( 0 )
    ****/
        function generateCategoryParentTable()
   {
   
      $this->categoryParent->truncate();
      $topParentId = 0;
      $depth = 0;
      $this->updateSubcategoriesParentByParentId($topParentId,$depth);
   }
   
   /*** Wa function
          cette fonction est récursive,
       à partir d'un identifiant d'une catégorie, elle met à jour les champs correspondant dans la table       categoryParent ( 0 ) et cherche ensuite, de manière récursive les sous-catégories et ainsi de suite
    ****/
   function updateSubcategoriesParentByParentId($parentId,$depth) {
      $depth++;
      $childs = $this->category->getChilds($parentId);
      if(!empty($childs)) {
         foreach($childs as $child)
         {
            $this->categoryParent->addNode($child['parentCategoryId'], $child['categoryId'], $depth);
            $this->updateSubcategoriesParentByParentId($child['categoryId'],$depth);
         }
      }
   }


Pour utiliser ces deux fonctions, j'ai choisi la page d'acceuil de l'administration,
en dessous de la gestion rapide.

Pour ma part, j'ai choisi de rajouter un nouveau formulaire, mais vous pouvez simplement rajouter dans le formulaire déja présent comme suit

en dessous de
Code: Tout sélectionner
<tr class="line2">
    <td><strong>{'mainIndex_clear_cache_pr'|lang}</strong> <img src="{"/templates/$templateName/images/icone_info.gif"|resurl}" alt="" class="aide" title="{'mainIndex_clear_cache_pr_desc'|lang}" /></td>
    <td><input class="button" type="submit" name="googleCache" value="{'mainIndex_run'|lang}" /></td>
</tr>
<tr class="line1">
    <td><strong>{'mainIndex_url'|lang}</strong> <img src="{"/templates/$templateName/images/icone_info.gif"|resurl}" alt="" class="aide" title="{'mainIndex_url_desc'|lang}" /></td>
    <td><input class="button" type="submit" name="createUrlNames" value="{'mainIndex_run'|lang}" /></td>
</tr>


rajouter :

Code: Tout sélectionner
   
<tr class="line1">
    <td><strong>{'mainIndex_rebuildcategoryParentTable'|lang}</strong> <img src="{"/templates/$templateName/images/icone_info.gif"|resurl}" alt="" class="aide" title="{'mainIndex_rebuildcategoryParentTable_desc'|lang}"  /></td>
    <td><input class="button" type="submit" name="categoryOrder" value="{'mainIndex_run'|lang}" /></td>
</tr>



Pour effectuer l'action via notre admin,
on modifie la fonction function clearAction() qui se trouve dans le fichier /admin/controllers/mainController.php

on met
Code: Tout sélectionner
foreach (array('topHits', 'topReferrers', 'fileCache', 'googleCache',
                       'createUrlNames', 'categoryOrder', 'categoryParent') as $opt) {
            if ($this->request->hasValue($opt)) {
                $cmd = $opt;
            }
        }


à la place de
Code: Tout sélectionner
foreach (array('topHits', 'topReferrers', 'fileCache', 'googleCache',
                       'createUrlNames', 'categoryOrder') as $opt) {
            if ($this->request->hasValue($opt)) {
                $cmd = $opt;
            }
        }


et dans le switch case, rajouter
Code: Tout sélectionner
case 'categoryParent' :
   $this->generateCategoryParentTable();
   break;


Pour finir, dans le fichier de langue /admin/language/fr.php
en dessous de
Code: Tout sélectionner
$language['mainIndex_reset_category_order_desc'] = 'Permet de reclasser les catégories et sous-catégories par ordre alphabétique';


rajouter
Code: Tout sélectionner
$language['mainIndex_rebuildcategoryParentTable'] = 'Reconstruire la table categoryParent';
$language['mainIndex_reset_category_order_desc'] = 'Permet de mettre à jour les données de la table catégorie parente ou de la construire';


Il ne vous reste plus qu'a vider le dossier compiled et cache.

J'ai comparé avec 4 bases de données, donc le résultat devrait être correct. En attendant vos retours.
Angra-Mainyu
 
Messages: 455
Inscription: Dim 14 Sep 2008 23:37


Retourner vers Templates, plugins et tutoriels

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

 
Copyright © arfooo.com  2007 - 2011  -  Tous droits réservés  -  Partenaires de confiance
Sites du groupe: petites annonces gratuites   voyance en direct - tirage tarot   Consultant en référencement
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group | phpBB SEO Traduction par: phpBB-fr.com
cron