예제 #1
0
파일: SQL.php 프로젝트: nOoiser/SimplOnPHP
 function obtainValues(\SimplOn\Elements\Element &$element, $query_string)
 {
     $values = array();
     foreach ($element->processData('doSearch') as $dataInfo) {
         foreach ($dataInfo as $fieldInfo) {
             $bindable_values = array(':' . $fieldInfo[0] => $fieldInfo[2], ':RLLIKE__' . $fieldInfo[0] => '%' . $fieldInfo[2] . '%', ':LLIKE__' . $fieldInfo[0] => '%' . $fieldInfo[2], ':RLIKE__' . $fieldInfo[0] => $fieldInfo[2] . '%');
             foreach ($bindable_values as $label => $value) {
                 if (strpos($query_string, $label) !== false) {
                     $values[$label] = $value;
                 }
             }
         }
     }
     return $values;
 }
예제 #2
0
 function countElements(\SimplOn\Elements\Element &$element, $group = null)
 {
     if (isset($group)) {
         $group = implode(',', $group);
     }
     $storages = is_array($element->storage()) ? $element->storage() : array($element->getClass() => $element->storage());
     foreach ($element->processData('doRead') as $dataInfo) {
         foreach ($dataInfo as $fieldInfo) {
             $fields[] = $fieldInfo[0];
         }
     }
     foreach ($storages as $class => $storage) {
         $storage_fields = $fields;
         $addFields = '"' . strtr($class, array('\\' => '\\\\')) . '" as `SimplOn_class`, ' . '"' . $element->field_id() . '" as `SimplOn_field_id`, ' . '"' . $element->field_id() . '" as `SimplOn_id`, ' . '"' . $element->field_id() . '", ';
         $where = $this->filterCriteria($element);
         $selects[] = '(SELECT ' . $addFields . implode(', ', $storage_fields) . ' FROM ' . $storage . ' ' . ($where ? 'WHERE ' . $where : '') . ' ' . ($group ? 'GROUP BY ' . $group : '') . ')';
     }
     $query_string = implode("\n" . ' UNION ', $selects) . 'ORDER BY SimplOn_id desc';
     $query = $this->db->prepare($query_string);
     $values = $this->obtainValues($element, $query_string);
     $query->execute($values);
     $results = $query->fetchAll();
     $totalRecords = sizeof($results);
     return $totalRecords;
 }