orkui/controller/controller.Player.php
<?php
class Controller_Player extends Controller {
public function __construct($call=null, $id=null) {
parent::__construct($call, $id);
$this->load_model('Park');
$this->load_model('Pronoun');
$this->load_model('Award');
$this->load_model('Reports');
$params = explode('/',$id);
$id = $params[0];
$this->data['Player'] = $this->Player->fetch_player($id);
$park_info = $this->Park->get_park_info($this->data['Player']['ParkId']);
$this->session->park_name = $park_info['ParkInfo']['ParkName'];
$this->session->park_id = $park_info['ParkInfo']['ParkId'];
$this->session->kingdom_id = $park_info['KingdomInfo']['KingdomId'];
$this->session->kingdom_name = $park_info['KingdomInfo']['KingdomName'];
$this->data['menu']['admin'] = array( 'url' => UIR.'Admin/player/'.$id, 'display' => 'Admin Panel <i class="fas fa-cog"></i>', 'no-crumb' => 'no-crumb' );
$this->data['menulist']['admin'] = array(
array( 'url' => UIR.'Admin/player/'.$id, 'display' => 'Player' ),
array( 'url' => UIR.'Admin/park/'.$this->session->park_id, 'display' => 'Park' ),
array( 'url' => UIR.'Admin/kingdom/'.$this->session->kingdom_id, 'display' => 'Kingdom' )
);
if (valid_id($this->session->kingdom_id)) {
$this->data['menu']['kingdom'] = array( 'url' => UIR.'Kingdom/index/'.$this->session->kingdom_id, 'display' => $this->session->kingdom_name );
$this->data['menu']['park'] = array( 'url' => UIR.'Park/index/'.$this->session->park_id, 'display' => $this->session->park_name );
} else {
unset($this->data['menu']['kingdom']);
unset($this->data['menu']['park']);
}
$this->data['menu']['player'] = array( 'url' => UIR."Player/$call/$id", 'display' => $this->data['Player']['Persona'] );
}
public function index($id = null) {
$this->load_model('Unit');
$params = explode('/',$id);
$id = $params[0];
if (count($params) > 1)
$action = $params[1];
if (count($params) > 2)
$roastbeef = $params[2];
if (strlen($action) > 0) {
$this->request->save('Player_index', true);
$r = array('Status'=>0);
if (!isset($this->session->user_id)) {
header( 'Location: '.UIR."Login/login/Player/index/$id" );
} else {
switch ($action) {
case 'updateclasses':
$class_update = array();
if (is_array($this->request->Reconciled)) {
foreach ($this->request->Reconciled as $class_id => $qty) {
$class_update[] = array( 'ClassId' => $class_id, 'Quantity' => $qty );
}
$this->Player->update_class_reconciliation(array( 'Token' => $this->session->token, 'MundaneId' => $id, 'Reconcile' => $class_update ));
}
break;
case 'update':
if ($_FILES['Heraldry']['size'] > 0 && Common::supported_mime_types($_FILES['Heraldry']['type'])) {
if (move_uploaded_file($_FILES['Heraldry']['tmp_name'], DIR_TMP . sprintf("h_%06d", $id))) {
$h_im = file_get_contents(DIR_TMP . sprintf("h_%06d", $id));
$h_imdata = base64_encode($h_im);
}
}
if ($_FILES['Waiver']['size'] > 0 && Common::supported_mime_types($_FILES['Waiver']['type'])) {
if (move_uploaded_file($_FILES['Waiver']['tmp_name'], DIR_TMP . sprintf("w_%06d", $id))) {
$w_im = file_get_contents(DIR_TMP . sprintf("w_%06d", $id));
$w_imdata = base64_encode($w_im);
}
}
$r = $this->Player->update_player(array(
'MundaneId' => $id,
'GiveName' => $this->request->Player_index->GivenName,
'Surname' => $this->request->Player_index->Surname,
'Persona' => $this->request->Player_index->Persona,
'PronounId' => $this->request->Player_index->PronounId,
'UserName' => $this->request->Player_index->UserName,
'Password' => $this->request->Player_index->Password==$this->request->Player_index->PasswordAgain?$this->request->Player_index->Password:null,
'Email' => $this->request->Player_index->Email,
'Restricted' => $this->request->Player_index->Restricted=='Restricted'?1:0,
'Active' => $this->request->Player_index->Active=='Active'?1:0,
'HasImage' => strlen($pi_imdata),
'Image' => strlen($pi_imdata)>0?$pi_imdata:null,
'ImageMimeType' => strlen($pi_imdata)>0?$_FILES['PlayerImage']['type']:'',
'Heraldry' => strlen($h_imdata)>0?$h_imdata:null,
'HeraldryMimeType' => strlen($h_imdata)>0?$_FILES['Heraldry']['type']:'',
'Waivered' => strlen($w_imdata),
'Waiver' => strlen($w_imdata)>0?$w_imdata:null,
'WaiverMimeType' => strlen($w_imdata)>0?$_FILES['Waiver']['type']:'',
'Token' => $this->session->token
));
if ($this->request->Player_index->Password!=$this->request->Player_index->PasswordAgain)
$this->data['Error'] = 'Passwords do not match.';
break;
case 'addaward':
$r = $this->Player->add_player_award(array(
'Token' => $this->session->token,
'RecipientId' => $id,
'AwardId' => $this->request->Player_index->AwardId,
'Rank' => $this->request->Player_index->Rank,
'Date' => $this->request->Player_index->Date,
'GivenById' => $this->request->Player_index->MundaneId,
'Note' => $this->request->Player_index->Note,
'ParkId' => valid_id($this->request->Player_index->ParkId)?$this->request->Player_index->ParkId:0,
'KingdomId' => valid_id($this->request->Player_index->KingdomId)?$this->request->Player_index->KingdomId:0,
'EventId' => valid_id($this->request->Player_index->EventId)?$this->request->Player_index->EventId:0
));
break;
case 'deleteaward':
$r = $this->Player->delete_player_award(array(
'Token' => $this->session->token,
'AwardsId' => $roastbeef
));
break;
case 'updateaward':
$r = $this->Player->update_player_award(array(
'Token' => $this->session->token,
'AwardsId' => $roastbeef,
'RecipientId' => $id,
'AwardId' => $this->request->Player_index->AwardId,
'Rank' => $this->request->Player_index->Rank,
'Date' => $this->request->Player_index->Date,
'GivenById' => $this->request->Player_index->MundaneId,
'Note' => $this->request->Player_index->Note,
'ParkId' => valid_id($this->request->Player_index->ParkId)?$this->request->Player_index->ParkId:0,
'KingdomId' => valid_id($this->request->Player_index->KingdomId)?$this->request->Player_index->KingdomId:0,
'EventId' => valid_id($this->request->Player_index->EventId)?$this->request->Player_index->EventId:0
));
break;
case 'addrecommendation':
$r = $this->Player->add_player_recommendation(array(
'Token' => $this->session->token,
'MundaneId' => $id,
'KingdomAwardId' => $this->request->Player_index->KingdomAwardId,
'Rank' => $this->request->Player_index->Rank,
'GivenById' => $this->request->Player_index->MundaneId,
'Reason' => $this->request->Player_index->Reason
));
break;
case 'deleterecommendation':
$r = $this->Player->delete_player_recommendation(array(
'Token' => $this->session->token,
'RecommendationsId' => $roastbeef,
'RequestedBy' => $this->session->user_id
));
break;
}
if ($r['Status'] == 0) {
$this->data['Message'] = 'Player has been updated.';
$this->request->clear('Player_index');
} else if($r['Status'] == 5) {
header( 'Location: '.UIR."Login/login/Player/index/$id" );
} else {
$this->data['Error'] = $r['Error'].':<p>'.$r['Detail'];
}
}
}
if ($this->request->exists('Player_index')) {
$this->data['Player_index'] = $this->request->Player_index->Request;
}
$this->data['LoggedIn'] = isset($this->session->user_id);
$this->data['KingdomId'] = $this->session->kingdom_id;
$this->data['AwardOptions'] = $this->Award->fetch_award_option_list($this->session->kingdom_id, 'Awards');
$this->data['OfficerOptions'] = $this->Award->fetch_award_option_list($this->session->kingdom_id, 'Officers');
$this->data['Player'] = $this->Player->fetch_player($id);
$this->data['PronounOptions'] = $this->Pronoun->fetch_pronoun_option_list($this->data['Player']['PronounId']);
$this->data['Details'] = $this->Player->fetch_player_details($id);
$this->data['Notes'] = $this->Player->get_notes($id);
$this->data['Dues'] = $this->Player->get_dues($id, 1, true);
$this->data['Units'] = $this->Unit->get_unit_list(array( 'MundaneId' => $id, 'IncludeCompanies' => 1, 'IncludeHouseHolds' =>1, 'IncludeEvents' => 1, 'ActiveOnly' => 1 ));
$this->data['menu']['admin'] = array( 'url' => UIR."Admin/player/$id", 'display' => 'Admin Panel <i class="fas fa-cog"></i>', 'no-crumb' => 'no-crumb' );
$this->data['menu']['player'] = array( 'url' => UIR."Player/index/$id", 'display' => $this->data['Player']['Persona'] );
$this->data['AwardRecommendations'] = $this->Reports->recommended_awards(array('PlayerId'=>$id, 'KingdomId'=>0, 'ParkId'=>0, 'IncludeKnights' => 1, 'IncludeMasters' => 1, 'IncludeLadder' => 1, 'LadderMinimum' => $ladder));
}
}
?>