<?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("|", "|", $xfielddataname);
$xfielddatavalue = str_replace("|", "|", $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("'", "'", $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');
}
?>