示例#1
0
 /**
  * API Method queries for Search records and render as JSON
  */
 public function Query()
 {
     try {
         $criteria = new SearchCriteria();
         // TODO: this will limit results based on all properties included in the filter list
         $filter = RequestUtil::Get('filter');
         if ($filter) {
             $criteria->AddFilter(new CriteriaFilter('Idsearch,User,Name,Info,Type,Datecreate', '%' . $filter . '%'));
         }
         // TODO: this is generic query filtering based only on criteria properties
         foreach (array_keys($_REQUEST) as $prop) {
             $prop_normal = ucfirst($prop);
             $prop_equals = $prop_normal . '_Equals';
             if (property_exists($criteria, $prop_normal)) {
                 $criteria->{$prop_normal} = RequestUtil::Get($prop);
             } elseif (property_exists($criteria, $prop_equals)) {
                 // this is a convenience so that the _Equals suffix is not needed
                 $criteria->{$prop_equals} = RequestUtil::Get($prop);
             }
         }
         $output = new stdClass();
         // if a sort order was specified then specify in the criteria
         $output->orderBy = RequestUtil::Get('orderBy');
         $output->orderDesc = RequestUtil::Get('orderDesc') != '';
         if ($output->orderBy) {
             $criteria->SetOrder($output->orderBy, $output->orderDesc);
         }
         $page = RequestUtil::Get('page');
         if ($page != '') {
             // if page is specified, use this instead (at the expense of one extra count query)
             $pagesize = $this->GetDefaultPageSize();
             $searches = $this->Phreezer->Query('Search', $criteria)->GetDataPage($page, $pagesize);
             $output->rows = $searches->ToObjectArray(true, $this->SimpleObjectParams());
             $output->totalResults = $searches->TotalResults;
             $output->totalPages = $searches->TotalPages;
             $output->pageSize = $searches->PageSize;
             $output->currentPage = $searches->CurrentPage;
         } else {
             // return all results
             $searches = $this->Phreezer->Query('Search', $criteria);
             $output->rows = $searches->ToObjectArray(true, $this->SimpleObjectParams());
             $output->totalResults = count($output->rows);
             $output->totalPages = 1;
             $output->pageSize = $output->totalResults;
             $output->currentPage = 1;
         }
         $this->RenderJSON($output, $this->JSONPCallback());
     } catch (Exception $ex) {
         $this->RenderExceptionJSON($ex);
     }
 }
 /**
  * Make search over registrar notifications collection
  * 
  * @param SearchCriteria $criteria  Prepared search filters
  * @param int $limit results limit	
  * @param int $offset start rowset from
  * @param array $sort rowset sort rule array('field' => 'asc|desc')
  * 
  * @return str json response
  */
 public function search(SearchCriteria $criteria, $limit = 100, $offset = 0, array $sort = array(), $cltrid = false)
 {
     $get = $criteria->getCriteria();
     $get['do'] = 'search';
     $get['limit'] = $limit;
     $get['offset'] = $offset;
     foreach ($sort as $field => $direction) {
         $get['sort_field'] = $field;
         $get['sort_direction'] = $direction;
         // sorry. just one field
         break;
     }
     $json = APIRequest::GET('/notifications/', $cltrid ?: APIRequest::defaultClientTransactionID(), STRegistry::Session()->getAuthToken(), $get);
     return $json;
 }
 public static function getLabs(SearchCriteria $condicao = null)
 {
     TTransaction::open('my_config');
     if ($conn = TTransaction::get()) {
         $sql = "SELECT * FROM laboratorios\r\n                       WHERE deleted = 0";
         if ($condicao !== null) {
             if ($condicao->getValueCriteria() !== null) {
                 $sql .= " AND chave_laboratorio = {$condicao->getValueCriteria()}";
             }
         }
         $sql .= " ORDER BY numero_laboratorio";
         $sth = $conn->prepare($sql);
         $sth->execute();
         $results = $sth->fetchAll(PDO::FETCH_CLASS, 'Lab');
         return $results;
         TTransaction::close();
     } else {
         echo 'Sem conexão com banco!';
     }
 }
 public static function getUsuarios(SearchCriteria $condicao = null)
 {
     TTransaction::open('my_config');
     if ($conn = TTransaction::get()) {
         $sql = "SELECT U.*,T.nome_tipo FROM usuarios U ";
         $sql .= "INNER JOIN tipos_usuarios T ON\r\n                       (T.id_tipo = U.tipo_usuario_id)";
         if ($condicao !== null) {
             if ($condicao->getValueCriteria() !== null) {
                 $sql .= " WHERE U.nome_usuario like '{$condicao->getValueCriteria()}%'";
             }
         }
         $sql .= " ORDER BY U.id_usuario DESC";
         $sth = $conn->prepare($sql);
         $sth->execute();
         $result = $sth->fetchALL(PDO::FETCH_OBJ);
         return $result;
         TTransaction::close();
     } else {
         echo 'Sem conexão com banco!';
     }
 }
示例#5
0
 /**
  * Performs search on all stories
  *
  * @access private
  * @return object plugin object
  *
  */
 function _searchStories()
 {
     global $_TABLES, $_DB_dbms, $LANG09;
     // Make sure the query is SQL safe
     $query = trim(addslashes($this->_query));
     $sql = 'SELECT s.sid AS id, s.title AS title, s.introtext AS description, ';
     $sql .= 'UNIX_TIMESTAMP(s.date) AS date, s.uid AS uid, s.hits AS hits, ';
     $sql .= 'CONCAT(\'/article.php?story=\',s.sid) AS url ';
     $sql .= 'FROM ' . $_TABLES['stories'] . ' AS s, ' . $_TABLES['users'] . ' AS u ';
     $sql .= 'WHERE (draft_flag = 0) AND (date <= NOW()) AND (u.uid = s.uid) ';
     $sql .= COM_getPermSQL('AND') . COM_getTopicSQL('AND') . COM_getLangSQL('sid', 'AND') . ' ';
     if (!empty($this->_topic)) {
         $sql .= 'AND (s.tid = \'' . $this->_topic . '\') ';
     }
     if (!empty($this->_author)) {
         $sql .= 'AND (s.uid = \'' . $this->_author . '\') ';
     }
     $search_s = new SearchCriteria('stories', $LANG09[65]);
     $columns = array('title' => 'title', 'introtext', 'bodytext');
     $sql .= $search_s->getDateRangeSQL('AND', 'date', $this->_dateStart, $this->_dateEnd);
     list($sql, $ftsql) = $search_s->buildSearchSQL($this->_keyType, $query, $columns, $sql);
     $search_s->setSQL($sql);
     $search_s->setFTSQL($ftsql);
     $search_s->setRank(5);
     $search_s->setURLRewrite(true);
     // Search Story Comments
     $sql = 'SELECT c.cid AS id, c.title AS title, c.comment AS description, ';
     $sql .= 'UNIX_TIMESTAMP(c.date) AS date, c.uid AS uid, ';
     // MSSQL has a problem when concatenating numeric values
     if ($_DB_dbms == 'mssql') {
         $sql .= '\'/comment.php?mode=view&amp;cid=\' + CAST(c.cid AS varchar(10)) AS url ';
     } else {
         $sql .= 'CONCAT(\'/comment.php?mode=view&amp;cid=\',c.cid) AS url ';
     }
     $sql .= 'FROM ' . $_TABLES['users'] . ' AS u, ' . $_TABLES['comments'] . ' AS c ';
     $sql .= 'LEFT JOIN ' . $_TABLES['stories'] . ' AS s ON ((s.sid = c.sid) ';
     $sql .= COM_getPermSQL('AND', 0, 2, 's') . COM_getTopicSQL('AND', 0, 's') . COM_getLangSQL('sid', 'AND', 's') . ') ';
     $sql .= 'WHERE (u.uid = c.uid) AND (s.draft_flag = 0) AND (s.commentcode >= 0) AND (s.date <= NOW()) ';
     if (!empty($this->_topic)) {
         $sql .= 'AND (s.tid = \'' . $this->_topic . '\') ';
     }
     if (!empty($this->_author)) {
         $sql .= 'AND (c.uid = \'' . $this->_author . '\') ';
     }
     $search_c = new SearchCriteria('comments', array($LANG09[65], $LANG09[66]));
     $columns = array('title' => 'c.title', 'comment');
     $sql .= $search_c->getDateRangeSQL('AND', 'c.date', $this->_dateStart, $this->_dateEnd);
     list($sql, $ftsql) = $search_c->buildSearchSQL($this->_keyType, $query, $columns, $sql);
     $search_c->setSQL($sql);
     $search_c->setFTSQL($ftsql);
     $search_c->setRank(2);
     return array($search_s, $search_c);
 }
示例#6
0
<?php

$criteria = new SearchCriteria();
if (array_key_exists('busca', $_POST)) {
    $criteria->setValueCriteria($_POST['CampoBusca']);
}
$usuarios = UsuarioMapper::getUsuarios($criteria);
$sessao->addVar('usuarios', $usuarios);
if (array_key_exists('empCancel', $_GET)) {
    $sessao->removeVar('mat');
}
if ($sessao->getVar('msg') != null) {
    if ($sessao->getVar('msg') == 1) {
        Flash::addFlash('Usuário alterado.');
    } elseif ($sessao->getVar('msg') == 2) {
        Flash::addFlash('Permissão alterada.');
    } elseif ($sessao->getVar('msg') == 3) {
        Flash::addFlash('Empréstimo salvo com sucesso.');
    } elseif ($sessao->getVar('msg') == 4) {
        Flash::addFlash("Usuário excluído");
    }
    $sessao->removeVar('msg');
}
示例#7
0
<?php

if (array_key_exists('val', $_POST)) {
    $result = LabMapper::VerificaNumeroLab($_POST['val']);
    if ($result[0] >= 1) {
        echo "true";
    } else {
        echo "false";
    }
}
if (array_key_exists('key', $_GET)) {
    $usuario = Utils::findById($_GET['key'], 'usuarios', 'id_usuario');
    $criteria = new SearchCriteria();
    $criteria->setValueCriteria('0');
    $laboratorios = LabMapper::getLabs($criteria);
}
if (array_key_exists('save', $_POST)) {
    $dados = array('nome_usuario' => array('Usuário'), 'dt_inicial_controle' => array('Data', 'tipo' => 'data'));
    $validacao = ValidaFormulario($dados);
    if ($validacao === true) {
        $data = array('professor_id' => $_GET['key'], 'laboratorio_id' => $_POST['laboratorio_id'], 'observacao_controle' => $_POST['observacao_controle'] == '' ? null : $_POST['observacao_controle'], 'dt_inicial_controle' => Utils::conv_data_to_us($_POST['dt_inicial_controle']) . ' ' . $_POST['hora_inicial_controle']);
        $ch = new CrlChave();
        CrlChaveMapper::map($ch, $data);
        CrlChaveMapper::addCrlChave($ch);
        header('location:index.php?modulo=chaves&page=visualizar');
    }
}
if (array_key_exists('labkey', $_GET)) {
    $crlchave = new CrlChave();
    $crlchave->setLaboratorioId($_GET['labkey']);
    $crlchave->setDtFinalControle(date('Y-m-d H:i:s'));
 function compact()
 {
     parent::compact();
     unset($this->county_name);
 }
示例#9
0
<?php

if (isset($_POST['val'])) {
    $itens = SolMapper::getItens($_POST['val']);
    echo json_encode($itens);
}
$criteria = new SearchCriteria();
if (array_key_exists('busca', $_POST)) {
    $criteria->setValueCriteria($_POST['CampoBusca']);
}
$solicitacoes = SolMapper::getSolicitacoes($criteria);
if ($sessao->getVar('msg') != null) {
    if ($sessao->getVar('msg') == '2') {
        Flash::addFlash('Solicitação excluida!');
    }
    if ($sessao->getVar('msg') == '3') {
        Flash::addFlash('Solicitação registrada!');
    }
    $sessao->removeVar('msg');
}
示例#10
0
<?php

$estados = Utils::getAll('estados_requisicoes');
$criteria = new SearchCriteria();
if (isset($_POST['busca']) and $_POST['estadoBusca'] != 'todos') {
    $criteria->setValueCriteria($_POST['estadoBusca']);
} else {
    if ($sessao->getVar('estado') != null and array_key_exists('estado', $_GET)) {
        if ($_GET['estado'] != 4) {
            $criteria->setValueCriteria($sessao->getVar('estado'));
        }
    }
}
$requisicoes = RequerirMapper::getRequisicaoByCriteria($criteria);
if (array_key_exists('erro', $_GET)) {
    if ($_GET['erro'] == 'concl') {
        Flash::addFlash('Você não pode concluir esta manutencão, pois ela não é sua.');
    }
}
if ($sessao->getVar('msg') != null) {
    if ($sessao->getVar('msg') == '1') {
        Flash::addFlash('Requisição registrada!');
    }
    if ($sessao->getVar('msg') == '2') {
        Flash::addFlash('Requisição alterada!');
    }
    if ($sessao->getVar('msg') == '3') {
        Flash::addFlash('Você não pode editar/deletar requisições de outros usuários!');
    }
    if ($sessao->getVar('msg') == '4') {
        Flash::addFlash('Requisição excluída.');
示例#11
0
<?php

include_once "includes/SystemConfiguration.class.php";
include "includes/language.php";
global $systemConfiguration;
global $logger;
session_start();
$logger->LogInfo(__FILE__);
$systemConfiguration->assertReferer();
// Get serach criteria
$logger->LogInfo("Getting search criteria ...");
$bookingDetails = new BookingDetails();
$searchCriteria = SearchCriteria::fetchFromParameters($_POST);
$logger->LogInfo("Search criteria:");
$logger->LogInfo("Check-in date: " . $searchCriteria->checkInDate->format("Y-m-d"));
$logger->LogInfo("Check-out date: " . $searchCriteria->checkInDate->format("Y-m-d"));
$logger->LogInfo("Adults: " . $searchCriteria->adultsCount);
$logger->LogInfo("Children: " . $searchCriteria->childrenCount);
$logger->LogInfo("Server date/time: " . date("Y-m-d H:i:s"));
if (!$searchCriteria->isValid()) {
    $logger->LogError("Search is not valid!");
    $logger->LogError("Errors:");
    $logger->LogError($searchCriteria->errors);
    $_SESSION['errors'] = $searchCriteria->errors;
    header('Location: booking-failure.php');
} else {
    if (!$systemConfiguration->isSearchEgineEnabled()) {
        $logger->LogError("Search engine is disabled!");
        $_SESSION['errors'] = array(0 => BOOKING_SEARCH_DISABLED);
        header('Location: booking-failure.php');
    } else {
 public static function getSolicitacoes(SearchCriteria $condicao = null)
 {
     TTransaction::open('my_config');
     if ($conn = TTransaction::get()) {
         $sql = "SELECT A.id_aquisicao, \r\n                                    U.nome_usuario,\r\n                                    A.dt_aquisicao_inicial,\r\n                                    A.semestre,\r\n                                    D.nome_disciplina,\r\n                                    F.nome,\r\n                                    C.nome_curso FROM aquisicoes A\r\n                        INNER JOIN usuarios U ON\r\n                        (A.requisitante_id = U.id_usuario)\r\n                        INNER JOIN disciplinas D ON\r\n                        (A.disciplina_id = D.id_disciplina)\r\n                        INNER JOIN fases F ON\r\n                        (A.fase_id = F.id_fase)\r\n                        INNER JOIN cursos C ON\r\n                        (D.curso_id = C.id_curso)";
         if ($condicao !== null) {
             if ($condicao->getValueCriteria() !== null) {
                 $sql .= " WHERE U.nome_usuario like '{$condicao->getValueCriteria()}%'";
             }
         }
         $sql .= "ORDER BY id_aquisicao DESC";
         $sth = $conn->prepare($sql);
         $sth->execute();
         return $sth->fetchALL(PDO::FETCH_OBJ);
         TTransaction::close();
     } else {
         echo 'Sem conexão com banco!';
     }
 }
 /**
  * Adds a display field
  * to the collection $titleFields
  *
  * @param string or array $field the field name
  * @param string $label the field label
  */
 public function addTitleField($field, $label)
 {
     if (gettype($field) == 'array') {
         if (count($field) == 0) {
             throw new InvalidArgumentException('Invalid field');
         }
         $criteriaCollection = new SearchableReadonlyCollection();
         $searchCriteriaProperty = new ToOneRelationPropertyFilter();
         $searchCriteriaProperty->setCriteriaAttribute($field[0]);
         $titleField = new AsyncSearchCriteriaTitleField($field[0], $label);
         for ($i = 1; $i < count($field); $i++) {
             if ($i == count($field) - 1) {
                 $searchCriteria = new SearchCriteria();
                 $searchCriteria->setCriteriaAttribute($field[$i]);
                 $criteriaCollection->add($searchCriteria);
             } else {
                 $searchCriteriaPropertyAux = new ToOneRelationPropertyFilter();
                 $searchCriteriaPropertyAux->setCriteriaAttribute($field[$i]);
                 $criteriaCollection->add($searchCriteriaPropertyAux);
             }
         }
         $i = 1;
         foreach ($criteriaCollection as $criteria) {
             if ($i < $criteriaCollection->count()) {
                 $collectionAux = $criteriaCollection->sliceFrom($i);
                 $criteria->setSearchCriteria($collectionAux->first());
                 $i++;
             }
         }
         $searchCriteriaProperty->setSearchCriteria($criteriaCollection->first());
         $criteriaCollection->reverse();
         $searchCriteria = $criteriaCollection->first();
     } else {
         $searchCriteria = new SearchCriteria();
         $searchCriteria->setCriteriaAttribute($field);
         $titleField = new AsyncSearchCriteriaTitleField($field, $label);
     }
     $filterType = new OrStringFilterType();
     $dataType = new SearchDataTypeString();
     $filterType->setSearchDataType($dataType);
     $searchCriteria->setSearchFilterType($filterType);
     if (gettype($field) == 'array') {
         $titleField->setSearchCriteria($searchCriteriaProperty);
     } else {
         $titleField->setSearchCriteria($searchCriteria);
     }
     $this->titleFields[] = $titleField;
 }
 static function getRequisicaoByCriteria(SearchCriteria $criteria)
 {
     TTransaction::open('my_config');
     if ($conn = TTransaction::get()) {
         $sql = 'SELECT R.*,U.nome_usuario,E.nome_estado_requisicao FROM req_manutencao R
            INNER JOIN usuarios U on
            (R.requisitante_id = U.id_usuario)
            INNER JOIN estados_requisicoes E on
            (R.estado_id = E.id_estado_requisicao)
            WHERE deleted = 0
             and R.estado_id <> 4
             and R.estado_id <> 5';
         if ($criteria !== null) {
             if ($criteria->getValueCriteria() !== null) {
                 $sql .= " and E.id_estado_requisicao = {$criteria->getValueCriteria()}";
             }
         }
         $sql .= ' ORDER BY R.id_requisicao ASC';
         $sth = $conn->prepare($sql);
         $sth->execute();
         $result = $sth->fetchALL(PDO::FETCH_OBJ);
         return $result;
         TTransaction::close();
     } else {
         echo 'Sem conexão com banco!';
     }
 }
示例#15
0
 /**
  * Performs search on all stories
  *
  * @return object plugin object
  *
  */
 private function _searchStories()
 {
     global $_TABLES, $_DB_dbms, $LANG09;
     // Make sure the query is SQL safe
     $query = trim(DB_escapeString($this->_query));
     $sql = 'SELECT s.sid AS id, s.title AS title, s.introtext AS description, ';
     $sql .= 'UNIX_TIMESTAMP(s.date) AS date, s.uid AS uid, s.hits AS hits, ';
     $sql .= 'CONCAT(\'/article.php?story=\',s.sid) AS url ';
     $sql .= 'FROM ' . $_TABLES['stories'] . ' AS s, ' . $_TABLES['users'] . ' AS u, ' . $_TABLES['topic_assignments'] . ' AS ta ';
     $sql .= 'WHERE (draft_flag = 0) AND (date <= NOW()) AND (u.uid = s.uid) ';
     $sql .= 'AND ta.type = \'article\' AND ta.id = sid ';
     $sql .= COM_getPermSQL('AND') . COM_getTopicSQL('AND', 0, 'ta') . COM_getLangSQL('sid', 'AND') . ' ';
     if (!empty($this->_topic)) {
         // Retrieve list of inherited topics
         if ($this->_topic == TOPIC_ALL_OPTION) {
             // Stories do not have an all option so just return all stories that meet the requirements and permissions
             //$sql .= "AND (ta.inherit = 1 OR (ta.inherit = 0 AND ta.tid = '".$this->_topic."')) ";
         } else {
             $tid_list = TOPIC_getChildList($this->_topic);
             $sql .= "AND (ta.tid IN({$tid_list}) AND (ta.inherit = 1 OR (ta.inherit = 0 AND ta.tid = '" . $this->_topic . "'))) ";
         }
     }
     if (!empty($this->_author)) {
         $sql .= 'AND (s.uid = \'' . $this->_author . '\') ';
     }
     $search_s = new SearchCriteria('stories', $LANG09[65]);
     $columns = array('title' => 'title', 'introtext', 'bodytext');
     $sql .= $search_s->getDateRangeSQL('AND', 'date', $this->_dateStart, $this->_dateEnd);
     list($sql, $ftsql) = $search_s->buildSearchSQL($this->_keyType, $query, $columns, $sql);
     $sql .= " GROUP BY s.sid";
     $search_s->setSQL($sql);
     $search_s->setFTSQL($ftsql);
     $search_s->setRank(5);
     $search_s->setURLRewrite(true);
     // Search Story Comments
     $sql = 'SELECT c.cid AS id, c.title AS title, c.comment AS description, ';
     $sql .= 'UNIX_TIMESTAMP(c.date) AS date, c.uid AS uid, \'0\' AS hits, ';
     // MSSQL has a problem when concatenating numeric values
     if ($_DB_dbms == 'mssql') {
         $sql .= '\'/comment.php?mode=view&amp;cid=\' + CAST(c.cid AS varchar(10)) AS url ';
     } else {
         $sql .= 'CONCAT(\'/comment.php?mode=view&amp;cid=\',c.cid) AS url ';
     }
     $sql .= 'FROM ' . $_TABLES['users'] . ' AS u, ' . $_TABLES['topic_assignments'] . ' AS ta, ' . $_TABLES['comments'] . ' AS c ';
     $sql .= 'LEFT JOIN ' . $_TABLES['stories'] . ' AS s ON ((s.sid = c.sid) ';
     $sql .= COM_getPermSQL('AND', 0, 2, 's') . COM_getLangSQL('sid', 'AND', 's') . ') ';
     $sql .= 'WHERE (u.uid = c.uid) AND (s.draft_flag = 0) AND (s.commentcode >= 0) AND (s.date <= NOW()) ';
     $sql .= 'AND ta.type = \'article\' AND ta.id = s.sid ' . COM_getTopicSQL('AND', 0, 'ta');
     if (!empty($this->_topic)) {
         if ($this->_topic == TOPIC_ALL_OPTION) {
             // Stories do not have an all option so just return all story comments that meet the requirements and permissions
             //$sql .= "AND (ta.inherit = 1 OR (ta.inherit = 0 AND ta.tid = '".$this->_topic."')) ";
         } else {
             $sql .= "AND (ta.tid IN({$tid_list}) AND (ta.inherit = 1 OR (ta.inherit = 0 AND ta.tid = '" . $this->_topic . "'))) ";
         }
     }
     if (!empty($this->_author)) {
         $sql .= 'AND (c.uid = \'' . $this->_author . '\') ';
     }
     $search_c = new SearchCriteria('comments', array($LANG09[65], $LANG09[66]));
     $columns = array('title' => 'c.title', 'comment');
     $sql .= $search_c->getDateRangeSQL('AND', 'c.date', $this->_dateStart, $this->_dateEnd);
     list($sql, $ftsql) = $search_c->buildSearchSQL($this->_keyType, $query, $columns, $sql);
     $sql .= " GROUP BY id";
     $search_c->setSQL($sql);
     $search_c->setFTSQL($ftsql);
     $search_c->setRank(2);
     return array($search_s, $search_c);
 }
示例#16
0
 function __construct($criteria, $response_type)
 {
     parent::__construct($criteria, $response_type);
 }
示例#17
0
 /**
  * Performs search on all comments
  *
  * @author Tony Bibbs <tony AT geeklog DOT net>
  *         Sami Barakat <s.m.barakat AT gmail DOT com>
  * @access private
  * @return object plugin object
  *
  */
 function _searchComments()
 {
     global $_CONF, $_TABLES, $_DB_dbms, $LANG09;
     // Make sure the query is SQL safe
     $query = trim(DB_escapeString(htmlspecialchars($this->_query)));
     $sql = "SELECT s.sid AS id, c.title AS title, c.comment AS description, UNIX_TIMESTAMP(c.date) AS date, c.uid AS uid, '0' AS hits, ";
     if ($_CONF['url_rewrite']) {
         $sql .= "CONCAT('/article.php/',s.sid,'#comments') AS url ";
     } else {
         $sql .= "CONCAT('/article.php?story=',s.sid,'#comments') AS url ";
     }
     $sql .= "FROM {$_TABLES['users']} AS u, {$_TABLES['comments']} AS c ";
     $sql .= "LEFT JOIN {$_TABLES['stories']} AS s ON ((s.sid = c.sid) ";
     $sql .= COM_getPermSQL('AND', 0, 2, 's') . COM_getTopicSQL('AND', 0, 's') . COM_getLangSQL('sid', 'AND', 's') . ") ";
     $sql .= "WHERE (u.uid = c.uid) AND (s.draft_flag = 0) AND (s.commentcode >= 0) AND (s.date <= NOW()) ";
     if (!empty($this->_topic)) {
         $sql .= "AND (s.tid = '" . DB_escapeString($this->_topic) . "') ";
     }
     if (!empty($this->_author)) {
         $sql .= "AND (c.uid = " . (int) $this->_author . ") ";
     }
     $search = new SearchCriteria('comments', $LANG09[65] . ' > ' . $LANG09[66]);
     $columns = array('comment', 'c.title');
     $sql .= $search->getDateRangeSQL('AND', 'UNIX_TIMESTAMP(c.date)', $this->_dateStart, $this->_dateEnd);
     list($sql, $ftsql) = $search->buildSearchSQL($this->_keyType, $query, $columns, $sql);
     $search->setSQL($sql);
     $search->setFTSQL($ftsql);
     $search->setRank(2);
     return $search;
 }
示例#18
0
 /**
  * Given the filename, returns an array of commands to execute for xml file creation,
  * This function modifies the sql to handle derived columns dynamically.
  *
  * @param $filename
  * @return array
  */
 private function getXMLJobCommands($filename)
 {
     global $conf;
     $query = $this->jobDetails['data_command'];
     $request_criteria = $this->jobDetails['request_criteria'];
     $search_criteria = new SearchCriteria($request_criteria, $this->responseFormat);
     $config = ConfigUtil::getConfiguration($request_criteria['global']['type_of_data'], $search_criteria->getConfigKey());
     //map tags and build sql
     $rootElement = $config->dataset->displayConfiguration->xml->rootElement;
     $rowParentElement = $config->dataset->displayConfiguration->xml->rowParentElement;
     $elementsColumn = $config->dataset->displayConfiguration->xml->elementsColumn;
     $elementsColumn = (array) $elementsColumn;
     $columnMappings = array_flip($elementsColumn);
     $end = strpos($query, 'FROM');
     $select_part = substr($query, 0, $end);
     $select_part = str_replace("SELECT", "", $select_part);
     $sql_parts = explode(",", $select_part);
     $new_select_part = "'<" . $rowParentElement . ">'";
     foreach ($sql_parts as $sql_part) {
         $sql_part = trim($sql_part);
         $is_derived_column = strpos(strtoupper($sql_part), "CASE WHEN") !== FALSE;
         //get column and alias
         $alias = "";
         if ($is_derived_column) {
             $pos = strpos($sql_part, " AS");
             $column = trim(str_replace("AS", "", substr($sql_part, $pos)));
         } else {
             $pos = strpos($sql_part, " AS");
             $pos = $pos !== FALSE ? $pos : strlen($sql_part);
             $column = substr($sql_part, 0, $pos);
         }
         if (strpos($sql_part, ".") !== false) {
             $alias_pos = strpos($sql_part, ".");
             $alias = substr($sql_part, $alias_pos - 2, 3);
             $column = str_replace($alias, "", $column);
         }
         //Handle derived columns
         $tag = $columnMappings[$column] == "" ? $column : $columnMappings[$column];
         //column open tag
         $new_select_part .= "\n||'<" . $tag . ">' || ";
         if ($is_derived_column) {
             $sql_part = substr_replace($sql_part, "", $pos);
             $new_select_part .= str_replace($alias . $column, "REPLACE(REPLACE(REPLACE(COALESCE(CAST(" . $alias . $column . " AS VARCHAR),''),'&','&amp;'),'>','&gt;'),'<','&lt;')", $sql_part);
         } else {
             $new_select_part .= "REPLACE(REPLACE(REPLACE(COALESCE(CAST(" . $alias . $column . " AS VARCHAR),''),'&','&amp;'),'>','&gt;'),'<','&lt;')";
         }
         //column close tag
         $new_select_part .= " || '</" . $tag . ">'";
     }
     $new_select_part .= "||'</" . $rowParentElement . ">'";
     $new_select_part = "SELECT " . ltrim($new_select_part, "\n||") . "\n";
     $query = substr_replace($query, $new_select_part, 0, $end);
     //open/close tags
     $open_tags = "<?xml version=\"1.0\"?><response><status><result>success</result></status>";
     $open_tags .= "<result_records><record_count>" . $this->getRecordCount() . "</record_count><" . $rootElement . ">";
     $close_tags = "</" . $rootElement . "></result_records></response>";
     $file = $this->getFullPathToFile($filename, $this->tmpFileOutputDir);
     $commands = array();
     //sql command
     $command = $conf['check_book']['data_feeds']['command'] . " -c \"\\\\COPY (" . $query . ") TO '" . $file . "' \" ";
     $commands[$filename][] = $command;
     //prepend open tags command
     $command = "sed -i '1i " . $open_tags . "' " . $file;
     $commands[$filename][] = $command;
     //append close tags command
     $command = "sed -i '\$" . "a" . $close_tags . "' " . $file;
     $commands[$filename][] = $command;
     //xmllint command to format the xml
     $formatted_filename = $this->tmpFileOutputDir . '/formatted_' . $filename . '.xml';
     $command = "xmllint --format {$file} --output {$formatted_filename}";
     $commands[$filename][] = $command;
     //move the formatted file back
     $command = "mv {$formatted_filename} {$file}";
     $commands[$filename][] = $command;
     return $commands;
 }