Пример #1
0
 /**
  * @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);
 }