dcCore dcCore instance
protected $con; ///< connection Database connection
protected $table; ///< string Post-Media table name
/**
Object constructor.
@param core dcCore dcCore instance
@param type string Media type filter
*/
public function __construct($core, $type = '')
{
$this->core = &$core;
$this->con = &$core->con;
$this->table = $this->core->prefix . 'post_media';
}
/**
Returns media items attached to a blog post. Result is an array containing
fileItems objects.
@param post_id integer Post ID
@param media_id integer Optionnal media ID
@return array Array of fileItems
*/
public function getPostMedia($params = array())
{
$strReq =
'SELECT M.media_file, M.media_id, M.media_path, M.media_title, M.media_meta, M.media_dt, ' .
'M.media_creadt, M.media_upddt, M.media_private, M.user_id, PM.post_id ';
if (!empty($params['columns']) && is_array($params['columns'])) {
$strReq .= implode(', ', $params['columns']) . ', ';
}
$strReq .=
'FROM ' . $this->core->prefix . 'media M ' .
'INNER JOIN ' . $this->table . ' PM ON (M.media_id = PM.media_id) ';
if (!empty($params['from'])) {
$strReq .= $params['from'] . ' ';
}
$where = array();
if (isset($params['post_id'])) {
$where[] = "PM.post_id " . $this->con->in($params['post_id']);
}
if (isset($params['media_id'])) {
$where[] = "M.media_id " . $this->con->in($params['media_id']);
}
if (isset($params['media_path'])) {
$where[] = "M.media_path " . $this->con->in($params['media_path']);
}
if (isset($params['link_type'])) {
$where[] = "PM.link_type " . $this->con->in($params['link_type']);
} else {
$where[] = "PM.link_type='attachment'";
}
$strReq .= 'WHERE ' . join('AND ', $where) . ' ';
if (isset($params['sql'])) {
$strReq .= $params['sql'];
}
$rs = $this->con->select($strReq);
return $rs;
}
/**
Attaches a media to a post.
@param post_id integer Post ID
@param media_id integer Optionnal media ID
@param link_type string Optionnal link type (default: attachment)
*/
public function addPostMedia($post_id, $media_id, $link_type = 'attachment')
{
$post_id = (integer) $post_id;
$media_id = (integer) $media_id;
$f = $this->getPostMedia(array('post_id' => $post_id, 'media_id' => $media_id, 'link_type' => $link_type));
if (!$f->isEmpty()) {
return;
}
$cur = $this->con->openCursor($this->table);
$cur->post_id = $post_id;
$cur->media_id = $media_id;
$cur->link_type = $link_type;
$cur->insert();
$this->core->blog->triggerBlog();
}
/**
Detaches a media from a post.
@param post_id integer Post ID
@param media_id integer Optionnal media ID
@param link_type string Optionnal link type
*/
public function removePostMedia($post_id, $media_id, $link_type = null)
{
$post_id = (integer) $post_id;
$media_id = (integer) $media_id;
$strReq = 'DELETE FROM ' . $this->table . ' ' .
'WHERE post_id = ' . $post_id . ' ' .
'AND media_id = ' . $media_id . ' ';
if ($link_type != null) {
$strReq .= "AND link_type = '" . $this->con->escape($link_type) . "'";
}
$this->con->execute($strReq);
$this->core->blog->triggerBlog();
}
/**
Returns media items attached to a blog post. Result is an array containing
fileItems objects.
@param post_id integer Post ID
@param media_id integer Optionnal media ID
@return array Array of fileItems
*/
public function getLegacyPostMedia($post_id, $media_id = null)
{
$post_id = (integer) $post_id;
$strReq =
'SELECT media_file, M.media_id, media_path, media_title, media_meta, media_dt, ' .
'media_creadt, media_upddt, media_private, user_id ' .
'FROM ' . $this->table . ' M ' .
'INNER JOIN ' . $this->table_ref . ' PM ON (M.media_id = PM.media_id) ' .
"WHERE media_path = '" . $this->path . "' " .
'AND post_id = ' . $post_id . ' ';
if ($media_id) {
$strReq .= 'AND M.media_id = ' . (integer) $media_id . ' ';
}
$rs = $this->con->select($strReq);
$res = array();
while ($rs->fetch()) {
$f = $this->fileRecord($rs);
if ($f !== null) {
$res[] = $f;
}
}
return $res;
}
}