保存提要条目
有了这个代码,用户就能够选择是否要保存提要条目和网页的全文,现在惟一余下的事情是用于抓取网页的代码(使用 Zend_HTTP_Client )。在这一小节中,我们定义了该代码和 fullText 行为,该行为用于向用户展示已保存条目的全文。
使用 Zend_HTTP_Client:saveEntryAction
是时候在 FeedController 类中完成 saveEntryAction 方法了,此方法所对应的行为是通过选中复选框保存条目的全文来完成的。修改 saveEntryAction 方法,如下所示。
清单 8. FeedController 类中的 saveEntryAction 方法
复制内容到剪贴板
代码:
public function saveEntryAction()
{
$filterSession = Zend::registry('fSession');
$username = $filterSession->getRaw('username');
...
if($saveFullText){
$http = new Zend_Http_Client($channelLink);
$response = $http->get();
if ($response->isSuccessful())
$fullText = $response->getBody();
else{
echo 'Error occurred, full text not saved, '.
'please reload.';
return;
}
}
$db = Zend::registry('db');
...
}如果复选框指出要保存条目,则使用 Zend_Http_Client 类抓取它,如上所示。将条目的全文保存到 fullText 变量中,随后,该变量在此方法中把全文保存到数据库条目中(参见 清单 3)。如果检索失败,则将一个错误消息显示给用户,用户可通过重新加载页面来再次尝试。
查看已保存条目的全文
定义 fullTextAction 方法,用户就能查看已保存条目的全文了。定义 FeedController 类中的 fullTextAction 方法,如下所示。
清单 9. FeedController 类中的 fullTextAction 方法
复制内容到剪贴板
代码:
public function fullTextAction()
{
$filterSession = Zend::registry('fSession');
$username = $filterSession->getRaw('username');
$filterGet = Zend::registry('fGet');
$feedTitle = $filterGet->getRaw('feedTitle');
$channelTitle = $filterGet->getRaw('channelTitle');
$db = Zend::registry('db');
$select = $db->select();
$select->from('savedentries', '*');
$select->where("username=?", $username);
$select->where("feedname=?", $feedTitle);
if($channelTitle)
$select->where("channelname=?", $channelTitle);
$sql = $select->__toString();
$fullText = $db->fetchAll($sql);
echo $fullText[0]['entrydata'];
}从 Session 及 Get 数组中获取 username、feedname 和 channelname。随后搜索 savedentries 表来获得匹配条目,然后获取匹配条目的全文并显示给用户。