Skip to content

Instantly share code, notes, and snippets.

@joeainsworth
Last active August 14, 2017 16:01
Show Gist options
  • Save joeainsworth/21ca1c039af2540ac0b4c008f27e7705 to your computer and use it in GitHub Desktop.
Save joeainsworth/21ca1c039af2540ac0b4c008f27e7705 to your computer and use it in GitHub Desktop.
Example
<?php
namespace Aiir\SocialPublisher;
class FacebookPost extends Post
{
public function publish()
{
// Specific implementation to publish post to Facebook
}
public function unpublish()
{
// Specific implementation to delete post from Facebook
}
}
<?php
$db = new Database();
$manager = new SocialPublisherDAO($db);
$post = $manager->createPost([
'type' => 'FacebookPost',
'message' => 'Testing',
'draft' => true,
'scheduled_dt' => '2017-14-10 12:00:00',
'created_user_id' => $myInfo['userId'],
'created_dt' => dateUTCtoLocal('Y-m-d H:i:s'),
'modified_user_id' => $myInfo['userId'],
'modified_dt' => dateUTCtoLocal('Y-m-d H:i:s'),
]);
$post->setMessage('New message text');
$post->setDraft(false);
$post->setModifiedUserId($myInfo['userId']);
$post->setModifiedDt(dateUTCtoLocal('Y-m-d H:i:s'));
$manager->updatePost($post);
<?php
namespace Aiir\SocialPublisher;
abstract class Post
{
private $id;
private $message;
private $draft;
private $scheduledDt;
private $createdUserId;
private $createdDt;
private $modifiedUserId;
private $modifiedDt;
public function __construct($data)
{
$this->id = $data['id'];
$this->message = $data['message'];
$this->draft = $data['draft'];
$this->scheduledDt = $data['scheduled_dt'];
$this->createdUserId = $data['created_user_id'];
$this->createdDt = $data['created_dt'];
$this->modifiedUserId = $data['modified_user_id'];
$this->modifiedDt = $data['modified_dt'];
}
abstract public function publish();
abstract public function unpublish();
abstract public function delete();
public function setMessage($message)
{
$this->message = (string) $message;
}
public function getMessage()
{
return $this->message;
}
public function setDraft($draft)
{
$this->draft = (bool) $draft;
}
public function getDraft()
{
return $this->draft;
}
public function setScheduledDt(DateTime $date)
{
$this->scheduledDt = $date;
}
public function getScheduledDt()
{
return $this->scheduledDt;
}
public function setCreatedUserId($id)
{
$this->createdUserId = (int) $id;
}
public function getCreatedUserID()
{
return $this->createdUserId;
}
public function setCreatedDt(DateTime $date)
{
$this->createdDt = $date;
}
public function getCreatedDt()
{
return $this->createdDt;
}
public function getModifiedUserId()
{
return $this->modifiedUserId;
}
public function setModifiedUserId($id)
{
$this->modifiedUserId = (int) $id;
}
public function setModifiedDt($date)
{
$this->modifiedDt = $date;
}
public function getModifiedDt()
{
return $this->modifiedDt;
}
}
<?php
namespace Aiir\SocialPublisher;
use Aiir\SocialPublisher\Post as Post;
class SocialPublisherDAO
{
private $db;
public function __construct($db)
{
$this->db = $db;
}
public function createPost(array $data)
{
$this->db->query('INSERT INTO post
(message, draft, scheduled_dt, created_user_id, created_dt, modified_user_id, modified_dt)
VALUES (:message, :draft, :scheduled_dt, :created_user_id, :created_dt, :modified_user_id, :modified_dt)',
[
'message' => $data['message'],
'draft' => $data['draft'],
'scheduled_dt' => $data['scheduled_dt'],
'created_user_id' => $data['created_user_id'],
'created_dt' => $data['created_dt'],
'modified_user_id' => $data['modified_user_id'],
'modified_dt' => $data['modified_dt']
]);
$data['id'] = $this->db->lastInsertId();
return new Post($data);
}
public function updatePost($post)
{
$this->db->query('UPDATE post
SET message = :message,
draft = :draft,
scheduled_dt = :scheduled_dt,
modified_user_id = :modified_user_id,
modified_dt = :modified_dt',
[
'message' => $post->getMessage(),
'draft' => $post->getDraft(),
'scheduled_dt' => $post->getScheduledDt(),
'modified_user_id' => $post->getModifiedUserId(),
'modified_dt' => $post->getModifiedDt()
]);
return $post;
}
public function allPosts()
{
$result = $this->db->query('SELECT * FROM post');
$posts = [];
foreach ($result as $post) {
$posts[] = new Post($post);
}
return $posts;
}
}
<?php
namespace Aiir\SocialPublisher;
class TwitterPost extends Post
{
public function publish()
{
// Specific implementation to publish post to Twitter
}
public function unpublish()
{
// Specific implementation to delete post from Twitter
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment