コード例 #1
0
ファイル: Base.php プロジェクト: sebbie42/casebox
 /**
  * get solr columns for a node based on display columns
  * @return array
  */
 public function getSolrFields($nodeId = false, $templateId = false)
 {
     $nodeId = $nodeId;
     // dummy codacy assignment
     $rez = array('fields' => array(), 'sort' => array());
     $ip =& $this->inputParams;
     $defaultColumns = array_keys(Config::getDefaultGridViewColumns());
     $displayColumns = $this->getDC();
     $DC = empty($displayColumns['data']) ? array() : $displayColumns['data'];
     if (!empty($DC)) {
         foreach ($DC as $columnName => $column) {
             if (is_array($column) && !empty($column['solr_column_name'])) {
                 $rez['fields'][$column['solr_column_name']] = 1;
                 if (empty($column['localSort'])) {
                     if (@$ip['sort'][0]['property'] == $columnName && !empty($ip['sort'][0]['direction'])) {
                         $rez['sort'][] = $column['solr_column_name'] . ' ' . strtolower($ip['sort'][0]['direction']);
                     } elseif (!empty($column['sort'])) {
                         $rez['sort'][] = $column['solr_column_name'] . ' ' . $column['sort'];
                     }
                 }
             } elseif (is_scalar($column)) {
                 $a = explode(':', $column);
                 if ($a[0] == 'solr') {
                     $rez['fields'][$a[1]] = 1;
                 }
             }
         }
     }
     /* user clicked a column to sort by */
     $property = null;
     $dir = 'asc';
     if (!empty($ip['userSort'])) {
         $dir = strtolower($ip['sort'][0]['direction']);
         if (in_array($dir, array('asc', 'desc')) && preg_match('/^[a-z_0-9]+$/i', $ip['sort'][0]['property'])) {
             $prop = $ip['sort'][0]['property'];
             if (!empty($DC[$prop]['solr_column_name'])) {
                 $col = $DC[$prop];
                 //also check if not marked as localSort
                 if (empty($col['localSort'])) {
                     $property = $col['solr_column_name'];
                 }
             } elseif (in_array($prop, $defaultColumns)) {
                 $property = $prop;
             }
         }
     } else {
         /* get user state and check if user has a custom sorting */
         $stateFrom = empty($displayColumns['from']) ? 'default' : $displayColumns['from'];
         $state = $this->getState($stateFrom);
         if (!empty($state['sort']['property'])) {
             $property = $state['sort']['property'];
             $dir = strtolower(Util\coalesce(@$state['sort']['direction'], 'asc'));
             if (!empty($DC[$property]['solr_column_name']) && empty($DC[$property]['localSort'])) {
                 $property = $DC[$property]['solr_column_name'];
             } elseif (!in_array($property, $defaultColumns)) {
                 $property = null;
             }
         }
     }
     if (!empty($property)) {
         $rez['sort'] = 'ntsc asc,' . $property . ' ' . $dir;
     }
     /* end of get user state and check if user has a custom sorting */
     if (!empty($rez['fields'])) {
         $rez['fields'] = array_keys($rez['fields']);
     }
     return $rez;
 }