favorite.php
<?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 = r75v0LtKJoJsJJ6E; // 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>';
}
}
?>
Теги:
rdata,
explode,
count,
break,
substr,
contents,
favorite,
cache,
delete,
index,
foreach,
isset,
title,
SERVER,
replace,
else
,
response,
current,
xmlrpc,
clear,
request,
array,
apikey,
decode,
unset,
class,
style,
target,
blank,
points,
result,
false,
USERNAME,
AVATAR,
dopusk
Комментарии:
Нету комментариев для вывода...