Amiro.CMS API Reference
Amiro.Ru
/
Manual
Packages:
DB
Debug
Driver_PaymentSystem
Environment
Library
Module
ModuleComponent
Package
Plugin
Plugin_AJAXResponder
Plugin_Sample
Service
Template
TxCommand
TxService
Hyper_AmiCatalog
Hyper_AmiClean
Hyper_AmiEshopShipping
Hyper_AmiExt
Hyper_AmiFiles
Hyper_AmiMultifeeds
Hyper_AmiSearch
Hyper_AmiUsers
Config_AmiCatalog_Items
Config_AmiClean_AmiNewsList
Config_AmiClean_AmiSample
Config_AmiClean_EshopOrder
Config_AmiClean_Webservice
Config_AmiEshopShipping_Fields
Config_AmiEshopShipping_Methods
Config_AmiEshopShipping_Types
Config_AmiFake_AmiroPayDrvExample
Config_AmiFiles_Files
Config_AmiMultifeeds_Articles
Config_AmiMultifeeds_Blog
Config_AmiMultifeeds_FAQ
Config_AmiMultifeeds_News
Config_AmiMultifeeds_PhotoGallery
Config_AmiMultifeeds_Stickers
Config_AmiUsers_Users
Module_Catalog
Module_Pages
Module_Sample
Module_SearchHistory
Loading search...
Source for file PlgAJAXResp_SearchHistory.php
Documentation is available at
PlgAJAXResp_SearchHistory.php
<?php
/**
*
@copyright
Amiro.CMS. All rights reserved.
*
@category
Plugin
*
@package
Plugin_AJAXResponder
*
@since
5.10.0
*
@filesource
*
@version
$Id: PlgAJAXResp_SearchHistory.php 61273 2013-08-07 10:47:54Z Leontiev Anton $
*/
/**
* AJAX Responder SearchHistory plugin JSON generation class.
*
*
@package
Plugin_AJAXResponder
*
@subpackage
Controller
*/
class
PlgAJAXResp_SearchHistory
extends
PlgAJAXResp
{
protected
$oModel
;
/**
* Maximum result number from search history table
*
*
@var
int
*/
private
$iMaxHistoryResults
=
5
;
private
function
createFulltextFilter
(
$fieldName
,
$phrase
)
{
$aWords
=
preg_split
(
'/a-zёа-я0-9.-/ui'
,
$phrase
)
;
$aParts
=
array
(
)
;
foreach
(
$aWords
as
$word
)
{
if
(
!
empty
(
$word
))
{
$aParts
[
]
=
'+'
.
$word
.
'*'
;
}
}
return
DB_Query
::
getSnippet
(
"AND MATCH(%s) AGAINST(%s IN BOOLEAN MODE)"
)
->
plain
(
$fieldName
)
->
implode
(
$aParts
)
;
}
/**
* Adds extra list model initializations
*
*
@return
AMI_ModTableList
*/
protected
function
initModel
(
)
{
$this
->
oModel
=
$oModelList
=
parent
::
initModel
(
)
;
$this
->
oModel
->
setInvalidColumnExclusion
(
false
)
;
$sPhrase
=
$this
->
oRequest
->
get
(
'phrase'
,
''
)
;
if
(
!
empty
(
$sPhrase
))
{
if
(
$this
->
modId
==
'search_history'
)
{
$oModelList
->
addWhereDef
(
$this
->
createFulltextFilter
(
'query'
,
$sPhrase
))
;
$oModelList
->
addWhereDef
(
'AND count_pages>0'
)
;
}
else
if
(
$this
->
modId
==
'search'
)
{
$oModelList
->
addWhereDef
(
$this
->
createFulltextFilter
(
'words'
,
$sPhrase
))
;
}
}
return
$oModelList
;
}
/**
* Returns list data
*
*
@return
array
*
@see
PlgAJAXResp_ListView::get()
*/
public
function
getResponse
(
)
{
$aSearchHistoryData
=
$this
->
oView
->
get
(
)
;
$aHasPhrases
=
array
(
)
;
$aTmp
=
$aSearchHistoryData
;
$aSearchHistoryData
=
array
(
)
;
for
(
$i
=
0
;
$i
<
sizeof
(
$aTmp
)
;
$i
++
)
{
$phrase
=
mb_strtolower
(
$aTmp
[
$i
]
[
'query'
]
)
;
if
(
!
isset
(
$aHasPhrases
[
$phrase
]
))
{
$aSearchHistoryData
[
]
=
$aTmp
[
$i
]
;
$aHasPhrases
[
$phrase
]
=
true
;
if
(
sizeof
(
$aSearchHistoryData
)
>=
$this
->
iMaxHistoryResults
)
{
break
;
}
}
}
$iLimit
=
$this
->
oRequest
->
get
(
'limit'
)
-
sizeof
(
$aSearchHistoryData
)
;
if
(
$iLimit
>
0
)
{
$this
->
oRequest
->
set
(
'limit'
,
$iLimit
)
;
// Init search module
$this
->
modId
=
'search'
;
$this
->
oRequest
->
set
(
'order'
,
'id'
)
;
$this
->
initStateAndView
(
)
;
$oModelList
=
$this
->
initModel
(
)
;
$this
->
oView
->
setModel
(
$oModelList
)
;
$aSearchData
=
$this
->
oView
->
get
(
)
;
}
else
{
$aSearchData
=
array
(
)
;
}
$aResult
=
array
(
'list'
=>
array_merge
(
$aSearchHistoryData
,
$aSearchData
)
)
;
return
$aResult
;
}
}
/**
* Plugin SearchHistory module model (server-side plugin context).
*
*
@package
Plugin_AJAXResponder
*
@subpackage
Model
*/
class
PlgAJAXResp_SearchHistory_State
implements
PlgAJAXResp_iState
{
/**
* PlgAJAXResp_iState::getDateFieldName() implementation
*
* Returns item date field name or empty string
*
*
@return
string
*
@see
PlgAJAXResp::initModel()
*/
public
function
getDateFieldName
(
)
{
return
''
;
}
}
/**
* Plugin SearchHistory module list view (server-side plugin context).
*
*
@package
Plugin_AJAXResponder
*
@subpackage
View
*/
class
PlgAJAXResp_SearchHistory_ListView
extends
PlgAJAXResp_ListView
{
/**
* Return columns for list model
*
*
@return
array
*/
protected
function
getColumns
(
)
{
$aCols
=
array
(
'id'
,
'query'
)
;
return
$aCols
+
parent
::
getColumns
(
)
;
}
}