. * */ namespace Vvveb\Controller\Tools; use function Vvveb\__; use Vvveb\Controller\Base; use Vvveb\System\Images; use function Vvveb\url; class Search extends Base { function index() { //var_dump($this->view->menu); $text = $this->request->get['search'] ?? ''; $type = $this->request->get['type'] ?? ''; $this->view->search = $text; $this->view->type = $type; if (strlen($text) < 3) { $this->view->search = []; return; } $products = new \Vvveb\Sql\ProductSQL(); $options = [ 'limit' => 5, 'like' => $text, ] + $this->global; unset($options['admin_id']); $results = $products->getAll($options); $search = []; if (isset($results['product'])) { $key = __('product'); foreach ($results['product'] as $product) { $product['image'] = Images::image($product['image'], 'product', 'thumb'); $url = url(['module' => 'product/product', 'slug'=> $product['slug'], 'product_id' => $product['product_id'], 'type' => $product['type']]); $search[$key][] = [ 'type' => 'cardimage', 'src' => $product['image'], 'text' => $product['name'], 'url' => $url, ]; } } //if (count($search) < 5) { $posts = new \Vvveb\Sql\PostSQL(); $results = $posts->getAll($options); if (isset($results['post'])) { $key = __('post'); foreach ($results['post'] as $post) { $post['image'] = Images::image($post['image'], 'post', 'thumb'); $url = url(['module' => 'content/post', 'slug'=> $post['slug'], 'post_id' => $post['post_id'], 'type' => $post['type']]); $search[$key][] = [ 'type' => 'cardimage', 'src' => $post['image'], 'text' => $post['name'], 'url' => $url, ]; } } //} $users = new \Vvveb\Sql\UserSQL(); $results = $users->getAll($options + ['search' => $text]); if (isset($results['user'])) { $key = __('user'); foreach ($results['user'] as $user) { $url = url(['module' => 'user/user', 'user_id' => $user['user_id']]); if (isset($user['avatar'])) { $user['image']= Images::image($user['avatar'], 'user'); } $search[$key][] = [ 'type' => 'cardimage', 'src' => $user['image'], 'text' => $user['username'], 'url' => $url, ]; } } $results = []; foreach ($this->view->menu as $key => $value) { if (isset($value['heading'])) { continue; } if (isset($value['name']) && (stripos($value['name'], $text) !== false)) { $results[$value['name']] = [ 'icon' => $value['icon'] ?? '', 'icon-img' => $value['icon-img'] ?? '', 'text' => $value['name'], 'url' => $value['url'], ]; } if (isset($value['items']) && is_array($value['items'])) { foreach ($value['items'] as $submenu) { if (isset($submenu['heading'])) { continue; } if (isset($submenu['name']) && (stripos($submenu['name'], $text) !== false)) { $results[$submenu['name']] = [ 'icon' => $submenu['icon'] ?? '', 'icon-img' => $submenu['icon-img'] ?? '', 'text' => $value['name'] . ' > ' . $submenu['name'], 'url' => $submenu['url'], ]; } if (isset($submenu['items']) && is_array($submenu['items'])) { foreach ($submenu['items'] as $subsubmenu) { if (isset($subsubmenu['heading'])) { continue; } if (isset($subsubmenu['name']) && (stripos($subsubmenu['name'], $text) !== false)) { $results[$subsubmenu['name']] = [ 'icon' => $subsubmenu['icon'] ?? '', 'icon-img' => $subsubmenu['icon-img'] ?? '', 'text' => $value['name'] . ' > ' . $submenu['name'] . ' > ' . $subsubmenu['name'], 'url' => $subsubmenu['url'], ]; } } } } } } if ($results) { $search[__('Settings')] = $results; } $pages = [ 'index/index' => __('Home'), 'product/index' => __('Shop'), 'content' => __('Blog'), 'user/index' => __('User'), 'user/login/index' => __('Login'), 'user/signup/index' => __('Signup'), 'cart/cart/index' => __('Cart'), 'checkout/checkout/index' => __('Checkout'), ]; $key = __('pages'); foreach ($pages as $route => $name) { if (stripos($name, $text) !== false) { $url = url($route); $search[$key][$url] = [ 'icon' => 'la la-external-link-alt', 'text' => $name, 'url' => $url, ]; break; } } $this->view->search = $search; } function autocomplete() { } }