getPath( 'class', 'com_mls_lang' ) );
$l = new MLS_lang('','english');
if(!$l->loadData()) {
echo $l->_error;
}
require_once( $mainframe->getPath( 'front_html' ) );
require_once( $mainframe->getPath( 'class' ) );
$limit = mosGetParam($_REQUEST, 'limit', '');
$limitstart = mosGetParam($_REQUEST, 'limitstart', '');
$Itemid = mosGetParam($_REQUEST,'Itemid');
$teamid = mosGetParam($_REQUEST,'teamid');
$last_task = mosGetParam($_REQUEST,'last_task');
//Load league frontend.php files
$database->setQuery( "SELECT * FROM `#__mls_tournaments_leagues` WHERE `teams`='1' ORDER BY `name` ASC" );
$leagues = $database->loadObjectList();
foreach($leagues AS $league) {
require_once( $mosConfig_absolute_path."/administrator/components/com_mls_tournaments/leagues/".$league->name."/frontend.php" );
require_once( $mosConfig_absolute_path."/administrator/components/com_mls_tournaments/leagues/".$league->name."/classes.php" );
}
switch($task) {
case "list":
listTeams( '0', $option, $Itemid, $limit, $limitstart );
break;
case "view":
viewTeam( $teamid, $option, $Itemid );
break;
case "join":
joinTeam( $teamid, $last_task, $option, $Itemid );
break;
case "save_join":
save_joinTeam( $option, $Itemid );
break;
case "leave":
leaveTeam( $teamid, $last_task, $option, $Itemid );
break;
case "manage":
manageTeam( $teamid, $option, $Itemid );
break;
case "new":
editTeam( '0', $option, $Itemid );
break;
case "edit":
editTeam( $teamid, $option, $Itemid );
break;
case "save":
saveTeam( $option, $Itemid );
break;
default:
listTeams( $my->id, $option, $Itemid, $limit, $limitstart );
break;
}
function listTeams( $userid = 0, $option, $Itemid, $limit = "10", $limitstart = "0" ) {
global $database, $my, $mainframe, $l, $task;
$l->setBlock("teams");
if(!$limitstart) $limitstart = "0";
if(!$limit) $limit = "20";
if($userid) {
//we are on the 'my teams' page, list only teams of which I am member
//had to use little workaround (I _love_ MySQL functions...)
// get the total number of records
$database->setQuery( "SELECT c.*, COUNT(m.id) AS `members`,COUNT(IF(m.userid=".$userid.",1,NULL)) AS `my_check`"
."\n FROM `#__mls_teams` AS `c`"
."\n LEFT JOIN `#__mls_teams_members` AS `m` ON m.teamid=c.id"
."\n GROUP BY c.id"
."\n HAVING `my_check` > 0"
."\n ORDER BY c.name ASC");
$rows = $database->loadObjectList();
$total = count($rows);
//enable pagenav
require_once( "includes/pageNavigation.php" );
$link = "?option=".$option."&task=".$task."&Itemid=".$Itemid;
$pageNav = new mosPageNav( $total, $limitstart, $limit );
//Select records
$database->setQuery( "SELECT c.*, COUNT(m.id) AS `members`,COUNT(IF(m.userid=".$userid.",1,NULL)) AS `my_check`"
."\n FROM `#__mls_teams` AS `c`"
."\n LEFT JOIN `#__mls_teams_members` AS `m` ON m.teamid=c.id"
."\n GROUP BY c.id"
."\n HAVING `my_check` > 0"
."\n ORDER BY c.name ASC"
."\n LIMIT $pageNav->limitstart, $pageNav->limit");
$rows = $database->loadObjectList();
} else {
//enable pagenav
require_once( "includes/pageNavigation.php" );
$database->setQuery( "SELECT COUNT(*) FROM `#__mls_teams`" );
$total = $database->loadResult();
$link = "?option=".$option."&task=".$task."&Itemid=".$Itemid;
$pageNav = new mosPageNav( $total, $limitstart, $limit );
$database->setQuery( "SELECT c.*, COUNT(m.id) AS `members`"
."\n FROM `#__mls_teams` AS `c`"
."\n LEFT JOIN `#__mls_teams_members` AS `m` ON m.teamid=c.id"
."\n GROUP BY c.id"
."\n ORDER BY c.name ASC"
."\n LIMIT $pageNav->limitstart, $pageNav->limit");
$rows = $database->loadObjectList();
}
HTML_MLS_teams::listTeams($rows, $userid, $link, $pageNav, $option, $Itemid);
}
function viewTeam( $teamid, $option, $Itemid ) {
global $database, $my, $metaframe, $l;
$row = new mosMLS_teams_team( $database );
$row->load( $teamid );
$database->setQuery( "SELECT m.*,u.username,u.name AS `fullusername` FROM `#__mls_teams_members` AS `m`"
."\n INNER JOIN `#__users` AS `u` ON u.id=m.userid"
."\n WHERE m.teamid='".$row->id."'"
."\n ORDER BY m.leader DESC,u.username ASC" );
$members = $database->loadObjectList();
HTML_MLS_teams::viewTeam($row, $members, $option, $Itemid);
};
function leaveTeam( $teamid, $last_task, $option, $Itemid ) {
global $database, $l, $my;
if(!$my->id) {
mosNotAuth();
return;
}
$l->setBlock("general");
$team = new mosMLS_teams_team( $database );
$team->load( $teamid );
$database->setQuery( "SELECT COUNT(*) FROM `#__mls_teams_members` WHERE `userid`!='".$my->id."' AND `teamid`='".$teamid."' AND `leader`='1'" );
if($database->loadResult() == 0) {
mosRedirect( "index.php?option=$option&Itemid=$Itemid&task=$last_task&mosmsg=".urlencode($l->m("err_only_leader")." ".$team->name) );
} else {
$database->setQuery( "DELETE FROM `#__mls_teams_members` WHERE `userid`='".$my->id."' AND `teamid`='".$teamid."'" );
if($database->query()) {
mosRedirect( "index.php?option=$option&Itemid=$Itemid&task=$last_task&mosmsg=".urlencode($l->m("msg_team_left")." ".$team->name) );
} else {
mosRedirect( "index.php?option=$option&Itemid=$Itemid&task=$last_task&mosmsg=".urlencode($l->m("err_leaving_team")." ".$team->name) );
}
}
};
function saveTeam( $option, $Itemid ) {
global $database, $my, $mainframe, $l;
$l->setBlock("general");
if(!$my->id) {
mosNotAuth();
return;
}
$row = new mosMLS_teams_team( $database );
if (!$row->bind( $_POST )) {
echo "\n";
exit();
}
$txt = $row->id ? $l->m("msg_team_changed") : $l->m("msg_team_created");
if (!$row->check($_POST["password2"])) {
echo "\n";
exit();
}
if ($row->password == '') {
// password set to null if empty
$row->password = null;
} else {
$row->password = md5( $row->password );
}
if (!$row->store()) {
echo "\n";
exit();
}
$teamid = $row->_db->insertid();
$member = new mosMLS_teams_member( $database );
$member->teamid = $teamid;
$member->userid = $my->id;
$member->leader = 1;
if (!$member->store()) {
echo "\n";
exit();
}
//Save league data
$database->setQuery( "SELECT * FROM `#__mls_tournaments_leagues` WHERE `teams`='1' ORDER BY `name` ASC" );
$leagues = $database->loadObjectList();
foreach($leagues AS $league) {
$name = $league->name;
$class = "MLSTournaments_".$name."_teams";
$teamleague = new $class( $database );
$_POST[$name]["parentid"] = $row->id;
$teamleague->bind( $_POST[$name] );
$teamleague->store();
}
mosRedirect( "index.php?option=$option&Itemid=$Itemid&mosmsg=".urlencode($txt) );
}
function joinTeam( $teamid, $last_task, $option, $Itemid ) {
global $database, $my, $l;
if(!$my->id) {
mosNotAuth();
return;
}
$row = new mosMLS_teams_team( $database );
$row->load( $teamid );
HTML_MLS_teams::joinTeam( $row, $last_task, $option, $Itemid);
}
function save_joinTeam( $option, $Itemid ) {
global $database, $my, $l;
if(!$my->id) {
mosNotAuth();
return;
}
$l->setBlock("general");
$team = new mosMLS_teams_team( $database );
$team->load( $_POST["teamid"] );
if($team->password != md5( $_POST["password"] )) {
mosRedirect( "index.php?option=$option&Itemid=$Itemid&task=join&last_task=".$_POST["last_task"]."&teamid=".$team->id."&mosmsg=".urlencode($l->m("err_wrong_password")) );
} else {
//password correct, join team
$row = new mosMLS_teams_member( $database );
if (!$row->bind( $_POST )) {
echo "\n";
exit();
}
if (!$row->check()) {
echo "\n";
exit();
}
if (!$row->store()) {
echo "\n";
exit();
}
mosRedirect( "index.php?option=$option&Itemid=$Itemid&task=".$_POST["last_task"]."&mosmsg=".urlencode($l->m("msg_team_joined")." ".$team->name) );
}
}
function editTeam( $id, $option, $Itemid ) {
global $database, $my, $l, $mosConfig_offset;
if(!$my->id) {
mosNotAuth();
return;
}
$l->setBlock("general");
if($id && !mosMLS_teams_member::checkLeader($id,$my->id)) {
mosRedirect( "index.php?option=$option&Itemid=$Itemid&mosmsg=".urlencode($l->m("err_not_leader")) );
}
$row = new mosMLS_teams_team( $database );
$row->load( $id );
if($id != 0) {
//stuff for existing teams
} else {
//stuff for new teams
$row->founded = date( "Y-m-d H:i:s", time()+$mosConfig_offset*60*60 );
}
//load leagues data
$leaguesdata = new stdClass;
$database->setQuery( "SELECT * FROM `#__mls_tournaments_leagues` WHERE `teams`='1' ORDER BY `name` ASC" );
$leagues = $database->loadObjectList();
foreach($leagues AS $league) {
$name = $league->name;
$database->setQuery( "SELECT * FROM `#__mls_tournaments_leagues_".$league->name."_teams` WHERE `parentid`='".$id."'" );
$database->loadObject( $leaguesdata->$name );
}
HTML_MLS_teams::editTeam( $row, $option, $leaguesdata, $Itemid );
};
function manageTeam( $teamid, $option, $Itemid ) {
global $database, $my, $l;
if(!$my->id) {
mosNotAuth();
return;
}
$l->setBlock("general");
if(!mosMLS_teams_member::checkLeader($teamid,$my->id)) {
mosRedirect( "index.php?option=$option&Itemid=$Itemid&mosmsg=".urlencode($l->m("err_not_leader")) );
}
if(@$_POST["leader"] && is_array(@$_POST["leader"])) {
foreach($_POST["leader"] AS $id => $leader) {
$database->setQuery( "UPDATE `#__mls_teams_members` SET `leader`='".$leader."' WHERE `id`='".$id."'" );
$database->query();
}
}
if(@$_POST["delete"] && is_array(@$_POST["delete"])) {
foreach($_POST["delete"] AS $id => $value) {
if($value == 1) {
$database->setQuery( "DELETE FROM `#__mls_teams_members` WHERE `id`='".$id."'" );
$database->query();
}
}
}
$row = new mosMLS_teams_team( $database );
$row->load( $teamid );
$database->setQuery( "SELECT m.*,u.username,u.name AS `fullusername` FROM `#__mls_teams_members` AS `m`"
."\n INNER JOIN `#__users` AS `u` ON u.id=m.userid"
."\n WHERE m.teamid='".$row->id."'"
."\n ORDER BY m.leader DESC,u.username ASC" );
$members = $database->loadObjectList();
//build the html select lists
$function[] = mosHTML::makeOption( '0', $l->m("member","teams") );
$function[] = mosHTML::makeOption( '1', $l->m("leader","teams") );
HTML_MLS_teams::manageTeam($members, $row, $function, $option, $Itemid );
};
?>