Xwab
Форумыnavigate_nextПрограммирование на PHP

RePost посредством PHP
Сообщения
Istsam

Всем привет.
Задумадся над архитектурой репоста(при нажатии на кнопку на странице(например:стена пользователя) информация добавляется к вам на страницу)
С указанием источника, откуда взята информация
Предложите чтонибудь?

01 Фев 2012, 20:36
Akdmeh

Вижу один несложный вариант:
добавить в таблицу сообщений пользователей отдельное поле repost_id; и если оно есть - то цитируем новость, указанную в repost_id.
Может, не самое элегантное решение, но это так, первое, что пришло в голову.

01 Фев 2012, 20:58
Istsam

Akdmeh, если пользователь удаляет у себя сообщение/картинку или прочее, со стены.
Оно удаляется и у того.
Если на ссылку нажмут множество человек?

Я думаю, что лучше.
Просто копировать сообщение в базе.

01 Фев 2012, 21:02
Framework

Istsam, и плодить тонны одной и той самой инфы?

01 Фев 2012, 21:08
Istsam

[php:1:8b15bd952e]
// Репост
if(isset($_GET['repost']) && isset($_GET['whom_id']))
{
// кто делает репост
if ($db -> query("SELECT COUNT(id) FROM `user` WHERE `id`='".Anti_Xac::num($_GET['whom_id'])."'") -> fetchColumn() == 0)
{
$Template -> location(URL.'/user/wall/'.$_GET['id'].'/');
}
// сам репост
if ($db -> query("SELECT COUNT(id) FROM `user_wall` WHERE `id`='".Anti_Xac::num($_GET['repost'])."'") -> fetchColumn() == 0)
{
$Template -> location(URL.'/user/wall/'.$_GET['id'].'/');
}

foreach($db->query("SELECT * FROM `user_wall` WHERE `id`='".Anti_Xac::num($_GET['repost'])."'") as $wall)

if($wall['type'] == 'text') // если текст
{
$query = $db->query('');
$Template -> location(URL.'/user/wall/'.$_GET['id'].'/'.$_GET['page']);
}
elseif($wall['type'] == 'image') // если изображение
{
if (copy(HOME.'/files/wall/'.$wall['content'], HOME.'/files/wall/'))
{
echo 'Копирование успешно выполнено';
}
else
{
echo 'Ошибка при копировании';
}

$Template -> location(URL.'/user/wall/'.$_GET['id'].'/'.$_GET['page']);
}

}
[/php:1:8b15bd952e]

Столкнулся с ошибкой.
Если к сообщению прикреплена картинка, то как действовать, если пользователь захотел кинуть её себе на стену?
Копировать картинку.
В базе имеется поле 'content'
В нём выводится или текст, или название файла.
wall_29.jpg
wall_30.jpg
и т.д.
Например, у картинку которую мы хотим "репостить" к себе на стену, название
wall_29.jpg
Соответственно и в базе такое же название, по неу и происходит вывод.
Как действовать?
Чтобы репостнутая картинка, имела вид:
wall_newId.extension
newId - новый ид сообщения/картинки выданный в бд auto_increment
добавлено спустя 54 секунды:
Framework, насчёт этого, я как нибудь сам решу.

01 Фев 2012, 21:10
iceman12

Может сделать так:
Таблица постов(произвольная, как за хочешь).
Еще table `repost`: `user_id`, `post_id` .
Соответственно выборку Джоинить.

01 Фев 2012, 21:12
Istsam

iceman12, опять же, если удалиться пост у автора, удалить у всех кто репостил
добавлено спустя 52 секунды:
кажется, единственный способ насчёт информации, это делать просто копию информации в бд с другим ID и time

01 Фев 2012, 21:15
iceman12

Дык, удалять-то зачем? Ставим метку для автора delete и не паримся.

01 Фев 2012, 21:15
Istsam

а вот если type=image
то наверное, нужно делать сначала запрос в бд, заносить например название 'empty'
потом загружать файл и давать ему название

$name = 'wall_'.$db->lastInsertId().'.'.$extension;
и потом делать запрос в бд на update
добавлено спустя 1 минуту:
iceman12, мне кажется, так будет больше гемороя, при сортировки и прочем.
сосбственно, это всё готово уже.
задумался над репостом, а вот переделывать много кода не хочется, тем более на работающем сайта

01 Фев 2012, 21:17
iceman12

Istsam,  переделывать много кода не хочется, тем более на работающем сайта
Футакимбыть. Для этого нужно создавать изначально гибкую архитектуру + не ленится

01 Фев 2012, 21:19
Ответить на тему