Jeg er gået igang med at lave en ny side, og det er gået over al forventning. Der plerjer at gå meget kortere tid, før at jeg render på den første rigtige hurdle. Men idag kom den første, og dertil får jeg brug for lidt hjælp.
Jeg har lavet en side via lidt Joomla og der har jeg installeret en component, som udvikleren ikke længere arbejder på. Problemet er at der er en bug i hans ellers meget fine component, men jeg
tror at det er forholdsvis simpelt at fixe. Jeg prøver at gøre det kort:
Man kan oprette nogle teams i denne component. Problemet er at hvis der kun er én person tilbage i gruppen, så kan han ikke forlade den eller slette den. Jeg er nødt til at gå ind via ACP og slette gruppen.
Det er naturligvis kun leaderen af gruppen, der skal kunne slette gruppen.
Funktionen med at forlade gruppen ser således ud:
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) );
}
}
};
Jeg forestiller mig at man skal tilføjer en else hvor man tjekker om personen der ønsker at forlade teamet er leader OG er den sidste i gruppen, og hvis disse to er opfyldt, så bliver man spurgt om man ønsker at slette gruppen.
Er der nogen der kan hjælpe? Funktionen er rigeligt, så skal jeg nok hygge mig med at få den smidt ind de rigtige steder.
På forhånd rigtig, rigtig mange tak!
I kan også lige få funktionen hvor der gemmes et team, så I kan se hvad der skal slettes:
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) );
}