コード例 #1
0
ファイル: Front.php プロジェクト: laiello/wanderson
 /**
  * Acesso Singleton
  *
  * @return WSL_Controller_Front Elemento Solicitado
  */
 public static function getInstance()
 {
     if (self::$_instance === null) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
コード例 #2
0
ファイル: Request.php プロジェクト: laiello/wanderson
 /**
  * Construção de Parâmetros
  *
  * Captura o endereço de requisição e efetua a conversão de seu conteúdo
  * para possíveis parâmetros apresentados ao cliente.
  *
  * @return WSL_Controller_Request Próprio Objeto para Encadeamento
  */
 protected function _buildParams()
 {
     // Parâmetros de Roteamento
     $params = WSL_Controller_Front::getInstance()->getRouter()->getParams();
     // Processamento
     foreach ($params as $name => $value) {
         // Configuração
         $this->setParam($name, $value);
     }
     return $this;
 }
コード例 #3
0
ファイル: Services.php プロジェクト: laiello/wanderson
 /**
  * Execução de Serviço
  *
  * Construção de Serviços para determinados elementos do sistema, utilizando
  * ações nesta controladora para acesso. Esta inicialização deve ser
  * efetuada somente uma vez por requisição.
  *
  * @param  string $element Nome do Serviço para Execução
  * @return null
  */
 protected function _execute($element)
 {
     // Desabilitar Layout
     WSL_Controller_Front::getInstance()->getConfig()->setParam('Layout.enabled', false);
     // Inicialização
     $service = new SoapServer(null, array('uri' => 'tns:' . $element . 'Service'));
     // Configurar Classe
     $service->setClass('Service_' . $element);
     // Tratamento de Requisição
     try {
         $service->handle();
     } catch (Exception $e) {
         // Tratamento de Erro
         $service->fault('Server', $e->getMessage());
     }
 }
コード例 #4
0
ファイル: Compiler.php プロジェクト: laiello/wanderson
 /**
  * Executa o Compilador
  *
  * Recebe como parâmetros as informações passadas durante a requisição para
  * executar o compilador de documentos LaTeX. O primeiro parâmetro
  * apresentado é o nome do Plugin para execução de entrada de conteúdo; o
  * segundo representa o nome do Plugin de saída; e o último parâmetro é um
  * conjunto de documentos que devem ser compilados para saída do documento
  * no formato desejado.
  *
  * @param  int    $user      Referência ao Usuário Utilizado
  * @param  string $input     Nome do Plugin de Entrada
  * @param  string $output    Nome do Plugin de Saída
  * @param  array  $documents Conjunto de Documentos para Compilação
  * @return array  Conjunto de Informações para Documento Resultado
  * @throws Exception Hash não Apresentado
  * @throws Exception Nome de Arquivo não Apresentado
  * @throws Exception Hash Inválido
  */
 public function compile($user, $input, $output, array $documents)
 {
     // Documentos Apresentados?
     if (empty($documents)) {
         // Sem Compilação
         return array();
     }
     // Adaptador de Conexão
     $adapter = WSL_Controller_Front::getInstance()->getConfig()->getParam('Db.adapter');
     // Adicionar Novo Documento
     $reference = $adapter->insert('wsl_documents', array('user_id' => $user));
     // Inicialização
     $elements = array();
     // Capturar Documentos
     foreach ($documents as $document) {
         // Hash Apresentado?
         if (empty($document['hash'])) {
             // Erro Encontrado
             throw new Exception('Empty Hash');
         }
         // Nome de Arquivo Apresentado?
         if (empty($document['filename'])) {
             // Erro Encontrado
             throw new Exception('Empty Filename');
         }
         // Apresentado Conteúdo?
         if (!empty($document['content'])) {
             // Criar Novo Documento
             $element = WSL_Model_File_File::buildFromContent($document['filename'], base64_decode($document['content']));
         } else {
             // Criação por Hash
             $search = WSL_Model_File_File::findFromHashes(array($document['hash']));
             // Capturar Elemento
             $element = reset($search);
             // Elemento Existe?
             if (!$element->exists()) {
                 throw new Exception("Invalid Hash: '{$document['hash']}'");
             }
             // Salvar Nome de Arquivo
             $element->setFileName($document['filename']);
         }
         // Registro de MetaInformações
         $element->setContainer('documents')->setCategory('input')->setReference($reference);
         // Salvar Elemento
         $element->save();
         // Anexar Elemento
         $elements[] = $element;
     }
     // Inicialização de Contexto
     $context = new WSL_Compiler_Context();
     // Cópia de Arquivos
     foreach ($elements as $element) {
         $context->copy($element->getFileName(), $element->getRealPath());
     }
     // Inicialização de Compilador
     $compiler = new WSL_Compiler_Manager($context);
     $compiler->setBeforePlugin($input)->setAfterPlugin($output);
     // Execução
     $compiler->compile();
     // Capturar Documento Resultante
     $output = $context->getOutput(true);
     // Existe Saída?
     if (empty($output)) {
         // Sem Arquivos
         return array();
     }
     // Adicionar Arquivo Resultado
     $element = WSL_Model_File_File::buildFromRealPath($output);
     $element->setFileName($context->getOutput());
     // Resultados
     $result = array('hash' => $element->getHash(), 'filename' => $element->getFileName(), 'content' => base64_encode($element->getContent()));
     // Registro de MetaInformações
     $element->setContainer('documents')->setCategory('output')->setReference($reference);
     // Salvar Informações
     $element->save();
     // Apresentação
     return $result;
 }
コード例 #5
0
ファイル: index.php プロジェクト: laiello/wanderson
<?php

// Ambiente de Software
define('APPLICATION_ENV', 4);
// Diretório do Aplicativo
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Inicialização de Caminho de Inclusão
set_include_path(implode(PATH_SEPARATOR, array(dirname(APPLICATION_PATH) . '/library', get_include_path())));
// Carregamento
require_once 'WSL/Loader/Autoloader.php';
// Autocarregador de Classes
$autoloader = WSL_Loader_Autoloader::getInstance();
// Controladora Frontal
$front = WSL_Controller_Front::getInstance();
// Mapeamento de Camadas
$autoloader->setMapper('Controller', realpath(APPLICATION_PATH . '/controllers'))->setMapper('Model', realpath(APPLICATION_PATH . '/models'))->setMapper('Service', realpath(APPLICATION_PATH . '/services'));
// Elementos de Fluxo
$request = new WSL_Controller_Request();
$response = new WSL_Controller_Response();
// Caminhos de Renderização
$front->getView()->addScriptPath(realpath(APPLICATION_PATH . '/views'));
// Configurações
$front->getConfig()->setParam('Layout.enabled', true);
// Banco de Dados
$adapter = new WSL_Db_Adapter_MySQL(array('host' => 'localhost', 'dbname' => 'wsl', 'username' => 'root', 'password' => '102030'));
// Registrar Adaptador
$front->getConfig()->setParam('Db.adapter', $adapter);
// Camada de Arquivos
$handler = new WSL_Model_File_DbInfoHandler($adapter);
WSL_Model_File_File::setDefaultHandler($handler);
WSL_Model_File_File::setBasePath(realpath(APPLICATION_PATH . '/../data/files'));
コード例 #6
0
ファイル: Users.php プロジェクト: laiello/wanderson
    /**
     * Autenticação
     *
     * Ação utilizada para efetuar a autenticação de um usuário dentro do
     * sistema. Para utilizar o serviço, o usuário necessita efetuar uma
     * autenticação no sistema, apresentando informações sobre e-mail e hash
     * utilizado, que serão comparados com a base de dados. Caso as informações
     * estiverem corretas, será apresentado um token que deve ser considerado
     * como sessão atual do usuário, necessitando ser enviado sempre que algum
     * recurso do servidor estiver sendo utilizado.
     *
     * @param  string $email E-mail do Usuário Cadastrado
     * @param  string $hash  Hash do Usuário para Autenticação
     * @return string Token de Autenticação
     */
    public function login($email, $hash)
    {
        // Adaptador de Conexão
        $adapter = WSL_Controller_Front::getInstance()->getConfig()->getParam('Db.adapter');
        // Filtro de Informações
        $email = (string) $email;
        $hash = (string) $hash;
        // Consulta
        $sql = <<<SQL
SELECT
    `u`.`id`, (`u`.`hash` = '{$hash}') AS `compare`
FROM `wsl_users` AS `u` WHERE `u`.`email` = '{$email}'
SQL;
        // Consulta de Informações
        $result = $adapter->query($sql);
        // Verificação
        if (!empty($result)) {
            // Elemento Encontrado
            $element = reset($result);
            // Comparação de Senhas
            if ($element['compare']) {
                // Existe Usuário Autenticado?
                do {
                    // Credenciais Válidas
                    $seed = date('Y-m-d H:i:s.u');
                    // Criação de Token
                    $token = self::salt($seed);
                    // Possível Autenticar?
                } while ($this->check($token, true));
                // Identificador
                $id = $element['id'];
                // Sessão Utilizada
                $adapter->insert('wsl_sessions', array('user_id' => $id, 'token' => $token));
            } else {
                // Hash não Encontrado
                $token = null;
            }
        } else {
            // Usuário não Encontrado
            $token = null;
        }
        // Apresentação
        return $token;
    }