PageRenderTime 108ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/core/admin/comment_new.php

https://bitbucket.org/bontiv/insomnia
PHP | 156 lines | 112 code | 16 blank | 28 comment | 17 complexity | f0f7b790bd3e73e13e1ad104d39d0f5c MD5 | raw file
Possible License(s): Apache-2.0, LGPL-3.0, LGPL-2.1, GPL-3.0, BSD-3-Clause, GPL-2.0
  1. <?php
  2. /**
  3. * Création d'un commentaire
  4. *
  5. * @package PLX
  6. * @author Florent MONTHEL
  7. **/
  8. include(dirname(__FILE__).'/prepend.php');
  9. # Control du token du formulaire
  10. plxToken::validateFormToken($_POST);
  11. # Hook Plugins
  12. eval($plxAdmin->plxPlugins->callHook('AdminCommentNewPrepend'));
  13. # Control de l'accès à la page en fonction du profil de l'utilisateur connecté
  14. $plxAdmin->checkProfil(PROFIL_ADMIN, PROFIL_MANAGER, PROFIL_MODERATOR);
  15. # validation de l'id de l'article si passé en parametre
  16. if(isset($_GET['a']) AND !preg_match('/^_?[0-9]{4}$/',$_GET['a'])) {
  17. plxMsg::Error(L_ERR_UNKNOWN_ARTICLE); # Article inexistant
  18. header('Location: index.php');
  19. exit;
  20. }
  21. # On va checker le mode (répondre ou écrire)
  22. if(!empty($_GET['c'])) { # Mode "answer"
  23. # On check que le commentaire existe et est "online"
  24. if(!$plxAdmin->getCommentaires('/^'.plxUtils::nullbyteRemove($_GET['c']).'.xml$/',0,1)) { # Commentaire inexistant
  25. # On redirige
  26. plxMsg::Error(L_ERR_ANSWER_UNKNOWN_COMMENT);
  27. header('Location: comments.php'.(!empty($_GET['a'])?'?a='.$_GET['a']:''));
  28. exit;
  29. }
  30. # Commentaire offline
  31. if(preg_match('/^_/',$_GET['c'])) {
  32. # On redirige
  33. plxMsg::Error(L_ERR_ANSWER_OFFLINE_COMMENT);
  34. header('Location: comments.php'.(!empty($_GET['a'])?'?a='.$_GET['a']:''));
  35. exit;
  36. }
  37. # On va rechercher notre article
  38. if(($aFile = $plxAdmin->plxGlob_arts->query('/^'.$plxAdmin->plxRecord_coms->f('article').'.(.+).xml$/','','sort',0,1)) == false) { # Article inexistant
  39. plxMsg::Error(L_ERR_COMMENT_UNKNOWN_ARTICLE);
  40. header('Location: index.php');
  41. exit;
  42. }
  43. # Variables de traitement
  44. $artId = $plxAdmin->plxRecord_coms->f('article');
  45. if(!empty($_GET['a'])) $get = 'c='.$_GET['c'].'&amp;a='.$_GET['a'];
  46. else $get = 'c='.$_GET['c'];
  47. $aArt = $plxAdmin->parseArticle(PLX_ROOT.$plxAdmin->aConf['racine_articles'].$aFile['0']);
  48. # Variable du formulaire
  49. $content = '<a href="#c'.$plxAdmin->plxRecord_coms->f('numero').'">@'.$plxAdmin->plxRecord_coms->f('author')."</a> :\n";
  50. $article = '<a href="article.php?a='.$aArt['numero'].'" title="'.L_COMMENT_ARTICLE_LINKED_TITLE.'">';
  51. $article .= plxUtils::strCheck($aArt['title']);
  52. $article .= '</a>';
  53. # Ok, on récupère les commentaires de l'article
  54. $plxAdmin->getCommentaires('/^'.str_replace('_','',$artId).'.(.*).xml$/','rsort');
  55. } elseif(!empty($_GET['a'])) { # Mode "new"
  56. # On check l'article si il existe bien
  57. if(($aFile = $plxAdmin->plxGlob_arts->query('/^'.$_GET['a'].'.(.+).xml$/','','sort',0,1)) == false) {
  58. plxMsg::Error(L_ERR_COMMENT_UNEXISTENT_ARTICLE);
  59. header('Location: index.php');
  60. exit;
  61. }
  62. # Variables de traitement
  63. $artId = $_GET['a'];
  64. $get = 'a='.$_GET['a'];
  65. $aArt = $plxAdmin->parseArticle(PLX_ROOT.$plxAdmin->aConf['racine_articles'].$aFile['0']);
  66. # Variable du formulaire
  67. $content = '';
  68. $article = '<a href="article.php?a='.$aArt['numero'].'" title="'.L_COMMENT_ARTICLE_LINKED_TITLE.'">';
  69. $article .= plxUtils::strCheck($aArt['title']);
  70. $article .= '</a>';
  71. # Ok, on récupère les commentaires de l'article
  72. $plxAdmin->getCommentaires('/^'.str_replace('_','',$artId).'.(.*).xml$/','rsort');
  73. } else { # Mode inconnu
  74. header('Location: .index.php');
  75. exit;
  76. }
  77. # On a validé le formulaire
  78. if(!empty($_POST) AND !empty($_POST['content'])) {
  79. # Création du commentaire
  80. if(!$plxAdmin->newCommentaire(str_replace('_','',$artId),$_POST['content'])) { # Erreur
  81. plxMsg::Error(L_ERR_CREATING_COMMENT);
  82. } else { # Ok
  83. plxMsg::Info(L_CREATING_COMMENT_SUCCESSFUL);
  84. }
  85. header('Location: comment_new.php?a='.$artId);
  86. exit;
  87. }
  88. # On inclut le header
  89. include(dirname(__FILE__).'/top.php');
  90. ?>
  91. <?php if(!empty($_GET['a'])) : ?>
  92. <p class="back"><a href="comments.php?a=<?php echo $_GET['a']; ?>"><?php echo L_BACK_TO_ARTICLE_COMMENTS ?></a></p>
  93. <?php else : ?>
  94. <p class="back"><a href="comments.php"><?php echo L_BACK_TO_COMMENTS ?></a></p>
  95. <?php endif; ?>
  96. <h2><?php echo L_CREATE_NEW_COMMENT ?></h2>
  97. <h3><?php echo L_COMMENTS_ARTICLE_SCOPE ?> &laquo;<?php echo plxUtils::strCheck($aArt['title']); ?>&raquo;</h3>
  98. <?php eval($plxAdmin->plxPlugins->callHook('AdminCommentNewTop')) # Hook Plugins ?>
  99. <ul class="comment_infos">
  100. <li><?php echo L_COMMENT_AUTHOR_FIELD ?> : <strong><?php echo plxUtils::strCheck($plxAdmin->aUsers[$_SESSION['user']]['name']); ?></strong></li>
  101. <li><?php echo L_COMMENT_TYPE_FIELD ?> : <strong>admin</strong></li>
  102. <li><?php echo L_COMMENT_SITE_FIELD ?> : <?php echo '<a href="'.$plxAdmin->racine.'">'.$plxAdmin->racine.'</a>'; ?></li>
  103. <li><?php echo L_COMMENT_LINKED_ARTICLE_FIELD ?> : <?php echo $article; ?></li>
  104. </ul>
  105. <form action="comment_new.php?<?php echo plxUtils::strCheck($get) ?>" method="post" id="form_comment">
  106. <fieldset>
  107. <?php echo plxToken::getTokenPostMethod() ?>
  108. <p id="p_content"><label for="id_content"><?php echo L_USER_INFOS ?>&nbsp;:</label></p>
  109. <?php plxUtils::printArea('content',plxUtils::strCheck($content), 60, 7); ?>
  110. <?php eval($plxAdmin->plxPlugins->callHook('AdminCommentNew')) # Hook Plugins ?>
  111. <p class="center">
  112. <input class="button new" type="submit" name="create" value="<?php echo L_COMMENT_SAVE_BUTTON ?>"/>
  113. </p>
  114. </fieldset>
  115. </form>
  116. <?php if(isset($plxAdmin->plxRecord_coms)) : # On a des commentaires ?>
  117. <h2><?php echo L_ARTICLE_COMMENTS_LIST ?></h2>
  118. <div id="comments">
  119. <?php while($plxAdmin->plxRecord_coms->loop()) : # On boucle ?>
  120. <?php $comId = $plxAdmin->plxRecord_coms->f('article').'.'.$plxAdmin->plxRecord_coms->f('numero'); ?>
  121. <div class="comment<?php echo ((isset($_GET['c']) AND $_GET['c']==$comId?' current':'')) ?>" id="c<?php echo $plxAdmin->plxRecord_coms->f('numero'); ?>">
  122. <div class="info_comment">
  123. <p>Par <strong><?php echo $plxAdmin->plxRecord_coms->f('author'); ?></strong>
  124. le <?php echo plxDate::dateIsoToHum($plxAdmin->plxRecord_coms->f('date'), '#day #num_day #month #num_year(4) &agrave; #hour:#minute'); ?>
  125. - <a href="comment.php<?php echo (!empty($_GET['a']))?'?c='.$comId.'&amp;a='.$_GET['a']:'?c='.$comId; ?>" title="<?php echo L_COMMENT_EDIT_TITLE ?>"><?php echo L_COMMENT_EDIT ?></a>
  126. - <a href="javascript:answerCom('content','<?php echo $plxAdmin->plxRecord_coms->f('numero'); ?>','<?php echo plxUtils::strCheck($plxAdmin->plxRecord_coms->f('author')) ?>');" title="<?php echo L_COMMENT_ANSWER_TITLE ?>"><?php echo L_COMMENT_ANSWER ?></a>
  127. </p>
  128. </div>
  129. <blockquote class="type-<?php echo $plxAdmin->plxRecord_coms->f('type') ?>"><p><?php echo nl2br($plxAdmin->plxRecord_coms->f('content')); ?></p></blockquote>
  130. <?php eval($plxAdmin->plxPlugins->callHook('AdminCommentNewList')) # Hook Plugins ?>
  131. </div>
  132. <?php endwhile; ?>
  133. </div>
  134. <?php endif; ?>
  135. <?php
  136. # Hook Plugins
  137. eval($plxAdmin->plxPlugins->callHook('AdminCommentNewFoot'));
  138. # On inclut le footer
  139. include(dirname(__FILE__).'/foot.php');
  140. ?>