All pastes #762502 Raw Edit

Something

public text v1 · immutable
·published 2007-11-05 18:56 UTC
rendered paste body
<?php

// ensure this file is being included by a parent file

defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );



// load language files

require_once( $mainframe->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 "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";

		exit();

	}

	$txt = $row->id ? $l->m("msg_team_changed") : $l->m("msg_team_created");

	if (!$row->check($_POST["password2"])) {

		echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";

		exit();

	}

	

	if ($row->password == '') {

		// password set to null if empty

		$row->password = null;

	} else {

		$row->password = md5( $row->password );

	}

	if (!$row->store()) {

		echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\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 "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\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 "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";

			exit();

		}

		if (!$row->check()) {

			echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";

			exit();

		}

		if (!$row->store()) {

			echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\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 );

};

?>