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 ); }; ?>