ghost
3 years ago
16 changed files with 365 additions and 46 deletions
@ -0,0 +1,47 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
$response = [ |
||||||
|
'success' => false, |
||||||
|
'message' => _('Internal server error') |
||||||
|
]; |
||||||
|
|
||||||
|
if (isset($_SESSION['userName'])) { |
||||||
|
|
||||||
|
if (!isset($_POST['message']) || (isset($_POST['message']) && !Valid::userPost($_POST['message']))) { |
||||||
|
|
||||||
|
$response = [ |
||||||
|
'success' => false, |
||||||
|
'message' => _('Max 140 chars per message') |
||||||
|
]; |
||||||
|
|
||||||
|
} else if (!$userPosts = $_twister->getPosts([$_SESSION['userName']], 1)) { |
||||||
|
|
||||||
|
$response = [ |
||||||
|
'success' => false, |
||||||
|
'message' => _('Could not receive user post') |
||||||
|
]; |
||||||
|
|
||||||
|
} else if (isset($userPosts[0]['userpost']['k']) && $result = $_twister->newPostMessage($_SESSION['userName'], $userPosts[0]['userpost']['k'] + 1, $_POST['message'])) { |
||||||
|
|
||||||
|
$response = [ |
||||||
|
'success' => true, |
||||||
|
'message' => _('Post successfully sent') |
||||||
|
]; |
||||||
|
|
||||||
|
} else { |
||||||
|
|
||||||
|
$response = [ |
||||||
|
'success' => false, |
||||||
|
'message' => _('Could not send post message') |
||||||
|
]; |
||||||
|
} |
||||||
|
|
||||||
|
} else { |
||||||
|
$response = [ |
||||||
|
'success' => false, |
||||||
|
'message' => _('Session expired. Please, reload the page.') |
||||||
|
]; |
||||||
|
} |
||||||
|
|
||||||
|
header('Content-Type: application/json; charset=utf-8'); |
||||||
|
echo json_encode($response); |
@ -0,0 +1,85 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
$response = [ |
||||||
|
'success' => false, |
||||||
|
'message' => _('Internal server error'), |
||||||
|
'posts' => [], |
||||||
|
]; |
||||||
|
|
||||||
|
if (isset($_SESSION['userName'])) { |
||||||
|
|
||||||
|
if ($result = $_twister->getPosts($_twister->getFollowing($_SESSION['userName']), |
||||||
|
APPLICATION_MAX_POST_FEED)) { |
||||||
|
|
||||||
|
$posts = []; |
||||||
|
foreach ($result as $post) { |
||||||
|
|
||||||
|
// Split message parts |
||||||
|
$messages = [$post['userpost']['msg']]; |
||||||
|
|
||||||
|
for ($i = 0; $i <= APPLICATION_MAX_POST_SPLIT; $i++) { |
||||||
|
|
||||||
|
$n = sprintf('msg%s', $i); |
||||||
|
|
||||||
|
if (isset($post['userpost'][$n])) { |
||||||
|
$messages[] = $post['userpost'][$n]; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Process reTwists |
||||||
|
$reTwist = []; |
||||||
|
if (isset($post['userpost']['rt'])) { |
||||||
|
|
||||||
|
// Split reTwists parts |
||||||
|
$reTwists = [$post['userpost']['rt']['msg']]; |
||||||
|
|
||||||
|
for ($i = 0; $i <= APPLICATION_MAX_POST_SPLIT; $i++) { |
||||||
|
|
||||||
|
$n = sprintf('msg%s', $i); |
||||||
|
|
||||||
|
if (isset($post['userpost']['rt'][$n])) { |
||||||
|
$reTwists[] = $post['userpost']['rt'][$n]; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$reTwist = [ |
||||||
|
'message' => implode('', $reTwists), |
||||||
|
'time' => Localization::time($post['userpost']['rt']['time']), |
||||||
|
'userName' => $post['userpost']['rt']['n'], |
||||||
|
'reTwist' => $reTwist, |
||||||
|
]; |
||||||
|
} |
||||||
|
|
||||||
|
$posts[] = [ |
||||||
|
'message' => implode('', $messages), |
||||||
|
'time' => Localization::time($post['userpost']['time']), |
||||||
|
'userName' => $post['userpost']['n'], |
||||||
|
'reTwist' => $reTwist, |
||||||
|
]; |
||||||
|
} |
||||||
|
|
||||||
|
$response = [ |
||||||
|
'success' => true, |
||||||
|
'message' => _('Posts successfully loaded'), |
||||||
|
'posts' => $posts |
||||||
|
]; |
||||||
|
|
||||||
|
} else { |
||||||
|
|
||||||
|
$response = [ |
||||||
|
'success' => false, |
||||||
|
'message' => _('Could not receive post data'), |
||||||
|
'posts' => [], |
||||||
|
]; |
||||||
|
} |
||||||
|
|
||||||
|
} else { |
||||||
|
$response = [ |
||||||
|
'success' => false, |
||||||
|
'message' => _('Session expired'), |
||||||
|
'posts' => [], |
||||||
|
]; |
||||||
|
} |
||||||
|
|
||||||
|
header('Content-Type: application/json; charset=utf-8'); |
||||||
|
echo json_encode($response); |
@ -1,7 +1,7 @@ |
|||||||
|
|
||||||
<?php |
<?php |
||||||
|
|
||||||
if (isset($_SESSION['username'])) { |
if (isset($_SESSION['userName'])) { |
||||||
session_destroy(); |
session_destroy(); |
||||||
} |
} |
||||||
|
|
||||||
|
@ -0,0 +1,120 @@ |
|||||||
|
var Home = { |
||||||
|
template: { |
||||||
|
feed: { |
||||||
|
item: { |
||||||
|
append: function(feed, userName, time, message, reTwist) { |
||||||
|
|
||||||
|
if (reTwist === undefined || reTwist.length == 0) { |
||||||
|
var rt = false; |
||||||
|
} else { |
||||||
|
var rt = $( |
||||||
|
$('<div/>', { |
||||||
|
'class': 'reTwist' |
||||||
|
}).append( |
||||||
|
$('<div/>', { |
||||||
|
'class': 'info' |
||||||
|
}).append( |
||||||
|
reTwist.userName |
||||||
|
).append( |
||||||
|
$('<span/>', { |
||||||
|
'class': 'time' |
||||||
|
}).append( |
||||||
|
reTwist.time |
||||||
|
) |
||||||
|
) |
||||||
|
).append(reTwist.message) |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
$(feed).append( |
||||||
|
$('<div/>', { |
||||||
|
'class': 'item' |
||||||
|
}).append( |
||||||
|
$('<div/>', { |
||||||
|
'class': 'avatar' |
||||||
|
}).append( |
||||||
|
$('<img/>', { |
||||||
|
'src': '/api/image?hash=' + userName, |
||||||
|
'alt': '', |
||||||
|
}) |
||||||
|
) |
||||||
|
).append( |
||||||
|
$('<div/>', { |
||||||
|
'class': 'message' |
||||||
|
}).append( |
||||||
|
$('<div/>', { |
||||||
|
'class': 'info' |
||||||
|
}).append( |
||||||
|
userName |
||||||
|
).append( |
||||||
|
$('<span/>', { |
||||||
|
'class': 'time' |
||||||
|
}).append( |
||||||
|
time |
||||||
|
) |
||||||
|
) |
||||||
|
).append(rt).append(message) |
||||||
|
) |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
post: { |
||||||
|
add: function(feed, input) { |
||||||
|
$.ajax({ |
||||||
|
url: 'api/post/add', |
||||||
|
type: 'POST', |
||||||
|
data: { |
||||||
|
message: $(input).val() |
||||||
|
}, |
||||||
|
success: function (response) { |
||||||
|
|
||||||
|
if (response.success) { |
||||||
|
|
||||||
|
$(input).val(''); |
||||||
|
|
||||||
|
Home.post.get(feed, true); |
||||||
|
|
||||||
|
} else { |
||||||
|
alert(response.message); |
||||||
|
} |
||||||
|
}, |
||||||
|
error: function(jqXHR, textStatus, errorThrown) { |
||||||
|
console.log(textStatus, errorThrown); |
||||||
|
} |
||||||
|
}); |
||||||
|
}, |
||||||
|
get: function(feed, reFresh) { |
||||||
|
$.ajax({ |
||||||
|
url: 'api/post/get', |
||||||
|
type: 'POST', |
||||||
|
data: {}, |
||||||
|
success: function (response) { |
||||||
|
if (response.success) { |
||||||
|
|
||||||
|
if (reFresh) { |
||||||
|
$(feed).html(''); |
||||||
|
} |
||||||
|
|
||||||
|
$(response.posts).each(function() { |
||||||
|
Home.template.feed.item.append(feed, this.userName, this.time, this.message, this.reTwist); |
||||||
|
}); |
||||||
|
|
||||||
|
} else { |
||||||
|
|
||||||
|
alert(response.message); |
||||||
|
|
||||||
|
} |
||||||
|
}, |
||||||
|
error: function(jqXHR, textStatus, errorThrown) { |
||||||
|
console.log(textStatus, errorThrown); |
||||||
|
} |
||||||
|
}); |
||||||
|
}, |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
$(document).ready(function() { |
||||||
|
Home.post.get('#feed', true); |
||||||
|
}); |
Loading…
Reference in new issue