Back to PhocacartCategoryMultiple class

Method setBestMatchCategory

public static
setBestMatchCategory
(mixed &$items, mixed $categories, mixed $object = 0)

Method setBestMatchCategory - Source code

public static function setBestMatchCategory(&$items, $categories, $object = 0)
{
    if (!empty($items)) {
        if ($object) {
            foreach ($items as $k => &$v) {
                if (isset($v->count_categories) && (int) $v->count_categories > 1) {
                    // preferred catid set
                    if (isset($v->preferred_catid) && (int) $v->preferred_catid > 0) {
                        $catidA = explode(',', $v->catid);
                        $cattitleA = explode(',', $v->cattitle);
                        $cataliasA = explode(',', $v->catalias);
                        $key = array_search((int) $v->preferred_catid, $catidA);
                        $v->catid = $catidA[$key];
                        $v->cattitle = $cattitleA[$key];
                        $v->catalias = $cataliasA[$key];
                        continue;
                    }
                    $catid = explode(',', $v->catid);
                    $id = (int) $v->id;
                    $catid = (int) $catid[0];
                    if (isset($categories[$id]['catid']) && isset($catid) && (int) $categories[$id]['catid'] == $catid) {
                        continue;
                    }
                    // Try to find better category
                    if (isset($categories[$id]['catid']) && isset($id)) {
                        $newItems = self::getCategoryByProduct($id, $categories[$id]['catid']);
                        if (isset($newItems['catid']) && isset($newItems['cattitle']) && isset($newItems['catalias'])) {
                            $v->catid = $newItems['catid'];
                            $v->cattitle = $newItems['cattitle'];
                            $v->catalias = $newItems['catalias'];
                        }
                    }
                }
            }
        } else {
            foreach ($items as $k => &$v) {
                if (isset($v['count_categories']) && (int) $v['count_categories'] > 1) {
                    // preferred catid set
                    if (isset($v['preferred_catid']) && (int) $v['preferred_catid'] > 0) {
                        $catidA = explode(',', $v['catid']);
                        $cattitleA = explode(',', $v['cattitle']);
                        $cataliasA = explode(',', $v['catalias']);
                        $key = array_search((int) $v['preferred_catid'], $catidA);
                        $v['catid'] = $catidA[$key];
                        $v['cattitle'] = $cattitleA[$key];
                        $v['catalias'] = $cataliasA[$key];
                        continue;
                    }
                    $id = (int) $v['id'];
                    $catid = (int) $v['catid'];
                    if (isset($categories[$id]['catid']) && isset($catid) && (int) $categories[$id]['catid'] == $catid) {
                        continue;
                    }
                    // Try to find better category
                    if (isset($categories[$id]['catid']) && isset($id)) {
                        $newItems = self::getCategoryByProduct($id, $categories[$id]['catid']);
                        if (isset($newItems['catid']) && isset($newItems['cattitle']) && isset($newItems['catalias'])) {
                            $v['catid'] = $newItems['catid'];
                            $v['cattitle'] = $newItems['cattitle'];
                            $v['catalias'] = $newItems['catalias'];
                        }
                    }
                }
            }
        }
    }
    return $items;
}