1: <?php
2: /**
3: * Magento
4: *
5: * NOTICE OF LICENSE
6: *
7: * This source file is subject to the Open Software License (OSL 3.0)
8: * that is bundled with this package in the file LICENSE.txt.
9: * It is also available through the world-wide-web at this URL:
10: * http://opensource.org/licenses/osl-3.0.php
11: * If you did not receive a copy of the license and are unable to
12: * obtain it through the world-wide-web, please send an email
13: * to license@magentocommerce.com so we can send you a copy immediately.
14: *
15: * DISCLAIMER
16: *
17: * Do not edit or add to this file if you wish to upgrade Magento to newer
18: * versions in the future. If you wish to customize Magento for your
19: * needs please refer to http://www.magentocommerce.com for more information.
20: *
21: * @category Mage
22: * @package Mage_CatalogSearch
23: * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24: * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25: */
26:
27: /**
28: * Autocomplete queries list
29: */
30: class Mage_CatalogSearch_Block_Autocomplete extends Mage_Core_Block_Abstract
31: {
32: protected $_suggestData = null;
33:
34: protected function _toHtml()
35: {
36: $html = '';
37:
38: if (!$this->_beforeToHtml()) {
39: return $html;
40: }
41:
42: $suggestData = $this->getSuggestData();
43: if (!($count = count($suggestData))) {
44: return $html;
45: }
46:
47: $count--;
48:
49: $html = '<ul><li style="display:none"></li>';
50: foreach ($suggestData as $index => $item) {
51: if ($index == 0) {
52: $item['row_class'] .= ' first';
53: }
54:
55: if ($index == $count) {
56: $item['row_class'] .= ' last';
57: }
58:
59: $html .= '<li title="'.$this->htmlEscape($item['title']).'" class="'.$item['row_class'].'">'
60: . '<span class="amount">'.$item['num_of_results'].'</span>'.$this->htmlEscape($item['title']).'</li>';
61: }
62:
63: $html.= '</ul>';
64:
65: return $html;
66: }
67:
68: public function getSuggestData()
69: {
70: if (!$this->_suggestData) {
71: $collection = $this->helper('catalogsearch')->getSuggestCollection();
72: $query = $this->helper('catalogsearch')->getQueryText();
73: $counter = 0;
74: $data = array();
75: foreach ($collection as $item) {
76: $_data = array(
77: 'title' => $item->getQueryText(),
78: 'row_class' => (++$counter)%2?'odd':'even',
79: 'num_of_results' => $item->getNumResults()
80: );
81:
82: if ($item->getQueryText() == $query) {
83: array_unshift($data, $_data);
84: }
85: else {
86: $data[] = $_data;
87: }
88: }
89: $this->_suggestData = $data;
90: }
91: return $this->_suggestData;
92: }
93: /*
94: *
95: */
96: }
97: