Example #1
0
 public static function getTranslatedURL($url, $suburl = '')
 {
     $cache = CSCacheAPC::getMem();
     $cacheKey = md5('site_version_' . $cache->getCacheVersion('site_version') . '_alias_' . $url . '_' . $suburl);
     if (($returnAlias = $cache->restore($cacheKey)) === false) {
         $url = erLhcoreClassCharTransform::TransformToURL($url);
         $returnAlias = false;
         if ($returnAlias !== false) {
             $cache->store($cacheKey, $returnAlias);
         }
     }
     return $returnAlias;
 }
 public static function getParams($params = array())
 {
     $uparams = isset($params['uparams']) ? $params['uparams'] : array();
     $fieldsObjects = (include 'lib/core/lh' . $params['module'] . '/searchattr/' . $params['module_file'] . '.php');
     $fields = $fieldsObjects['filterAttributes'];
     $orderOptions = $fieldsObjects['sortAttributes'];
     foreach ($fields as $key => $field) {
         $definition[$key] = $field['validation_definition'];
     }
     foreach ($uparams as $key => &$value) {
         if (!is_array($value)) {
             $value = urldecode($value);
         }
     }
     $inputParams = new stdClass();
     $inputFrom = new stdClass();
     $form = new erLhcoreClassInputForm(INPUT_GET, $definition, null, $uparams, isset($params['use_override']) ? $params['use_override'] : false);
     $Errors = array();
     foreach ($fields as $key => $field) {
         $inputParams->{$key} = null;
         $inputFrom->{$key} = null;
         if ($form->hasValidData($key) && ($field['required'] == false && $field['valid_if_filled'] == false || $field['type'] == 'combobox' || $field['required'] == true && $field['type'] == 'text' && $form->{$key} != '')) {
             if (isset($field['datatype']) && $field['datatype'] == 'date_ymd') {
                 $dateTemp = $form->{$key};
                 if (self::isValidDateFormat($dateTemp) == false) {
                     continue;
                 }
             }
             $inputParams->{$key} = $form->{$key};
             $inputFrom->{$key} = $form->{$key};
             if (isset($field['depend_fields'])) {
                 foreach ($field['depend_fields'] as $depend) {
                     if (!$form->hasValidData($depend) && !key_exists($depend, $Errors)) {
                         $Errors[$depend] = $fields[$depend]['trans'] . ' is required';
                     }
                 }
             }
         } elseif ($field['required'] == true) {
             $Errors[$key] = $field['trans'] . ' is required';
         } elseif (isset($field['valid_if_filled']) && $field['valid_if_filled'] == true && $form->hasValidData($key) && $form->{$key} != '') {
             $inputFrom->{$key} = $form->{$key};
             $inputParams->{$key} = $form->{$key};
             if (isset($field['depend_fields'])) {
                 foreach ($field['depend_fields'] as $depend) {
                     if (!$form->hasValidData($depend) && !key_exists($depend, $Errors)) {
                         $Errors[$depend] = $fields[$depend]['trans'] . ' is required';
                     }
                 }
             }
         } elseif (isset($field['valid_if_filled']) && $field['valid_if_filled'] == true && isset($_GET[$key]) && $_GET[$key] != '') {
             $Errors[$key] = $field['trans'] . ' is filled incorrectly!';
             $inputFrom->{$key} = $_GET[$key];
         } elseif (isset($field['depend_fields'])) {
             // No value, we can clean dependence fields
             foreach ($field['depend_fields'] as $depend) {
                 $inputFrom->{$depend} = null;
                 $inputParams->{$depend} = null;
             }
         }
     }
     $filter = array();
     if (isset($params['format_filter']) && count($Errors) == 0) {
         foreach ($fields as $key => $field) {
             if ($field['filter_type'] !== false && $inputParams->{$key} != '' || $inputParams->{$key} === 0) {
                 if ($field['filter_type'] == 'filter') {
                     if (is_bool($inputParams->{$key}) && $inputParams->{$key} == true) {
                         $filter[$field['filter_type']][$field['filter_table_field']] = 1;
                     } else {
                         $filter[$field['filter_type']][$field['filter_table_field']] = $inputParams->{$key};
                     }
                 } elseif ($field['filter_type'] == 'filterin_remote') {
                     $args = array();
                     foreach ($field['filter_in_args'] as $fieldInput) {
                         $args[] = $inputParams->{$fieldInput};
                     }
                     $filter['filterin'][$key] = call_user_func_array($field['filter_in_generator'], $args);
                     if (count($filter['filterin'][$key]) == 0) {
                         $filter['filterin'][$key] = array(-1);
                     }
                     if (isset($field['depend_fields'])) {
                         foreach ($field['depend_fields'] as $depend) {
                             if ($inputFrom->{$depend} == -1) {
                                 unset($filter['filterin'][$key]);
                             }
                         }
                     }
                 } elseif ($field['filter_type'] == 'filtergte') {
                     if (isset($field['datatype']) && $field['datatype'] == 'date') {
                         $dateFormated = self::formatDateToTimestamp($inputParams->{$key});
                         if ($dateFormated != false) {
                             $filter['filtergte'][$field['filter_table_field']] = $dateFormated;
                         }
                     } elseif (isset($field['datatype']) && $field['datatype'] == 'date_ymd') {
                         $dateFormated = self::formatDateToDateYmd($inputParams->{$key});
                         if ($dateFormated != false) {
                             $filter['filtergte'][$field['filter_table_field']] = $dateFormated;
                         }
                     } else {
                         $filter['filtergte'][$field['filter_table_field']] = $inputParams->{$key};
                     }
                 } elseif ($field['filter_type'] == 'filterlte') {
                     if (isset($field['range_from']) && isset($filter['filtergte'][$fields[$field['range_from']]['filter_table_field']]) && $filter['filtergte'][$fields[$field['range_from']]['filter_table_field']] == $inputParams->{$key}) {
                         unset($filter['filtergte'][$fields[$field['range_from']]['filter_table_field']]);
                         $filter['filter'][$field['filter_table_field']] = $inputParams->{$key};
                     } else {
                         if (isset($field['datatype']) && $field['datatype'] == 'date') {
                             $dateFormated = self::formatDateToTimestamp($inputParams->{$key});
                             if ($dateFormated != false) {
                                 $filter['filterlte'][$field['filter_table_field']] = $dateFormated;
                             }
                         } elseif (isset($field['datatype']) && $field['datatype'] == 'date_ymd') {
                             $dateFormated = self::formatDateToDateYmd($inputParams->{$key});
                             if ($dateFormated != false) {
                                 $filter['filterlte'][$field['filter_table_field']] = $dateFormated;
                             }
                         } else {
                             $filter['filterlte'][$field['filter_table_field']] = $inputParams->{$key};
                         }
                     }
                 } elseif ($field['filter_type'] == 'filter_join') {
                     $filter['filterin'][$field['filter_table_field']] = $inputParams->{$key};
                     $filter['filter_join'][$field['join_table_name']] = $field['join_attributes'];
                     $filter['filter_having'][] = 'COUNT(*) = ' . count($inputParams->{$key});
                     $filter['filter_group'][] = $field['group_by_field'];
                 } elseif ($field['filter_type'] == 'filter_map') {
                     $mapObject = call_user_func($field['class'] . '::fetch', $inputParams->{$key});
                     $filter['filter'][$mapObject->field] = $mapObject->status;
                 } elseif ($field['filter_type'] == 'like') {
                     $filter['filterlike'][$field['filter_table_field']] = $inputParams->{$key};
                 } elseif ($field['filter_type'] == 'filterkeyword') {
                     if (isset($field['filter_transform_to_search']) && $field['filter_transform_to_search'] == true) {
                         $filter['filterkeyword'][$field['filter_table_field']] = erLhcoreClassCharTransform::transformToSearch($inputParams->{$key});
                     } else {
                         $filter['filterkeyword'][$field['filter_table_field']] = $inputParams->{$key};
                     }
                 } elseif ($field['filter_type'] == 'filterin') {
                     if ($field['datatype'] == 'transaction_types') {
                         $filterInData = array();
                         foreach ($inputParams->{$key} as $typeId) {
                             if (erLhcoreClassModelLingbidTransactionLog::isValidType($typeId)) {
                                 $filterInData[] = $typeId;
                             }
                         }
                         if (!empty($filterInData)) {
                             $filter['filterin'][$field['filter_table_field']] = $filterInData;
                         }
                     } else {
                         $filter['filterin'][$field['filter_table_field']] = $inputParams->{$key};
                     }
                 } elseif ($field['filter_type'] == 'filter_work_types') {
                     $filter['filter_keywords'][] = 'work_type_' . $inputParams->{$key};
                 } elseif ($field['filter_type'] == 'filter_topic_types') {
                     $filter['filter_keywords'][] = 'topic_type_' . $inputParams->{$key};
                 } elseif ($field['filter_type'] == 'filterbetween') {
                     $parts = explode('_', $inputParams->{$key});
                     if (is_numeric($parts[0])) {
                         $filter['filtergte'][$field['filter_table_field']] = (int) $parts[0];
                     }
                     if (is_numeric($parts[1])) {
                         $filter['filterlte'][$field['filter_table_field']] = (int) $parts[1];
                     }
                 } elseif ($field['filter_type'] == 'filter_languages') {
                     $filter['filter_keywords'][] = 'language_' . $inputParams->{$key};
                 } elseif ($field['filter_type'] == 'user_expert_type') {
                     if ($inputParams->{$key} == erLhcoreClassModelUser::USER_EXPERT_TYPE_BOTH) {
                         $filter['filter']['is_worker'] = 1;
                         $filter['filter']['is_employer'] = 1;
                     } elseif ($inputParams->{$key} == erLhcoreClassModelUser::USER_EXPERT_TYPE_WORKER) {
                         $filter['filter']['is_worker'] = 1;
                         $filter['filter']['is_employer'] = 0;
                     } elseif ($inputParams->{$key} == erLhcoreClassModelUser::USER_EXPERT_TYPE_EMPLOYER) {
                         $filter['filter']['is_employer'] = 1;
                         $filter['filter']['is_worker'] = 0;
                     }
                 } elseif ($field['filter_type'] == 'user_status') {
                     if ($inputParams->{$key} == 1) {
                         $filter['filter'][$field['filter_table_field']] = 1;
                     } elseif ($inputParams->{$key} == 2) {
                         $filter['filter'][$field['filter_table_field']] = 0;
                     }
                 } elseif ($field['filter_type'] == 'filterkeyword_blogpost') {
                     $locale = strtolower(erLhcoreClassSystem::instance()->Language);
                     $tableFields = explode(',', $field['filter_table_fields']);
                     foreach ($tableFields as $tableField) {
                         $filter['filterseqor'][$tableField . '_' . $locale] = $inputParams->{$key};
                     }
                 } elseif ($field['filter_type'] == 'filtertag_blogpost') {
                     $locale = strtolower(erLhcoreClassSystem::instance()->Language);
                     $tableField = $field['filter_table_field'] . '_' . $locale;
                     $filter['filterseq'][$tableField] = $inputParams->{$key};
                 } elseif ($field['filter_type'] == 'filterseq') {
                     $filter[$field['filter_type']][$field['filter_table_field']] = $inputParams->{$key};
                 }
             }
         }
         if (isset($currentOrder['as_append'])) {
             foreach ($currentOrder['as_append'] as $key => $appendSelect) {
                 if (isset($currentOrder['replace_params'])) {
                     $returnObj = call_user_func($currentOrder['param_call_func'], $inputParams->{$currentOrder['param_call_name_attr']});
                     foreach ($currentOrder['replace_params'] as $attrObj => $targetString) {
                         $appendSelect = str_replace($targetString, $returnObj->{$attrObj}, $appendSelect);
                     }
                 }
                 $filter['as_append'] = $appendSelect . ' AS ' . $key;
             }
         }
         if (!isset($orderOptions['disabled'])) {
             $keySort = key_exists($inputParams->{$orderOptions['field']}, $orderOptions['options']) ? $inputParams->{$orderOptions['field']} : $orderOptions['default'];
             $currentOrder = $orderOptions['options'][$keySort];
             $filter['sort'] = $currentOrder['sort_column'];
             $inputFrom->sortby = $keySort;
             if (key_exists($inputParams->{$orderOptions['field']}, $orderOptions['options']) && $orderOptions['default'] != $inputParams->{$orderOptions['field']}) {
                 $inputParams->sortby = $keySort;
             } else {
                 // Standard sort mode does not need any append in URL
                 if (isset($inputParams->sortby)) {
                     unset($inputParams->sortby);
                 }
             }
         }
     }
     return array('errors' => $Errors, 'input_form' => $inputFrom, 'input' => $inputParams, 'filter' => $filter);
 }