Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 2140 → Rev 2141

/branches/v2.1-emondoir/scripts/modules/maintenance/Maintenance.php
2,6 → 2,9
class Maintenance extends Script {
 
protected $bdd;
protected $parametres_autorises = array(
'-mc' => array(false, '1', 'Mot clef à chercher pour régénérer les machins')
);
 
public function __construct($script_nom, $parametres_cli) {
parent::__construct($script_nom, $parametres_cli);
39,6 → 42,10
case 'reparerLiaisonsOublieesImages' :
$this->reparerLiaisonsOublieesImages();
break;
case 'reparerLiaisonsObsParMotsClesTexte' :
$mot_clef = $this->getParametre('mc');
$this->reparerLiaisonsObsParMotsClesTexte($mot_clef);
break;
default :
$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs";
334,5 → 341,58
}
echo "\n";
}
private function reparerLiaisonsObsParMotsClesTexte($mot_cle_texte_recherche) {
$ancienne_table_obs = Config::get('table_obs_recup');
$requete_anciens_mots_cles_texte = "SELECT ce_utilisateur, id_observation, mots_cles_texte ".
"FROM ".$ancienne_table_obs." WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%'";
$obs_a_mot_cle = $this->bdd->recupererTous($requete_anciens_mots_cles_texte);
$requete_nouveaux_mots_cle = "SELECT * FROM cel_arbre_mots_cles_obs ".
"WHERE id_utilisateur IN ".
"(SELECT id_utilisateur FROM ".$ancienne_table_obs." ".
"WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%')";
$nouveaux_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cle);
$mots_cles_indexes = array();
foreach($nouveaux_mots_cles as $mot_cle) {
$mots_cles_indexes[$mot_cle['id_utilisateur']][strtolower($mot_cle['mot_cle'])] = $mot_cle;
}
$liaisons_a_inserer = array();
$utilFoirax = 0;
$mcFoirax = 0;
foreach($obs_a_mot_cle as $obs) {
$mots_cles_texte_tab = explode(',', $obs['mots_cles_texte']);
$id_observation = $obs['id_observation'];
$id_utilisateur = $obs['ce_utilisateur'];
foreach($mots_cles_texte_tab as $mot_cle_t) {
if($mot_cle_t == $mot_cle_texte_recherche) {
if (isset($mots_cles_indexes[$id_utilisateur])) {
if (isset($mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)])) {
$id_nouveau_mot_cle = $mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)]['id_mot_cle'];
} else {
$mcFoirax++;
}
} else {
$utilFoirax++;
}
$liaisons_a_inserer[] = array('id_element_lie' => $id_observation, 'id_mot_cle' => $id_nouveau_mot_cle);
}
}
}
echo "Utilisateurs pas dans le tableau: $utilFoirax\n";
echo "Motf-clefs pas dans le tableau: $mcFoirax\n";
//echo '<pre>'.print_r($liaisons_a_inserer, true).'</pre>';
echo "Liaisons à insérer: " . count($liaisons_a_inserer) . " \n";
 
$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ".
"VALUES ";
foreach($liaisons_a_inserer as $l) {
$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
}
$requete_insertion = rtrim($requete_insertion, ',');
$insertion = $this->bdd->requeter($requete_insertion);
}
}
?>
/branches/v2.1-emondoir/scripts
Property changes:
Modified: svn:mergeinfo
Merged /trunk/scripts:r2139-2140
/branches/v2.1-emondoir/.
Property changes:
Modified: svn:mergeinfo
Merged /trunk:r2139-2140