Merge branch 'feature_posts' of bitbucket.org:skobkin/point-tools into feature_posts
# Conflicts: # src/Skobkin/Bundle/PointToolsBundle/Entity/Blogs/Post.php
This commit is contained in:
commit
9779233e87
|
@ -6,6 +6,9 @@ imports:
|
|||
framework:
|
||||
#esi: ~
|
||||
translator: { fallbacks: ["%locale%"] }
|
||||
serializer:
|
||||
#enabled: true
|
||||
enable_annotations: true
|
||||
secret: "%secret%"
|
||||
router:
|
||||
resource: "%kernel.root_dir%/config/routing.yml"
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
namespace Skobkin\Bundle\PointToolsBundle\DTO\Api\Crawler;
|
||||
|
||||
use Symfony\Component\Serializer\Annotation as Serializer;
|
||||
|
||||
class MetaPost
|
||||
{
|
||||
/**
|
||||
* @var Recommendation
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $rec;
|
||||
|
||||
/**
|
||||
* @var Post
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $post;
|
||||
|
||||
|
||||
/**
|
||||
* @return Recommendation
|
||||
*/
|
||||
public function getRec()
|
||||
{
|
||||
return $this->rec;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Recommendation $rec
|
||||
* @return MetaPost
|
||||
*/
|
||||
public function setRec(Recommendation $rec)
|
||||
{
|
||||
$this->rec = $rec;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Post
|
||||
*/
|
||||
public function getPost()
|
||||
{
|
||||
return $this->post;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Post $post
|
||||
* @return MetaPost
|
||||
*/
|
||||
public function setPost(Post $post)
|
||||
{
|
||||
$this->post = $post;
|
||||
return $this;
|
||||
}
|
||||
}
|
184
src/Skobkin/Bundle/PointToolsBundle/DTO/Api/Crawler/Post.php
Normal file
184
src/Skobkin/Bundle/PointToolsBundle/DTO/Api/Crawler/Post.php
Normal file
|
@ -0,0 +1,184 @@
|
|||
<?php
|
||||
|
||||
namespace Skobkin\Bundle\PointToolsBundle\DTO\Api\Crawler;
|
||||
|
||||
use Symfony\Component\Serializer\Annotation as Serializer;
|
||||
|
||||
class Post
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $tags;
|
||||
|
||||
/**
|
||||
* @var User
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $author;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $text;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $created;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $type;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $private;
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $id
|
||||
* @return Post
|
||||
*/
|
||||
public function setId($id)
|
||||
{
|
||||
$this->id = $id;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
*/
|
||||
public function getTags()
|
||||
{
|
||||
return $this->tags;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[] $tags
|
||||
* @return Post
|
||||
*/
|
||||
public function setTags(array $tags)
|
||||
{
|
||||
$this->tags = $tags;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return User
|
||||
*/
|
||||
public function getAuthor()
|
||||
{
|
||||
return $this->author;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param User $author
|
||||
* @return Post
|
||||
*/
|
||||
public function setAuthor(User $author)
|
||||
{
|
||||
$this->author = $author;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getText()
|
||||
{
|
||||
return $this->text;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $text
|
||||
* @return Post
|
||||
*/
|
||||
public function setText($text)
|
||||
{
|
||||
$this->text = $text;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getCreated()
|
||||
{
|
||||
return $this->created;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $created
|
||||
* @return Post
|
||||
*/
|
||||
public function setCreated($created)
|
||||
{
|
||||
$this->created = $created;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return $this->type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $type
|
||||
* @return Post
|
||||
*/
|
||||
public function setType($type)
|
||||
{
|
||||
$this->type = $type;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return boolean
|
||||
*/
|
||||
public function isPrivate()
|
||||
{
|
||||
return $this->private;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param boolean $private
|
||||
* @return Post
|
||||
*/
|
||||
public function setPrivate($private)
|
||||
{
|
||||
$this->private = $private;
|
||||
return $this;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
|
||||
namespace Skobkin\Bundle\PointToolsBundle\DTO\Api\Crawler;
|
||||
|
||||
use Symfony\Component\Serializer\Annotation as Serializer;
|
||||
|
||||
class PostsPage
|
||||
{
|
||||
/**
|
||||
* @var MetaPost[]
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $posts;
|
||||
|
||||
/**
|
||||
* @return MetaPost[]
|
||||
*/
|
||||
public function getPosts()
|
||||
{
|
||||
return $this->posts;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param MetaPost[] $posts
|
||||
* @return PostsPage
|
||||
*/
|
||||
public function setPosts(array $posts)
|
||||
{
|
||||
$this->posts = $posts;
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
<?php
|
||||
|
||||
namespace Skobkin\Bundle\PointToolsBundle\DTO\Api\Crawler;
|
||||
|
||||
use Symfony\Component\Serializer\Annotation as Serializer;
|
||||
|
||||
class Recommendation
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $text;
|
||||
|
||||
/**
|
||||
* @var int|null
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $comment_id;
|
||||
|
||||
/**
|
||||
* @var User
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $author;
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getText()
|
||||
{
|
||||
return $this->text;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $text
|
||||
* @return Recommendation
|
||||
*/
|
||||
public function setText($text)
|
||||
{
|
||||
$this->text = $text;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int|null
|
||||
*/
|
||||
public function getComment_id()
|
||||
{
|
||||
return $this->comment_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int|null $comment_id
|
||||
* @return Recommendation
|
||||
*/
|
||||
public function setComment_id($comment_id)
|
||||
{
|
||||
$this->comment_id = $comment_id;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return User
|
||||
*/
|
||||
public function getAuthor()
|
||||
{
|
||||
return $this->author;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param User $author
|
||||
* @return Recommendation
|
||||
*/
|
||||
public function setAuthor(User $author)
|
||||
{
|
||||
$this->author = $author;
|
||||
return $this;
|
||||
}
|
||||
}
|
84
src/Skobkin/Bundle/PointToolsBundle/DTO/Api/Crawler/User.php
Normal file
84
src/Skobkin/Bundle/PointToolsBundle/DTO/Api/Crawler/User.php
Normal file
|
@ -0,0 +1,84 @@
|
|||
<?php
|
||||
|
||||
namespace Skobkin\Bundle\PointToolsBundle\DTO\Api\Crawler;
|
||||
|
||||
use Symfony\Component\Serializer\Annotation as Serializer;
|
||||
|
||||
class User
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $login;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Serializer\Groups({"import_post_page"})
|
||||
*/
|
||||
private $name;
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $id
|
||||
* @return User
|
||||
*/
|
||||
public function setId($id)
|
||||
{
|
||||
$this->id = $id;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getLogin()
|
||||
{
|
||||
return $this->login;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $login
|
||||
* @return User
|
||||
*/
|
||||
public function setLogin($login)
|
||||
{
|
||||
$this->login = $login;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @return User
|
||||
*/
|
||||
public function setName($name)
|
||||
{
|
||||
$this->name = $name;
|
||||
return $this;
|
||||
}
|
||||
}
|
|
@ -4,6 +4,7 @@ namespace Skobkin\Bundle\PointToolsBundle\Entity\Blogs;
|
|||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Skobkin\Bundle\PointToolsBundle\Entity\User;
|
||||
use Symfony\Component\Serializer\Annotation as Serializer;
|
||||
|
||||
/**
|
||||
* Comment
|
||||
|
@ -18,6 +19,8 @@ class Comment
|
|||
/**
|
||||
* @var integer
|
||||
*
|
||||
* @Serializer\Groups("post_show")
|
||||
*
|
||||
* @ORM\Column(name="id", type="integer")
|
||||
* @ORM\Id
|
||||
*/
|
||||
|
@ -26,6 +29,8 @@ class Comment
|
|||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Serializer\Groups("post_show")
|
||||
*
|
||||
* @ORM\Column(name="text", type="text")
|
||||
*/
|
||||
private $text;
|
||||
|
@ -33,6 +38,8 @@ class Comment
|
|||
/**
|
||||
* @var \DateTime
|
||||
*
|
||||
* @Serializer\Groups("post_show")
|
||||
*
|
||||
* @ORM\Column(name="created_at", type="datetime")
|
||||
*/
|
||||
private $createdAt;
|
||||
|
@ -40,6 +47,8 @@ class Comment
|
|||
/**
|
||||
* @var boolean
|
||||
*
|
||||
* @Serializer\Groups("post_show")
|
||||
*
|
||||
* @ORM\Column(name="is_rec", type="boolean")
|
||||
*/
|
||||
private $rec;
|
||||
|
@ -47,6 +56,8 @@ class Comment
|
|||
/**
|
||||
* @var bool
|
||||
*
|
||||
* @Serializer\Groups("post_show")
|
||||
*
|
||||
* @ORM\Column(name="is_deleted", type="boolean")
|
||||
*/
|
||||
private $deleted = false;
|
||||
|
@ -63,6 +74,8 @@ class Comment
|
|||
/**
|
||||
* @var User
|
||||
*
|
||||
* @Serializer\Groups("post_show")
|
||||
*
|
||||
* @ORM\ManyToOne(targetEntity="Skobkin\Bundle\PointToolsBundle\Entity\User")
|
||||
* @ORM\JoinColumn(name="author_id")
|
||||
*/
|
||||
|
@ -71,6 +84,8 @@ class Comment
|
|||
/**
|
||||
* @var Comment|null
|
||||
*
|
||||
* @Serializer\Groups("post_show")
|
||||
*
|
||||
* @ORM\ManyToOne(targetEntity="Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Comment")
|
||||
* @ORM\JoinColumn(name="to_comment_id", nullable=true)
|
||||
*/
|
||||
|
|
|
@ -5,19 +5,26 @@ namespace Skobkin\Bundle\PointToolsBundle\Entity\Blogs;
|
|||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Skobkin\Bundle\PointToolsBundle\Entity\User;
|
||||
use Symfony\Component\Serializer\Annotation as Serializer;
|
||||
|
||||
/**
|
||||
* Post
|
||||
*
|
||||
* @ORM\Table(name="posts.posts", schema="posts", indexes={
|
||||
* @ORM\Index(name="idx_post_created_at", columns={"created_at"})
|
||||
* @ORM\Index(name="idx_post_created_at", columns={"created_at"}),
|
||||
* @ORM\Index(name="idx_post_private", columns={"private"}),
|
||||
* })
|
||||
* @ORM\Entity
|
||||
* @ORM\Entity(repositoryClass="Skobkin\Bundle\PointToolsBundle\Entity\Blogs\PostRepository")
|
||||
*/
|
||||
class Post
|
||||
{
|
||||
const TYPE_POST = 'post';
|
||||
const TYPE_FEED = 'feed';
|
||||
|
||||
/**
|
||||
* @var integer
|
||||
* @var int
|
||||
*
|
||||
* @Serializer\Groups({"posts_list", "post_show"})
|
||||
*
|
||||
* @ORM\Column(name="id", type="string", length=16)
|
||||
* @ORM\Id
|
||||
|
@ -27,6 +34,8 @@ class Post
|
|||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Serializer\Groups({"posts_list", "post_show"})
|
||||
*
|
||||
* @ORM\Column(name="text", type="text")
|
||||
*/
|
||||
private $text;
|
||||
|
@ -34,6 +43,8 @@ class Post
|
|||
/**
|
||||
* @var \DateTime
|
||||
*
|
||||
* @Serializer\Groups({"posts_list", "post_show"})
|
||||
*
|
||||
* @ORM\Column(name="created_at", type="datetime")
|
||||
*/
|
||||
private $createdAt;
|
||||
|
@ -41,10 +52,19 @@ class Post
|
|||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Serializer\Groups({"posts_list", "post_show"})
|
||||
*
|
||||
* @ORM\Column(name="type", type="string", length=6)
|
||||
*/
|
||||
private $type;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*
|
||||
* @ORM\Column(name="private", type="boolean", nullable=true)
|
||||
*/
|
||||
private $private;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*
|
||||
|
@ -55,6 +75,8 @@ class Post
|
|||
/**
|
||||
* @var User
|
||||
*
|
||||
* @Serializer\Groups({"posts_list", "post_show"})
|
||||
*
|
||||
* @ORM\ManyToOne(targetEntity="Skobkin\Bundle\PointToolsBundle\Entity\User")
|
||||
* @ORM\JoinColumn(name="author")
|
||||
*/
|
||||
|
@ -63,6 +85,8 @@ class Post
|
|||
/**
|
||||
* @var Tag[]|ArrayCollection
|
||||
*
|
||||
* @Serializer\Groups({"posts_list", "post_show"})
|
||||
*
|
||||
* @ORM\ManyToMany(targetEntity="Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Tag", fetch="EXTRA_LAZY")
|
||||
* @ORM\JoinTable(name="posts.posts_tags",
|
||||
* joinColumns={@ORM\JoinColumn(name="post_id")},
|
||||
|
@ -74,15 +98,27 @@ class Post
|
|||
/**
|
||||
* @var Comment[]|ArrayCollection
|
||||
*
|
||||
* @ORM\OneToMany(targetEntity="Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Comment", mappedBy="post", fetch="EXTRA_LAZY")
|
||||
* @Serializer\Groups({"post_show"})
|
||||
*
|
||||
* @ORM\OneToMany(targetEntity="Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Comment", mappedBy="post")
|
||||
*/
|
||||
private $comments;
|
||||
|
||||
|
||||
public function __construct($id, $type, $text, \DateTime $createdAt, User $author = null)
|
||||
/**
|
||||
* Post constructor.
|
||||
* @param string $id
|
||||
* @param string $type
|
||||
* @param bool $private
|
||||
* @param string $text
|
||||
* @param \DateTime $createdAt
|
||||
* @param User|null $author
|
||||
*/
|
||||
public function __construct($id, $type, $private, $text, \DateTime $createdAt, User $author = null)
|
||||
{
|
||||
$this->id = $id;
|
||||
$this->type = $type;
|
||||
$this->private = $private;
|
||||
$this->createdAt = $createdAt;
|
||||
$this->text = $text;
|
||||
$this->author = $author;
|
||||
|
@ -254,6 +290,29 @@ class Post
|
|||
return $this->deleted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set private
|
||||
*
|
||||
* @param boolean $private
|
||||
* @return Post
|
||||
*/
|
||||
public function setPrivate($private)
|
||||
{
|
||||
$this->private = $private;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get private
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getPrivate()
|
||||
{
|
||||
return $this->private;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add comments
|
||||
*
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Skobkin\Bundle\PointToolsBundle\Entity\Blogs;
|
||||
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
|
||||
class PostRepository extends EntityRepository
|
||||
{
|
||||
|
||||
}
|
|
@ -3,6 +3,7 @@
|
|||
namespace Skobkin\Bundle\PointToolsBundle\Entity\Blogs;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Component\Serializer\Annotation as Serializer;
|
||||
|
||||
/**
|
||||
* Tag
|
||||
|
@ -10,7 +11,7 @@ use Doctrine\ORM\Mapping as ORM;
|
|||
* @ORM\Table(name="posts.tags", schema="posts", indexes={
|
||||
* @ORM\Index(name="idx_tag_text", columns={"text"})
|
||||
* })
|
||||
* @ORM\Entity
|
||||
* @ORM\Entity(repositoryClass="Skobkin\Bundle\PointToolsBundle\Entity\Blogs\TagRepository")
|
||||
*/
|
||||
class Tag
|
||||
{
|
||||
|
@ -26,6 +27,8 @@ class Tag
|
|||
/**
|
||||
* @var string
|
||||
*
|
||||
* @Serializer\Groups("post_show")
|
||||
*
|
||||
* @ORM\Column(name="text", type="text", unique=true)
|
||||
*/
|
||||
private $text;
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
namespace Skobkin\Bundle\PointToolsBundle\Entity\Blogs;
|
||||
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
|
||||
class TagRepository extends EntityRepository
|
||||
{
|
||||
/**
|
||||
* @param $text
|
||||
* @return Tag|null
|
||||
* @throws \Doctrine\ORM\NonUniqueResultException
|
||||
*/
|
||||
public function findOneByLowerText($text)
|
||||
{
|
||||
$qb = $this->createQueryBuilder('t');
|
||||
return $qb
|
||||
->where($qb->expr()->eq(
|
||||
$qb->expr()->lower('t.text'),
|
||||
$qb->expr()->lower(':text')
|
||||
))
|
||||
->setParameter('text', $text)
|
||||
->getQuery()->getOneOrNullResult()
|
||||
;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue