Хештеги.
Идем в файл Post.php
<?php
class
Post {
    public
static function createPost($postbody, $loggedInUserId,
$profileUserId) {       
        //
валидация формы
        if
(strlen($postbody) > 160 || strlen($postbody) < 1) {
           
die('Incorrect length!');
        }
        //
чтобы ты мог отправлять посты только
от своего имени!
        if
($loggedInUserId == $profileUserId) {                    
            //
0 - кол-во лайков по умолчанию
           
DB::query('INSERT INTO posts VALUES (:id,
:postbody, NOW(), :userid, 0, \'\')', array(':id'=>null,
':postbody'=>$postbody, ':userid'=>$profileUserId));           
        }
else {
           
die('Incorrect user!');
        }
    }
    public
static function createImgPost($postbody, $loggedInUserId,
$profileUserId) {       
        //
валидация формы
        if
(strlen($postbody) > 160) {
           
die('Incorrect length!');
        }
        //
чтобы ты мог отправлять посты только
от своего имени!
        if
($loggedInUserId == $profileUserId) {                    
            //
0 - кол-во лайков по умолчанию
           
DB::query('INSERT INTO posts VALUES (:id,
:postbody, NOW(), :userid, 0, \'\')', array(':id'=>null,
':postbody'=>$postbody, ':userid'=>$profileUserId));
           
$postid = DB::query('SELECT id FROM posts WHERE
user_id=:user_id ORDER BY id DESC LIMIT 1',
array(':user_id'=>$loggedInUserId))[0]['id'];
            return
$postid;
        }
else {
           
die('Incorrect user!');
        }
    }
    public
static function likePost($postId, $likerId) {
        if
(!DB::query('SELECT user_id FROM post_likes WHERE post_id=:postid AND
user_id=:userid', array(':postid'=>$postId, ':userid'=>$likerId)))
{
           
DB::query('UPDATE posts SET likes=likes+1 WHERE
id=:postid', array(':postid'=>$postId));             
           
DB::query('INSERT INTO post_likes VALUES (:id,
:postid, :userid)', array(':id'=>null, ':postid'=>$postId,
':userid'=>$likerId));            
        }
else {
           
DB::query('UPDATE posts SET likes=likes-1 WHERE
id=:postid', array(':postid'=>$postId));                
           
DB::query('DELETE FROM post_likes WHERE
post_id=:postid AND user_id=:userid', array(':postid'=>$postId,
':userid'=>$likerId));
        }
    }
    public
static function link_add($text) {
        $text
= explode(" ", $text); // explode — Разбивает
строку с помощью разделителя
        $newstring
= "";
        foreach
($text as $word) {
            //
если первый символ слова @
            if
(substr( $word, 0, 1) == "@") {
                $newstring
.= "<a href='profile.php?username=".substr($word,
1)."'>".htmlspecialchars($word)." </a>";
// ссылка на профиль пользователя
            }
else if (substr( $word, 0, 1) == "#") {
                $newstring
.= "<a href='topics.php?topic=".substr($word,
1)."'>".htmlspecialchars($word)." </a>";
// ссылка на профиль пользователя
            }
else {
                $newstring
.= htmlspecialchars($word)." ";
            }
        }
        return
$newstring; 
    }
    public
static function displayPosts($userid, $username, $loggedInUserId) {
        //
посты
        $dbposts
= DB::query('SELECT * FROM posts WHERE user_id=:userid ORDER BY id
DESC', array(':userid'=>$userid));           
        $posts
= "";
       
foreach($dbposts as $p) {
            if
(!DB::query('SELECT post_id FROM post_likes WHERE post_id=:postid AND
user_id=:userid', array(':postid'=>$p['id'],
':userid'=>$loggedInUserId))) {                 
               
//print_r($p);
               
$posts .= "<img
src='".$p['postimg']."'>".(self::link_add($p['body']))."
               
               
<form
action='profile.php?username=$username&postid=".$p['id']."'
method='post'>                    
                  
 <input type='submit' name='like'
value='Like'/>
                  
 <span>".$p['likes']."
likes</span>
               
</form>                
               
<hr /><br />";
            }
else {
               
$posts .= "<img
src='".$p['postimg']."'>".(self::link_add($p['body']))."
               
<form
action='profile.php?username=$username&postid=".$p['id']."'
method='post'>                    
                  
 <input type='submit' name='unlike'
value='Unlike'/>
                  
 <span>".$p['likes']."
likes</span>
               
</form>                
               
<hr /><br />";
            }
        }
        return
$posts;
    }
}
?>
   
Создадим в
таблице БД posts еще одну
колонку topics varchar 400
Идем
в файл Post.php
<?php
class
Post {
   
public static function createPost($postbody, $loggedInUserId,
$profileUserId) {       
     
  // валидация формы
     
  if (strlen($postbody) > 160 || strlen($postbody) < 1) {
     
      die('Incorrect length!');
     
  }
     
  // создание топиков
     
  $topics = self::getTopics($postbody);
     
  // чтобы ты мог отправлять посты только
от своего имени!
     
  if ($loggedInUserId == $profileUserId) {                    
     
      // 0 - кол-во лайков по умолчанию
     
      DB::query('INSERT INTO posts VALUES (:id, :postbody, NOW(),
:userid, 0, \'\', :topics)', array(':id'=>null,
':postbody'=>$postbody, ':userid'=>$profileUserId,
':topics'=>$topics));            
     
  } else {
     
      die('Incorrect user!');
     
  }
    }
   
public static function createImgPost($postbody, $loggedInUserId,
$profileUserId) {       
     
  // валидация формы
     
  if (strlen($postbody) > 160) {
     
      die('Incorrect length!');
     
  }
     
  // создание топиков
     
  $topics = self::getTopics($postbody);
     
  // чтобы ты мог отправлять посты только
от своего имени!
     
  if ($loggedInUserId == $profileUserId) {                    
     
      // 0 - кол-во лайков по умолчанию
     
      DB::query('INSERT INTO posts VALUES (:id, :postbody, NOW(),
:userid, 0, \'\', :topics)', array(':id'=>null,
':postbody'=>$postbody, ':userid'=>$profileUserId,
':topics'=>$topics));
     
      $postid = DB::query('SELECT id FROM posts WHERE
user_id=:user_id ORDER BY id DESC LIMIT 1',
array(':user_id'=>$loggedInUserId))[0]['id'];
     
      return $postid;
     
  } else {
     
      die('Incorrect user!');
     
  }
    }
   
public static function likePost($postId, $likerId) {
     
  if (!DB::query('SELECT user_id FROM post_likes WHERE
post_id=:postid AND user_id=:userid', array(':postid'=>$postId,
':userid'=>$likerId))) {
     
      DB::query('UPDATE posts SET likes=likes+1 WHERE id=:postid',
array(':postid'=>$postId));             
     
      DB::query('INSERT INTO post_likes VALUES (:id, :postid,
:userid)', array(':id'=>null, ':postid'=>$postId,
':userid'=>$likerId));            
     
  } else {
     
      DB::query('UPDATE posts SET likes=likes-1 WHERE id=:postid',
array(':postid'=>$postId));                
     
      DB::query('DELETE FROM post_likes WHERE post_id=:postid AND
user_id=:userid', array(':postid'=>$postId, ':userid'=>$likerId));
     
  }
    }
   
public static function getTopics($text) {
     
  $text = explode(" ", $text); // explode — Разбивает
строку с помощью разделителя        
     
  $topics = "";
     
  foreach ($text as $word) {
     
      // если первый символ слова @
     
      if (substr( $word, 0, 1) == "#") {
     
          $topics .= substr($word, 1).",";
     
      } 
     
  }
     
  return $topics; 
    }
   
public static function link_add($text) {
     
  $text = explode(" ", $text); // explode — Разбивает
строку с помощью разделителя
     
  $newstring = "";
     
  foreach ($text as $word) {
     
      // если первый символ слова @
     
      if (substr( $word, 0, 1) == "@") {
     
          $newstring .= "<a
href='profile.php?username=".substr($word,
1)."'>".htmlspecialchars($word)." </a>";
// ссылка на профиль пользователя
     
      } else if (substr( $word, 0, 1) == "#") {
     
          $newstring .= "<a
href='topics.php?topic=".substr($word,
1)."'>".htmlspecialchars($word)." </a>";
// ссылка на профиль пользователя
     
      } else {
     
          $newstring .= htmlspecialchars($word)." ";
     
      }
     
  }
     
  return $newstring; 
    }
   
public static function displayPosts($userid, $username,
$loggedInUserId) {
     
  // посты
     
  $dbposts = DB::query('SELECT * FROM posts WHERE user_id=:userid
ORDER BY id DESC', array(':userid'=>$userid));           
     
  $posts = "";
     
  foreach($dbposts as $p) {
     
      if (!DB::query('SELECT post_id FROM post_likes WHERE
post_id=:postid AND user_id=:userid', array(':postid'=>$p['id'],
':userid'=>$loggedInUserId))) {                 
     
          //print_r($p);
     
          $posts .= "<img
src='".$p['postimg']."'>".(self::link_add($p['body']))."
               
     
          <form
action='profile.php?username=$username&postid=".$p['id']."'
method='post'>                    
     
              <input type='submit' name='like' value='Like'/>
     
              <span>".$p['likes']." likes</span>
     
          </form>                
     
          <hr /><br />";
     
      } else {
     
          $posts .= "<img
src='".$p['postimg']."'>".(self::link_add($p['body']))."
     
          <form
action='profile.php?username=$username&postid=".$p['id']."'
method='post'>                    
     
              <input type='submit' name='unlike' value='Unlike'/>
     
              <span>".$p['likes']." likes</span>
     
          </form>                
     
          <hr /><br />";
     
      }
     
  }
     
  return $posts;
    }
}
?>
   
Создаем файл
topics.php
<?php
   
include('./classes/DB.php');
   
include('./classes/Login.php');
   
include('./classes/Post.php');
   
include('./classes/Image.php');    
   
if (isset($_GET['topic'])) {
     
  // выбираем топики из БД
     
  if (DB::query("SELECT topics FROM posts
WHERE FIND_IN_SET(:topic, topics)",
array(':topic'=>$_GET['topic']))) {
     
      // выберем посты
     
      $posts = DB::query("SELECT * FROM posts
WHERE FIND_IN_SET(:topic, topics)",
array(':topic'=>$_GET['topic']));
     
      foreach ($posts as $post) {
     
          //echo "<pre>";
     
          //print_r($post);
     
          //echo "</pre>";
     
          echo $post['body'] ."<br />";
     
      }
     
  }
    }
?>    
 
Комментариев нет:
Отправить комментарий