예제 #1
0
 /**
  * Método que retorna todos os tipos cadastrados em formato de objeto JSON com as suas respectivas associações
  */
 public function listar()
 {
     $fapTipo = new ModelBase("fap.fap_tipo");
     $fapSubTipo = new ModelBase("fap.fap_subtipo");
     $fapTipoTodos = $fapTipo->select("pk_fap_tipo>0");
     while ($fap = $fapTipoTodos->fetchObject("fap_fap_tipo")) {
         $tmpFap = new stdClass();
         $tmpFap->id = $fap->pk_fap_tipo;
         $tmpFap->nome = $fap->fap_tipo_nome;
         $tmpFap->categoria = $fap->cat;
         $tmpFap->subTipos = array();
         $fapSubTipoTodos = $fapSubTipo->select("fk_fap_tipo={$fap->pk_fap_tipo}");
         while ($fapSub = $fapSubTipoTodos->fetchObject("fap_fap_subtipo")) {
             $tmpSub = new stdClass();
             $tmpSub->id = $fapSub->pk_fap_subtipo;
             $tmpSub->nome = $fapSub->fap_subtipo_nome;
             $tmpSub->cor = $fapSub->cor_subtipo;
             $tmpSub->score = $fapSub->pontuacao;
             $tmpSub->obs = $fapSub->obs;
             $tmpSub->positiva = (bool) $fapSub->positiva;
             array_push($tmpFap->subTipos, $tmpSub);
         }
         $this->appendResposta($tmpFap);
     }
     $this->statusTrue()->setStatusCod(0)->printResposta();
 }
예제 #2
0
파일: user.m.php 프로젝트: lotcz/zshop
 public function loadPermissions()
 {
     $permissions = ModelBase::select($this->db, 'viewPermissionsByUser', 'user_role_user_id = ?', [$this->val('user_id')]);
     $this->permissions = [];
     foreach ($permissions as $permission) {
         $this->permissions[] = $permission->val('permission_name');
     }
 }
예제 #3
0
파일: tables.php 프로젝트: lotcz/zshop
 public function prepare($db)
 {
     $this->paging = Paging::getFromUrl();
     $this->paging->limit = $this->page_size;
     Paging::$max_pages_links = $this->max_pages_links;
     $this->search = isset($_GET['s']) ? $_GET['s'] : '';
     // add filtering logic here
     $this->data = ModelBase::select($db, $this->name, $this->where, $this->bindings, $this->types, $this->paging, $this->orderby);
 }
예제 #4
0
 /**
  * Método que permite editar a conta selecionada
  * @param int $contaId
  */
 public function editar($contaId = FALSE)
 {
     $id = (int) $contaId;
     $this->contas->setId($id);
     $conta = $this->contas->getObject();
     if (!$id || !$conta) {
         echo Javascript::alert("A conta informada é inválida");
         echo Javascript::history_back();
         return;
     }
     //        $acao = $this->load->model('public_acao');
     $acao = new ModelBase("public.acao");
     $this->setData('conta', $conta)->setData('acao', $acao->select("", array(), "", array('modulo')))->printView();
 }
예제 #5
0
 /**
  * Método que exibe a página com os detalhes do uso do sap de acordo com o professor informado
  * @param type $profCod O código do professor na tabela usuario_professor
  */
 public function detalhes_de_uso_do_afa($profCod = FALSE)
 {
     //        $this->forceMobile();
     $profCodigo = (int) $profCod;
     if (!$profCodigo && !$this->getFiltros()->shadowbox) {
         echo Javascript::alert('O professor informado é inválido');
         echo Javascript::shadowboxClose();
         echo Javascript::close();
         return;
     }
     $afaTipos = new ModelBase('afa.Afa_Tipo_Anotacao');
     $afa = new Kernel_Models_Afa();
     $this->setData('professor', $this->professores->selectUsuarioProfessor($profCodigo))->loadPlugin('google.jsapi')->loadPlugin('jquery.tablesorter')->setData('afaTipos', $afaTipos->select('pk_afa_tipo_anotacao>1'))->setData('avaliacoes', $afa->selectRegistrosDeProfessores(FALSE, $profCodigo, TRUE))->printView();
 }
예제 #6
0
 /**
  * Método que trabalha os dados para exibição dos indicadores dos professores
  * @param int $pkPesquisaCat O código da categoria da pesquisa
  * @param int $pkSerie O código da serie
  * @param int $pkTurma O código da turma
  */
 public function indicadores($pkPesquisaCat, $pkSerie, $pkTurma)
 {
     $sqlPesquisa = new SqlPesquisa();
     $pesquisaNome = $sqlPesquisa->get_pesquisa_nome((int) $pkPesquisaCat);
     if (!(int) $pkPesquisaCat || !(int) $pkSerie || !(int) $pkTurma || !count($pesquisaNome)) {
         echo Javascript::alert('Dados inválido. Os dados informados para a pesquisa são inválidos');
         echo Javascript::shadowboxClose();
         echo Javascript::history_back();
         return;
     }
     $turma = new Kernel_Models_Turma();
     //        $fapRankingPesqTurmaInd = $this->load->model('fap_ranking_pesquisa_turma_indicador');
     $fapRankingPesqTurmaInd = new ModelBase("fap.ranking_pesquisa_turma_indicador");
     $rankingTurma = $fapRankingPesqTurmaInd->select('fk_pesquisa_cat=' . $pkPesquisaCat . ' and fk_turma=' . $pkTurma, array(), '', array('indicador'), array(), 0, 0, 0);
     $lsita = array();
     $conteudo = $assiduidade = $disciplina = $envolvimento = array();
     $arrayTipos = array('', 'Conteúdo', 'Assiduidade', 'Disciplina', 'Envolvimento');
     while ($row = $rankingTurma->fetchObject()) {
         if (!isset($lsita[$row->fk_pes_questao_template][$row->fk_usuario_professor])) {
             $lsita[$row->fk_pes_questao_template][$row->fk_usuario_professor] = $row;
         }
         switch ($row->fk_pes_questao_template) {
             case 1:
                 $conteudo[] = $row->indicador;
                 break;
             case 2:
                 $assiduidade[] = $row->indicador;
                 break;
             case 3:
                 $disciplina[] = $row->indicador;
                 break;
             default:
                 $envolvimento[] = $row->indicador;
                 break;
         }
     }
     $conteudoMedia = Matematica::mediaAritimeticaArray($conteudo);
     $assiduidadeMedia = Matematica::mediaAritimeticaArray($assiduidade);
     $disciplinaMedia = Matematica::mediaAritimeticaArray($disciplina);
     $envolvimentoMedia = Matematica::mediaAritimeticaArray($envolvimento);
     $this->setData('sqlPesquisa', $sqlPesquisa)->setData('pkPesquisa', $pkPesquisaCat)->setData('pesquisaNome', $pesquisaNome)->setData('pkSerie', $pkSerie)->setData('pkTurma', $pkTurma)->setData('conteudoMedia', number_format($conteudoMedia, 1))->setData('conteudoConceito', View::bgConceito($conteudoMedia))->setData('assiduidadeMedia', number_format($assiduidadeMedia, 1))->setData('assiduidadeConceito', View::bgConceito($assiduidadeMedia))->setData('disciplinaMedia', number_format($disciplinaMedia, 1))->setData('disciplinaConceito', View::bgConceito($disciplinaMedia))->setData('envolvimentoMedia', number_format($envolvimentoMedia, 1))->setData('envolvimentoConceito', View::bgConceito($envolvimentoMedia))->setData('listaResumo', $lsita)->setData('arrayTipos', $arrayTipos)->setData('turma', $turma->getObject('pk_turma=' . (int) $pkTurma))->setData('pesquisaTurma', $sqlPesquisa->ranking_pesquisa_turma($pkPesquisaCat, $pkTurma, $this->getData('ano_letivo')))->setData('filtroTurmas', $sqlPesquisa->ranking_pesquisa_cat_fitro_turma($pkPesquisaCat, $pkSerie, $this->getData('ano_letivo')))->printView();
 }
예제 #7
0
 /**
  * Método que gera o ranking de uso do afa por parte dos coordenadores
  */
 public function listar_ranking_uso_sap()
 {
     $this->loadPlugin("jquery.tablesorter");
     if (!$this->getData('mobile')) {
         $this->appendJs('https://maxcdn.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js');
     }
     $ano = filter_input(INPUT_GET, 'ano', FILTER_VALIDATE_INT);
     $coordenadores = new Kernel_Models_Coordenador();
     $afaConceitoAluno = new Kernel_Models_Afa();
     $afaConceitoAlunoTipo = new ModelBase('afa.Afa_Tipo_Anotacao');
     $afaConceitoAlunoSubT = new ModelBase("afa.afa_subtipo_anotacao");
     $colunas = array("fk_usuario_coordenador", "score", "pk_afa_subtipo_anotacao", "fk_afa_tipo_anotacao");
     $avaliacoes = $afaConceitoAluno->listarPorAno($ano, TRUE, $colunas);
     $totalAva = $avaliacoes->rowCount();
     $arrayAva = array();
     if ($totalAva) {
         while ($row = $avaliacoes->fetchObject()) {
             Matematica::incrementoIsset($arrayAva[$row->fk_usuario_coordenador], 'qt');
             Matematica::incrementoIsset($arrayAva[$row->fk_usuario_coordenador]['tipo'], $row->fk_afa_tipo_anotacao);
             Matematica::incrementoIsset($arrayAva[$row->fk_usuario_coordenador]['sub'], $row->pk_afa_subtipo_anotacao);
         }
     }
     $this->setData('afaConceitosTipos', $afaConceitoAlunoTipo->select("", array("*"), "", array('afa.afa_tipo_anotacao.afa_tipo_anotacao_nome'), array(), 0, 0, 0)->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_CLASS))->setData('afaConceitosSubTipos', $afaConceitoAlunoSubT->select()->fetchAll(PDO::FETCH_GROUP | PDO::FETCH_CLASS))->setData('coordAtivos', $coordenadores->listarAtivos()->fetchAll(PDO::FETCH_CLASS))->setData('totalAva', $totalAva)->setData('arrayAva', $arrayAva)->printView();
 }
예제 #8
0
파일: forms.php 프로젝트: lotcz/zshop
 public function prepare($db, $data)
 {
     $this->data = $data;
     if ($this->is_admin_form) {
         $this->action = sprintf($this->action, $this->data->val($this->id));
         $this->del_url = sprintf($this->del_url, $this->data->val($this->id));
     }
     foreach ($this->fields as $field) {
         if (isset($field->name)) {
             $field->value = $this->data->val($field->name);
             if ($field->type == 'select' && !isset($field->select_data)) {
                 $field->select_data = ModelBase::select($db, $field->select_table, null, null, null, null, $field->select_label_field);
             } elseif ($field->type == 'foreign_key_link') {
                 $entity = new ModelBase($db);
                 $entity->table_name = $field->link_table;
                 $filter = sprintf('%s = ?', $field->link_id_field);
                 $entity->loadSingleFiltered($filter, [$this->data->val($field->name)]);
                 $field->link_label = $entity->val($field->link_label_field);
                 $field->link_url = sprintf($field->link_template, $entity->val($field->link_id_field));
             }
         }
     }
 }
예제 #9
0
 /**
  * Método que verifica se os dados informados são válidos
  * @param boolean $editar Define se o método ira fazer a validação de um objeto a ser editado ou não
  * @return boolean|int Retorna FALSE caso os dados estejam corretos ou um código referente ao erro
  */
 public function validar($editar = FALSE)
 {
     if (!Strings::validar($this->nome_descricao)) {
         return 1;
     }
     if (!filter_var($this->email_from, FILTER_VALIDATE_EMAIL)) {
         return 2;
     }
     if (!$editar) {
         $tmp = $this->select("email_from='" . $this->email_from . "'");
         if ($tmp) {
             if ($tmp->rowCount()) {
                 return 10;
             }
         }
     }
     if (!Strings::validar($this->from_name)) {
         return 3;
     }
     if (!Strings::validar($this->senha)) {
         return 4;
     }
     if ($this->tipo_seguranca != 'ssl' && $this->tipo_seguranca != 'tsl') {
         return 5;
     }
     if (!is_int($this->porta)) {
         return 6;
     }
     if (!Strings::validar($this->host)) {
         return 7;
     }
     if ($this->envio_exclusivo != 0) {
         $tmp = explode("/", $this->envio_exclusivo);
         $acao = new ModelBase("public.acao");
         if (!$acao->select("modulo='" . $tmp[0] . "' and controle='" . $tmp[1] . "' and metodo='" . $tmp[2] . "'", array(), "", array(), array(), 1)->rowCount()) {
             return 8;
         }
     }
     return 0;
 }
예제 #10
0
 /**
  * Método que retorna uma mensagem de acordo com o id informado.
  * @param int $idMensagem O indice da mensagem no banco
  * @return Kernel_Models_AgendasSemanais Um objeto contendo todos os dados da mensagen
  * @throws Exception Caso o id seja inválido
  */
 public function getMensagem($idMensagem)
 {
     $this->setId($idMensagem);
     $mensagem = $this->getObject();
     if (!$mensagem) {
         throw new Exception("A mensagem informada é inválida");
     }
     //Buscando destinatários
     $tipoDestinatario = $mensagem->getTipoDestinatarios();
     $objDestinatario = new $tipoDestinatario();
     $destinModel = new ModelBase($this->getTabela() . "_destinatarios ");
     $destinatarios = $destinModel->select("mensagem=" . $mensagem->getId());
     //Adicionadno os destinatários ao objeto atual
     while ($destinatario = $destinatarios->fetchObject()) {
         $mensagem->setDestinatarios($objDestinatario->get($destinatario->pk_destinatario));
     }
     //retornando o objeto montado
     return $mensagem;
 }
예제 #11
0
<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 * 
 * @author Servidor
 */
$fapTiposRegistros = new ModelBase("fap.fap_tipo");
$fapTiposRegistrosListar = $fapTiposRegistros->select();
?>
<select name="fap_tipo" class="filtro">
    <option value=""><?php 
echo $filtros->fap_tipo ? 'Todas os tipos de registros' : 'Filtrar por tipo de registro';
?>
</option>
    <?php 
if ($fapTiposRegistrosListar) {
    while ($row = $fapTiposRegistrosListar->fetchObject()) {
        ?>
<option value="<?php 
        echo $row->pk_fap_tipo;
        ?>
"<?php 
        echo $row->pk_fap_tipo === $filtros->fap_tipo ? ' selected' : '';
        ?>
><?php 
        echo $row->fap_tipo_nome;
예제 #12
0
 /**
  * Retorna um histórico de aulas dadas
  * @param int $pkUsuario O código do professor. Não precisa ser informado caso o professor esteja logado
  * @param int $de Um filtro indicando que devem ser exibidos os registros a partir de uma determinada data
  * @param int $ate Um filtro indicando até onde devem ser exibidos os registros 
  * @param int $escola Exibir apenas de uma escola
  * @param int $unidade Exibir os registros apenas de uma unidade
  * @param int $serie Os registros de uma unica série
  * @param int $turma Os registros de uma unica turma
  */
 public function get_historico_aulas($pkUsuario = 0)
 {
     $validarUser = new Kernel_Models_ValidarUsuarios();
     $professor = $validarUser->professor($pkUsuario);
     if ($professor) {
         $this->statusTrue()->setStatusCod(0);
         //            $aulas = $this->load->model('public_aula');
         $aulas = new ModelBase("public.aula");
         $aulasList = $aulas->select('fk_usuario=' . $professor->getId() . ' and extract(year from data_aula)=\'' . date('Y') . '\'', array(), "inner join public.usuario_professor on pk_usuario_professor=fk_usuario_professor");
         //Lendo as aulas do professor
         while ($row = $aulasList->fetchObject()) {
             $ret = new stdClass();
             $ret->conteudo = $row->conteudo;
             $ret->dt_aula = $row->data_aula;
             $ret->obs = $row->obs;
             $this->appendResposta($ret);
         }
     } else {
         $this->setMensagem("O professor informado é inválido");
     }
     $this->printResposta();
 }
예제 #13
0
 /**
  * Método que retorna um chamado de acordo com o id informado.
  *
  * @param int $chamadoId O código referente ao chamado
  *
  * @return eqpedagogica_models_Ouvidoria|boolean retorna um objeto do tipo Ouvidoria com as mensagens
  *                                              associadas ou FALSE em caso de erro
  */
 public function getChamado($chamadoId)
 {
     $this->setId($chamadoId);
     $query = 'select public.helpdesk.*,public.usuario.nome as destinatario_nome, ' . 'public.usuario.foto as destinatario_foto ' . 'from ' . $this->getTabela() . ' ';
     $query .= 'inner join public.usuario on pk_usuario=destinatario ';
     $query .= 'inner join public.usuario_tipo_vin on ' . 'fk_tipo_usuario=destinatario_tipo and fk_usuario=destinatario ';
     $query .= 'where id=' . $this->getId();
     $retorno = $this->queryStatement($query);
     if (!$retorno->rowCount()) {
         //caso o chamdo não seja encontrado
         $this->appendErro('O chamado informado é inválido');
         return false;
     }
     $chamado = $retorno->fetchObject(get_class($this));
     //Buscando as mensagens do chamado
     $mensagem = new ModelBase($this->getTabela() . '_mensagens');
     $chamado->mensagens = $mensagem->select("chamado={$chamadoId}");
     return $chamado;
 }
예제 #14
0
 public function loadAllowedPaymentTypes()
 {
     $this->allowed_payment_types = ModelBase::select($this->db, 'viewAllowedPaymentTypes', 'allowed_payment_type_delivery_type_id = ?', [$this->val('delivery_type_id')]);
 }
예제 #15
0
 /**
  * Exibe a página do relatório semanal do professor
  * @param type $pkUsuario
  * @return type Método que gera a página com o resumo semanal do professor
  */
 public function meu_resumo_semanal($pkUsuario = FALSE)
 {
     $validarUser = new Kernel_Models_ValidarUsuarios();
     $professor = $validarUser->professor($pkUsuario);
     $this->load->helper('andamento');
     $aulas = new ModelBase("public.aula");
     $registros = new Kernel_Models_Fap();
     $contratos = new Kernel_Models_Contratos();
     $agendasProf = new docentes_models_AgendaSemanal();
     $centralNotifi = new Kernel_Models_Notificacoes();
     $equipes = new Kernel_Models_Equipes();
     $unidade = new Kernel_Models_Unidade();
     $serie = new Kernel_Models_Serie();
     //Definindo os dados do professor
     $fapRegistros = $registros->registrosDeProfessor($professor);
     $contratos->setUsuario($professor);
     $resposta = $contratos->getResposta($professor, 1);
     $ultAula = $aulas->select("fk_livro!=0 and fk_usuario=" . $professor->getId(), array(), "inner join usuario_professor on fk_usuario_professor=pk_usuario_professor", array("pk_aula"), array(), 1, 0, FALSE);
     if ($resposta == 2) {
         $this->appendJs('/themes/appjs/assets/js/agendas/professor/meu_resumo_semanal_contrato_prof.min.js');
     }
     //Configurando as notificações
     $ids = array('novidades_docentes_fap', 'novidades_docentes_afa', 'novidades_docentes_acompanhamento', 'novidades_docentes_pesuisas_alunos', 'novidades_docentes_pesquisas_coord', 'novidades_docentes_diario_cl', 'novidades_docentes_mensagens');
     $parametros = array('professorId' => (string) $professor->getId());
     $centralNotifi->getUltimos($ids, $parametros);
     //Repassando os dados para o view
     $this->definirTema("appjs")->loadPlugin('bootstrap')->bowerLoad('metisMenu')->bowerLoad('angularjs')->loadPlugin('conceitos')->loadPlugin('notif.center')->setData('htmlBody', 'ng-app="app"')->setData('professor', $professor)->setData('unidades', $unidade->listarTodas(null, $professor))->setData("series", $serie->listarTodas(null, $professor))->setData('equipes', $equipes->listarTodas(null, $professor))->setData('fap', $fapRegistros)->setData('ultimaAula', $ultAula)->setdata('contrato', $resposta)->setData('temMensagem', $agendasProf->temMensagem($professor))->setData('ids', $ids)->setData('parametros', $parametros)->setData('centralNotifi', $centralNotifi)->setData('iconeNotif', base_url() . 'themes/geral/images/logo.png')->setData('arquivos', new Arquivos())->printView();
 }
예제 #16
0
파일: product.m.php 프로젝트: lotcz/zshop
 public function loadVariants()
 {
     $this->variants = ModelBase::select($this->db, 'product_variants', 'product_variant_product_id = ?', [$this->val('product_id')]);
 }
예제 #17
0
 static function getAllowedPT($db)
 {
     return ModelBase::select($db, 'allowed_payment_types');
 }
예제 #18
0
 /**
  * Método de envio de mensagens(envio geral)
  */
 public function contatenos()
 {
     $data = $this->getParametroVisao();
     $msg = '';
     //
     if ($_SERVER['REQUEST_METHOD'] == "POST") {
         ini_set('default_charset', 'utf8');
         //Executando o cadastro da mensagem
         $titulo = filter_input(INPUT_POST, 'assunto', FILTER_SANITIZE_MAGIC_QUOTES);
         $mensagem = filter_input(INPUT_POST, 'mensagem', FILTER_SANITIZE_MAGIC_QUOTES);
         $destinatario = filter_input(INPUT_POST, 'destinatario', FILTER_SANITIZE_MAGIC_QUOTES);
         if (!$destinatario) {
             echo Javascript::alert("O destinatário informado é invalido. Selecione um na lista");
             echo Javascript::history_back();
             exit;
         }
         if (!$titulo) {
             echo Javascript::alert("O assunto informado é inválido");
             echo Javascript::history_back();
             exit;
         }
         if (!$mensagem) {
             echo Javascript::alert("A mensagem informada é inválida");
             echo Javascript::history_back();
             exit;
         }
         $novaMensagem = "<p>Mensagem para {$destinatario}</p>";
         $novaMensagem .= "<div>Assunto:{$titulo}</div>";
         $novaMensagem .= "<div>Mensagem</div><div>{$mensagem}</div>";
         if (!Mail::envioSimples($novaMensagem, "Mensagem enviada pela áres restrita", "*****@*****.**", "Colégio GGE")) {
             echo Javascript::alert("Ocorreu um erro ao tentar enviar a mensagem. Tente novamente mais tarde");
             echo Javascript::history_back();
             exit;
         }
         echo Javascript::alert("Mensagem enviada com sucesso");
         echo Javascript::window_location(base_url() . 'transf/mensagem/contatenos/');
         exit;
     }
     //Exibindo a página
     if ($data['mobile']) {
         $data['usuario'] = unserialize($_SESSION['usuario']);
         $data['page'] = 'default';
         $data['tema'] = $this->load->setTheme('responsive');
     } else {
         $data['page'] = 'home';
         $data['tema'] != '' ? $this->load->setTheme($data['tema']) : '';
     }
     $data['msg'] = $msg;
     $data['abaAtiva'] = 10;
     $data['alias'] = $data['abaPage'] = __FUNCTION__;
     $data["js"] = array("/js/plugins/filtros/filtros.min.js");
     //
     $data["arrayFiltros"] = array("unidade", "serie", "turma");
     $filtrosSistema = new FiltrosSistema();
     $data["filtros"] = $filtrosSistema;
     //        $tipo_usuario = $this->load->model('public_tipo_usuario');
     $tipo_usuario = new ModelBase("public.tipo_usuario");
     $data['pk_tipo_usuario'] = filter_input(INPUT_GET, 'tipousuario', FILTER_VALIDATE_INT);
     $data['tipo_usuario'] = $tipo_usuario->select("pk_tipo_usuario=3 or pk_tipo_usuario=15 and pk_tipo_usuario!=11");
     //
     switch ($data['pk_tipo_usuario']) {
         case Kernel_Models_TiposUsuario::TIPO_COORDENADOR:
             $usuarios = new Kernel_Models_Coordenador();
             $data['destinatarios'] = $usuarios->listarTodos($filtrosSistema);
             $data["arrayFiltros"] = array("unidade");
             break;
         case Kernel_Models_TiposUsuario::TIPO_PROFESSOR:
             $usuarios = new Kernel_Models_Professor();
             $data['destinatarios'] = $usuarios->listarTodos($filtrosSistema);
             $data["arrayFiltros"] = array("unidade", "serie", "turma");
             break;
         default:
             $data['destinatarios'] = FALSE;
             break;
     }
     $filtrosSistema->init($data["arrayFiltros"]);
     $this->load->view($this->load->getUrlTema(), $data);
 }
예제 #19
0
파일: dashboard.c.php 프로젝트: lotcz/zshop
<?php

$sessions = ModelBase::select($db, 'viewSessionsStats');