A lot of things.
This commit is contained in:
@@ -2,12 +2,23 @@
|
||||
|
||||
namespace RomhackPlaza\Master\Pub\Controller;
|
||||
|
||||
use PhpParser\Node\Param;
|
||||
use RomhackPlaza\Master\Service\Club\CreatorService;
|
||||
use RomhackPlaza\Master\Service\Club\DeleterService;
|
||||
use RomhackPlaza\Master\Service\Club\EditorService;
|
||||
use RomhackPlaza\Master\Service\Club\ModeratorService;
|
||||
use XF\Mvc\ParameterBag;
|
||||
use XF\Pub\Controller\AbstractController;
|
||||
use XF\Util\File;
|
||||
|
||||
class Club extends AbstractController
|
||||
{
|
||||
|
||||
public function actionIndex(){
|
||||
$clubsForum = \XF::options()->rhpz_club_node_id;
|
||||
return $this->redirect('categories/.' . $clubsForum );
|
||||
}
|
||||
|
||||
public function actionSubmit(ParameterBag $params)
|
||||
{
|
||||
$this->assertRegistrationRequired();
|
||||
@@ -15,18 +26,157 @@ class Club extends AbstractController
|
||||
return $this->view('RomhackPlaza\Master:Club\Request', 'club_request_form');
|
||||
}
|
||||
|
||||
public function actionEdit(ParameterBag $params)
|
||||
{
|
||||
$this->assertRegistrationRequired();
|
||||
|
||||
if( !$params->club_id )
|
||||
$this->notFound("Club not found");
|
||||
|
||||
/** @var \RomhackPlaza\Master\Entity\Club $club */
|
||||
$club = $this->assertRecordExists( 'RomhackPlaza\Master:Club', $params->club_id );
|
||||
if( $club->user_id !== \XF::visitor()->user_id && !\XF::visitor()->hasAdminPermission('node') ){
|
||||
$this->noPermission();
|
||||
}
|
||||
|
||||
$mods = [];
|
||||
$modsCount = 0;
|
||||
|
||||
if( $club->node_id ){
|
||||
$mods = $this->finder('XF:ModeratorContent')
|
||||
->where('content_type', 'node')
|
||||
->where('content_id', $club->node_id)
|
||||
->with('User')
|
||||
->fetch();
|
||||
foreach( $mods as $m ){
|
||||
if( $m->user_id !== $club->user_id ){
|
||||
$modsCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->view('RomhackPlaza\Master:Club\Edit', 'club_edit_form', [ 'club' => $club, 'moderators' => $mods, 'subModCount' => $modsCount ] );
|
||||
}
|
||||
|
||||
public function actionSave(ParameterBag $params)
|
||||
{
|
||||
$this->assertRegistrationRequired();
|
||||
$this->assertPostOnly();
|
||||
|
||||
$entity = $this->em()->create('RomhackPlaza\Master:ClubRequest');
|
||||
$entity->user_id = \XF::visitor()->user_id;
|
||||
$entity->title = $this->filter('title','str');
|
||||
$entity->description = $this->filter('description','str');
|
||||
$entity->request_state = 'moderated';
|
||||
$entity->save();
|
||||
$isEdit = (bool) $params->club_id;
|
||||
if( $isEdit ){
|
||||
$club = $this->assertRecordExists('RomhackPlaza\Master:Club', $params->club_id );
|
||||
if( $club->user_id !== \XF::visitor()->user_id && !\XF::visitor()->hasAdminPermission('node') ){
|
||||
$this->noPermission();
|
||||
}
|
||||
|
||||
return $this->redirect($this->buildLink('clubs'), "Your club creation request has been submitted and is awaiting approval by a staff member.");
|
||||
/** @var EditorService $editor */
|
||||
$editor = $this->service('RomhackPlaza\Master:Club\Editor', $club);
|
||||
$editor->setContent($this->filter('title','str'), $this->filter('description','str'));
|
||||
$editor->setBannerUpload($this->request->getFile('upload_banner', false, false) );
|
||||
|
||||
if( !$editor->validate($errors) ){
|
||||
return $this->error($errors);
|
||||
}
|
||||
|
||||
$editor->save();
|
||||
|
||||
return $this->redirect( $this->buildLink('clubs'), "Changes saved successfully" );
|
||||
|
||||
} else {
|
||||
|
||||
/** @var CreatorService $creator */
|
||||
$creator = $this->service('RomhackPlaza\Master:Club\Creator', \XF::visitor());
|
||||
$creator->setContent($this->filter('title','str'), $this->filter('description','str'));
|
||||
$creator->setBannerUpload($this->request->getFile('upload_banner', false, false));
|
||||
|
||||
if( !$creator->validate($errors) ){
|
||||
return $this->error($errors);
|
||||
}
|
||||
$creator->save();
|
||||
return $this->redirect( $this->buildLink('clubs'), "Your club creation request has been submitted and is awaiting approval by a staff member." );
|
||||
}
|
||||
}
|
||||
|
||||
public function actionDelete(ParameterBag $params)
|
||||
{
|
||||
$this->assertRegistrationRequired();
|
||||
|
||||
/** @var \RomhackPlaza\Master\Entity\Club $club */
|
||||
$club = $this->assertRecordExists('RomhackPlaza\Master:Club', $params->club_id);
|
||||
if( $club->user_id !== \XF::visitor()->user_id && !\XF::visitor()->hasAdminPermission('node') ){
|
||||
$this->noPermission();
|
||||
}
|
||||
|
||||
if( $this->isPost() ){
|
||||
/** @var DeleterService $deleter */
|
||||
$deleter = $this->service('RomhackPlaza\Master:Club\Deleter', $club);
|
||||
$deleter->delete();
|
||||
|
||||
return $this->redirect( $this->buildLink('clubs'), "Club deleted successfully." );
|
||||
}
|
||||
|
||||
return $this->view('RomhackPlaza\Master:Club\Delete', 'club_delete_confirm', [ 'club' => $club ] );
|
||||
}
|
||||
|
||||
public function actionAddModerator(ParameterBag $params)
|
||||
{
|
||||
$this->assertRegistrationRequired();
|
||||
$this->assertPostOnly();
|
||||
|
||||
/** @var \RomhackPlaza\Master\Entity\Club $club */
|
||||
$club = $this->assertRecordExists('RomhackPlaza\Master:Club', $params->club_id);
|
||||
if( $club->user_id !== \XF::visitor()->user_id && !\XF::visitor()->hasAdminPermission('node') ){
|
||||
return $this->noPermission();
|
||||
}
|
||||
|
||||
$username = $this->filter('username','str');
|
||||
$user = $this->em()->findOne('XF:User', ['username' => $username]);
|
||||
|
||||
if( !$user ){
|
||||
return $this->error("This user doesn't exist");
|
||||
}
|
||||
|
||||
/** @var ModeratorService $modManage */
|
||||
$modManage = \XF::app()->service('RomhackPlaza\Master:Club\Moderator', $club, $user );
|
||||
$error = "";
|
||||
$modManage->addModerator( $error );
|
||||
|
||||
if( $error && $error !== "" ){
|
||||
return $this->error($error);
|
||||
}
|
||||
|
||||
return $this->redirect( $this->buildLink('clubs/edit', $club), "Moderator added successfully." );
|
||||
}
|
||||
|
||||
public function actionRemoveModerator(ParameterBag $params)
|
||||
{
|
||||
$this->assertRegistrationRequired();
|
||||
$this->assertPostOnly();
|
||||
|
||||
/** @var \RomhackPlaza\Master\Entity\Club $club */
|
||||
$club = $this->assertRecordExists('RomhackPlaza\Master:Club', $params->club_id);
|
||||
if( $club->user_id !== \XF::visitor()->user_id && !\XF::visitor()->hasAdminPermission('node') ){
|
||||
$this->noPermission();
|
||||
}
|
||||
|
||||
$userId = $this->filter('user_id','uint');
|
||||
$user = $this->em()->findOne('XF:User', ['user_id' => $userId]);
|
||||
|
||||
if( !$user ){
|
||||
$this->error("This user doesn't exist");
|
||||
}
|
||||
|
||||
/** @var ModeratorService $modManage */
|
||||
$modManage = \XF::app()->service('RomhackPlaza\Master:Club\Moderator', $club, $user );
|
||||
$error = "";
|
||||
$modManage->deleteModerator( $error );
|
||||
|
||||
if( $error && $error !== "" ){
|
||||
return $this->error($error);
|
||||
}
|
||||
|
||||
return $this->redirect( $this->buildLink('clubs/edit', $club), "Moderator deleted successfully." );
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user