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