Fichier FrameBeurk
Fmbk/Module/Rhum/Commentaire/helpersCommentaire.php
<?php //FrameBeurk V0.65 Copyright ToolOscope 2016. Licence CeCILL-C.
function Rhum_carteCommentaire($result1, $sufxCss, $IdEtatSujet, $IdCreateurSujet, $topDansListe) {
global $CONFIG;
if (list($IdElementDe, $IdCommentaire, $Commentaire, $IdCommentaireRef, $IdCreateur, $User, $TsCRE, $IdEtatCommentaire, $Alerte, $NbrVotes, $Note, $Donnees, $Import) = db_FETCH_ROW($result1)) {
$EtatCommentaire = Beurk_terminal($IdEtatCommentaire);
//on n'affiche pas le contenu du commentaire s'il y a une alerte, sauf pour le IdCreateur de la discussion et pour l'admin
$topAffichDonnees = Rhum_topAfficheContenuCommentaire($NbrVotes, $Note, $IdEtatCommentaire, $Alerte, $IdCreateurSujet);
//vérification présence import
$topafficheimport = false;
if (! $topDansListe && ($Import != '')) {
if (file_exists(INSTALL_PATH . '/prive/' . $Import))
$topafficheimport = true;
else Beurk_messageEtape('Import inconnu', true);
}
//titre
$toplien = (($IdElementDe == $CONFIG['Entite']['News']['Id']) ? false : true);
$titre = ($toplien == false) ? Beurk_DB2HTML($Commentaire)
: ('<a href="' . Beurk_URL(array('ActVue' => 'detail', 'IdVue' => $IdCommentaire)) .'" data-ajax="Page">'
. Beurk_DB2HTML($Commentaire) . '</a>');
//createur
$createur = '<a href="' . Beurk_URL(array('ActVue' => 'detail', 'IdVue' => $IdCreateur)) . '" data-ajax="Page" rel="author">' . $User . '</a>, '
. Beurk_traduit('il y a %s', 'Kom1', Kom1_formateTempsRelatif($TsCRE));
//infos
$infos = '<div class="avis" id="' . Beurk_nomDivAccueil(array('avis', $IdCommentaire)) . '">
' . Rhum_formateAvis($NbrVotes, $Note) . '</div>'
. (($Alerte == 'O') ? ('<br />' . Beurk_traduit('Alerte signalée', 'Kom1')) : '')
. (($EtatCommentaire == 'C') ? ('<br />' . Beurk_traduit('Commentaire %s', 'Rhum', Rhum_libelleEtatCommentaire($EtatCommentaire))) : '');
//commentaire
$commentaire = Kom1_DB2HTML_BB($Donnees);
// réponses
$reponses = '';
$sufxCss2 = 1 - $sufxCss; // pour que les réponses soient dans la couleur alternative à celle du commentaire
$result2 = db_QUERY(Rhum_queryReponsesCommentaire($IdCommentaire));
while ($reponse = Rhum_carteReponseCommentaire($result2, $sufxCss2, $IdEtatSujet))
$reponses .= $reponse;
db_FREE($result2);
// majs
$tabAdresse = array_merge(Beurk_clefVuePage(), array('IdMaj' => $IdCommentaire));
$majs = '';
if ($EtatCommentaire != 'C')
$majs .= Rhum_formateVote($IdCommentaire)
. Kom1_actionVueMaj('Editer', array('ActVue' => 'modifie', 'IdVue' => $IdCommentaire));
if ($Alerte == 'O')
$majs .= Kom1_actionMaj('Censurer', $tabAdresse, 'censure')
. Kom1_actionMaj('Réhabiliter', $tabAdresse, 'rehabilite');
elseif ($EtatCommentaire == 'V')
$majs .= Kom1_actionVueMaj('Alerter', array('ActVue' => 'alerte', 'IdVue' => $IdCommentaire));
elseif ($EtatCommentaire == 'T')
$majs .= Kom1_actionMaj('Approuver', $tabAdresse, 'active')
. Kom1_actionMaj('Censurer', $tabAdresse, 'censure');
//action répondre
$EtatSujet = Beurk_terminal($IdEtatSujet);
if ($EtatSujet == 'V' && $EtatCommentaire == 'V')
$majs .= Kom1_actionVueMaj('Répondre', array('ActVue' => 'repondre', 'IdVue' => $IdCommentaire));
Kom1_carteEntite('Commentaire', $IdCommentaire, $sufxCss, $titre, $createur, $infos, $commentaire, '', $majs, $topAffichDonnees, $reponses);
echo Beurk_flushDivsAccueil(); // sortie des divs d'accueil
//affichage Import
if ($topafficheimport)
include(INSTALL_PATH . '/prive/' . $Import);
return true; //ok
} else return false; //pas ou plus de discussions
}
//renvoie une réponse à un commentaire --------------------------------------------------------------------------------
function Rhum_carteReponseCommentaire($result1, $sufxCss, $IdEtatSujet) {
if (list($IdElementDe, $IdCommentaire, $Commentaire, $IdCommentaireRef, $IdCreateur, $User, $TsCRE, $IdEtatCommentaire, $Alerte, $NbrVotes, $Note, $Donnees, $Import) = db_FETCH_ROW($result1)) {
$EtatCommentaire = Beurk_terminal($IdEtatCommentaire);
//titre
$titre = Beurk_DB2HTML($Commentaire);
//createur
$createur = '<a href="' . Beurk_URL(array('ActVue' => 'detail', 'IdVue' => $IdCreateur)) . '" data-ajax="Page" rel="author">' . $User . '</a>, '
. Beurk_traduit('il y a %s', 'Kom1', Kom1_formateTempsRelatif($TsCRE));
//infos
$infos = '<span class="avis" id="' . Beurk_nomDivAccueil(array('avis', $IdCommentaire)) . '">
' . Rhum_formateAvis($NbrVotes, $Note) . '</span>
' . (($Alerte == 'O') ? (' ' . Beurk_traduit('Alerte signalée', 'Kom1')) : '')
. (($EtatCommentaire == 'C') ? (Beurk_traduit('Commentaire %s', 'Rhum', Rhum_libelleEtatCommentaire($EtatCommentaire))) : '');
//commentaire
$commentaire = Kom1_remplaceBBCodes(htmlspecialchars($Donnees, ENT_NOQUOTES, 'UTF-8')); // Kom1_DB2HTML_BB($Donnees); sans le nl2br
// majs
$tabAdresse = array_merge(Beurk_clefVuePage(), array('IdMaj' => $IdCommentaire));
$majs = '';
if ($EtatCommentaire != 'C')
$majs .= Rhum_formateVote($IdCommentaire)
. Kom1_actionVueMaj('Editer', array('ActVue' => 'modifie', 'IdVue' => $IdCommentaire));
if ($Alerte == 'O')
$majs .= Kom1_actionMaj('Censurer', $tabAdresse, 'censure')
. Kom1_actionMaj('Réhabiliter', $tabAdresse, 'rehabilite');
elseif ($EtatCommentaire == 'V')
$majs .= Kom1_actionVueMaj('Alerter', array('ActVue' => 'alerte', 'IdVue' => $IdCommentaire));
elseif ($EtatCommentaire == 'T')
$majs .= Kom1_actionMaj('Approuver', $tabAdresse, 'active')
. Kom1_actionMaj('Censurer', $tabAdresse, 'censure');
return
'<div class="Reponse_l' . $sufxCss . '">
<span class="Reponse_c1">
' . $titre . '
</span>
<span class="Reponse_c6">
' . $commentaire . '
</span>
<span class="Reponse_c2">
' . $createur . '
</span>
<span class="Reponse_c3">
' . $infos .
'</span>
<div class="listeMajs">
' . $majs .
'</div>
<div class="enbas"></div>
</div>
'; // les divs d'accueil des réponses sont au même endroit que celles du commentaire en référence
} else return false; //pas ou plus de réponse
}
//affichage d'un formulaire de saisie adapté pour les commentaires (fonction dérivée de Kom1_carteMajEntite)
//$IdRef alimenté pour les créations, '' sinon.
//$IdMaj alimenté pour les autres actions, '' sinon
function Rhum_carteMajCommentaire($ActMaj, $IdMaj, $topImportAdmin, $IdRef = '', $IdCommentaireRef = 0,
$titreObj = '', $donneesObj = '', $importObj = '') {
global $TRANSAC;
$TRANSAC['Page']['ForceTabIndex'] = true; // force l'utilisation des tabIndex pour éviter que les select de BBCodes soient avant les données
$IdMaj = Beurk_id($IdMaj);
// spécial gestion des réponses aux commentaires
$extraActions = '';
if ($IdCommentaireRef == 0) {
if ($ActMaj == 'cree')
$libelleref = 'Nouvelle entrée';
elseif ($ActMaj == 'repondre') {
$libelleref = Rhum_libelleCommentaireRef($IdMaj);
$extraActions = '<input id="citeCommentaire" type="button" value="' . Beurk_traduit('Citer le commentaire', 'Rhum') . '" data-cite="' . $ActMaj . '/' . $IdMaj . '">';
} else // modifie
$libelleref = 'Commentaire sans référence';
} else { // modifie
$libelleref = Rhum_libelleCommentaireRef($IdCommentaireRef);
$extraActions = '<input id="citeCommentaire" type="button" value="' . Beurk_traduit('Citer le commentaire', 'Rhum') . '" data-cite="' . $ActMaj . '/' . $IdCommentaireRef . '">';
}
// fin spécial
echo Beurk_divAccueil(array('ActVue' => 'previsualise', 'IdVue' => $IdMaj), 'inPopUp'),
'<form id="', $TRANSAC['Vue']['Form'], '" class="saisieVue" action="', Kom1_urlReafficheSite(), '" method="post" enctype="application/x-www-form-urlencoded">
', Kom1_formateDivErreur(), '
<div>
', $libelleref, '
</div>
', Beurk_fieldset ('Titre', Beurk_baliseInput('text', "titre$IdMaj", $titreObj, '', '', 80)),
Kom1_formateDivBBcodes($ActMaj, $IdMaj, $extraActions),
Beurk_fieldset ('Contenu', Beurk_baliseTextarea("donnees$IdMaj", $donneesObj, '', 'virtual')),
((Uzers_estAdmin() && ($topImportAdmin)) ?
Beurk_fieldset ('Import', Beurk_baliseInput('text', "import$IdMaj", $importObj, '', '', 80))
: ''),
((! Uzers_estLogue()) ?
(Beurk_fieldset ('Attention', Beurk_baliseCheckBox('attention', '1', false)
. Beurk_traduit('<b>Vous n\'êtes pas logués</b>. Votre message apparaitra avec le nom "anonymous", <u>après approbation de son contenu</u>, et ne sera pas éditable par la suite.')))
: ''),
Kom1_formateValidation($ActMaj, $IdMaj, Beurk_traduit('votre entrée'), (! Uzers_estLogue()), true),
(($IdRef != '') ? '<input type="hidden" name="IdRef" value="' . $IdRef . '">' : ''), '
</form>
';
}
// recherche du commentaire en référence et formatage du lien
function Rhum_libelleCommentaireRef($IdCommentaireRef) {
$result = db_QUERY('SELECT U.User, H.TsAction '
. 'FROM Rhum_Commentaire AS C '
. 'LEFT JOIN Beurk_Historique AS H ON H.IdNoeud = C.IdCommentaire AND H.NoVersion = 1 '
. 'LEFT JOIN Uzers_User AS U ON H.IdUser = U.IdUser '
. "WHERE C.IdCommentaire = '$IdCommentaireRef' AND C.IdEtat <> '" . Beurk_id('C') . "'");
if (list($UserRef, $TsCRERef) = db_FETCH_ROW($result))
$libelle = Beurk_traduit('En réponse à %s, il y a %s', 'Rhum', $UserRef, Kom1_formateTempsRelatif($TsCRERef));
else
$libelle = false;
db_FREE($result);
return $libelle;
}
//determine si le commentaire est condensé ou pas
function Rhum_topAfficheContenuCommentaire($NbrVotes, $Note, $IdEtat, $Alerte, $IdCreateurSujet) {
if (Uzers_estUserLogue($IdCreateurSujet) || Uzers_estAdmin())
return 1;
// A partir de 10 votes, la note doit être supérieure à 0 pour que le commentaire soit affiché
if ($Alerte == 'O' || ($NbrVotes >= 10 && $Note < 0))
return 0;
return 1;
}
//avis des commentaires
function Rhum_formateAvis($NbrVotes, $Note) {
return Kom1_traduitQuantite('%d avis', 'Rhum', $NbrVotes) . ' : ' . (($Note > 0) ? '+' : '') . $Note;
}
//avis des commentaires
function Rhum_formateVote($IdVue) {
global $DIALOG;
if (! isset($DIALOG['Historique']['vote' . $IdVue])) { // seulement si pas déjà voté lors de la session
$tabActionMaj = array('IdMaj' => $IdVue);
return '<span class="vote" id="vote.' . $IdVue . '">
' . Beurk_traduit('Intérêt', 'Rhum') . ' : '
//. Kom1_actionMaj('--', $tabActionMaj, 'vote', '', array("data-vote" => "-2/$IdVue"))
. Kom1_actionMaj('-', $tabActionMaj, 'vote', '', array("data-vote" => "-1/$IdVue"))
//. Kom1_actionMaj('?', $tabActionMaj, 'vote', '', array("data-vote" => "0/$IdVue")
. Kom1_actionMaj('+', $tabActionMaj, 'vote', '', array("data-vote" => "1/$IdVue"))
//. Kom1_actionMaj('++', $tabActionMaj, 'vote', '', array("data-vote" => "2/$IdVue"))
. '</span>
';
}
}
// fonction appelée par le controleur de recherche
function Rhum_carteCommentaireTrouve($sufxCss, $IdCommentaire, $Commentaire, $IdCreateur, $User, $TsCRE, $NbrVotes, $Note, $Donnees, $IdElementDe, $score) {
global $CONFIG;
Kom1_carteEntite('Commentaire', $IdCommentaire, $sufxCss,
'<a href="' . ((Beurk_terminal($IdElementDe, false) == 'News')
? Beurk_URL(array('ActVue' => 'detail', 'IdVue' => 'News', 'IdCommentaire' => $IdCommentaire))
: Beurk_URL(array('ActVue' => 'detail', 'IdVue' => $IdCommentaire)) )
. '" data-ajax="Page">' . Beurk_DB2HTML($Commentaire) . '</a>',
Beurk_traduit('Commentaire émis par %s, il y a %s', 'Rhum', $User, Kom1_formateTempsRelatif($TsCRE)),
Beurk_traduit('Pertinence = %s', 'Kom1', round($score, 2))
. '<br />' . Rhum_formateAvis($NbrVotes, $Note),
Kom1_DB2HTML_BB($Donnees, true),
'', '', -1);
}
function Rhum_libelleEtatCommentaire($IdEtat) {
$Etat = Beurk_terminal($IdEtat); // accepte une id ou un terminal d'état
if ($Etat == 'V')
return Beurk_traduit('valide', 'Kom1');
elseif ($Etat == 'C')
return Beurk_traduit('censuré', 'Kom1');
elseif ($Etat == 'T')
return Beurk_traduit('à approuver', 'Kom1');
else
return Beurk_traduit('Etat ?', 'Kom1');
}