You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			189 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			PHP
		
	
			
		
		
	
	
			189 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			PHP
		
	
| <?php
 | |
| /*
 | |
|  *
 | |
|  * @copyright (c) 2011 animegame.eu
 | |
|  * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public Licence
 | |
|  *
 | |
|  */
 | |
| 
 | |
| 
 | |
| define('MAX_CHARS_CLANSIGN', 8);
 | |
| $GLOBALS['clan_buffered_instances'] = array ();
 | |
| 
 | |
| 
 | |
| function getClan($clanid, $buffer = TRUE) {
 | |
| 	if(!is_numeric($clanid) || $clanid === NULL) { 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:
 | |
| 		case 6:
 | |
| 			return 1;
 | |
| 		case 7:
 | |
| 		case 8:
 | |
| 			return 2;
 | |
| 		case 9:
 | |
| 		case 10:
 | |
| 			return 3;
 | |
| 		case 11:
 | |
| 		case 12:
 | |
| 			return 4;
 | |
| 		case 13:
 | |
| 		case 14:
 | |
| 			return 5;
 | |
| 		case 15:
 | |
| 		case 16:
 | |
| 			return 6;
 | |
| 		case 17:
 | |
| 			return 7;
 | |
| 		default:
 | |
| 			return 8;
 | |
| 	}
 | |
| 	}
 | |
| 
 | |
| 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 = 12;
 | |
| 	$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!';
 | |
| 	}
 | |
| 
 | |
| 	if($clan === NULL) {
 | |
| 		$qry = mysql_query('Select * from clan where id = ' . $user['clan']);
 | |
| 		$clan = mysql_fetch_assoc($qry);
 | |
| 	}
 | |
| 
 | |
| 	if($clan['leader'] != $user['id'] && $clan['co_leader'] != $user['id']){
 | |
| 		return 'Nur der Leader, bzw. der Co-Leader kann Einladungen zurückziehen!!';
 | |
| 	}
 | |
| 
 | |
| 	$sql = 'DELETE FROM user_clan_invitations WHERE clanid = '.$clan['id'].' AND userid = '.$userid;
 | |
| 	//	echo $sql . '<br>';
 | |
| 	mysql_query($sql);
 | |
| 	if(mysql_affected_rows() > 0){
 | |
| 		return NULL;
 | |
| 	} else{
 | |
| 		return 'Einladung konnte nicht zurückgezogen werden!';
 | |
| 	}
 | |
| }
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  * Enter description here ...
 | |
|  * @param array $user the user that wants to invite
 | |
|  * @param int $userid the id of the user that should be invited
 | |
|  * @param array $clan the optional clan array (if available)
 | |
|  */
 | |
| function inviteUser(array $user, $userid, array $clan = NULL){
 | |
| 	if($user['clan'] === NULL) {
 | |
| 		return 'Du bist in keinem Clan!';
 | |
| 	}
 | |
| 
 | |
| 	if($clan === NULL) {
 | |
| 		$qry = mysql_query('Select * from clan where id = ' . $user['clan']);
 | |
| 		$clan = mysql_fetch_assoc($qry);
 | |
| 	}
 | |
| 
 | |
| 	if($clan['leader'] != $user['id'] && $clan['co_leader'] != $user['id']){
 | |
| 		return 'Nur der Leader, bzw. der Co-Leader kann neue Member einladen!';
 | |
| 	}
 | |
| 
 | |
| 	$row = mysql_fetch_assoc(mysql_query('SELECT * FROM user where id = \''. $userid.'\''));
 | |
| 	if(!row) {
 | |
| 		return 'Fehler! Nutzer exisitiert nicht!!';
 | |
| 	}
 | |
| 	if($row['clan'] == $user['clan']){
 | |
| 		return 'Fehler! Nutzer ist schon in deinem Clan!';
 | |
| 	}
 | |
| 
 | |
| 	$sql = 'INSERT INTO user_clan_invitations(userid, clanid, valid) values('.$userid.','.$user['clan'].',TIMESTAMPADD(DAY, 5, now()))';
 | |
| 	//		echo $sql.'<br>';
 | |
| 	mysql_query($sql);
 | |
| 	if(mysql_affected_rows() <= 0){ // Fehler?
 | |
| 		$sql = 'UPDATE user_clan_invitations SET valid = TIMESTAMPADD(DAY, 5, now()) where userid = '.$userid.' and clanid = '.$user['clan'];
 | |
| 		//			echo $sql.'<br>';
 | |
| 		mysql_query($sql);
 | |
| 		if(mysql_affected_rows() <= 0){ // Fehler?
 | |
| 			return 'Fehler! Konnte Nutzer nicht einladen!';
 | |
| 		} else{
 | |
| 			sendMessage($user['nickname'], $userid, 'Einladung in Clan', 'Die Einladung des Clans '.$clan['clanname'].' wurde aufgefrischt! Klicke auf "Clan beitreten" um die Einladung anzunehmen!');
 | |
| 			return NULL;
 | |
| 		}
 | |
| 	} else{
 | |
| 		sendMessage($user['nickname'], $userid, 'Einladung in Clan', 'Du wurdest eingeladen dich dem Clan '.$clan['clanname'].' anzuschliessen! Klicke auf "Clan beitreten" um die Einladung anzunehmen!');
 | |
| 		return NULL;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| function fireMember($user, $member){
 | |
| 	$row = mysql_fetch_assoc(mysql_query('SELECT leader, co_leader from clan where id = '.$user['clan']));
 | |
| 	if($member != $row['leader'] && $member != $row['co_leader'] && ($user['id'] == $row['leader'] || $user['id'] == $row['co_leader'] || $member == $user['id'])){
 | |
| 		$sql = 'Update user set clan = NULL where id = '.$member.' AND clan = '.$user['clan'];
 | |
| 		//		echo $sql.'<br>';
 | |
| 		mysql_query($sql);
 | |
| 		if(mysql_affected_rows() > 0){ // Soll nur ausgeführt werden, wenn member wirklich gekickt wurde!!
 | |
| 			$sql = 'Update chars set clan_train = NULL where besitzer = '.$member;
 | |
| 			mysql_query($sql);
 | |
| 			if($user['id'] != $member) {
 | |
| 				sendMessage($user['nickname'], $member, 'Clan rauswurf!', 'Du wurdest von '.$user['nickname'].' aus deinem Clan geworfen. Du wirst dir wohl einen neuen suchen müssen!');
 | |
| 			} else if(getClanMembersCount($user['clan']) == 0) {
 | |
| 				mysql_query('DELETE FROM clan WHERE id =' .$user['clan']);
 | |
| 			}
 | |
| 
 | |
| 			// delete the participation in open clan fights! Thats tricky because the user itself is not stored in the database!!
 | |
| 			mysql_query('DELETE FROM clan_challenge_participants WHERE clan_challenge_id in (SELECT clan_challenge_id FROM clan_challenge where calculated = FALSE) and char_id IN (Select id FROM chars where besitzer = '.$user['id'].')');
 | |
| 		}
 | |
| 	} else{
 | |
| 		echo displayErrorMessage(NULL, 'Du kannst den Member nicht feuern!', displayHistoryBackLink());
 | |
| 	}
 | |
| }
 | |
| 
 | |
| 
 | |
| ?>
 |