mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-06-26 11:40:48 +03:00
comments
This commit is contained in:
parent
5df5eadeef
commit
7449a692d4
|
@ -35,7 +35,7 @@ before_script:
|
||||||
- sleep 5
|
- sleep 5
|
||||||
|
|
||||||
# download and launch Selenium
|
# download and launch Selenium
|
||||||
- wget -O /tmp/selenium-server-standalone.jar http://selenium.googlecode.com/files/selenium-server-standalone-2.25.0.jar
|
- wget -O /tmp/selenium-server-standalone.jar http://selenium.googlecode.com/files/selenium-server-standalone-2.31.0.jar
|
||||||
- java -jar /tmp/selenium-server-standalone.jar > /dev/null &
|
- java -jar /tmp/selenium-server-standalone.jar > /dev/null &
|
||||||
- sleep 5
|
- sleep 5
|
||||||
|
|
||||||
|
|
|
@ -946,98 +946,162 @@ class ActionBlog extends Action {
|
||||||
$this->Viewer_SetResponseAjax('json');
|
$this->Viewer_SetResponseAjax('json');
|
||||||
$this->SubmitComment();
|
$this->SubmitComment();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверка на соответсвие коментария требованиям безопасности
|
||||||
|
*
|
||||||
|
* @param ModuleTopic_EntityTopic $oTopic
|
||||||
|
* @param string $sText
|
||||||
|
*
|
||||||
|
* @return bool result
|
||||||
|
*/
|
||||||
|
protected function CheckComment($oTopic, $sText) {
|
||||||
|
|
||||||
|
$bOk = true;
|
||||||
|
/**
|
||||||
|
* Проверям авторизован ли пользователь
|
||||||
|
*/
|
||||||
|
if (!$this->User_IsAuthorization()) {
|
||||||
|
$this->Message_AddErrorSingle($this->Lang_Get('need_authorization'),$this->Lang_Get('error'));
|
||||||
|
$bOk = false;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Проверяем топик
|
||||||
|
*/
|
||||||
|
if (!$oTopic) {
|
||||||
|
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
||||||
|
$bOk = false;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Возможность постить коммент в топик в черновиках
|
||||||
|
*/
|
||||||
|
if (!$oTopic->getPublish() and $this->oUserCurrent->getId()!=$oTopic->getUserId() and !$this->oUserCurrent->isAdministrator()) {
|
||||||
|
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
||||||
|
$bOk = false;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Проверяем разрешено ли постить комменты
|
||||||
|
*/
|
||||||
|
if (!$this->ACL_CanPostComment($this->oUserCurrent) and !$this->oUserCurrent->isAdministrator()) {
|
||||||
|
$this->Message_AddErrorSingle($this->Lang_Get('topic_comment_acl'),$this->Lang_Get('error'));
|
||||||
|
$bOk = false;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Проверяем разрешено ли постить комменты по времени
|
||||||
|
*/
|
||||||
|
if (!$this->ACL_CanPostCommentTime($this->oUserCurrent) and !$this->oUserCurrent->isAdministrator()) {
|
||||||
|
$this->Message_AddErrorSingle($this->Lang_Get('topic_comment_limit'),$this->Lang_Get('error'));
|
||||||
|
$bOk = false;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Проверяем запрет на добавления коммента автором топика
|
||||||
|
*/
|
||||||
|
if ($oTopic->getForbidComment()) {
|
||||||
|
$this->Message_AddErrorSingle($this->Lang_Get('topic_comment_notallow'),$this->Lang_Get('error'));
|
||||||
|
$bOk = false;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Проверяем текст комментария
|
||||||
|
*/
|
||||||
|
if (!func_check($sText,'text',2,10000)) {
|
||||||
|
$this->Message_AddErrorSingle($this->Lang_Get('topic_comment_add_text_error'),$this->Lang_Get('error'));
|
||||||
|
$bOk = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->Hook_Run('comment_check', array('oTopic'=>$oTopic, 'sText'=>$sText, 'bOk'=>&$bOk));
|
||||||
|
|
||||||
|
return $bOk;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверка на соответсвие коментария родительскому коментарию
|
||||||
|
*
|
||||||
|
* @param ModuleTopic_EntityTopic $oTopic
|
||||||
|
* @param string $sText
|
||||||
|
* @param ModuleComment_EntityComment $oCommentParent
|
||||||
|
*
|
||||||
|
* @return bool result
|
||||||
|
*/
|
||||||
|
protected function CheckParentComment($oTopic, $sText, $oCommentParent) {
|
||||||
|
|
||||||
|
$sParentId = (int)getRequest('reply');
|
||||||
|
$bOk = true;
|
||||||
|
/**
|
||||||
|
* Проверям на какой коммент отвечаем
|
||||||
|
*/
|
||||||
|
if (!func_check($sParentId,'id')) {
|
||||||
|
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
||||||
|
$bOk = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($sParentId) {
|
||||||
|
/**
|
||||||
|
* Проверяем существует ли комментарий на который отвечаем
|
||||||
|
*/
|
||||||
|
if (!($oCommentParent)) {
|
||||||
|
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
||||||
|
$bOk = false;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Проверяем из одного топика ли новый коммент и тот на который отвечаем
|
||||||
|
*/
|
||||||
|
if ($oCommentParent->getTargetId()!=$oTopic->getId()) {
|
||||||
|
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
||||||
|
$bOk = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверка на дублирующий коммент
|
||||||
|
*/
|
||||||
|
if ($this->Comment_GetCommentUnique($oTopic->getId(),'topic',$this->oUserCurrent->getId(),$sParentId,md5($sText))) {
|
||||||
|
$this->Message_AddErrorSingle($this->Lang_Get('topic_comment_spam'),$this->Lang_Get('error'));
|
||||||
|
$bOk = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->Hook_Run('comment_check_parent', array('oTopic'=>$oTopic, 'sText'=>$sText, 'oCommentParent'=>$oCommentParent, 'bOk'=>&$bOk));
|
||||||
|
|
||||||
|
return $bOk;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Обработка добавление комментария к топику
|
* Обработка добавление комментария к топику
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
protected function SubmitComment() {
|
protected function SubmitComment() {
|
||||||
/**
|
|
||||||
* Проверям авторизован ли пользователь
|
$oTopic = $this->Topic_GetTopicById(getRequestStr('cmt_target_id'));
|
||||||
*/
|
$sText = $this->Text_Parser(getRequestStr('comment_text'));
|
||||||
if (!$this->User_IsAuthorization()) {
|
$sParentId = (int)getRequest('reply');
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('need_authorization'),$this->Lang_Get('error'));
|
$oCommentParent = null;
|
||||||
return;
|
|
||||||
}
|
if (!$sParentId) {
|
||||||
/**
|
/**
|
||||||
* Проверяем топик
|
* Корневой комментарий
|
||||||
*/
|
*/
|
||||||
if (!($oTopic=$this->Topic_GetTopicById(getRequestStr('cmt_target_id')))) {
|
$sParentId=null;
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
}
|
||||||
return;
|
else {
|
||||||
}
|
/**
|
||||||
/**
|
* Родительский комментарий
|
||||||
* Возможность постить коммент в топик в черновиках
|
*/
|
||||||
*/
|
$oCommentParent=$this->Comment_GetCommentById($sParentId);
|
||||||
if (!$oTopic->getPublish() and $this->oUserCurrent->getId()!=$oTopic->getUserId() and !$this->oUserCurrent->isAdministrator()) {
|
}
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
|
||||||
return;
|
/**
|
||||||
}
|
* Проверка на соответсвие коментария требованиям безопасности
|
||||||
/**
|
*/
|
||||||
* Проверяем разрешено ли постить комменты
|
if (!$this->CheckComment($oTopic, $sText)) {
|
||||||
*/
|
return;
|
||||||
if (!$this->ACL_CanPostComment($this->oUserCurrent) and !$this->oUserCurrent->isAdministrator()) {
|
}
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('topic_comment_acl'),$this->Lang_Get('error'));
|
|
||||||
return;
|
/**
|
||||||
}
|
* Проверка на соответсвие коментария родительскому коментарию
|
||||||
/**
|
*/
|
||||||
* Проверяем разрешено ли постить комменты по времени
|
if (!$this->CheckParentComment($oTopic, $sText, $oCommentParent)) {
|
||||||
*/
|
return;
|
||||||
if (!$this->ACL_CanPostCommentTime($this->oUserCurrent) and !$this->oUserCurrent->isAdministrator()) {
|
}
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('topic_comment_limit'),$this->Lang_Get('error'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Проверяем запрет на добавления коммента автором топика
|
|
||||||
*/
|
|
||||||
if ($oTopic->getForbidComment()) {
|
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('topic_comment_notallow'),$this->Lang_Get('error'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Проверяем текст комментария
|
|
||||||
*/
|
|
||||||
$sText=$this->Text_Parser(getRequestStr('comment_text'));
|
|
||||||
if (!func_check($sText,'text',2,10000)) {
|
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('topic_comment_add_text_error'),$this->Lang_Get('error'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Проверям на какой коммент отвечаем
|
|
||||||
*/
|
|
||||||
$sParentId=(int)getRequest('reply');
|
|
||||||
if (!func_check($sParentId,'id')) {
|
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$oCommentParent=null;
|
|
||||||
if ($sParentId!=0) {
|
|
||||||
/**
|
|
||||||
* Проверяем существует ли комментарий на который отвечаем
|
|
||||||
*/
|
|
||||||
if (!($oCommentParent=$this->Comment_GetCommentById($sParentId))) {
|
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Проверяем из одного топика ли новый коммент и тот на который отвечаем
|
|
||||||
*/
|
|
||||||
if ($oCommentParent->getTargetId()!=$oTopic->getId()) {
|
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('system_error'),$this->Lang_Get('error'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/**
|
|
||||||
* Корневой комментарий
|
|
||||||
*/
|
|
||||||
$sParentId=null;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Проверка на дублирующий коммент
|
|
||||||
*/
|
|
||||||
if ($this->Comment_GetCommentUnique($oTopic->getId(),'topic',$this->oUserCurrent->getId(),$sParentId,md5($sText))) {
|
|
||||||
$this->Message_AddErrorSingle($this->Lang_Get('topic_comment_spam'),$this->Lang_Get('error'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* Создаём коммент
|
* Создаём коммент
|
||||||
*/
|
*/
|
||||||
|
|
46
tests/behat/features/comment.feature
Normal file
46
tests/behat/features/comment.feature
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
Feature: Test Base comment functionality (!!!SELENIUM NEEDED)
|
||||||
|
Test base functionality of Comments
|
||||||
|
|
||||||
|
@mink:selenium2
|
||||||
|
Scenario: Adding the comment
|
||||||
|
|
||||||
|
Given I am on "/login"
|
||||||
|
Then I want to login as "admin"
|
||||||
|
|
||||||
|
Given I am on homepage
|
||||||
|
Then I follow "Sony MicroVault Mach USB 3.0 flash drive"
|
||||||
|
|
||||||
|
Then I wait "1000"
|
||||||
|
|
||||||
|
Then I follow "Add comment"
|
||||||
|
And I fill in "test comment" for "comment_text"
|
||||||
|
And I press "Preview"
|
||||||
|
Then I wait "1000"
|
||||||
|
|
||||||
|
Then I should see in element by css "content .comment-preview" values:
|
||||||
|
| value |
|
||||||
|
| test comment |
|
||||||
|
|
||||||
|
And I press "Add"
|
||||||
|
Then I wait "1000"
|
||||||
|
|
||||||
|
Then I should see in element by css "content .comment-content" values:
|
||||||
|
| value |
|
||||||
|
| test comment |
|
||||||
|
|
||||||
|
Then I should see in element by css "content .comment-info" values:
|
||||||
|
| value |
|
||||||
|
| /profile/admin/">admin</a> |
|
||||||
|
| Reply |
|
||||||
|
| Delete |
|
||||||
|
|
||||||
|
#create subcomment
|
||||||
|
And I follow "Reply"
|
||||||
|
Then I wait "1000"
|
||||||
|
And I fill in "test subcomment" for "comment_text"
|
||||||
|
And I press "Add"
|
||||||
|
Then I wait "1000"
|
||||||
|
|
||||||
|
Then I should see in element by css "comment_wrapper_id_2" values:
|
||||||
|
| value |
|
||||||
|
| test subcomment |
|
Loading…
Reference in a new issue