neue methoden in die clan.inc.php gebracht. Z.b. werden gibt es eine getClan funktion die cached. Ansonsten ist es nun moeglich bbcode in der claninfo zu nutzen. A propos bbcode. Die decodebb methode unterstuetzt nun auch das erstellen des albhed tags.

main
hecht 13 years ago
parent c7853f8678
commit 344645c29f

@ -9,6 +9,7 @@ include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/config.inc.php');
include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/fehlerausgabe.inc.php');
include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/designfunctions.inc.php');
include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/parse.inc.php');
include_once ($_SERVER['DOCUMENT_ROOT'] . 'ag/include/clan.inc.php');
// GET-Section
// Kritisch (SQL-Injections)
@ -26,10 +27,11 @@ function joinClan($user, $clanid){
$clan_user = mysql_fetch_assoc(mysql_query($sql));
if($clan_user){
$sql = 'Select *, (Select member - count(*) from user u where clan = c.id and ((c.leader is null || c.leader != u.id) and (c.co_leader is null || c.co_leader != u.id))) as freeslots from clan c where id = '.$clanid;
// echo $sql . '<br>';
$clan = mysql_fetch_assoc(mysql_query($sql));
if($clan['freeslots'] <= 0){
$clan = getClan($clanid);
$members = getClanMembersCount($clanid);
$members_max = getMaximumMembers($clan['id']);
if($members >= $members_max){
displayErrorMessage(NULL,'Konnte die Einladung des Clans nicht annehmen (Clan voll)!',displayHistoryBackLink());
return;
} else{

@ -40,17 +40,24 @@ if($clan_id == NULL){
}
}
if(isset($_GET['value1'])) {
if($what == 'Banner'){
$value1 = validateURL($_GET['value1']);
} else if($what == 'Homepage' || $what == 'Info' || $what == 'Clan Passwort'){
$value1 = validateString($_GET['value1']);
} else if($what == 'Clanzeichen'){
$value1 = validateString($_GET['value1']);
$value2 = validateString($_GET['value2']);
} else if($what == 'Leadership') {
$value1 = validateUnsignedInteger($_GET['value1'], NULL);
$value2 = validateUnsignedInteger($_GET['value2'], NULL);
switch($what) {
case 'Banner':
case 'Homepage':
$value1 = validateURL($_GET['value1']);
break;
case 'Info':
$value1 = encodeNoHTMLWithBB($_GET['value1']);
break;
case 'Clanzeichen':
$value1 = validateString($_GET['value1']);
$value2 = validateString($_GET['value2']);
break;
case 'Leadership':
$value1 = validateUnsignedInteger($_GET['value1'], NULL);
$value2 = validateUnsignedInteger($_GET['value2'], NULL);
break;
}
}
@ -100,7 +107,7 @@ function displayClanProfileReadOnly($clan, $ownclan, $userid){
}
?>
<tr>
<th width="20%" align="Left">Leader:</th>
<th width="20%" align="Left" height="25">Leader:</th>
<?php
if($leader == null && $coleader == null){
if($ownclan) {
@ -114,7 +121,7 @@ function displayClanProfileReadOnly($clan, $ownclan, $userid){
?>
</tr>
<tr>
<th align="Left">Co-Leader:</th>
<th align="Left" height="25">Co-Leader:</th>
<?php
if($leader != null && $coleader != null){
echo '<td>'.$coleader.'</td>';
@ -122,11 +129,11 @@ function displayClanProfileReadOnly($clan, $ownclan, $userid){
?>
</tr>
<tr>
<th align="Left">Clanzeichen:</th>
<th align="Left" height="25">Clanzeichen:</th>
<td><?php echo $clan['clanz_pre'].' '.$clan['clanz_suff']; ?></td>
</tr>
<tr>
<th align="Left">Member (<?php echo $count; ?>):</th>
<th align="Left">Member (<?php echo $count.'/'.getMaximumMembers($clan['id']); ?>):</th>
<td><?php echo join('<br>',$member); ?></td>
</tr>
<?php
@ -134,22 +141,26 @@ function displayClanProfileReadOnly($clan, $ownclan, $userid){
?>
<tr>
<th align="Left">Eingeladen</th>
<td><?php echo join('<br', $invited); ?></td>
<td><?php echo join('<br>', $invited); ?></td>
</tr>
<?php
}
?>
<tr>
<th align="Left">Level:</th>
<th align="Left" height="25">Level:</th>
<td><?php echo $clan['level']; ?></td>
</tr>
<tr>
<th align="Left" height="25">Erfahrung: </th>
<td><?php echo $clan['min_exp'].' / '.getRequiredClanExp($clan['level']); ?></td>
</tr>
<tr>
<th width="96" height="25" align="Left">Homepage:</th>
<?php
if($clan['homepage'] != 'Keine'){
echo '<td width="852" height="25"><a href="'.$clan['homepage'].'" target=_blank>'.$clan['homepage'].'</a></td>';
echo '<td height="25"><a href="'.$clan['homepage'].'" target=_blank>'.$clan['homepage'].'</a></td>';
} else{
echo '<td width="852" height="25">Keine</td>';
echo '<td height="25">Keine</td>';
}
?>
</tr>
@ -186,6 +197,8 @@ function displayClanProfileReadOnly($clan, $ownclan, $userid){
<?php
}
?>
<tr><th colspan="2">Debug Daten (Kein Bug, dass die naechste Zeile etwas komisch aussieht)</th></tr>
<tr><th colspan="2"><?php print_r($clan); ?></th></tr>
</table>
</div>
@ -241,37 +254,41 @@ function displayClanProfileEditable($clan, $userid){
</td>
</tr>
<tr>
<th width="25%" align="Left">Leader:<a
<th width="25%" align="Left" height="25">Leader:<a
href="index.php?as=clan/clan_info&action=edit&what=Leadership">(edit)</a>
</th>
<td><?php echo $leader; ?></td>
</tr>
<tr>
<th align="Left">Co-Leader:<a
<th align="Left" height="25">Co-Leader:<a
href="index.php?as=clan/clan_info&action=edit&what=Leadership">(edit)</a>
</th>
<td><?php echo $coleader; ?></td>
</tr>
<tr>
<th align="Left">Clanzeichen:<a
<th align="Left" height="25">Clanzeichen:<a
href="index.php?as=clan/clan_info&action=edit&what=Clanzeichen">(edit)</a>
</th>
<td><?php echo $clan['clanz_pre'].' '.$clan['clanz_suff']; ?></td>
</tr>
<tr>
<th align="Left">Member (<?php echo $count; ?>):</th>
<td><?php echo join('<br>',$member); ?></td>
</tr>
<th align="Left">Member (<?php echo $count.'/'.getMaximumMembers($clan['id']); ?>):</th>
<td><?php echo join('<br>',$member); ?></td>
</tr>
<tr>
<th align="Left">Eingeladen</th>
<td><?php echo join('<br', $invited); ?></td>
<td><?php echo join('<br>', $invited); ?></td>
</tr>
<tr>
<th align="Left">Level:</th>
<th align="Left" height="25">Level:</th>
<td><?php echo $clan['level']; ?></td>
</tr>
<tr>
<th align="Left" height="25">Erfahrung: </th>
<td><?php echo $clan['min_exp'].' / '.getRequiredClanExp($clan['level']); ?></td>
</tr>
<tr>
<th align="Left">Homepage:<a
<th align="Left" height="25">Homepage:<a
href="index.php?as=clan/clan_info&action=edit&what=Homepage">(edit)</a>
</th>
<?php
@ -355,42 +372,58 @@ function sendClanNewsletter($user, $text){
}
}
function setProfile($what, $value1, $value2, $clanid, $root){
function setProfile($what, $value1, $value2, $clanid, $rootlvl){
if($rootlvl < 1) {
return 'Du hast keine Rechte um diese Aktion auszuf&uuml;hren!';
}
switch($what){
case 'Homepage':
mysql_query('UPDATE clan SET homepage = \''.$value1.'\' where id = '.$clanid);
return;
return NULL;
case 'Clanzeichen':
mysql_query('UPDATE clan SET clanz_pre = \''.$value1.'\', clanz_suff = \''.$value2.'\' where id = '.$clanid);
return;
return NULL;
case 'Banner':
mysql_query('UPDATE clan SET banner = \''.$value1.'\' where id = '.$clanid);
return;
return NULL;
case 'Info':
mysql_query('UPDATE clan SET Info = \''.$value1.'\' where id = '.$clanid);
return;
return NULL;
case 'Leadership':
if($value1 == 0){$value1 = 'null';}
if($value2 == 0){$value2 = 'null';}
if(!$root){
// okay, are we allowed to change?? If we have max members, it is not allowed to remove the co_leader
$clan = getClan($clanid);
$members = getClanMembersCount($clanid);
$members_max = getMaximumMembers($clan['id']);
if($members_max == $members && $clan['leader'] != $clan['co_leader'] && $value1 == $value2) {
// Okay, actually there are the max amount of users in the clan
// it is now not possible to change to a leader only clan!!
return 'Es ist nicht m&oouml;glich den co_leader zu feuern, da der clan die maximale Anzahl Member besitzt!';
}
if($rootlvl == 1){ // the co leader may only set the co leader XD
$sql = 'UPDATE clan SET co_leader = '.$value2.' where id = '.$clanid;
mysql_query($sql);
} else{
} else if($rootlvl == 2) { // the leader may set the leader and the co leader
$sql = 'UPDATE clan SET leader = '.$value1.', co_leader = '.$value2.' where id = '.$clanid;
// echo $sql.'<br>';
mysql_query($sql);
}
return;
return NULL;
default:
echo 'Error!';
return;
return 'Error!';
}
}
function displayEdit($what, $clanid, $root){
$clan_qry = mysql_query('Select * from clan where id = '.$clanid);
$clan = mysql_fetch_assoc($clan_qry);
function displayEdit($what, $clanid, $rootlvl){
if($rootlvl < 1) {
$content = '<tr><td colspan="2">Du hast keine Rechte um diese Aktion auszuf&uuml;hren!</td></tr>';
$what = 'ERROR';
}
$clan = getCLan($clanid);
$content = '';
switch($what){
@ -427,10 +460,9 @@ function displayEdit($what, $clanid, $root){
$content .= '<tr><td>Co-Leader:</td><td><select class="input" name="value2" />'.join('',$member2).'</select></td></tr>';
break;
case 'Info':
$content = '<tr><td colspan="2"><textarea class="input" name="value1"></textarea></td></tr>';
$content = '<tr><td colspan="2"><textarea class="input" name="value1" rows="8" cols="40">'.debbcode($clan['info']).'</textarea></td></tr>';
break;
case 'Clan Passwort':
$content = '<tr><td colspan="2"><input class="input" name="value1" /></td></tr>';
case 'ERROR':
break;
default:
$content = '<tr><td colspan="2">Error '.$what.' unknown!</td></tr>';
@ -491,47 +523,26 @@ function deleteClan($user){
if($action !== NULL) { // this is done to not require to reprogramm the whole stuff!
//if($edit == 1){
// $row = mysql_fetch_assoc(mysql_query('SELECT leader, co_leader from clan where id = '.$user_ida['clan']));
// if($row['leader'] != $user_ida['id'] && $row['co_leader'] != $user_ida['id']){
// displayErrorMessage(NULL, 'Du bist weder Leader noch Co-Leader des Clans!', displayHistoryBackLink());
// } else if(isset($value1)){
// setProfile($what, $value1, $value2, $user_ida['clan'], $row['leader'] == $user_ida['id'] || $row['leader'] === null);
// } else{
// displayEdit($what, $user_ida['clan'],$row['leader'] == $user_ida['id'] || $row['leader'] === null);
// $displayMore = false;
// }
//} else if($putsch == 1){
// setMeAsLeader($user_ida);
//} else if($fire == 1){
// fireMember($user_ida, $member);
//} else if($kill == 1){
// deleteClan($user_ida);
//} else if($reject == 1) {
// $errorMsg = revokeInvitation($user_ida, $member);
// if($errorMsg !== NULL) {
// echo displayErrorMessage(NULL, $errorMsg, displayHistoryBackLink());
// $displayMore = false;
// } else {
// displayErrorMessage('','Du hast die Einladung erfolgreich zur&uuml;ckgezogen!', '<a href="index.php?as=clan/clan_info">weiter</a>');
// $displayMore = false;
// }
//}
$rootlvl = 0;
if($row['leader'] == $user_ida['id'] || ($row['leader'] === null && ($row['co_leader'] === null || $row['co_leader'] = $user_ida['id']))) {
$rootlvl = 2; // leader or putsch!!
} else if($row['co_leader'] = $user_ida['id']) {
$rootlvl = 1; // co_leader
}
if($action !== NULL) { // this is done to not require to reprogramm the whole stuff!
switch ($action) {
case 'edit':
$row = mysql_fetch_assoc(mysql_query('SELECT leader, co_leader from clan where id = '.$user_ida['clan']));
if($row['leader'] != $user_ida['id'] && $row['co_leader'] != $user_ida['id']){
displayErrorMessage(NULL, 'Du bist weder Leader noch Co-Leader des Clans!', displayHistoryBackLink());
} else if(isset($value1)){
setProfile($what, $value1, $value2, $user_ida['clan'], $row['leader'] == $user_ida['id'] || $row['leader'] === null);
setProfile($what, $value1, $value2, $user_ida['clan'], $rootlvl);
} else{
displayEdit($what, $user_ida['clan'],$row['leader'] == $user_ida['id'] || $row['leader'] === null);
displayEdit($what, $user_ida['clan'], $rootlvl);
$displayMore = false;
}
break;

@ -6,6 +6,90 @@
*
*/
$GLOBALS['clan_buffered_instances'] = array ();
function getClan($clanid, $buffer = TRUE) {
if(!is_numeric($clanid)) { return NULL; }
if(buffer && isset($GLOBALS['clan_buffered_instances'][$clanid])) {
return $GLOBALS['clan_buffered_instances'][$clanid]; // okay, we already buffered the clan :)
}
$clan = mysql_fetch_assoc(mysql_query('SELECT * FROM clan WHERE id = '. $clanid));
// now calculate the member, max_exp fields :D
if($clan) {
$GLOBALS['clan_buffered_instances'][$clanid] = $clan;
return $clan;
} else {
return NULL;
}
}
function getClanMembersCount($clanid) {
if(!is_numeric($clanid)) { return NULL; }
$row = mysql_fetch_assoc(mysql_query('SELECT count(id) as amount FROM user WHERE clan = '. $clanid));
return $row['amount'];
}
function getClanMemberBonusByLevel($level) {
switch($level) {
case 1:
case 2:
case 3:
return 0;
case 4:
case 5:
return 1;
case 6:
case 7:
return 2;
case 8:
case 9:
return 3;
case 10:
case 11:
return 4;
case 12:
case 13:
return 5;
case 14:
return 6;
case 15:
return 7;
case 16:
return 8;
case 17:
return 9;
default:
return 10;
}
}
function getMaximumMembers($clanid) {
// okay, this is a more tricky calculation as this requires the information (are leader and co_leader the same person??)
// the second parameter is the clan level. Each 2 levels (where the maximum clan level is about 20) one more member can
// be invited :)
$clan = getClan($clanid);
if($clan === NULL){ return 0; }
$base = 10;
$members_by_level = getClanMemberBonusByLevel($clan['level']);
$malus = 0;
if($clan['co_leader'] == NULL || $clan['co_leader'] == $clan['leader']) {
$malus = 1;
}
return $base + $members_by_level - $malus;
}
function getRequiredClanExp($level) {
return pow(2, $level) * 10;
}
function revokeInvitation($user, $userid, $clan = NULL){
if($user['clan'] === NULL) {
return 'Du bist in keinem Clan!';

@ -51,6 +51,7 @@ function encodeNoHTMLnoBBAlBhed($msg){
return '[text='.$msg.']'.$result.'[/text]';
}
function decodeNoHTMLNoBBAlBhed($msg){
// Al Bhed: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
// Deutsch: E P S T I W K N U V G C L R Y B X H M D O F Z Q A J
@ -231,7 +232,8 @@ function debbcode($messagetext){
'#\<sup\>(.*?)\</sup\>#',
'#\<span style="color:\#?([0-9a-fA-F]{6})"\>(.*?)</span\>#',
'#\<span style="color:([a-zA-Z]+?)"\>(.*?)</span\>#',
'#<br>#'
'#<br>#',
'#\<span title="([^"]*?)"\>[^\<]*\</span\>#'
//'<img src="\1\2">',
//'<img src="\1\2" />'
) ;
@ -248,7 +250,8 @@ function debbcode($messagetext){
'[sup]\1[/sup]',
'[color=#\1]\2[/color]',
'[color=\1]\2[/color]',
"\n"
"\n",
'[albhed]\1[/albhed]'
//'#\[img]([a-z]+?://){1}(.*?)\[/img]#',
//'#\[img](.*?)\[/img\]#'
) ;

Loading…
Cancel
Save