Beispiel #1
0
 private function smoothnessWhere($query, $condition)
 {
     $condition = $this->getSmoothnessCondition($condition);
     $current_values = $current_has_values = $has_keys = [];
     $default_flag = true;
     foreach ($this->smoothness['columns'] as $key => $column) {
         $value = Request::get($key);
         $current_values[$key] = $value;
         if (Request::exists($key)) {
             $default_flag = false;
             if (!Request::has($key)) {
                 continue;
             }
             $current_has_values[$key] = $value;
             $has_keys[] = $key;
             if (strpos($column, 'scope::') === 0) {
                 $method = camel_case(str_replace('::', '_', $column));
                 if (method_exists($this, $method)) {
                     $this->{$method}($query, $value, $condition);
                 } else {
                     throw new \Exception('Method ' . $method . '() Not Found.');
                 }
             } else {
                 $where = $condition == 'or' ? 'orWhere' : 'where';
                 $query->{$where}($column, 'LIKE', '%' . $value . '%');
             }
         }
     }
     if (!$default_flag && strlen(implode('', $current_values)) == 0) {
         $query->whereRaw('1 <> 1');
     }
     $appends = array_merge($current_values, ['condition' => $condition]);
     $results = new \stdClass();
     $results->values = Collection::make($current_values);
     $results->has_values = Collection::make($current_has_values);
     $results->labels = $this->getSmoothnessLabels();
     $results->has_keys = $has_keys;
     $results->appends = $appends;
     $results->condition = $condition;
     $results->conditions = $this->getSmoothnessConditions($condition);
     View::Share('smoothness', $results);
 }
 public function getScheme($method)
 {
     if (!Request::exists('scheme')) {
         return null;
     }
     $result = ['schema' => [], 'validations' => [], 'help' => []];
     $rc = new \ReflectionClass($this);
     $comment = $rc->getMethod($method)->getDocComment();
     $commentParsed = array();
     if (preg_match_all('/@(\\w+)\\s+(.*)\\r?\\n/m', $comment, $matches)) {
         for ($index = 0; $index < count($matches[1]); $index++) {
             $commentParsed[$matches[1][$index]][] = trim($matches[2][$index]);
         }
     }
     if (isset($commentParsed['input'])) {
         $input = $commentParsed['input'][0];
         $input = new $input();
         $result = ['schema' => $input->getDefaults(), 'validations' => $input->getAllValidators(), 'help' => $input->getHelp()];
     }
     return $result;
 }