visits =& $_SESSION['osC_RecentlyVisited_data'];
}
function contentModuleInitialize() {
global $osC_Product, $osC_Category, $osC_Search;
if (isset($osC_Product) && is_a($osC_Product, 'osC_Product')) {
$this->setProduct($osC_Product->getID());
}
if (SERVICE_RECENTLY_VISITED_SHOW_CATEGORIES == 'True') {
if (isset($osC_Category) && is_a($osC_Category, 'osC_Category')) {
$this->setCategory($osC_Category->getID());
}
}
if (SERVICE_RECENTLY_VISITED_SHOW_SEARCHES == 'True') {
if (isset($osC_Search) && is_a($osC_Search, 'osC_Search')) {
if ($osC_Search->hasKeywords()) {
$this->setSearchQuery($osC_Search->getKeywords());
}
}
}
}
function getContentModule() {
return 'recently_visited.php';
}
function setProduct($id) {
if (isset($this->visits['products'])) {
foreach ($this->visits['products'] as $key => $value) {
if ($value['id'] == $id) {
unset($this->visits['products'][$key]);
break;
}
}
if (sizeof($this->visits['products']) > (MAX_RECENTLY_VISITED_PRODUCTS * 2)) {
array_pop($this->visits['products']);
}
} else {
$this->visits['products'] = array();
}
array_unshift($this->visits['products'], array('id' => $id));
}
function setCategory($id) {
if (isset($this->visits['categories'])) {
foreach ($this->visits['categories'] as $key => $value) {
if ($value['id'] == $id) {
unset($this->visits['categories'][$key]);
break;
}
}
if (sizeof($this->visits['categories']) > (MAX_RECENTLY_VISITED_CATEGORIES * 2)) {
array_pop($this->visits['categories']);
}
} else {
$this->visits['categories'] = array();
}
array_unshift($this->visits['categories'], array('id' => $id));
}
function setSearchQuery($keywords) {
global $osC_Search;
if (isset($this->visits['searches'])) {
foreach ($this->visits['searches'] as $key => $value) {
if ($value['keywords'] == $keywords) {
unset($this->visits['searches'][$key]);
break;
}
}
if (sizeof($this->visits['searches']) > (MAX_RECENTLY_VISITED_SEARCHES * 2)) {
array_pop($this->visits['searches']);
}
} else {
$this->visits['searches'] = array();
}
array_unshift($this->visits['searches'], array('keywords' => $keywords,
'results' => $osC_Search->getNumberOfResults()
));
}
function hasHistory() {
if ($this->hasProducts() || $this->hasCategories() || $this->hasSearches()) {
return true;
}
return false;
}
function hasProducts() {
if (isset($this->visits['products']) && (empty($this->visits['products']) === false)) {
return true;
}
return false;
}
function getProducts() {
global $osC_Database, $osC_Services, $osC_Currencies, $osC_Specials;
$history = array();
if (isset($this->visits['products']) && (empty($this->visits['products']) === false)) {
$counter = 0;
foreach ($this->visits['products'] as $k => $v) {
$counter++;
$cpath = tep_get_product_path($this->visits['products'][$k]['id']);
$parts = explode("_", $cpath);
$cat_id = $parts[sizeof($parts)-1];
$Qcategory = $osC_Database->query('select categories_name from :table_categories_description where categories_id = :categories_id and language_id = :language_id');
$Qcategory->bindTable(':table_categories_description', TABLE_CATEGORIES_DESCRIPTION);
$Qcategory->bindInt(':categories_id', $cat_id);
$Qcategory->bindInt(':language_id', $_SESSION['languages_id']);
$Qcategory->execute();
$Qproduct = $osC_Database->query('select p.products_price, p.products_tax_class_id, p.products_image, pd.products_name, pd.products_keyword from :table_products p, :table_products_description pd where p.products_id = :products_id and p.products_status = 1 and pd.products_id = :products_id and pd.language_id = :language_id');
$Qproduct->bindTable(':table_products', TABLE_PRODUCTS);
$Qproduct->bindTable(':table_products_description', TABLE_PRODUCTS_DESCRIPTION);
$Qproduct->bindInt(':products_id', $this->visits['products'][$k]['id']);
$Qproduct->bindInt(':products_id', $this->visits['products'][$k]['id']);
$Qproduct->bindInt(':language_id', $_SESSION['languages_id']);
$Qproduct->execute();
if (SERVICE_RECENTLY_VISITED_SHOW_PRICE == 'True') {
if ( ($osC_Services->isStarted('specials')) && ($new_price = $osC_Specials->getPrice($this->visits['products'][$k]['id'])) ) {
$products_price = '' . $osC_Currencies->displayPrice($Qproduct->value('products_price'), $Qproduct->valueInt('products_tax_class_id')) . ' ' . $osC_Currencies->displayPrice($new_price, $Qproduct->valueInt('products_tax_class_id')) . '';
} else {
$products_price = $osC_Currencies->displayPrice($Qproduct->value('products_price'), $Qproduct->valueInt('products_tax_class_id'));
}
}
$history[] = array('name' => $Qproduct->value('products_name'),
'id' => $this->visits['products'][$k]['id'],
'keyword' => $Qproduct->value('products_keyword'),
'price' => (SERVICE_RECENTLY_VISITED_SHOW_PRICE == 'True') ? $products_price : '',
'image' => $Qproduct->value('products_image'),
'category_name' => $Qcategory->value('categories_name'),
'category_path' => $cpath
);
if ($counter == MAX_RECENTLY_VISITED_PRODUCTS) {
break;
}
}
}
return $history;
}
function hasCategories() {
if (isset($this->visits['categories']) && (empty($this->visits['categories']) === false)) {
return true;
}
return false;
}
function getCategories() {
global $osC_CategoryTree;
$history = array();
if (isset($this->visits['categories']) && (empty($this->visits['categories']) === false)) {
$counter = 0;
foreach ($this->visits['categories'] as $k => $v) {
$counter++;
$osC_Category = new osC_Category($v['id']);
if ($osC_Category->hasParent()) {
$osC_CategoryParent = new osC_Category($osC_Category->getParent());
}
$history[] = array('parents_name' => ($osC_Category->hasParent()) ? $osC_CategoryParent->getTitle() : '',
'parents_id' => ($osC_Category->hasParent()) ? $osC_CategoryParent->getID() : '',
'category_name' => $osC_Category->getTitle(),
'category_id' => $osC_Category->getPath()
);
if ($counter == MAX_RECENTLY_VISITED_CATEGORIES) {
break;
}
}
}
return $history;
}
function hasSearches() {
if (isset($this->visits['searches']) && (empty($this->visits['searches']) === false)) {
return true;
}
return false;
}
function getSearches() {
$history = array();
if (isset($this->visits['searches']) && (empty($this->visits['searches']) === false)) {
$counter = 0;
foreach ($this->visits['searches'] as $k => $v) {
$counter++;
$history[] = array('keywords' => $this->visits['searches'][$k]['keywords'],
'results' => $this->visits['searches'][$k]['results']
);
if ($counter == MAX_RECENTLY_VISITED_SEARCHES) {
break;
}
}
}
return $history;
}
}
?>