/** * @desc Возвращает Post по id * @param $id * @return Post */ public function getPost($id) { $db = Difra\MySQL::getInstance(); $conditions = []; if (is_array($this->id)) { $conditions[] = "`blog` IN ('" . implode("','", $this->id) . "')"; } elseif ($this->id) { $conditions[] = "`blog`='{$this->id}'"; } $conditions[] = "`blogs_posts`.`id`='" . $db->escape($id) . "'"; $conditions[] = "`users_fields`.`name`='nickname'"; $conditions[] = "`visible`='1'"; $query = 'SELECT `blogs_posts`.`id`,`blog`,`user`,`title`,`link`,`preview`,`date`,`visible`,`text`,' . '`users_fields`.`value` as `nickname` ' . 'FROM `blogs_posts` LEFT JOIN `users_fields` ON `blogs_posts`.`user`=`users_fields`.`id` ' . 'WHERE ' . implode(' AND ', $conditions); $query = 'SELECT `t1` .*,`groups`.`name` AS `groupName`,`groups`.`domain` AS `groupDomain` ' . "FROM({$query}) AS `t1` LEFT JOIN `blogs` USE KEY( `id_group` ) " . 'ON `t1`.`blog`=`blogs`.`id` LEFT JOIN `groups` ON `blogs`.`group`=`groups`.`id`'; if (!($data = $db->fetchWithId($query))) { return null; } $post = Post::makeList($data); if (sizeof($post) != 1) { return null; } return array_shift($post); }