View file Script/system/modules/editprofile.php

File size: 22.31Kb
<?php
/* 
	Appointment: Редактирование страницы
	File: editprofile.php 
 
*/
if(!defined('MOZG'))
	die('Hacking attempt!');

if($ajax == 'yes')
	NoAjaxQuery();

if($logged){
	$act = $_GET['act'];
	
	$metatags['title'] = $lang['editmyprofile'];
	
	switch($act){
		
		//Загрузка фотографии
		case "upload":
			NoAjaxQuery();
			
			//Подключаем класс для фотографий
			include ENGINE_DIR.'/classes/images.php';
			
			$user_id = $user_info['user_id'];
			$uploaddir = ROOT_DIR.'/uploads/users/';
			
			//Если нет папок юзера, то создаём её
			if(!is_dir($uploaddir.$user_id)){ 
				@mkdir($uploaddir.$user_id, 0777 );
				@chmod($uploaddir.$user_id, 0777 );
				@mkdir($uploaddir.$user_id.'/albums', 0777 );
				@chmod($uploaddir.$user_id.'/albums', 0777 );
			}
			
			//Разришенные форматы
			$allowed_files = array('jpg', 'jpeg', 'jpe', 'png', 'gif');
			
			//Получаем данные о фотографии
			$image_tmp = $_FILES['uploadfile']['tmp_name'];
			$image_name = totranslit($_FILES['uploadfile']['name']); // оригинальное название для оприделения формата
			$image_rename = substr(md5($server_time+rand(1,100000)), 0, 15); // имя фотографии
			$image_size = $_FILES['uploadfile']['size']; // размер файла
			$type = end(explode(".", $image_name)); // формат файла
			
			//Проверям если, формат верный то пропускаем
			if(in_array($type, $allowed_files)){
				if($image_size < 5000000){
					$res_type = '.'.$type;
					$uploaddir = ROOT_DIR.'/uploads/users/'.$user_id.'/'; // Директория куда загружать
					if(move_uploaded_file($image_tmp, $uploaddir.$image_rename.$res_type)) {

						//Создание оригинала
						$tmb = new thumbnail($uploaddir.$image_rename.$res_type);
						$tmb->size_auto(800);
						$tmb->jpeg_quality(100);
						$tmb->save($uploaddir.'main_avatar_'.$image_rename.$res_type);
						
						//Создание главной фотографии
						$tmb = new thumbnail($uploaddir.$image_rename.$res_type);
						$tmb->size_auto('120x120');
						$tmb->jpeg_quality(100);
						$tmb->save($uploaddir.'120_'.$image_rename.$res_type);
						
						//Создание уменьшеной копии 170x170
						$tmb = new thumbnail($uploaddir.$image_rename.$res_type);
						$tmb->size_auto('170x170');
						$tmb->jpeg_quality(100);
						$tmb->save($uploaddir.'170_'.$image_rename.$res_type);
												
						//Создание уменьшеной копии 100х100
						$tmb = new thumbnail($uploaddir.$image_rename.$res_type);
						$tmb->size_auto('100x100');
						$tmb->jpeg_quality(100);
						$tmb->save($uploaddir.'100_'.$image_rename.$res_type);
						
						//Создание уменьшеной копии 50х50
						$tmb = new thumbnail($uploaddir.$image_rename.$res_type);
						$tmb->size_auto('50x50');
						$tmb->jpeg_quality(100);
						$tmb->save($uploaddir.'50_'.$image_rename.$res_type);

						$image_rename = $db->safesql($image_rename);
						$res_type = $db->safesql($res_type);

						//Добавляем на стену
						$row = $db->super_query("SELECT gender FROM `".PREFIX."_users` WHERE user_id = '{$user_id}'");
						if($row['gender'] == 2)
							$gender_text = 'updated';
						else
							$gender_text = 'updated';
						
						$wall_text = "<div class=\"wall_post_update_avatar\"><a href=\"\" onClick=\"Photo.Profile(\'{$user_id}\', \'{$image_rename}{$res_type}\'); return false\"><div class=\"wall_post_post_attach_photo_zoom\"></div><img src=\"/uploads/users/{$user_id}/main_avatar_{$image_rename}{$res_type}\"></a></div>";
						
						$db->query("INSERT INTO `".PREFIX."_wall` SET author_user_id = '{$user_id}', for_user_id = '{$user_id}', text = '{$wall_text}', add_date = '{$server_time}', type = '{$gender_text} a profile page'");
						$dbid = $db->insert_id();
						
						$db->query("UPDATE `".PREFIX."_users` SET wall_num = wall_num+1 WHERE user_id = '{$user_id}'");
						
						//Добавляем в ленту новостей
						$db->query("INSERT INTO `".PREFIX."_news` SET ac_user_id = '{$user_id}', action_type = 1, action_text = '{$wall_text}', obj_id = '{$dbid}', action_time = '{$server_time}'");
						
						//Обновляем имя фотки в бд
						$db->query("UPDATE `".PREFIX."_users` SET avatar = '{$image_rename}{$res_type}', wall_id = '{$dbid}' WHERE user_id = '{$user_id}'");
						
						echo $config['home_url'].'uploads/users/'.$user_id.'/120_'.$image_rename.$res_type;

						mozg_clear_cache_file('user_'.$user_id.'/profile_'.$user_id);
						mozg_clear_cache();
						
					} else
						echo 'bad';
				} else
					echo 'big_size';
			} else
				echo 'bad_format';

			die();
		break;
		
		//Удаление фотографии
		case "del_photo":
			NoAjaxQuery();
			$user_id = $user_info['user_id'];
			$uploaddir = ROOT_DIR.'/uploads/users/'.$user_id.'/';
			$row = $db->super_query("SELECT avatar, wall_id FROM `".PREFIX."_users` WHERE user_id = '{$user_id}'");
			if($row['avatar']){
				$check_wall_rec = $db->super_query("SELECT COUNT(*) AS cnt FROM `".PREFIX."_wall` WHERE id = '{$row['wall_id']}'");
				if($check_wall_rec['cnt']){
					$update_wall = ", wall_num = wall_num-1";
					$db->query("DELETE FROM `".PREFIX."_wall` WHERE id = '{$row['wall_id']}'");
					$db->query("DELETE FROM `".PREFIX."_news` WHERE obj_id = '{$row['wall_id']}'");
				}
				
				$db->query("UPDATE `".PREFIX."_users` SET avatar = '', wall_id = '' {$update_wall} WHERE user_id = '{$user_id}'");
				
				@unlink($uploaddir.$row['avatar']);
				@unlink($uploaddir.'50_'.$row['avatar']);
				@unlink($uploaddir.'100_'.$row['avatar']);
				@unlink($uploaddir.'120_'.$row['avatar']);
				@unlink($uploaddir.'170_'.$row['avatar']);
				@unlink($uploaddir.'main_avatar_'.$row['avatar']);
				
				mozg_clear_cache_file('user_'.$user_id.'/profile_'.$user_id);
				mozg_clear_cache();
			}
			die();
		break;
		
		//Страница загрузки главной фотографии
		case "load_photo":
			NoAjaxQuery();
			$tpl->load_template('load_photo.tpl');
			$tpl->compile('content');
			AjaxTpl();
			die();
		break;
		
		//Сохранение основых данных
		case "save_information":
		
			NoAjaxQuery();
		
			$post_gender = intval($_POST['gender']);
			if($post_gender == 1 OR $post_gender == 2)
				$gender = $post_gender;
			else
				$gender = false;
			
			$day = intval($_POST['day']);
			$month = intval($_POST['month']);
			$year = intval($_POST['year']);
			$country = intval($_POST['country']);
			$city = intval($_POST['city']);
			$birthday = $year.'-'.$month.'-'.$day;
			
			if($country > 0){
				$country_info = $db->super_query("SELECT name FROM `".PREFIX."_country` WHERE id = '".$country."'");
				$city_info = $db->super_query("SELECT name FROM `".PREFIX."_city` WHERE id = '".$city."'");
					
				$country_city = $country_info['name'].'|'.$city_info['name'];
			} else {
				$city = 0;
				$country = 0;
				$country_city = '';
			}	
				
			$db->query("UPDATE `".PREFIX."_users` SET gender = '{$gender}', day = '{$day}', month = '{$month}', year = '{$year}', country = '{$country}', city = '{$city}', country_city = '{$country_city}', birthday = '{$birthday}' WHERE user_id = '{$user_info['user_id']}'");

			mozg_clear_cache_file('user_'.$user_info['user_id'].'/profile_'.$user_info['user_id']);
			mozg_clear_cache();
				
			echo 'ok';

			die();
			
		break;
		
		//Сохранение доп.полей
		case "save_other_information":

			$xfields = profileload();
			
			$postedxfields = $_POST['xfields'];
			
			$newpostedxfields = array();

			$xfieldsdata = xfieldsdataload($xfieldsid);

			foreach($xfields as $name => $value){

				$newpostedxfields[$value[0]] = $postedxfields[$value[0]];

				if($value[2] == "select"){
					$options = explode("\r\n", $value[3]);

					$newpostedxfields[$value[0]] = $options[$postedxfields[$value[0]]].'|1';
				}

			}
			
			$postedxfields = $newpostedxfields;
			
			foreach($postedxfields as $xfielddataname => $xfielddatavalue){

				if(!$xfielddatavalue){
					continue;
				}
				
				$expxfielddatavalue = explode('|', $xfielddatavalue);
				
				if($expxfielddatavalue[1])
					$xfielddatavalue = str_replace('|1', '', textFilter($xfielddatavalue));
				else
					$xfielddatavalue = ajax_utf8(textFilter($xfielddatavalue));

				$xfielddataname = $db->safesql($xfielddataname);

				if(isset($xfielddatavalue) AND !empty($xfielddatavalue)){
					$xfielddataname = str_replace("|", "&#124;", $xfielddataname);
					$xfielddatavalue = str_replace("|", "&#124;", $xfielddatavalue);
					$filecontents[] = "$xfielddataname|$xfielddatavalue";
				}
			}
				
			if($filecontents)
				$filecontents = implode( "||", $filecontents);
			else
				$filecontents = '';

			$db->query("UPDATE `".PREFIX."_users` SET xfields = '{$filecontents}' WHERE user_id = '{$user_info['user_id']}'");

			mozg_clear_cache_file('user_'.$user_info['user_id'].'/profile_'.$user_info['user_id']);
			
			exit;
		break;
		
		//Страница миниатюры
		case "miniature":
			
			$row = $db->super_query("SELECT avatar FROM `".PREFIX."_users` WHERE user_id = '{$user_info['user_id']}'");
			
			if($row['avatar']){
			
				$tpl->load_template('miniature/main.tpl');
				$tpl->set('{user-id}', $user_info['user_id']);
				$tpl->set('{ava}', $row['avatar']);
				$tpl->compile('content');
				
				AjaxTpl();
			
			} else
				echo '1';
			
			exit();
			
		break;
		
		//Сохранение миниатюры
		case "miniature_save":
			
			$row = $db->super_query("SELECT avatar FROM `".PREFIX."_users` WHERE user_id = '{$user_info['user_id']}'");

			$i_left = intval($_POST['i_left']);
			$i_top = intval($_POST['i_top']);
			$i_width = intval($_POST['i_width']);
			$i_height = intval($_POST['i_height']);

			if($row['avatar'] AND $i_width >= 100 AND $i_height >= 100 AND $i_left >= 0 AND $i_height >= 0){

				include_once ENGINE_DIR.'/classes/images.php';

				$tmb = new thumbnail(ROOT_DIR."/uploads/users/{$user_info['user_id']}/{$row['avatar']}");
				$tmb->size_auto($i_width."x".$i_height, 0, "{$i_left}|{$i_top}");
				$tmb->jpeg_quality(100);
				$tmb->save(ROOT_DIR."/uploads/users/{$user_info['user_id']}/100_{$row['avatar']}");
				
				$tmb = new thumbnail(ROOT_DIR."/uploads/users/{$user_info['user_id']}/100_{$row['avatar']}");
				$tmb->size_auto("100x100", 1);
				$tmb->jpeg_quality(100);
				$tmb->save(ROOT_DIR."/uploads/users/{$user_info['user_id']}/100_{$row['avatar']}");
				
				$tmb = new thumbnail(ROOT_DIR."/uploads/users/{$user_info['user_id']}/100_{$row['avatar']}");
				$tmb->size_auto("50x50");
				$tmb->jpeg_quality(100);
				$tmb->save(ROOT_DIR."/uploads/users/{$user_info['user_id']}/50_{$row['avatar']}");
				
				echo $user_info['user_id'];
			
			} else
				echo 'err';
			
			exit();
			
		break;
		
		//################### Загрузка обложки ###################//
		case "upload_cover":
		
			NoAjaxQuery();
			
			//Получаем данные о файле
			$image_tmp = $_FILES['uploadfile']['tmp_name'];
			$image_name = totranslit($_FILES['uploadfile']['name']); // оригинальное название для оприделения формата
			$image_rename = substr(md5($server_time+rand(1,100000)), 0, 20); // имя файла
			$image_size = $_FILES['uploadfile']['size']; // размер файла
			$type = end(explode(".", $image_name)); // формат файла
			
			$max_size = 1024 * 7000;

			//Проверка размера
			if($image_size <= $max_size){
				
				//Разришенные форматы
				$allowed_files = explode(', ', 'jpg, jpeg, jpe, png, gif');
				
				//Проверям если, формат верный то пропускаем
				if(in_array(strtolower($type), $allowed_files)){
					
					$res_type = strtolower('.'.$type);
					
					$upDir = ROOT_DIR."/uploads/users/{$user_info['user_id']}/";
					
					$rImg = $upDir.$image_rename.$res_type;
					
					if(move_uploaded_file($image_tmp, $rImg)){
						
						//Подключаем класс для фотографий
						include_once ENGINE_DIR.'/classes/images.php';
						
						//Создание маленькой копии
						$tmb = new thumbnail($rImg);
						$tmb->size_auto('900', 1);
						$tmb->jpeg_quality('100');
						$tmb->save($rImg);
						
						//Выводим и удаляем пред. обложку
						$row = $db->super_query("SELECT cover_image FROM `".PREFIX."_users` WHERE user_id = '{$user_info['user_id']}'");
						if($row){
							
							@unlink($upDir.$row['cover_image']);
							
						}

						$imgData = getimagesize($rImg);
						$rImgsData = round($imgData[1] / ($imgData[0] / 900));

						//Обновдяем обложку в базе
						$pos = round(($rImgsData / 2) - 100);
						
						if($rImgsData <= 320){
							$rImgsData = 320;
							$pos = 0;
						}
						
						$db->query("UPDATE `".PREFIX."_users` SET cover_image = '{$image_rename}{$res_type}', cover_position = '{$pos}' WHERE user_id = '{$user_info['user_id']}'");
						
						echo $user_info['user_id'].'/'.$image_rename.$res_type.'|'.$rImgsData;
						
						//Чистим кеш
						mozg_clear_cache_file("user_{$user_info['user_id']}/profile_{$user_info['user_id']}");
						
					}
					
				} else
					echo 2;
			
			} else
				echo 1;
		
			exit();
			
		break;
		
		//################### Сохранение новой позиции обложки ###################//
		case "savecoverpos":
			
			NoAjaxQuery();
						
			$pos = intval($_POST['cover_position']);
			if($pos < 0) $pos = 0;
			
			$db->query("UPDATE `".PREFIX."_users` SET cover_position = '{$pos}' WHERE user_id = '{$user_info['user_id']}'");
			
			//Чистим кеш
			mozg_clear_cache_file("user_{$user_info['user_id']}/profile_{$user_info['user_id']}");
						
			exit();
			
		break;
		
		//################### Удаление обложки ###################//
		case "delcover":
		
			NoAjaxQuery();

			//Выводим и удаляем пред. обложку
			$row = $db->super_query("SELECT cover_image FROM `".PREFIX."_users` WHERE user_id = '{$user_info['user_id']}'");
			if($row){
				
				$upDir = ROOT_DIR."/uploads/users/{$user_info['user_id']}/";				
				@unlink($upDir.$row['cover_image']);
							
			}
						
			$db->query("UPDATE `".PREFIX."_users` SET cover_position = '', cover_image = '' WHERE user_id = '{$user_info['user_id']}'");
			
			//Чистим кеш
			mozg_clear_cache_file("user_{$user_info['user_id']}/profile_{$user_info['user_id']}");
						
			exit();
			
		break;
		
		default:
		
			//Страница Редактирование основное
			
			$tpl->load_template('editprofile.tpl');
			
			$row = $db->super_query("SELECT name, lastname, gender, day, month, year, country, city FROM `".PREFIX."_users` WHERE user_id = '{$user_info['user_id']}'");
			
			$tpl->set('{name}', $row['name']);
			$tpl->set('{lastname}', $row['lastname']);
			
			$tpl->set('{gender}', installationSelected($row['gender'], '<option value="1">Male</option><option value="2">Female</option>'));
			
			$tpl->set('{user-day}', installationSelected($row['day'], '<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>'));
			
			$tpl->set('{user-month}', installationSelected($row['month'], '<option value="1">Января</option><option value="2">Февраля</option><option value="3">Марта</option><option value="4">Апреля</option><option value="5">Мая</option><option value="6">Июня</option><option value="7">Июля</option><option value="8">Августа</option><option value="9">Сентября</option><option value="10">Октября</option><option value="11">Ноября</option><option value="12">Декабря</option>'));
			
			$tpl->set('{user-year}', installationSelected($row['year'], '<option value="1930">1930</option><option value="1931">1931</option><option value="1932">1932</option><option value="1933">1933</option><option value="1934">1934</option><option value="1935">1935</option><option value="1936">1936</option><option value="1937">1937</option><option value="1938">1938</option><option value="1939">1939</option><option value="1940">1940</option><option value="1941">1941</option><option value="1942">1942</option><option value="1943">1943</option><option value="1944">1944</option><option value="1945">1945</option><option value="1946">1946</option><option value="1947">1947</option><option value="1948">1948</option><option value="1949">1949</option><option value="1950">1950</option><option value="1951">1951</option><option value="1952">1952</option><option value="1953">1953</option><option value="1954">1954</option><option value="1955">1955</option><option value="1956">1956</option><option value="1957">1957</option><option value="1958">1958</option><option value="1959">1959</option><option value="1960">1960</option><option value="1961">1961</option><option value="1962">1962</option><option value="1963">1963</option><option value="1964">1964</option><option value="1965">1965</option><option value="1966">1966</option><option value="1967">1967</option><option value="1968">1968</option><option value="1969">1969</option><option value="1970">1970</option><option value="1971">1971</option><option value="1972">1972</option><option value="1973">1973</option><option value="1974">1974</option><option value="1975">1975</option><option value="1976">1976</option><option value="1977">1977</option><option value="1978">1978</option><option value="1979">1979</option><option value="1980">1980</option><option value="1981">1981</option><option value="1982">1982</option><option value="1983">1983</option><option value="1984">1984</option><option value="1985">1985</option><option value="1986">1986</option><option value="1987">1987</option><option value="1988">1988</option><option value="1989">1989</option><option value="1990">1990</option><option value="1991">1991</option><option value="1992">1992</option><option value="1993">1993</option><option value="1994">1994</option><option value="1995">1995</option><option value="1996">1996</option><option value="1997">1997</option><option value="1998">1998</option><option value="1999">1999</option><option value="2000">2000</option><option value="2001">2001</option><option value="2002">2002</option><option value="2003">2003</option><option value="2004">2004</option><option value="2005">2005</option><option value="2006">2006</option><option value="2007">2007</option>'));
			
			
			//################## Загружаем Страны ##################//
			$sql_country = $db->super_query("SELECT SQL_CALC_FOUND_ROWS * FROM `".PREFIX."_country` ORDER by `name` ASC", true, "country", true);
			foreach($sql_country as $row_country)
				$all_country .= '<option value="'.$row_country['id'].'">'.stripslashes($row_country['name']).'</option>';
					
			$tpl->set('{country}', installationSelected($row['country'], $all_country));
			
			//################## Загружаем Города ##################//
			$sql_city = $db->super_query("SELECT SQL_CALC_FOUND_ROWS id, name FROM `".PREFIX."_city` WHERE id_country = '{$row['country']}' ORDER by `name` ASC", true, "country_city_".$row['country'], true);
			foreach($sql_city as $row2) 
				$all_city .= '<option value="'.$row2['id'].'">'.stripslashes($row2['name']).'</option>';

			$tpl->set('{city}', installationSelected($row['city'], $all_city));
			
			$xfields = profileload();
			
			$row = $db->super_query("SELECT xfields FROM `".PREFIX."_users` WHERE user_id = '".$user_info['user_id']."'");
			
			$xfieldsdata = xfieldsdataload($row['xfields']);
			
			foreach($xfields as $name => $value){
				
				$fieldvalue = $xfieldsdata[$value[0]];
				$fieldvalue = stripslashes($fieldvalue);
				
				$output .= "<div class=\"clear\" style=\"height:25px;\"></div>
<div class=\"profile_right_top\" style=\"padding:0px; line-height:10px;\">{$value[1]}:<div class=\"clear\" style=\"height:20px;\"></div>";
					
				$for_js_list .= "'xfields[{$value[0]}]': $('#{$value[0]}').val(), ";
					
				if($value[2] == "textarea"){  
					
					$output .= '<textarea id="'.$value[0].'" class="inpst" style="width:300px;height:50px;">'.myBrRn($fieldvalue).'</textarea>';
						
				} elseif($value[2] == "text"){  
					
					$output .= '<input type="text" id="'.$value[0].'" class="inpst" maxlength="100" value="'.$fieldvalue.'" style="width:300px;" />';
						
				} elseif($value[2] == "select"){  
					
					$output .= '<select class="inpst" id="'.$value[0].'">';
					$output .= '<option value="">- Not selected -</option>';
					
					foreach(explode("\r\n", $value[3]) AS $index => $value){

						$value = str_replace("'", "&#039;", $value);
						$output .= "<option value=\"$index\"" . ($fieldvalue == $value ? " selected" : "") . ">$value</option>\r\n";
						
					}
					
					$output .= '</select>';
					
				}
					
				$output .= '<div class="mgclr"></div>';

			}
			
			$for_js_list = substr($for_js_list, 0, (strlen($for_js_list)-2));
			
			$tpl->set('{xfields}', $output);
			$tpl->set('{for-js-list}', $for_js_list);
			$tpl->compile('content');
			$tpl->clear();
	}
	
} else {
	msgbox('', $lang['not_logged'], 'info');
}
?>