Skip to content
Code-Schnipsel Gruppen Projekte
search.php 1,78 KiB
Newer Older
  • Learn to ignore specific revisions
  • Henning Leutz's avatar
    Henning Leutz committed
    <?php
    
    /**
     * This file contains package_quiqqer_discount_ajax_search
     */
    
    /**
    
    Henning Leutz's avatar
    Henning Leutz committed
     *
     * @param string $params - JSON query params
     *
     * @return array
     */
    QUI::$Ajax->registerFunction(
        'package_quiqqer_discount_ajax_search',
    
    Henning Leutz's avatar
    Henning Leutz committed
        function ($fields, $params) {
    
    Henning Leutz's avatar
    Henning Leutz committed
            $Discounts = new QUI\ERP\Discount\Handler();
    
            $result = [];
            $Locale = QUI::getLocale();
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            $allowedFields = $Discounts->getChildAttributes();
    
    
            $query = [];
    
    Henning Leutz's avatar
    Henning Leutz committed
            $params = json_decode($params, true);
            $fields = json_decode($fields, true);
    
            if (!is_array($fields)) {
    
    Henning Leutz's avatar
    Henning Leutz committed
            }
    
            if (isset($params['order'])) {
                $query['order'] = $params['order'];
            }
    
            if (isset($params['limit'])) {
                $query['limit'] = $params['limit'];
            }
    
            $allowedFields = array_flip($allowedFields);
    
            foreach ($fields as $field => $value) {
                if (!isset($allowedFields[$field]) && $field != 'id') {
                    continue;
                }
    
    
                $query['where_or'][$field] = [
    
                    'type' => '%LIKE%',
    
    Henning Leutz's avatar
    Henning Leutz committed
                    'value' => $value
    
    Henning Leutz's avatar
    Henning Leutz committed
            }
    
            // search
            $data = $Discounts->getChildrenData($query);
    
    Henning Leutz's avatar
    Henning Leutz committed
    
            foreach ($data as $entry) {
    
                $entry['title'] = [
    
    Henning Leutz's avatar
    Henning Leutz committed
                    'quiqqer/discount',
    
                    'discount.' . $entry['id'] . '.title'
    
    Henning Leutz's avatar
    Henning Leutz committed
    
                $entry['text'] = $Locale->get(
                    'quiqqer/discount',
    
                    'discount.' . $entry['id'] . '.title'
    
    Henning Leutz's avatar
    Henning Leutz committed
                );
    
                $result[] = $entry;
    
    Henning Leutz's avatar
    Henning Leutz committed
            }
    
            usort($result, function ($a, $b) {
    
                return strcmp($a['text'], $b['text']);
    
    Henning Leutz's avatar
    Henning Leutz committed
            });
    
            return $result;
        },
    
        ['fields', 'params'],
    
    Henning Leutz's avatar
    Henning Leutz committed
        'Permission::checkAdminUser'
    );