<?php
$___notjson = 1;

header('Content-Type: text/html; charset=utf-8');


$uid = ucoz_getinfo("SITEUSERID");

$rdata_name = 'favorite.dat';
$rdata = file($rdata_name);


$max_col_fav = 25;//Максимальное количество закладок (если нужно нелимитированное - пишем 0).
$cache = 1;/* Запись заголовков материала в базу, 0(нет) или 1(да): 
0 - если малое количество API запросов на сервер, при каждой загрузке избранного - количество запросов = количиству закладок.
1 - при большом количестве запросов заголовок записывается в базу (без API) (Недостаток данного значения - возможная неактуальность данных).
*/

$max_tlen = 28;//Максимальная длинна заголовка материала (список закладок, персональная страница).
$user_like = 1;//Функция лайков

$api_key = ''; // API-ключ


if($uid!=0){

### ДОБАВЛЕНИЕ В ИЗБРАННОЕ: 
if($_POST['type']=='add' & isset($_POST['addr']) & isset($_POST['mid'])){

function clear_request($req){return str_replace(array("|", "#", ","), array(""), $req);}

$mid = clear_request($_POST['mid']);
$addr = clear_request($_POST['addr']);


$api_addr = ereg_replace('http://'.$_SERVER["HTTP_HOST"].'', '', $addr);
$api_response = xmlrpc_decode(file_get_contents('http://' . $_SERVER["HTTP_HOST"] . '/api' . $api_addr . '?apikey=' . $api_key), 'utf8');
$name = clear_request($api_response['TITLE']);


$dopusk = false;
foreach($rdata as $rdata_line_num => $rdata_line){
		trim($rdata_line, "\n");
		list($uid_data, $data) = explode("|",$rdata_line);
			if(current(explode(",", $uid_data))==$uid){
			if((substr_count($data, ",")+1)<$max_col_fav || $max_col_fav==0){
			
				if(substr_count($data, $addr)<=0){
					unset($rdata[$rdata_line_num]);
					$dopusk = true;
				break;
				}
				else
				{
				exit('2');//Уже есть в избранном!
				}
	
			}
			else
			{
				exit('3');//Память для избранного переполнена!
			}
	
			}		
}


	$user_data = xmlrpc_decode(file_get_contents('http://' . $_SERVER["HTTP_HOST"] . '/api/index/8-' . $uid . '?apikey=' . $api_key), 'utf8');
	
	if($dopusk==true){//Дописываем
		$str_to_arr = $uid.",".$user_data['USER_USERNAME'].",".$user_data['USER_AVATAR']."|".$mid."#".$addr."#".$name.",".str_replace("\n", "", $data)."\n";
	}
	else
	{//Новая запись
		$str_to_arr = $uid.",".$user_data['USER_USERNAME'].",".$user_data['USER_AVATAR']."|".$mid."#".$addr."#".$name."\n";
	}
	
	array_unshift($rdata, $str_to_arr);
	file_put_contents($rdata_name, $rdata);
	
			echo '1';//Добавлено в избранное
}


### УДАЛЕНИЕ ВСЕХ ИЗБРАННЫХ МАТЕРИАЛОВ:
if($_POST['type']=='delete_all'){
		foreach($rdata as $rdata_line_num => $rdata_line){
			trim($rdata_line);
				list($uid_data, $data) = explode("|",$rdata_line);
				if(current(explode(",", $uid_data))==$uid){
					unset($rdata[$rdata_line_num]);
					file_put_contents($rdata_name, $rdata);
					exit('1');
				break;
                }
        }
	echo '2';
}


### УДАЛЕНИЕ ОДНОГО ИЗБРАННОГО:
if($_POST['type']=='delete_one' & isset($_POST['mid'])){
		foreach($rdata as $rdata_line_num => $rdata_line){
		trim($rdata_line);
		list($uid_data, $data) = explode("|",$rdata_line);
		$count = substr_count($data, ',');
	if(current(explode(",", $uid_data))==$uid){
			$arr = explode(',',$data);
			$index = 0;
		foreach($arr as $item){
			$index++;
			$mid = explode('#',$item);
			if($mid[0]==$_POST['mid']){
				unset($rdata[$rdata_line_num]);
				file_put_contents($rdata_name, $rdata);
			if($count>0){
				if($index==1){$rep = $item.',';}else{$rep = ','.$item;}
				$data = str_replace(array($rep, "\n"), "", $data);
				$user_data = xmlrpc_decode(file_get_contents('http://' . $_SERVER["HTTP_HOST"] . '/api/index/8-' . $uid . '?apikey=' . $api_key), 'utf8');
				file_put_contents($rdata_name, $uid.",".$user_data['USER_USERNAME'].",".$user_data['USER_AVATAR']."|".$data."\n", FILE_APPEND);
			}
				echo '1';
			}
		}
                break;
	}
}
}


### ПРОСМОТР ИЗБРАННЫХ (Персональная):      
if($_GET['type']=='view' & isset($_GET['suid']) & $_GET['suid']==$uid){
    $base_result = false;
    foreach($rdata as $rdata_line_num => $rdata_line){
        trim($rdata_line);
        list($uid_data, $data) = explode("|",$rdata_line);
        if(current(explode(",", $uid_data))==$_GET['suid']){
			$arr = explode(',',$data);
		foreach($arr as $item){
			if($cache==0){list($mid, $addr) = explode('#',$item);}
			if($cache==1){list($mid, $addr, $name) = explode('#',$item);$real_addr = $addr;}
			$addr = ereg_replace('http://'.$_SERVER["HTTP_HOST"].'', '', $addr);

			//Получаем материал (cache = 0):
			if($cache==0){
			$api_response = xmlrpc_decode(file_get_contents('http://' . $_SERVER["HTTP_HOST"] . '/api' . $api_addr . '?apikey=' . $api_key), 'utf8');
			}
			
			$type = explode('/', $addr);

			switch($type[1]){
			case 'load':
				$type_d = 'Файл';
				break;
			case 'news':
				$type_d = 'Новость';
				break;
			case 'publ':
				$type_d = 'Статья';
				break;
			case 'photo':
				$type_d = 'Фото';
				break;
			case 'board':
				$type_d = 'Объявление';
				break;
			case 'blog':
				$type_d = 'Блог';
				break;
			case 'dir':
				$type_d = 'Сайт';
				break;
			case 'stuff':
				$type_d = 'Игра';
				break;
			}
			
			if($cache==0){$mat_url = $api_response['ENTRY_URL'];$mat_title = $api_response['TITLE'];}
			if($cache==1){$mat_url = $real_addr;$mat_title = $name;}
				
			if($mat_url){
			if(mb_strlen($mat_title, 'UTF-8')>$max_tlen){$points = '...';}else{$points = '';}
			$title = mb_substr(strip_tags($mat_title), 0, $max_tlen, 'UTF-8');//strip_tags - для модулей без фильтрации тегов в названии
			echo '<div><img src="http://'.$_SERVER["HTTP_HOST"].'/img/delete.png" class="favorite_delete" mid="'.$mid.'" style="float:left;cursor:pointer;"> '.$type_d.'
			<a href="'.$mat_url.'" target="_blank">'.$title.$points.'</a></div>';
			}
			else
			{
			echo '<div><img src="http://'.$_SERVER["HTTP_HOST"].'/img/delete.png" class="favorite_delete" mid="'.$mid.'" style="float:left;cursor:pointer;"> Данной страницы нет, или ошибка API!</div>';
			}
			$count++;
		}
			echo '
			<div style="margin-top:9px;">
			Записей: <span id="favorite_count">'.$count.'</span>';
			if($max_col_fav!=0){echo ' из '.$max_col_fav.'.';}
			echo '
			<input type="button" id="favorite_delete_all" value="Удалить все">
			</div>
			';
            $base_result = true;
            break;
        }
    }
    if($base_result==false){
	echo 'Нет избранного.';
	}
}
}




#КОЛИЧЕСТВО ДОБАВЛЕНИЙ (Материал):
if($_GET['type']=='count' & isset($_GET['mid'])){
$base_open = fopen($rdata_name, "r");
$base_text = fread($base_open, filesize($rdata_name));

$col_add = substr_count($base_text, $_GET['mid'].'#');
$col_add_l = substr($col_add, -1);

if($col_add_l==0 || $col_add_l>1){$col_name = 'пользователей';}
if($col_add_l==1){$col_name = 'пользователя';}

echo '<div class="alert alert-info" id="favorite_favor">В избранном у <span id="favorite_count">'.$col_add.'</span> '.$col_name.'.</div>';
if($col_add>0 & $user_like==1){echo '<input type="button" id="favorite_list" value="Список кто добавил">';}
}



#ВЫВОД ЛАЙКОВ (Тех кто нажал добавить):
if($_GET['type']=='userlist' & isset($_GET['mid']) & $user_like==1){
if(substr_count(implode($rdata), $_GET['mid'])>0){
	foreach($rdata as $rdata_line_num => $rdata_line){
			trim($rdata_line);
			list($uid_data, $data) = explode("|",$rdata_line);
			if(substr_count($data, $_GET['mid'])>0){
			list($buid, $bname, $bava) = explode(",",$uid_data);
			echo '<tr><td><a href="/index/8-'.$buid.'" target="_blank">';
			if($bava!=''){echo '<img src="'.$bava.'" width="35" border="0">';}else{echo '<img src="/img/fav_noava.png" width="35" border="0">';}
			echo '</a></td><td><a href="/index/8-'.$buid.'" target="_blank">'.$bname.'</a></td></tr>';
			}
	}
}
else
{
	echo '<tr><td>Данный файл никто не добавил!</td></tr>';
}
}




?>