1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
<?php
class CommentsController extends ModulesController {
public $helpers = ['BeTree', 'BeToolbar'];
public $components = ['BeTree', 'BeLangText', 'BeSecurity'];
public $uses = ['BannedIp', 'BEObject', 'Comment'];
protected $moduleName = 'comments';
public function index($id = null, $order = '', $dir = true, $page = 1, $dim = 20) {
$filter = [
'object_type_id' => Configure::read('objectTypes.comment.id'),
'ref_object_details' => 'Comment',
];
$filter['Comment.email'] = !empty($this->passedArgs['email']) ? $this->passedArgs['email'] : '';
if (!empty($this->passedArgs['ip_created'])) {
$filter['ip_created'] = $this->passedArgs['ip_created'];
}
$this->paginatedList($id, $filter, $order, $dir, $page, $dim);
}
public function view($id = null) {
if (empty($id)) {
return;
}
$type = $this->BEObject->findObjectTypeId($id);
$types = $this->getModuleObjectTypes('comments');
if (in_array($type, $types)) {
$modelClass = $this->loadModelByObjectTypeId($type);
$this->viewObject($modelClass, $id);
}
if ($this->BannedIp->isBanned($this->viewVars['object']['ip_created'])) {
$this->set('banned', true);
}
}
public function save() {
$this->checkWriteModulePermission();
if (empty($this->data)) {
throw new BeditaException( __('No data', true));
}
$this->Transaction->begin() ;
if (!$this->Comment->save($this->data)) {
throw new BeditaException(__('Error saving comment', true), $this->Comment->validationErrors);
}
$this->Transaction->commit() ;
$this->userInfoMessage(__('Comment saved', true).' - '.$this->data['title']);
$this->eventInfo('comment ['. $this->data['title'].'] saved');
}
public function banIp() {
$this->checkWriteModulePermission();
if (empty($this->data)) {
throw new BeditaException(__('No data', true));
}
$ip = $this->data['ip_to_ban'];
$this->BannedIp->ban($ip, $this->data['ban_status']);
if ($this->data['ban_status'] === 'ban') {
$this->userInfoMessage(__('IP banned', true).' - '.$ip);
$this->eventInfo('IP ['. $ip.'] banned');
} else {
$this->userInfoMessage(__('IP accepted', true).' - '.$ip);
$this->eventInfo('IP ['. $ip.'] accepted');
}
}
public function delete() {
$this->checkWriteModulePermission();
$objectsListDeleted = $this->deleteObjects('Comment');
$this->userInfoMessage(__('Comments deleted', true) . ' - ' . $objectsListDeleted);
$this->eventInfo("Comments $objectsListDeleted deleted");
}
public function deleteSelected() {
$this->checkWriteModulePermission();
$objectsListDeleted = $this->deleteObjects('Comment');
$this->userInfoMessage(__('Comments deleted', true) . ' - ' . $objectsListDeleted);
$this->eventInfo("Comments $objectsListDeleted deleted");
}
protected function forward($action, $result) {
$moduleRedirect = [
'banIp' => [
'OK' => "/comments/view/{$this->data['id']}",
'ERROR' => '/comments/view'
]
];
return $this->moduleForward($action, $result, $moduleRedirect);
}
}