FrameBeurk File
Fmbk/Module/Kom1/helpersKom1.php
<?php //FrameBeurk V0.65 Copyright ToolOscope 2016. Licence CeCILL-C.
// formate un lien vers une maj.
// $ActMaj est ajouté à $tabActionMaj, pour définir l'URL de la maj
function Kom1_actionMaj($nomAction, $tabActionMaj, $ActMaj, $module = '', $tabAttribut = array()) {
global $CONFIG;
//vérification autorisation
$IdMaj = $tabActionMaj['IdMaj'];
$EntMaj = Beurk_entiteAction('Maj', $ActMaj, $IdMaj);
$messageAuto = Beurk_controleurAutorisation($CONFIG['Entite'][$EntMaj]['Maj'][$ActMaj]['Auto'],
array('ActMaj' => $ActMaj,
'IdMaj' => $IdMaj,
'IdRef' => (isset($tabActionMaj['IdRef'])) ? $tabActionMaj['IdRef'] : 0,
'preAuto' => true)); // preAuto=true inhibe les autos qui ont besoin d'un résultat (état jeton, controle somme...)
if ($messageAuto == '') {
// gestion des attributs / javascript discret
if (empty($tabAttribut)) // par défaut réaffichage Ajax de la div principale
$tabAttribut['data-ajax'] = 'Page';
$attrbs = '';
foreach($tabAttribut as $attribut => $valeur)
$attrbs .= ' ' . $attribut . '="' . $valeur . '"';
$tabActionMaj['ActMaj'] = $ActMaj;
return '<a class="maj" rel="nofollow" href="' . Beurk_URL($tabActionMaj) . '" '
. $attrbs . '>' . Beurk_traduit($nomAction, $module) . '</a>
';
} // else echo $ActMaj . '-' . $IdMaj . ' : ' . ((is_array($messageAuto)) ? $messageAuto[0] : $messageAuto);
}
// controle si le user est autorisé à la vue demandée et le cas échéant, formate un lien pour afficher cette vue (associée à une maj).
function Kom1_actionVueMaj($nomAction, $tabActionVue, $dataAjax = '') {
global $CONFIG, $TRANSAC;
//vérification autorisation
$ActVue = $tabActionVue['ActVue'];
$IdVue = $tabActionVue['IdVue'];
$EntVue = Beurk_entiteAction('Vue', $ActVue, $IdVue);
$messageAuto = Beurk_controleurAutorisation($CONFIG['Entite'][$EntVue]['Vue'][$ActVue]['Auto'],
array('ActMaj' => $ActVue,
'IdMaj' => $IdVue,
'IdRef' => (isset($tabActionVue['IdRef'])) ? $tabActionVue['IdRef'] : 0,
'preAuto' => true)); //inhibe les autos qui ont besoin d'un résultat (état jeton, controle somme...)
if ($messageAuto == '') {
if ($dataAjax == '') // l'attribut data-ajax est de la forme <DivVueChargement>/<DivVue>/<DivVueErr> (au moins 1 div obligatoirement)
$dataAjax = Beurk_nomDivAccueil($tabActionVue);
// stockage de la div d'accueil de l'action
$TRANSAC['Page']['DivActions'] .= Beurk_divAccueil($tabActionVue, 'PopUp', 'popup');
return '<a class="maj" rel="nofollow" href="' . Beurk_URL($tabActionVue) . '" data-ajax="' . $dataAjax . '">' . Beurk_traduit($nomAction) . '...</a>
';
} // else echo $ActVue . '-' . $IdVue . ' (' . $EntVue . ') : ' . ((is_array($messageAuto)) ? $messageAuto[0] : $messageAuto);
}
//fonction appelée par Kom1_listePages()
function Kom1_lienNoPage($NoPageAffichee, $NoPageCourante, $tabAdresse) {
$tabAdresse['NoPage'] = $NoPageAffichee;
return ($NoPageAffichee == $NoPageCourante) ? "-$NoPageCourante-\n"
: ('<a href="' . Beurk_URL($tabAdresse) . '" data-ajax="Page"> ' . $NoPageAffichee . " </a>\n");
}
//liste de pages en cas de dépassement du nombre d'Item par page
function Kom1_listePages($NbrItem, $NoPage, $tabAdresse) {
global $DIALOG;
$listePages = '';
if ($NbrItem > $DIALOG['Pagination']) { //seulement si plus d'une page
$listePages = '<div class="listePages">';
$nbpages = intval($NbrItem / $DIALOG['Pagination']) + (($NbrItem % $DIALOG['Pagination']) ? 1 : 0);
$noDebListe = ($NoPage > 3) ? ($NoPage - 2) : 1; //1ère page de la liste de 5 centrée sur noPage
$noFinListe = (($nbpages - $NoPage) > 2) ? ($NoPage + 2) : $nbpages; //dernière page de la liste de 5
if ($noDebListe > 1)
$listePages .= Kom1_lienNoPage(1, $NoPage, $tabAdresse);
if ($noDebListe > 2)
$listePages .= '<span class="suitepages"> ...</span>' . "\n";
for ($nop = $noDebListe; $nop <= $noFinListe; $nop++)
$listePages .= Kom1_lienNoPage($nop, $NoPage, $tabAdresse);
if ($noFinListe < ($nbpages - 1))
$listePages .= '<span class="suitepages"> ...</span>' . "\n";
if ($noFinListe < $nbpages)
$listePages .= Kom1_lienNoPage($nbpages, $NoPage, $tabAdresse);
$listePages .= '</div>';
}
return $listePages;
}
//affiche une entité standart
function Kom1_carteEntite($EntVue, $IdVue, $sufxCss, $titre, $createur, $infos, $donnees, $pages, $majs, $topAfficheDonnees, $reponses = '') {
if ($topAfficheDonnees == 0) { // $topAfficheDonnees : 0 = avec controle, masqué par défaut
$classeControle = ' expFerme';
$attribut = ' data-bascule="' . $EntVue . $IdVue . '"';
} elseif ($topAfficheDonnees == 1) { // $topAfficheDonnees : 1 = avec controle, affiché par défaut
$classeControle = ' expOuvert';
$attribut = ' data-bascule="' . $EntVue . $IdVue . '"';
} else { // $topAfficheDonnees : -1 = toujours affiché / pas de controle
$classeControle = '';
$attribut = '';
}
echo
'<div class="', $EntVue, '_l', $sufxCss, '">
<div class="', $EntVue, '_c1', $classeControle, '"', $attribut, '>
', $titre, '
</div>
<div class="', $EntVue, '_c2">
', $createur, '
</div>
<div class="', $EntVue, '_c3">
', $infos, '
</div>
</div>', (($donnees != '' || $pages != '' || $majs != '' || $reponses != '') ? '
<div class="' . $EntVue . '_l' . $sufxCss . '" id="' . $EntVue . $IdVue .'"' . (($topAfficheDonnees != 0) ? '' : ' style="display:none;"') . '>
<div class="' . $EntVue . '_c6">
' . $donnees . '
<div class="enbas">
' . $pages .
'<div class="listeMajs">
' . $majs .
'</div>
</div>
</div>' . (($reponses != '') ? ('
<div class="reponses">
' . $reponses . '
</div>') : '') . '
</div>' : ''), '
';
}
//affiche les liens entre 2 types d'entités
//cette fonction marche pour les liens de A vers B ou de B vers A (selon la valeur de $topAfficheRef).
//user = obj1, groupe = obj2
function Kom1_carteLienEntites($result, $sufxCss, $EntMaj, $EntRef, $topAfficheRef, $topAfficheDonnees = -1) {
global $CONFIG;
if (list($IdLien, $IdMaj, $Entite, $IdRef, $Reference, $TsCRE, $TsMAJ, $IdEtatLien) = db_FETCH_ROW($result)) {
//titre
if ($topAfficheRef) {
$tabAdresse = array('ActVue' => 'detail', 'IdVue' => $IdRef);
$messageAuto = Beurk_controleurAutorisation($CONFIG['Entite'][$EntRef]['Vue']['detail']['Auto'],
array('ActMaj' => 'detail', 'IdMaj' => $IdRef, 'IdEtatJetonClef' => ''));
} else {
$tabAdresse = array('ActVue' => 'detail', 'IdVue' => $IdMaj);
$messageAuto = Beurk_controleurAutorisation($CONFIG['Entite'][$EntMaj]['Vue']['detail']['Auto'],
array('ActMaj' => 'detail', 'IdMaj' => $IdMaj, 'IdEtatJetonClef' => ''));
}
if ($messageAuto == '')
$titre = '<a href="' . Beurk_URL($tabAdresse) . '" data-ajax="Page">' . (($topAfficheRef) ? $Reference : $Entite) . '</a>';
else
$titre = ($topAfficheRef) ? $Reference : $Entite;
//createur
$createur = Beurk_traduit('Créé il y a %s', 'Kom1', Kom1_formateTempsRelatif($TsCRE)) . '<br />'
. Beurk_traduit('Dernière MAJ il y a %s', 'Kom1', Kom1_formateTempsRelatif($TsMAJ));
//infos
$infos = Beurk_traduit('Lien %s', 'Kom1', Kom1_libelleEtatLien($IdEtatLien));
//majs sur le lien
$tabAdresse = array_merge(Beurk_clefVuePage(), array('IdMaj' => $IdLien));
$majs = '';
if ($IdEtatLien == Beurk_id('V'))
$majs .= Kom1_actionMaj('Suspendre le lien', $tabAdresse, 'suspend', 'Kom1');
else
$majs .= Kom1_actionMaj('Réactiver le lien', $tabAdresse, 'reactive', 'Kom1');
$majs .= Kom1_actionMaj('Supprimer le lien', $tabAdresse, 'supprime', 'Kom1');
if ($topAfficheRef)
Kom1_carteEntite($EntRef, $IdRef, $sufxCss, $titre, $createur, $infos, '', '', $majs, $topAfficheDonnees);
else
Kom1_carteEntite($EntMaj, $IdMaj, $sufxCss, $titre, $createur, $infos, '', '', $majs, $topAfficheDonnees);
return $IdEtatLien;
} else return false; //pas ou plus de lien
}
function Kom1_libelleEtatLien($IdEtat) {
$Etat = Beurk_terminal($IdEtat); // accepte une id ou un terminal d'état
if ($Etat == 'V')
return Beurk_traduit('actif', 'Kom1');
elseif ($Etat == 'F')
return Beurk_traduit('suspendu', 'Kom1');
else
return Beurk_traduit('Etat ?', 'Kom1');
}