.
*
*/
namespace Vvveb\Controller\Content;
use \Vvveb\Sql\categorySQL;
use function Vvveb\__;
use Vvveb\System\Images;
use function Vvveb\url;
trait AutocompleteTrait {
function categoriesAutocomplete() {
$categories = new CategorySQL();
$text = trim($this->request->get['text'] ?? '');
$type = trim($this->request->get['type'] ?? '');
$post_type = $this->request->get['post_type'] ?? '';
$results = $categories->getCategories([
'post_type' => $post_type,
'type' => $type,
'search' => '%' . $text . '%',
] + $this->global);
$search = [];
if (isset($results['categories'])) {
foreach ($results['categories'] as $category) {
$search[$category['taxonomy_item_id']] = $category['name'];
}
}
$this->response->setType('json');
$this->response->output($search);
}
function manufacturersAutocomplete() {
$manufacturers = new \Vvveb\Sql\ManufacturerSQL();
$text = trim($this->request->get['text'] ?? '');
$options = [
'search' => '%' . $text . '%',
] + $this->global;
$results = $manufacturers->getAll($options);
$search = [];
if (isset($results['manufacturer'])) {
foreach ($results['manufacturer'] as $manufacturer) {
$manufacturer['image'] = Images::image($manufacturer['image'], 'manufacturer');
$search[$manufacturer['manufacturer_id']] = '
' . $manufacturer['name'];
}
}
$this->response->setType('json');
$this->response->output($search);
}
function vendorsAutocomplete() {
$vendors = new \Vvveb\Sql\VendorSQL();
$text = trim($this->request->get['text'] ?? '');
$options = [
'search' => '%' . $text . '%',
] + $this->global;
$results = $vendors->getAll($options);
$search = [];
if (isset($results['vendor'])) {
foreach ($results['vendor'] as $vendor) {
$vendor['image'] = Images::image($vendor['image'], 'vendor');
$search[$vendor['vendor_id']] = '
' . $vendor['name'];
}
}
$this->response->setType('json');
$this->response->output($search);
}
function urlAutocomplete() {
$products = new \Vvveb\Sql\ProductSQL();
$text = trim($this->request->get['text'] ?? '');
$type = $this->request->get['type'] ?? 'card'; //'key-value'
$options = [
'limit' => 5,
'like' => $text,
] + $this->global;
unset($options['admin_id']);
$results = $products->getAll($options);
$search = [];
$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'),
];
foreach ($pages as $route => $name) {
if (stripos($name, $text) !== false) {
$url = url($route);
$search[$url] = $name;
break;
}
}
if (isset($results['product'])) {
foreach ($results['product'] as $product) {
$product['image'] = Images::image($product['image'], 'product', 'thumb');
$url = url('product/product/index', ['slug'=> $product['slug'], 'product_id' => $product['product_id']]);
if ($type == 'card') {
$search[] = [
'type' => 'cardimage',
'src' => $product['image'],
'text' => $product['name'],
'value'=> '' . $product['name'] . '',
];
} else {
$search[$url] = '
' . $product['name'];
}
}
}
if (count($search) < 5) {
$posts = new \Vvveb\Sql\PostSQL();
$results = $posts->getAll($options);
if (isset($results['post'])) {
foreach ($results['post'] as $post) {
$post['image'] = Images::image($post['image'], 'post', 'thumb');
$url = url('content/post/index', ['slug'=> $post['slug'], 'post_id' => $post['post_id']]);
if ($type == 'card') {
$search[] = [
'type' => 'cardimage',
'src' => $post['image'],
'text' => $post['name'],
'value'=> '' . $post['name'] . '',
];
} else {
$search[$url] = '
' . $post['name'];
}
}
}
}
$this->response->setType('json');
$this->response->output($search);
}
function productsAutocomplete() {
$products = new \Vvveb\Sql\ProductSQL();
$text = trim($this->request->get['text'] ?? '');
$options = [
'like' => $text,
] + $this->global;
unset($options['admin_id']);
$results = $products->getAll($options);
$search = [];
if (isset($results['product'])) {
foreach ($results['product'] as $product) {
$product['image'] = Images::image($product['image'], $this->object);
$search[$product[$this->object . '_id']] = '
' . $product['name'];
}
}
$this->response->setType('json');
$this->response->output($search);
}
function adminsAutocomplete() {
$admins = new \Vvveb\Sql\AdminSQL();
$text = trim($this->request->get['text'] ?? '');
$options = [
'status' => 1,
'search' => $text,
] + $this->global;
$results = $admins->getAll($options);
$search = [];
if (isset($results['admin'])) {
foreach ($results['admin'] as $admin) {
$text = '';
if (isset($admin['avatar'])) {
$admin['avatar'] = Images::image($admin['avatar'], 'admin');
$text = '
';
}
$text .= $admin['username'] . ' (' . $admin['first_name'] . ' ' . $admin['last_name'] . ')';
$search[$admin['admin_id']] = $text;
}
}
$this->response->setType('json');
$this->response->output($search);
}
function attributesAutocomplete() {
$attributes = new \Vvveb\Sql\AttributeSQL();
$text = trim($this->request->get['text'] ?? '');
$options = [
'search' => $text,
] + $this->global;
$results = $attributes->getAll($options);
$search = [];
if (isset($results['attribute'])) {
foreach ($results['attribute'] as $attribute) {
$text = '';
$text .= $attribute['name'] . ' (' . $attribute['group'] . ')';
$search[$attribute['attribute_id']] = $text;
}
}
$this->response->setType('json');
$this->response->output($search);
}
function optionValuesAutocomplete() {
$values = new \Vvveb\Sql\Option_valueSQL();
$options = [
'option_id' => trim($this->request->get['option_id']),
] + $this->global;
$results = $values->getAll($options);
$search = [];
if (isset($results['option_value'])) {
foreach ($results['option_value'] as $value) {
$text = '';
$text .= $value['name'];
$search[$value['option_value_id']] = $text;
}
}
$this->response->setType('json');
$this->response->output($search);
}
function digitalAssetsAutocomplete() {
$digital_assets = new \Vvveb\Sql\Digital_assetSQL();
$text = trim($this->request->get['text'] ?? '');
$options = [
'search' => $text,
] + $this->global;
$results = $digital_assets->getAll($options);
$search = [];
if (isset($results['digital_asset'])) {
foreach ($results['digital_asset'] as $digital_asset) {
$text = '';
$text .= $digital_asset['name'] . ' (' . $digital_asset['file'] . ')';
$search[$digital_asset['digital_asset_id']] = $text;
}
}
$this->response->setType('json');
$this->response->output($search);
}
}