Update
This commit is contained in:
parent
e52734ee17
commit
814854576c
@ -17,7 +17,6 @@ require_once "include/functions.php";
|
|||||||
$srv = $user_settings['instance'];
|
$srv = $user_settings['instance'];
|
||||||
|
|
||||||
if (isset($_GET['action']) && $_GET['action'] == "settings"){
|
if (isset($_GET['action']) && $_GET['action'] == "settings"){
|
||||||
//file_put_contents("settings.txt",var_export($_GET,true));
|
|
||||||
|
|
||||||
foreach($_GET as $key => $value){
|
foreach($_GET as $key => $value){
|
||||||
switch($key){
|
switch($key){
|
||||||
|
@ -1,738 +0,0 @@
|
|||||||
<?php
|
|
||||||
ini_set("log_errors", 1);
|
|
||||||
$srv = $user_settings['instance'];
|
|
||||||
//$token = ($token != false ? msc($token,'d') : false);
|
|
||||||
$token = ($token != false ? $token : false);
|
|
||||||
|
|
||||||
function msc($string, $action = 'e') {
|
|
||||||
// you may change these values to your own
|
|
||||||
$secret_key = 'yAmfVhZwm0749FSY24dC';
|
|
||||||
$secret_iv = 'm37uvAeKjYLKdI1lPkcJ';
|
|
||||||
|
|
||||||
$output = false;
|
|
||||||
$encrypt_method = "AES-256-CBC";
|
|
||||||
$key = hash('sha256', $secret_key);
|
|
||||||
$iv = substr(hash('sha256', $secret_iv) , 0, 16);
|
|
||||||
|
|
||||||
if ($action == 'e') {
|
|
||||||
$output = base64_encode(openssl_encrypt($string, $encrypt_method, $key, 0, $iv));
|
|
||||||
}
|
|
||||||
else if ($action == 'd') {
|
|
||||||
$output = openssl_decrypt(base64_decode($string) , $encrypt_method, $key, 0, $iv);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $output;
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_urls($input) {
|
|
||||||
$pattern = '$(https?://[a-z0-9_./?=&-~]+)(?![^<>]*>)$i'; // refine this for better/more specific results
|
|
||||||
if (preg_match_all($pattern, $input, $matches)) {
|
|
||||||
list($dummy, $links) = ($matches);
|
|
||||||
return $links;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function emoji($text, $size = 30, $srv) {
|
|
||||||
$data = json_decode(file_get_contents("https://$srv/api/v1/custom_emojis") , true) [0]['url'];
|
|
||||||
$u = explode("/", $data);
|
|
||||||
array_pop($u);
|
|
||||||
$url = implode("/", $u);
|
|
||||||
$text = str_replace("http:", "http;", $text);
|
|
||||||
$text = str_replace("https:", "https;", $text);
|
|
||||||
$text = preg_replace('~:([a-z0-9_]+):~', "<img src='$url/$1.png' height=$size style='vertical-align: middle;'>", $text);
|
|
||||||
$text = str_replace("http;", "http:", $text);
|
|
||||||
$text = str_replace("https;", "https:", $text);
|
|
||||||
return $text;
|
|
||||||
}
|
|
||||||
|
|
||||||
function emojify($string, $emojis, $size = 40) {
|
|
||||||
foreach ($emojis as $emoji) {
|
|
||||||
$string = str_replace(":" . $emoji['shortcode'] . ":", "<img alt='" . $emoji['shortcode'] . "' title='" . $emoji['shortcode'] . "' src='" . $emoji['static_url'] . "' height=$size style='vertical-align: middle;'>", $string);
|
|
||||||
}
|
|
||||||
return $string;
|
|
||||||
}
|
|
||||||
|
|
||||||
function context($post) {
|
|
||||||
global $srv;
|
|
||||||
global $token;
|
|
||||||
|
|
||||||
$curl = curl_init();
|
|
||||||
curl_setopt($curl, CURLOPT_URL, "https://$srv/api/v1/statuses/$post/context");
|
|
||||||
if (!is_null($token)) {
|
|
||||||
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
|
|
||||||
'Authorization: Bearer ' . $token
|
|
||||||
));
|
|
||||||
}
|
|
||||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
|
||||||
$result = curl_exec($curl);
|
|
||||||
curl_close($curl);
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function averageColor($url) {
|
|
||||||
@$image = imagecreatefromstring(file_get_contents($url));
|
|
||||||
|
|
||||||
if (!$image) {
|
|
||||||
$mainColor = "CCCCCC";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$thumb = imagecreatetruecolor(1, 1);
|
|
||||||
imagecopyresampled($thumb, $image, 0, 0, 0, 0, 1, 1, imagesx($image) , imagesy($image));
|
|
||||||
$mainColor = strtoupper(dechex(imagecolorat($thumb, 0, 0)));
|
|
||||||
}
|
|
||||||
|
|
||||||
return $mainColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
function user_info($user) {
|
|
||||||
global $user_settings;
|
|
||||||
$info = api_get("accounts/" . $user);
|
|
||||||
$rel = api_get("accounts/relationships?id=" . $user);
|
|
||||||
return array(
|
|
||||||
$info,
|
|
||||||
$rel
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function api_get($url) {
|
|
||||||
global $srv;
|
|
||||||
global $token;
|
|
||||||
|
|
||||||
$curl = curl_init();
|
|
||||||
curl_setopt($curl, CURLOPT_URL, "https://$srv/api/v1/" . $url);
|
|
||||||
if (!is_null($token)) {
|
|
||||||
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
|
|
||||||
'Authorization: Bearer ' . $token
|
|
||||||
));
|
|
||||||
}
|
|
||||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
|
||||||
$result = curl_exec($curl);
|
|
||||||
curl_close($curl);
|
|
||||||
return json_decode($result, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
function api_post($url, $array) {
|
|
||||||
global $srv;
|
|
||||||
global $token;
|
|
||||||
|
|
||||||
$cSession = curl_init();
|
|
||||||
curl_setopt($cSession, CURLOPT_HEADER, false);
|
|
||||||
curl_setopt($cSession, CURLOPT_POST, 1);
|
|
||||||
curl_setopt($cSession, CURLOPT_URL, "https://$srv/api/v1/" . $url);
|
|
||||||
if (!is_null($token)) {
|
|
||||||
curl_setopt($cSession, CURLOPT_HTTPHEADER, array(
|
|
||||||
'Authorization: Bearer ' . $token
|
|
||||||
));
|
|
||||||
}
|
|
||||||
curl_setopt($cSession, CURLOPT_POSTFIELDS, http_build_query($array));
|
|
||||||
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
$result = curl_exec($cSession);
|
|
||||||
curl_close($cSession);
|
|
||||||
|
|
||||||
return json_decode($result, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
function api_delete($url, $array) {
|
|
||||||
global $srv;
|
|
||||||
global $token;
|
|
||||||
|
|
||||||
$cSession = curl_init();
|
|
||||||
curl_setopt($cSession, CURLOPT_HEADER, false);
|
|
||||||
curl_setopt($cSession, CURLOPT_POST, 1);
|
|
||||||
curl_setopt($cSession, CURLOPT_URL, "https://$srv/api/v1/" . $url);
|
|
||||||
curl_setopt($cSession, CURLOPT_CUSTOMREQUEST, "DELETE");
|
|
||||||
if (!is_null($token)) {
|
|
||||||
curl_setopt($cSession, CURLOPT_HTTPHEADER, array(
|
|
||||||
'Authorization: Bearer ' . $token
|
|
||||||
));
|
|
||||||
}
|
|
||||||
curl_setopt($cSession, CURLOPT_POSTFIELDS, http_build_query($array));
|
|
||||||
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
$result = curl_exec($cSession);
|
|
||||||
curl_close($cSession);
|
|
||||||
|
|
||||||
return json_decode($result, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
function render_reply($item) {
|
|
||||||
global $user_settings;
|
|
||||||
global $logedin;
|
|
||||||
global $srv;
|
|
||||||
|
|
||||||
$reply['mode'] = "";
|
|
||||||
if (isset($item['type']) && $item['type'] == 'ancestor') {
|
|
||||||
$reply['mode'] = "ancestor";
|
|
||||||
}
|
|
||||||
|
|
||||||
$reply['id'] = $item['id'];
|
|
||||||
$reply['uid'] = $item['account']['id'];
|
|
||||||
$reply['name'] = emojify($item['account']['display_name'], $item['account']['emojis'], 15);
|
|
||||||
$reply['acct'] = $item['account']['acct'];
|
|
||||||
$reply['avatar'] = $item['account']['avatar'];
|
|
||||||
|
|
||||||
$reply['menu'] = "<ul>";
|
|
||||||
if ($logedin) {
|
|
||||||
$reply['menu'] .= ($item['account']['id'] == $user_settings['uid'] ? "<li><a href='?action=delete&thread=" . $item['id'] . "' onClick='return false;' class='delete fontello' id='" . $item['id'] . "'> Delete Post</a></li>" : "");
|
|
||||||
|
|
||||||
$reply['menu'] .= ($item['account']['id'] != $user_settings['uid'] ? "<li><a href='?action=mute&user=" . $item['account']['id'] . "' onClick='return false;' class='mute fontello' id='" . $item['account']['id'] . "' style='background-color:transparent;'> Mute User</a></li>" : "");
|
|
||||||
|
|
||||||
$reply['menu'] .= ($item['account']['id'] != $user_settings['uid'] ? "<li><a href='?action=nsfw&user=" . $item['account']['id'] . "' onClick='return false;' class='nsfw fontello' id='" . $item['account']['id'] . "' style='background-color:transparent;'> User is NSFW</a></li>" : "");
|
|
||||||
}
|
|
||||||
|
|
||||||
$reply['menu'] .= "<li><a target='_blank' href='" . $item['url'] . "' class='link fontello' style='background-color:transparent;'> Original Note</a></li>";
|
|
||||||
|
|
||||||
$reply['menu'] .= "</ul>";
|
|
||||||
|
|
||||||
$json['id'] = $item['id'];
|
|
||||||
$json['scope'] = $item['visibility'];
|
|
||||||
if ($logedin) {
|
|
||||||
$json['mentions'] = "";
|
|
||||||
$array = $item["mentions"];
|
|
||||||
$json['mentions'] = ($user_settings['acct'] == $item["account"]['acct'] ? "" : "@" . $item["account"]['acct']) . " ";
|
|
||||||
if (!empty($array)) {
|
|
||||||
foreach ($array as $mnt) {
|
|
||||||
if ($mnt['acct'] != $user_settings['acct']) {
|
|
||||||
$json['mentions'] .= "@" . $mnt['acct'] . " ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$reply['json'] = json_encode($json);
|
|
||||||
|
|
||||||
$reply['replyto'] = ($item['in_reply_to_id'] ? " <a class='fontello link preview ldr' target='_blank' id='" . $item['in_reply_to_id'] . "' href='?thread=" . $item['in_reply_to_id'] . "'></a> " : "");
|
|
||||||
$reply['text'] = processText($item);
|
|
||||||
|
|
||||||
$public = "";
|
|
||||||
$private = "";
|
|
||||||
$unlisted = "";
|
|
||||||
$direct = "";
|
|
||||||
|
|
||||||
$reply['date'] = "<a style='text-decoration:none;color:darkgray;' target='_blank' href='" . $item['url'] . "'><span class='fontello'></span></a> - <a class='ldr' style='text-decoration:none;color:darkgray;' target='_blank' href='?thread=" . $item['id'] . "&instance=$srv" . "'>" . date("d/m/y H:i", strtotime($item['created_at'])) . "</a> - <span class='fontello' style='color:darkgray;'>" . $$item['visibility'] . "</span>";
|
|
||||||
|
|
||||||
$reply['media'] = "";
|
|
||||||
if (!empty($item['media_attachments'])) {
|
|
||||||
$reply['media'] = "<div style='width:170px; display:inline-block; float:left; margin-right:15px; '>";
|
|
||||||
$images = count($item['media_attachments']);
|
|
||||||
$class = ($images > 1 ? "class='icon'" : "");
|
|
||||||
foreach ($item['media_attachments'] as $file) {
|
|
||||||
$ext = explode(".", $file['url']);
|
|
||||||
$ext = end($ext);
|
|
||||||
$ext = explode("?", $ext) [0];
|
|
||||||
if ($ext == 'mp4' || $ext == 'webm') {
|
|
||||||
$reply['media'] .= "<div style='text-align:center; width:100%;'><video preload='metadata' width='100%' controls loop>
|
|
||||||
<source src='" . $file['url'] . "' type='video/$ext'>
|
|
||||||
</video></div>
|
|
||||||
";
|
|
||||||
}
|
|
||||||
elseif ($ext == 'mp3' || $ext == 'ogg') {
|
|
||||||
$reply['media'] .= "<div style='text-align:center; width:100%;'><audio controls>
|
|
||||||
<source src='" . $file['url'] . "' type='audio/$ext'>
|
|
||||||
Your browser does not support the audio tag.
|
|
||||||
</audio> </div>";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if ($item['sensitive'] == true && $user_settings['explicit'] != 'off') {
|
|
||||||
$reply['media'] .= "<div style='overflow:hidden; float:left; margin:2px;' $class><a target='_blank' href='" . $file['url'] . "' onClick='return false;' class='blur'><noscript><img src='" . $file['url'] . "' style='width:100%;'></noscript><img " . "data-src='" . $file['url'] . "'" . " class='' style='max-width:100%; max-height:100% vertical-align:middle;'></a><a target='_blank' href='" . $file['url'] . "' onClick='return false;' class='open-lightbox' style='display:none;'><img src='" . $file['url'] . "' class='' style='width:100%;'></a></div>";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$reply['media'] .= "<div style='margin:0px;' $class><a target='_blank' href='" . $file['url'] . "' onClick='return false;' class='open-lightbox'><img src='" . $file['url'] . "'" . " class='' style='max-width:100%; max-height:100%; vertical-align:middle;'><noscript><img src='" . $file['url'] . "' style='width:100%;'></noscript></a></div>";
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$reply['media'] .= "</div>";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$reply['buttons'] = "
|
|
||||||
" . ($logedin ? "<div class='felem'><a onClick='return false' class='replyform' href='?thread=" . $item['id'] . "' style='font-family:fontello'></a></div>" : "") . "
|
|
||||||
<div class='felem'><a onClick='return false' " . ($logedin ? "class='" . ($item['favourited'] == true ? "unfav" : "fav") . "' href='?action=fav&thread=" . $item['id'] . "'" : "") . " style='font-family:fontello'> <span>" . $item['favourites_count'] . "</span></a></div>
|
|
||||||
<div class='felem'><a onClick='return false' " . ($logedin && $item['visibility'] == "public" ? "class='" . ($item['reblogged'] == true ? "unreblog" : "reblog") . "' href='?action=reblog&thread=" . $item['id'] . "'" : "") . " style='font-family:fontello'> <span>" . $item['reblogs_count'] . "</span></a></div>
|
|
||||||
";
|
|
||||||
|
|
||||||
$result = file_get_contents("templates/reply.txt");
|
|
||||||
|
|
||||||
foreach ($reply as $key => $elem) {
|
|
||||||
$result = str_replace(":$key:", $elem, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function favourite($post, $mode) {
|
|
||||||
$result = api_post(($mode == true ? "statuses/$post/favourite" : "statuses/$post/unfavourite"),array());
|
|
||||||
|
|
||||||
if (isset($result['favourites_count'])) {
|
|
||||||
return $result['favourites_count'];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return "error";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function reblog($post, $mode) {
|
|
||||||
$result = api_post(($mode == true ? "statuses/$post/reblog" : "statuses/$post/unreblog"),array());
|
|
||||||
if (isset($result['reblog']['reblogs_count'])) {
|
|
||||||
return $result['reblog']['reblogs_count'];
|
|
||||||
}
|
|
||||||
elseif (isset($result['reblogs_count'])) {
|
|
||||||
return $result['reblogs_count'];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return "error";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function delpost($id) {
|
|
||||||
global $srv;
|
|
||||||
global $token;
|
|
||||||
|
|
||||||
if (!is_null($token)) {
|
|
||||||
$curl = curl_init();
|
|
||||||
curl_setopt($curl, CURLOPT_HEADER, false);
|
|
||||||
curl_setopt($curl, CURLOPT_POST, 1);
|
|
||||||
curl_setopt($curl, CURLOPT_URL, "https://$srv/api/v1/statuses/$id");
|
|
||||||
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
|
|
||||||
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
|
|
||||||
'Authorization: Bearer ' . $token
|
|
||||||
));
|
|
||||||
|
|
||||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
|
||||||
$result = curl_exec($curl);
|
|
||||||
curl_close($curl);
|
|
||||||
$result = json_decode($result, true);
|
|
||||||
if (empty($result)) {
|
|
||||||
return "1";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return "0";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function sendpost($text, $media, $reply, $markdown = false, $scope, $sensitive, $spoiler = false) {
|
|
||||||
global $srv;
|
|
||||||
global $token;
|
|
||||||
if (!is_null($token)) {
|
|
||||||
|
|
||||||
$cSession = curl_init();
|
|
||||||
curl_setopt($cSession, CURLOPT_URL, "https://$srv/api/v1/statuses");
|
|
||||||
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
curl_setopt($cSession, CURLOPT_POST, 1);
|
|
||||||
curl_setopt($cSession, CURLOPT_HTTPHEADER, array(
|
|
||||||
'Authorization: Bearer ' . $token
|
|
||||||
));
|
|
||||||
$query = "";
|
|
||||||
$query .= "status=" . urlencode(html_entity_decode($text, ENT_QUOTES)) . "&visibility=" . $scope;;
|
|
||||||
if (!is_null($reply) && $reply != "null") {
|
|
||||||
$query .= "&in_reply_to_id=" . $reply;
|
|
||||||
}
|
|
||||||
if ($markdown == true) {
|
|
||||||
$query .= "&content_type=text/markdown";
|
|
||||||
}
|
|
||||||
if ($sensitive == 'true') {
|
|
||||||
$query .= "&sensitive=true";
|
|
||||||
}
|
|
||||||
if ($spoiler == true) {
|
|
||||||
$query .= "&spoiler_text=" . $spoiler;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_null($media)) {
|
|
||||||
foreach ($media as $mid) {
|
|
||||||
$query .= "&media_ids[]=" . $mid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
file_put_contents("query.txt",var_export($query,true));
|
|
||||||
|
|
||||||
curl_setopt($cSession, CURLOPT_POSTFIELDS, $query);
|
|
||||||
$result = curl_exec($cSession);
|
|
||||||
curl_close($cSession);
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function uploadpic($file) {
|
|
||||||
global $srv;
|
|
||||||
global $token;
|
|
||||||
if (!is_null($token)) {
|
|
||||||
$mime = get_mime($file);
|
|
||||||
$info = pathinfo($file);
|
|
||||||
$name = $info['basename'];
|
|
||||||
$output = new CURLFile($file, $mime, $name);
|
|
||||||
|
|
||||||
do {
|
|
||||||
$cSession = curl_init();
|
|
||||||
curl_setopt($cSession, CURLOPT_URL, "https://$srv/api/v1/media");
|
|
||||||
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
curl_setopt($cSession, CURLOPT_POST, 1);
|
|
||||||
curl_setopt($cSession, CURLOPT_HTTPHEADER, array(
|
|
||||||
'Authorization: Bearer ' . $token
|
|
||||||
));
|
|
||||||
curl_setopt($cSession, CURLOPT_POSTFIELDS, array(
|
|
||||||
'file' => $output
|
|
||||||
));
|
|
||||||
$result = curl_exec($cSession);
|
|
||||||
} while (empty($result));
|
|
||||||
curl_close($cSession);
|
|
||||||
$array = json_decode($result, true);
|
|
||||||
|
|
||||||
$ext = explode(".", $array['url']);
|
|
||||||
$ext = end($ext);
|
|
||||||
$ext = explode("?", $ext) [0];
|
|
||||||
|
|
||||||
if (in_array($ext, array(
|
|
||||||
'jpg',
|
|
||||||
'jpeg',
|
|
||||||
'gif',
|
|
||||||
'png',
|
|
||||||
'svg'
|
|
||||||
))) {
|
|
||||||
$file = $array['url'];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$file = "img/doc.png";
|
|
||||||
}
|
|
||||||
return json_encode(array(
|
|
||||||
$array['id'],
|
|
||||||
$file
|
|
||||||
));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function register_app($instance) {
|
|
||||||
global $setting;
|
|
||||||
|
|
||||||
$cSession = curl_init();
|
|
||||||
curl_setopt($cSession, CURLOPT_URL, "https://$instance/api/v1/apps");
|
|
||||||
curl_setopt($cSession, CURLOPT_RETURNTRANSFER, true);
|
|
||||||
curl_setopt($cSession, CURLOPT_HEADER, false);
|
|
||||||
curl_setopt($cSession, CURLOPT_POST, 1);
|
|
||||||
curl_setopt($cSession, CURLOPT_POSTFIELDS, http_build_query(array(
|
|
||||||
'client_name' => $setting['appname'],
|
|
||||||
'redirect_uris' => $setting['url'],
|
|
||||||
'scopes' => 'read write follow'
|
|
||||||
)));
|
|
||||||
$result = curl_exec($cSession);
|
|
||||||
curl_close($cSession);
|
|
||||||
|
|
||||||
return json_decode($result, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getnotif($id = false, $max = false) {
|
|
||||||
global $srv;
|
|
||||||
global $token;
|
|
||||||
global $user_settings;
|
|
||||||
$n = "";
|
|
||||||
$notif = api_get("notifications?" . ($id == false ? "limit=9&" : "") . ($id != false ? ($max == true ? "max_id=$id" : "since_id=$id") : ""));
|
|
||||||
if (!empty($notif)) {
|
|
||||||
foreach ($notif as $post) {
|
|
||||||
$user = "<a class='link ldr' style='font-size:12px;' href='?user=" . $post['account']['id'] . "'>" . emojify($post['account']['display_name'], $post['account']['emojis'], 10) . "</a>";
|
|
||||||
$preview = "";
|
|
||||||
$buttons = "";
|
|
||||||
$media = "";
|
|
||||||
|
|
||||||
switch ($post["type"]) {
|
|
||||||
case "mention":
|
|
||||||
if ($post['status']['in_reply_to_id'] == null) {
|
|
||||||
$type = "<span class='fontello' style='color:#62C2CC; font-size:10px;'></span>";
|
|
||||||
$string = "mentioned you in a post";
|
|
||||||
$preview = "<a style='text-decoration:none;' class='ldr' href='?thread=" . $post['status']['id'] . "' target='_blank'><span style='display:block; opacity:1; font-size:10px; color:black; line-height:12px;'>" . emojify(strip_tags(trim($post['status']['content']) , '<br><br \>') , $post['status']['emojis'], 15) . "</span></a>";
|
|
||||||
$media = (!empty($post['status']['media_attachments']) ? "<a style='text-decoration:none;' class='ldr' href='?thread=" . $post['status']['id'] . "' target='_blank'><div style='flex: 0 0 60px; background-size:cover; background-image:url(" . $post['status']['media_attachments'][0]['url'] . ");'></div></a>" : "");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$type = "<span class='fontello' style='color:#62C2CC; font-size:10px;'></span>";
|
|
||||||
$string = "replied to your post";
|
|
||||||
$preview = "<a style='text-decoration:none;' class='ldr' href='?thread=" . $post['status']['id'] . "' target='_blank'><span style='display:block; opacity:1; font-size:10px; color:black; line-height:12px;'>" . emojify(strip_tags(trim($post['status']['content']) , '<br><br \>') , $post['status']['emojis'], 15) . "</span></a>";
|
|
||||||
$media = (!empty($post['status']['media_attachments']) ? "<div style='flex: 0 0 60px; background-size:cover; background-image:url(" . $post['status']['media_attachments'][0]['url'] . ");'></div>" : "");
|
|
||||||
}
|
|
||||||
|
|
||||||
$array = $post['status']["mentions"];
|
|
||||||
$mentions = ($user_settings['acct'] == $post['status']['account']['acct'] ? "" : "@" . $post['status']['account']['acct']) . " ";
|
|
||||||
if (!empty($array)) {
|
|
||||||
foreach ($array as $mnt) {
|
|
||||||
if ($mnt['acct'] != $user_settings['acct']) {
|
|
||||||
$mentions .= "@" . $mnt['acct'] . " ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$buttons = "<div class='post_buttons' id='" . $post['status']['id'] . "' style='position:absolute; right:10px; bottom:10px; background-color:white; border-radius:60px; padding:5px;'>
|
|
||||||
<div class='felem'><a onClick='return false' class='quickreply' id='" . $post['status']['id'] . "' data-mentions='" . $mentions . "' href='?thread=" . $post['status']['id'] . "' style='font-family:fontello'></a></div>
|
|
||||||
<div class='felem'><a onClick='return false' class='" . ($post['status']['favourited'] == true ? "unfav" : "fav") . "' href='?action=fav&thread=" . $post['status']['id'] . "'" . " style='font-family:fontello'></a></div>
|
|
||||||
<div class='felem'><a onClick='return false' " . ($post['status']['visibility'] == "public" || $post['status']['visibility'] == "unlisted" ? "class='" . ($post['status']['reblogged'] == true ? "unreblog" : "reblog") . "' href='?action=reblog&thread=" . $post['status']['id'] . "'" : "") . " style='font-family:fontello'></a></div></div>";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "favourite":
|
|
||||||
$type = "<span class='fontello' style='color:#F17022; font-size:10px;'></span>";
|
|
||||||
$string = "favourited your post";
|
|
||||||
$preview = "<a style='text-decoration:none;' class='ldr' href='?thread=" . $post['status']['id'] . "' target='_blank'><span style='display:block; opacity:1; font-size:10px; color:black; line-height:12px;'>" . (!empty($post['status']['content']) ? emojify(strip_tags(trim($post['status']['content']) , '<br><br \>') , $post['status']['emojis'], 15) : "Favourited your image") . "</span></a>";
|
|
||||||
$media = (!empty($post['status']['media_attachments']) ? "<div style='flex: 0 0 60px; background-size:cover; background-image:url(" . $post['status']['media_attachments'][0]['url'] . ");'></div>" : "");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "reblog":
|
|
||||||
$type = "<span class='fontello' style='color:#D1DC29; font-size:10px;'></span>";
|
|
||||||
$string = "reblogged your post";
|
|
||||||
$preview = "<a style='text-decoration:none;' class='ldr' href='?thread=" . $post['status']['id'] . "' target='_blank'><span style='display:block; opacity:1; font-size:10px; color:black; line-height:12px;'>" . (!empty($post['status']['content']) ? emojify(strip_tags(trim($post['status']['content']) , '<br><br \>') , $post['status']['emojis'], 15) : "Reblogged your image") . "</span></a>";
|
|
||||||
@$media = (!is_null($post['status']['media_attachments']) ? "<div style='flex: 0 0 60px; background-size:cover; background-image:url(" . $post['status']['media_attachments'][0]['url'] . ");'></div>" : "");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "pleroma:emoji_reaction":
|
|
||||||
$type = "<span class='fontello' style='color:#F17022; font-size:10px;'></span>";
|
|
||||||
$string = "favourited your post";
|
|
||||||
$preview = "<a style='text-decoration:none;' class='ldr' href='?thread=" . $post['status']['id'] . "' target='_blank'><span style='display:block; opacity:1; font-size:10px; color:black; line-height:12px;'>" . (!empty($post['status']['content']) ? emojify(strip_tags(trim($post['status']['content']) , '<br><br \>') , $post['status']['emojis'], 15) : "Favourited your image") . "</span></a>";
|
|
||||||
$media = (!empty($post['status']['media_attachments']) ? "<div style='flex: 0 0 60px; background-size:cover; background-image:url(" . $post['status']['media_attachments'][0]['url'] . ");'></div>" : "");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "follow":
|
|
||||||
$type = "<span class='fontello' style='color:#FDB813; font-size;10px;'></span>";
|
|
||||||
$string = "started following you";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
$n .= "
|
|
||||||
<div class='notif " . ($id == false ? "" : "new") . "' id='" . $post['id'] . "'>
|
|
||||||
<div class='notifContents'>
|
|
||||||
<div style='flex: 0 0 60px; background-size:cover; background-image:url(" . $post['account']['avatar'] . "); border-radius:5px;'></div>
|
|
||||||
<div style='flex: 1; padding-left:5px; padding-right:5px; word-break: break-word; overflow:hidden;'>
|
|
||||||
<span>$type <span style='font-size:12px; font-weight:bold;'>$user</span></span>
|
|
||||||
" . trim($preview) . "
|
|
||||||
$buttons
|
|
||||||
</div>
|
|
||||||
$media
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
";
|
|
||||||
|
|
||||||
}
|
|
||||||
return $n;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getnotes($thread) {
|
|
||||||
global $user_settings;
|
|
||||||
global $token;
|
|
||||||
global $srv;
|
|
||||||
global $setting;
|
|
||||||
global $logedin;
|
|
||||||
@$reb = array(
|
|
||||||
json_decode(file_get_contents("https://$srv/api/v1/statuses/" . $thread . "/reblogged_by") , true)
|
|
||||||
);
|
|
||||||
@$fab = array(
|
|
||||||
json_decode(file_get_contents("https://$srv/api/v1/statuses/" . $thread . "/favourited_by") , true)
|
|
||||||
);
|
|
||||||
$limit = (count($reb[0]) > count($fab[0]) ? count($reb[0]) - 1 : count($fab[0]) - 1);
|
|
||||||
|
|
||||||
$notes = array();
|
|
||||||
$index = 0;
|
|
||||||
|
|
||||||
for ($i = 0;$i <= $limit;$i++) {
|
|
||||||
if (isset($reb[0][$i])) {
|
|
||||||
$notes[$index][0] = "reb";
|
|
||||||
$notes[$index][1] = $reb[0][$i];
|
|
||||||
$index++;
|
|
||||||
}
|
|
||||||
if (isset($fab[0][$i])) {
|
|
||||||
$notes[$index][0] = "fav";
|
|
||||||
$notes[$index][1] = $fab[0][$i];
|
|
||||||
$index++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $notes;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getreplies($thread, $since = false) {
|
|
||||||
global $user_settings;
|
|
||||||
global $token;
|
|
||||||
global $srv;
|
|
||||||
global $setting;
|
|
||||||
global $logedin;
|
|
||||||
$context = json_decode(context($thread) , true);
|
|
||||||
$array = array();
|
|
||||||
if (!empty($context['ancestors'])) {
|
|
||||||
if ($since == false) {
|
|
||||||
foreach ($context['ancestors'] as $elem) {
|
|
||||||
$elem['type'] = 'ancestor';
|
|
||||||
$array[] = $elem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$flag = 0;
|
|
||||||
if (!empty($context['descendants'])) {
|
|
||||||
foreach ($context['descendants'] as $elem) {
|
|
||||||
if (($since != false && $flag == 1) || $since == false) {
|
|
||||||
$elem['type'] = 'descendant';
|
|
||||||
$array[] = $elem;
|
|
||||||
}
|
|
||||||
if ($since != false && $elem['id'] == $since) {
|
|
||||||
$flag = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$replies = array();
|
|
||||||
|
|
||||||
foreach ($array as $item) {
|
|
||||||
$reply['mode'] = "";
|
|
||||||
if ($item['type'] == 'ancestor') {
|
|
||||||
$reply['mode'] = "ancestor";
|
|
||||||
}
|
|
||||||
|
|
||||||
$replies[] = array(
|
|
||||||
'mode' => $reply['mode'],
|
|
||||||
'content' => $item
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $replies;
|
|
||||||
}
|
|
||||||
|
|
||||||
function timeline($query) {
|
|
||||||
global $token;
|
|
||||||
global $srv;
|
|
||||||
|
|
||||||
$notes = "";
|
|
||||||
$media = ($query['text'] == "on" ? "" : "&only_media=true");
|
|
||||||
$next = ($query['next'] ? "&max_id=" . $query['next'] : ($query['since'] ? "&since_id=" . $query['since'] : ""));
|
|
||||||
|
|
||||||
switch ($query['mode']) {
|
|
||||||
case "home":
|
|
||||||
$array = api_get("timelines/home?limit=25{$media}{$next}");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "federated":
|
|
||||||
$array = api_get("timelines/public?limit=25{$media}{$next}");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "tag":
|
|
||||||
$array = api_get("timelines/tag/" . $query['tag'] . "?limit=25{$media}{$next}");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "local":
|
|
||||||
$array = api_get("timelines/public?limit=25&local=true{$media}{$next}");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "user":
|
|
||||||
$array = api_get("accounts/" . $query['user'] . "/statuses?limit=25{$media}{$next}");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "thread":
|
|
||||||
$array = array(
|
|
||||||
api_get("statuses/" . $query['thread'])
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "favourites":
|
|
||||||
$array = api_get("favourites?limit=25{$media}{$next}");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "direct":
|
|
||||||
$array = api_get("timelines/direct?limit=25{$next}");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "list":
|
|
||||||
$array = api_get("timelines/list/" . $query['list'] . "?limit=25{$next}");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "bookmarks":
|
|
||||||
$array = api_get("bookmarks?limit=25{$next}");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "account":
|
|
||||||
$info = api_get("accounts/verify_credentials");
|
|
||||||
$array = api_get("accounts/" . $info['id'] . "/statuses?limit=25{$media}{$next}");
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
$array = api_get("timelines/public?limit=25{$media}{$next}");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_array($array)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$next = end($array) ['id'];
|
|
||||||
$thread = array();
|
|
||||||
|
|
||||||
foreach ($array as $elem) {
|
|
||||||
if ($query['replies'] == "on" || $query['mode'] == "thread") {
|
|
||||||
$thread[] = $elem;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if ($elem['in_reply_to_id'] == null) {
|
|
||||||
$thread[] = $elem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return array(
|
|
||||||
$thread,
|
|
||||||
$next
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function processText($elem) {
|
|
||||||
global $user_settings;
|
|
||||||
require_once "vendor/simple_html_dom.php";
|
|
||||||
$content = trim(html_entity_decode($elem['content'],ENT_QUOTES));
|
|
||||||
|
|
||||||
if (!empty($content)) {
|
|
||||||
$html = str_get_html($content);
|
|
||||||
foreach ($html->find('a') as $lnk) {
|
|
||||||
foreach ($elem['media_attachments'] as $f) {
|
|
||||||
if (is_numeric(strpos($f['description'],explode("…",$lnk->innertext)[0]))) {
|
|
||||||
$content = str_replace($lnk->outertext . "<br/>", null, $content);
|
|
||||||
$content = str_replace("<br/>" . $lnk->outertext, null, $content);
|
|
||||||
$content = str_replace($lnk->outertext, null, $content);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_numeric(strpos($lnk->href, $user_settings['instance'])) || in_array($lnk->class, array(
|
|
||||||
"u-url mention",
|
|
||||||
"hashtag"
|
|
||||||
)) || $lnk->rel == "tag") {
|
|
||||||
$content = str_replace($lnk->outertext, $lnk->innertext, $content);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$prv = $lnk->outertext;
|
|
||||||
$lnk->target = '_blank';
|
|
||||||
$lnk->class = 'link external';
|
|
||||||
$content = str_replace($prv, $lnk->outertext, $content);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = strip_tags($content, '<br><p><strong><a><em><strike>');
|
|
||||||
$result = str_replace('<br />', ' <br>', $result);
|
|
||||||
//$result = str_replace(''', "'", $result);
|
|
||||||
|
|
||||||
foreach ($elem['mentions'] as $mention) {
|
|
||||||
$result = str_replace("@" . $mention['username'], "<span class='user' id='" . $mention['id'] . "'><a href='?user=" . $mention['id'] . "' class='link ldr' onClick='return false;'>@" . $mention['username'] . "</a></span>", $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
//$result = preg_replace("/(?<!=\")(\b[\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/", "<a target=\"_blank\" class='external' style='color:navy;' href=\"$1\">$1</a>", $result);
|
|
||||||
$result = emojify($result, $elem['emojis']);
|
|
||||||
$result = preg_replace("/#([A-Za-z0-9\/\.]*)/", "<a class='ldr' href=\"./?tag=$1\"><b>#$1</b></a>", $result);
|
|
||||||
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_mime($filename) {
|
|
||||||
$result = new finfo();
|
|
||||||
|
|
||||||
if (is_resource($result) === true) {
|
|
||||||
return $result->file($filename, FILEINFO_MIME_TYPE);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
@ -1,297 +0,0 @@
|
|||||||
<?php
|
|
||||||
list($thread, $next) = timeline(array_merge($tl, $user_settings));
|
|
||||||
$replies = ($tl['mode'] == "thread" ? getreplies($tl['thread']) : false);
|
|
||||||
$notes = ($tl['mode'] == "thread" ? getnotes($tl['thread']) : false);
|
|
||||||
|
|
||||||
if (isset($_GET['user']) && (!isset($_GET['next']) && !isset($_GET['since']))) {
|
|
||||||
list($info, $rel) = user_info($_GET['user']);
|
|
||||||
|
|
||||||
$template = file_get_contents("templates/profileheader.txt");
|
|
||||||
$profile['mainColor'] = averageColor($info['avatar']);
|
|
||||||
$profile['header'] = $info['header_static'];
|
|
||||||
$profile['top'] = ($logedin ? "<span id='" . $info['id'] . "' class='profileButton profileMenu' style='position:relative;'>
|
|
||||||
|
|
||||||
<div class='menu' style='width:80px; position:absolute; background-color:yellow; top:25px; display:none;'>
|
|
||||||
<div id='" . $info['id'] . "' class='profileButton " . ($rel[0]['muting'] ? "un" : "") . "mute' style='width:100%; border-radius:0px;'>" . ($rel[0]['muting'] ? " Unmute" : " Mute") . "</div>
|
|
||||||
<div id='" . $info['id'] . "' class='profileButton " . ($rel[0]['blocking'] ? "un" : "") . "block' style='width:100%; border-radius:0px;'>" . ($rel[0]['blocking'] ? " Unblock" : " Block") . "</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</span>" : "");
|
|
||||||
|
|
||||||
if ($logedin && $rel[0]['following']) {
|
|
||||||
$profile['top'] .= "<span id='" . $info['id'] . "' class='profileButton listmenu' style='position:relative;'>Lists 
|
|
||||||
<div class='menu' style='width:120px; position:absolute; background-color:yellow; top:25px; left:00px; display:none;'><ul>";
|
|
||||||
|
|
||||||
$userlist = api_get("accounts/" . $info['id'] . "/lists");
|
|
||||||
$listids = array();
|
|
||||||
foreach ($userlist as $lst) {
|
|
||||||
$listids[] = $lst['id'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$lists = api_get("/lists");
|
|
||||||
foreach ($lists as $list) {
|
|
||||||
$profile['top'] .= "<a href='?action=addtolist&user=" . $info['id'] . "&list=" . $list['id'] . "' id='" . $info['id'] . "' list='" . $list['id'] . "' class='" . (in_array($list['id'], $listids) ? 'rutl' : 'autl') . "' onClick='return false;'><li>" . $list['title'] . "</li></a>";
|
|
||||||
}
|
|
||||||
$profile['top'] .= "<a href='?page=lists' class='ldr' onClick='return false;'><li>Manage Lists</li></a>";
|
|
||||||
$profile['top'] .= "
|
|
||||||
</ul></div>
|
|
||||||
</span>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($logedin) {
|
|
||||||
if ($rel[0]['following']) {
|
|
||||||
$label = " Following";
|
|
||||||
$class = "unfollow";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if ($info['locked']) {
|
|
||||||
if ($rel[0]['requested']) {
|
|
||||||
$label = " Follow Requested";
|
|
||||||
$class = "unfollow";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$label = " Request Follow";
|
|
||||||
$class = "follow";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$label = " Follow";
|
|
||||||
$class = "follow";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$profile['top'] .= "<span id='" . $info['id'] . "' class='profileButton $class'>$label</span>";
|
|
||||||
}
|
|
||||||
$profile['top'] .= "<span id='" . $info['id'] . "' class='profileButton " . (in_array($info['id'], $user_settings['nsfw']) ? "unnsfw" : "nsfw") . "'>" . (in_array($info['id'], $user_settings['nsfw']) ? "NSFW <span class='fontello'></span>" : "NSFW <span class='fontello'></span>") . "</span>";
|
|
||||||
|
|
||||||
if ($logedin) {
|
|
||||||
$profile['bottom'] = "
|
|
||||||
" . ($info['locked'] ? "<span class='profileButton' style='background-color: rgba(255,255,255,.5);'> Locked</span>" : "") . "
|
|
||||||
" . ($rel[0]['followed_by'] ? "<span class='profileButton' style='background-color: rgba(255,255,255,.5);'> Follows You</span>" : "") . "
|
|
||||||
" . ($rel[0]['blocking'] ? "<span class='profileButton' style='background-color: rgba(255,255,255,.5);'> Blocked</span>" : "") . "
|
|
||||||
" . ($rel[0]['muting'] ? "<span class='profileButton' style='background-color: rgba(255,255,255,.5);'> Muted</span>" : "") . "
|
|
||||||
";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$profile['bottom'] = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
$profile['avatar'] = $info['avatar'];
|
|
||||||
$profile['name'] = emojify($info['display_name'], $info['emojis'], 40);
|
|
||||||
$profile['acct'] = $info['acct'];
|
|
||||||
$profile['url'] = $info['url'];
|
|
||||||
$profile['note'] = emojify(trim($info['note']) , $info['emojis']);
|
|
||||||
$profile['statuses'] = $info['statuses_count'];
|
|
||||||
$profile['following'] = $info['following_count'];
|
|
||||||
$profile['followers'] = $info['followers_count'];
|
|
||||||
|
|
||||||
foreach ($profile as $key => $value) {
|
|
||||||
$template = str_replace(":$key:", $value, $template);
|
|
||||||
}
|
|
||||||
|
|
||||||
echo $template;
|
|
||||||
}
|
|
||||||
elseif (!isset($_GET['next']) && !isset($_GET['since'])) {
|
|
||||||
echo "<div class='element'></div>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((!isset($thread[0]['id']) && !empty($thread)) || !is_array($thread)) {
|
|
||||||
echo "<div class='element'><div class='avatar'></div><span class='button error'> Error loading the timeline. " . json_encode($thread) . "</span></div>";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$e = 0;
|
|
||||||
foreach ($thread as $elem) {
|
|
||||||
|
|
||||||
$post = array();
|
|
||||||
$post['pid'] = $elem['id'];
|
|
||||||
$post['replyto'] = "";
|
|
||||||
$post['rt'] = "";
|
|
||||||
|
|
||||||
if ($elem['reblog'] != null) {
|
|
||||||
$post['name'] = "<b><span id='" . $elem['reblog']['account']['id'] . "' class='user'><a class='link ldr' href='?user=" . $elem['reblog']['account']['id'] . "'>" . emojify($elem['reblog']['account']['display_name'], $elem['reblog']['account']['emojis'], 15) . "</a></span></b>";
|
|
||||||
|
|
||||||
$post['replyto'] = "<span>" . ($elem['reblog']['in_reply_to_id'] ? " <a class='fontello link preview ldr' target='_blank' id='" . $elem['reblog']['in_reply_to_id'] . "' href='?thread=" . $elem['reblog']['in_reply_to_id'] . "'></a>" : "") . "</span>";
|
|
||||||
|
|
||||||
//$post['rt'] = "<span>[ <span style='font-family:fontello'>  </span> by <img src='".$elem['account']['avatar']."' width=20 style='vertical-align:middle;'> <a class='link ldr user' id='".$elem['account']['id']."' href='?user=" . $elem['account']['id'] . "'>" . emojify($elem['account']['display_name'],$elem['account']['emojis'],15) . "</a> ]</span>";
|
|
||||||
$post['rt'] = "<span>[ <span style='font-family:fontello'>  </span> by <img src='" . $elem['account']['avatar'] . "' width=30 style='vertical-align:middle; border-radius:30px;'> <a class='link ldr user' id='" . $elem['account']['id'] . "' href='?user=" . $elem['account']['id'] . "'><span class='desktop'>" . emojify($elem['account']['display_name'], $elem['account']['emojis'], 15) . "</span><span class='mobile'>@" . explode("@", $elem['account']['acct']) [0] . "</span></a> ]</span>";
|
|
||||||
|
|
||||||
$elem = $elem['reblog'];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$post['name'] = "<span style='position:relative;'><b><span id='" . $elem['account']['id'] . "' class='user'><a class='link ldr' href='?user=" . $elem['account']['id'] . "'>" . emojify($elem['account']['display_name'], $elem['account']['emojis'], 20) . "</a></span></span></b><span class='desktop' style='font.size:10px;'> (" . $elem['account']['acct'] . ")</span> ";
|
|
||||||
|
|
||||||
$post['replyto'] = "<span>" . ($elem['in_reply_to_id'] ? " <a class='fontello link preview ldr' target='_blank' id='" . $elem['in_reply_to_id'] . "' href='?thread=" . $elem['in_reply_to_id'] . "'></a>" : "") . "</span>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_array($elem["account"]['id'], $user_settings['nsfw'])) {
|
|
||||||
$elem['sensitive'] = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($user_settings['explicit'] == "hide" && $elem['sensitive'] == true && $tl['mode'] != "thread") {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (@in_array($elem["pleroma"]['conversation_id'], $user_settings['hide'])) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$json['id'] = $elem['id'];
|
|
||||||
$json['scope'] = $elem['visibility'];
|
|
||||||
if ($logedin) {
|
|
||||||
$pos['mentions'] = "";
|
|
||||||
$array = $elem["mentions"];
|
|
||||||
$json['mentions'] = ($user_settings['acct'] == $elem["account"]['acct'] ? "" : "@" . $elem["account"]['acct']) . " ";
|
|
||||||
if (!empty($array)) {
|
|
||||||
foreach ($array as $mnt) {
|
|
||||||
if ($mnt['acct'] != $user_settings['acct']) {
|
|
||||||
$json['mentions'] .= "@" . $mnt['acct'] . " ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$post['json'] = json_encode($json);
|
|
||||||
|
|
||||||
$post['menu'] = "<ul>";
|
|
||||||
if ($logedin) {
|
|
||||||
$post['menu'] .= ($elem['account']['id'] == $user_settings['uid'] ? "<li><a href='?action=delete&thread=" . $elem['id'] . "' onClick='return false;' class='delete fontello' id=':id:'> Delete Post</a></li>" : "");
|
|
||||||
$post['menu'] .= "<li><a href='?action=compose"e=" . $elem['id'] . "' onClick='return false;' class='quote fontello' id='" . $elem['id'] . "' style='background-color:transparent;'> Quote Post</a></li>";
|
|
||||||
$post['menu'] .= ($elem['account']['id'] != $user_settings['uid'] ? "<li><a href='?action=mute&user=" . $elem['account']['id'] . "' onClick='return false;' class='mute fontello' id='" . $elem['account']['id'] . "' style='background-color:transparent;'> Mute User</a></li>" : "");
|
|
||||||
$post['menu'] .= ($elem['account']['id'] != $user_settings['uid'] ? "<li><a href='?action=mute&thread=" . $elem['account']['id'] . "' onClick='return false;' class='muteconv fontello' id='" . $elem['id'] . "' style='background-color:transparent;'> Drop Thread</a></li>" : "");
|
|
||||||
$post['menu'] .= (isset($user_settings['pleroma']) ? "<li><a href='?action=hide&thread=" . $elem['pleroma']['conversation_id'] . "' onClick='return false;' class='hide fontello' id='" . $elem['pleroma']['conversation_id'] . "' style='background-color:transparent;'> Hide Thread</a></li>" : "");
|
|
||||||
$post['menu'] .= (isset($user_settings['pleroma']) ? "<li><a href='?action=bookmark&thread=" . $elem['account']['id'] . "' onClick='return false;' class='" . ($elem['bookmarked'] == true ? "un" : "") . "bookmark fontello' id='" . $elem['id'] . "' style='background-color:transparent;'> " . ($elem['bookmarked'] == true ? "Unb" : "B") . "ookmark</a></li>" : "");
|
|
||||||
$post['menu'] .= ($elem['account']['id'] != $user_settings['uid'] ? "<li><a href='?action=nsfw&user=" . $elem['account']['id'] . "' onClick='return false;' class='nsfw fontello' id='" . $elem['account']['id'] . "' style='background-color:transparent;'> User is NSFW</a></li>" : "");
|
|
||||||
}
|
|
||||||
$post['menu'] .= "<li><a target='_blank' href='" . $elem['url'] . "' class='original link fontello' style='background-color:transparent;'> Original Note</a></li>";
|
|
||||||
$post['menu'] .= "</ul>";
|
|
||||||
|
|
||||||
$post['text'] = processText($elem);
|
|
||||||
|
|
||||||
$post['spoiler'] = (empty($elem['spoiler_text']) ? "" : "<span style='font-weight:bold;font-size:20px;'>" . $elem['spoiler_text'] . "</span><br>");
|
|
||||||
$post['media'] = "";
|
|
||||||
|
|
||||||
$urls = get_urls(strip_tags($elem['content'], '<br><br \>'));
|
|
||||||
|
|
||||||
if (!empty($urls)) {
|
|
||||||
foreach ($urls as $url) {
|
|
||||||
parse_str(parse_url($url, PHP_URL_QUERY) , $my_array_of_vars);
|
|
||||||
if (isset($my_array_of_vars['v'])) {
|
|
||||||
$post['media'] = "<embed class='desktop' width='620' height='415' src='https://invidio.us/embed/" . $my_array_of_vars['v'] . "'>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($elem['media_attachments'])) {
|
|
||||||
if ($user_settings['attach'] != "off"){
|
|
||||||
$images = count($elem['media_attachments']);
|
|
||||||
$class = ($images === 1 ? "" : ($images > 4 ? "class='smaller'" : "class='small'"));
|
|
||||||
foreach ($elem['media_attachments'] as $file) {
|
|
||||||
$ext = explode(".", $file['url']);
|
|
||||||
$ext = end($ext);
|
|
||||||
$ext = explode("?", $ext) [0];
|
|
||||||
if ($ext == 'mp4' || $ext == 'webm') {
|
|
||||||
$post['media'] .= "<div style='overflow:hidden; float:left; margin:2px;' $class><video preload='metadata' style='text-align:center; max-width:100%; max-height:100%;' controls loop>
|
|
||||||
<source src='" . $file['url'] . "' type='video/$ext'>
|
|
||||||
</video></div>
|
|
||||||
";
|
|
||||||
}
|
|
||||||
elseif ($ext == 'mp3' || $ext == 'ogg') {
|
|
||||||
$post['media'] .= "<div style='text-align:center; width:100%;'><audio controls>
|
|
||||||
<source src='" . $file['url'] . "' type='audio/$ext'>
|
|
||||||
Your browser does not support the audio tag.
|
|
||||||
</audio> </div>";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if ($elem['sensitive'] == true && $user_settings['explicit'] != 'off') {
|
|
||||||
$post['media'] .= "<div style='overflow:hidden; float:left; margin:2px;' $class><a target='_blank' href='" . $file['url'] . "' onClick='return false;' class='blur'><noscript><img src='" . $file['url'] . "' style='width:100%;'></noscript><img " . ($e < 2 ? "src='" . $file['url'] . "'" : "data-src='" . $file['url'] . "'") . " class='lazyload' style='max-width:100%; max-height:100% vertical-align:middle;'></a><a target='_blank' href='" . $file['url'] . "' onClick='return false;' class='open-lightbox' style='display:none;'><img src='" . $file['url'] . "' class='lazyload' style='width:100%;'></a></div>";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
//$post['media'] .= "<div style='margin:0px; background-color:#".averageColor($file['url']).";' $class><a target='_blank' href='" . $file['url'] . "' onClick='return false;' class='open-lightbox'><img " . ($e < 2 ? "src='" . $file['url'] . "'" : "data-src='" . $file['url'] . "'") . " class='lazyload' style='" . ($images === 1 ? "width:100%;" : "max-width:100%; max-height:100%;") . " vertical-align:middle;'><noscript><img src='" . $file['url'] . "' style='width:100%;'></noscript></a></div>";
|
|
||||||
$post['media'] .= "<div style='margin:0px; background-color:#000;' $class><a target='_blank' href='" . $file['url'] . "' onClick='return false;' class='open-lightbox'><img " . ($e < 2 ? "src='" . $file['url'] . "'" : "data-src='" . $file['url'] . "'") . " class='lazyload' style='" . ($images === 1 ? "width:100%;" : "max-width:100%; max-height:100%;") . " vertical-align:middle;'><noscript><img src='" . $file['url'] . "' style='width:100%;'></noscript></a></div>";
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$post['text'] .= "<br><br>\n";
|
|
||||||
foreach ($elem['media_attachments'] as $file) {
|
|
||||||
$post['text'] .= "<span class='fontello'></span><a href='".$file['url']."' target='_blank' onClick='return false;' class='open-lightbox'>See attachment ".($elem['sensitive'] == true ? "(NSFW)" : "")."</a><br>\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$public = "";
|
|
||||||
$private = "";
|
|
||||||
$unlisted = "";
|
|
||||||
$direct = "";
|
|
||||||
|
|
||||||
$post['footer'] = "<div style='float:left; color:darkgray;'>
|
|
||||||
<a style='text-decoration:none;color:darkgray;' class='ldr' target='_blank' href='?thread=" . $elem['id'] . "&instance=$srv" . "'>" . date("d/m/y H:i", strtotime($elem['created_at'])) . "</a> - <span class='fontello'>" . $$elem['visibility'] . " </span>
|
|
||||||
</div>
|
|
||||||
<div class='post_buttons' id='" . $elem['id'] . "'>
|
|
||||||
" . ($logedin ? "<div class='felem'><a onClick='return false' class='replyform' href='?thread=" . $elem['id'] . "' style='font-family:fontello; vertical-align:middle;'></a></div>" : "") . "
|
|
||||||
<div class='felem'><a onClick='return false' " . ($logedin ? "class='" . ($elem['favourited'] == true ? "unfav" : "fav") . "' href='?action=true&mode=".($elem['favourited'] == true ? "off" : "true")."&fav=" . $elem['id'] . "'" : "class='notAllowed'") . " style='font-family:fontello; vertical-align:middle;'> <span>" . $elem['favourites_count'] . "</span></a></div>
|
|
||||||
<div class='felem'><a onClick='return false' " . ($logedin && ($elem['visibility'] == "public" || $elem['visibility'] == "unlisted") ? "class='" . ($elem['reblogged'] == true ? "unreblog" : "reblog") . "' href='?action=reblog&thread=" . $elem['id'] . "'" : "class='notAllowed'") . " style='font-family:fontello; vertical-align:middle;'> <span>" . $elem['reblogs_count'] . "</span></a></div>
|
|
||||||
<div class='felem'><a class='replies' onClick='return false' href='?thread=" . $elem['id'] . "' style='font-family:fontello; vertical-align:middle;'> <span>" . $elem['replies_count'] . "</span></a></div>
|
|
||||||
</div>";
|
|
||||||
|
|
||||||
$post['form'] = ($tl['mode'] == 'thread' && $logedin ? str_replace(array(
|
|
||||||
":id:",
|
|
||||||
":content:"
|
|
||||||
) , array(
|
|
||||||
$elem['id'],
|
|
||||||
$json['mentions']
|
|
||||||
) , file_get_contents("templates/replyform.txt")) : "");
|
|
||||||
|
|
||||||
$post['ancestors'] = " ";
|
|
||||||
$post['descendants'] = " ";
|
|
||||||
|
|
||||||
if ($tl['mode'] == 'thread') {
|
|
||||||
foreach ($replies as $e) {
|
|
||||||
if ($e['mode'] == 'ancestor') {
|
|
||||||
$post['ancestors'] .= render_reply($e['content']);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$post['descendants'] .= render_reply($e['content']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$post['style'] = ""; //($tl['mode'] == "single" ? "display:none;" : "");
|
|
||||||
$post['id'] = $elem['id'];
|
|
||||||
$post['avatar'] = $elem['account']['avatar'];
|
|
||||||
$post['notes'] = "";
|
|
||||||
|
|
||||||
if ($notes) {
|
|
||||||
foreach ($notes as $note) {
|
|
||||||
$post['notes'] .= "<div id='" . $note[1]['id'] . "'>
|
|
||||||
<a href='?user=" . $note[1]['id'] . "' class='ldr' title='" . $note[1]['acct'] . "'>
|
|
||||||
<div class='nte' style='background-image:url(" . $note[1]['avatar'] . ");'>
|
|
||||||
<div class='nte_type' style='background-color:" . ($note[0] == "fav" ? "red" : "green") . "'><span>" . ($note[0] == "fav" ? "" : "") . "</span></div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((empty($elem['media_attachments']) && $post['media'] == "") || (!(empty($elem['media_attachments']) && $post['media'] == "") && $user_settings['attach'] == "off")) {
|
|
||||||
$post['template'] = file_get_contents("templates/textpost.txt");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$post['template'] = file_get_contents("templates/post.txt");
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($post as $key => $value) {
|
|
||||||
$post['template'] = str_replace(":$key:", $value, $post['template']);
|
|
||||||
}
|
|
||||||
echo $post['template'];
|
|
||||||
unset($post);
|
|
||||||
$e++;
|
|
||||||
}
|
|
||||||
if ((!isset($_GET['next']) || (isset($_GET['next']) && !isset($_GET['ajax']))) && !isset($_GET['since']) && !isset($_GET['thread'])) {
|
|
||||||
$query = http_build_query(array_filter(array(
|
|
||||||
'user' => (isset($tl['user']) ? $tl['user'] : false) ,
|
|
||||||
'mode' => $tl['mode']
|
|
||||||
)));
|
|
||||||
|
|
||||||
echo "<div class='element'><div class='avatar' style='height:0px;'></div><div class='loadmore' style='display:table-cell; height:50px; line-height:50px;'><a class='link' onClick='return false;' style='margin:5px;' href='?next=$next&" . $query . "'>Load More Posts</a></div></div>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
@ -1 +0,0 @@
|
|||||||
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'><div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>
|
|
@ -1 +0,0 @@
|
|||||||
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'><div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>
|
|
@ -1 +0,0 @@
|
|||||||
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'><div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>
|
|
@ -1 +0,0 @@
|
|||||||
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'><div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>
|
|
@ -1 +0,0 @@
|
|||||||
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'><div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>
|
|
@ -1 +0,0 @@
|
|||||||
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'><div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>
|
|
@ -1 +0,0 @@
|
|||||||
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'><div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>
|
|
@ -1 +0,0 @@
|
|||||||
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'><div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>
|
|
@ -1 +0,0 @@
|
|||||||
<div class='reply :mode:' id=':id:'> <div class='postHeader'> <span style='margin:12px; display:block; float:left;'> <img src=':avatar:' width=30 style='vertical-align:middle;'> <a class='ldr link user' href='?user=:uid:' id=':uid:'><b>:name:</b></a> <span class='desktop'>(:acct:)</span> </span> <span style='margin:10px; float:right; display:block;'> <span class='postMenu fontello'><div style='display:none; z-index:99; width:130px; background-color:white; position: absolute; top: 15px; right: -1px;'>:menu:</div></span> </span> </div> <div class='postbody'> <div class='content' style='margin:0px;'>:media: :replyto: :text:</div> </div> <span style='width:100%; margin-bottom:10px; display:block;'> <span style='margin-left:10px;'>:date:</span> <span id=':id:' class="post_buttons" style='margin-right:10px;'>:buttons:</span> </span> <div id=':id:' class='replies_container'></div> <script type='application/json' id='data-:id:'>:json:</script></div>
|
|
Loading…
Reference in New Issue
Block a user