public function getRelatedPosts($post, $options = array())
{
if (empty($post['BlogTag'])) {
return array();
}
$options = array_merge(array('recursive' => -1, 'limit' => 5, 'order' => 'BlogPost.posts_date DESC'), $options);
$tagNames = array();
foreach ($post['BlogTag'] as $tag) {
$tagNames[] = urldecode($tag['name']);
}
$BlogTag = ClassRegistry::init('Blog.BlogTag');
$tags = $BlogTag->find('all', array('conditions' => array('BlogTag.name' => $tagNames), 'recursive' => 1));
if (!isset($tags[0]['BlogPost'][0]['id'])) {
return array();
}
$ids = array_unique(Hash::extract($tags, '{n}.BlogPost.{n}.id'));
$BlogPost = ClassRegistry::init('Blog.BlogPost');
$conditions = array(array('BlogPost.id' => $ids), array('BlogPost.id <>' => $post['BlogPost']['id']), 'BlogPost.blog_content_id' => $post['BlogPost']['blog_content_id']);
$conditions = am($conditions, $BlogPost->getConditionAllowPublish());
// 毎秒抽出条件が違うのでキャッシュしない
$relatedPosts = $BlogPost->find('all', array('conditions' => $conditions, 'recursive' => $options['recursive'], 'order' => $options['order'], 'limit' => $options['limit'], 'cache' => false));
return $relatedPosts;
}