示例#1
0
 /** Realiza lar carga inicial */
 protected function init()
 {
     //Carga las dependencias en base a la lista de archivos definidos en configuracion global
     $this->dependencies = array();
     foreach ($this->context->getDependenciesFile() as $nameFile) {
         $this->dependencies = array_merge($this->dependencies, $this->context->readConfigurationFile($nameFile));
     }
     //Define las dependencias que se cargan segun Type
     $this->loadDependencies = array();
     foreach ($this->dependencies as $key => $value) {
         if (isset($value['load_in'])) {
             $this->loadDependencies[$key] = $value;
         }
     }
 }
示例#2
0
 /**
  * Abre una conexion en base a la configuracion de la BD
  * @param string $nameDB
  * @return \PDO
  * @throws \PDOException
  */
 protected function getConnection($nameDB = NULL)
 {
     //Leo archivo de configuracion de BD si es la primera vez
     if (self::$config_db == NULL) {
         self::$config_db = $this->context->readConfigurationFile($this->configFile);
     }
     //Consulta la bd actual si no se indico opcion        print_r(self::$config_db);
     if ($nameDB == NULL) {
         $nameDB = self::$config_db['actual_db'];
     }
     //Cargo las opciones de la bd actual
     $cbd = self::$config_db[$nameDB];
     $this->currentDB = $nameDB;
     $this->currentConfiguration =& self::$config_db[$nameDB];
     //Abro una conexion
     try {
         // Desde 5.3.6 o >
         // $gbd->exec("set names " . $cbd['charset']);
         // Versiones anteriores usaba $cbd['driverbd'].':host='.$cbd['hostname'].';dbname='.$cbd['database'].';charset=utf8';
         //Creo el dsn
         $dsn = $cbd['driverbd'] . ':';
         //Para SQLite y el resto
         if ($cbd['driverbd'] == "sqlite") {
             $dsn .= $cbd['database'];
         } else {
             $dsn .= 'host=' . $cbd['hostname'] . ';port=' . $cbd['port'] . ';dbname=' . $cbd['database'];
         }
         if ($cbd['user'] == "") {
             $cbd['user'] = NULL;
             $cbd['pass'] = NULL;
         }
         //Abro la conexion
         $gbd = new \PDO($dsn, $cbd['user'], $cbd['pass'], array(\PDO::ATTR_PERSISTENT => $cbd['persistent']));
         $gbd->exec("SET NAMES '" . $cbd['charset'] . "'");
         if ($this->context->getEnvironment() == 'development') {
             $gbd->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
         } else {
             $gbd->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_SILENT);
         }
         //Retorno la conexion
         return $gbd;
     } catch (\PDOException $e) {
         throw $e;
     }
 }
示例#3
0
 /**
  * Si corresponde:
  * Inicializa el calculo del tiempo de respuesta
  */
 public function initPerformance($timeBegin = NULL)
 {
     //Analiza si calcula el tiempo que tarda la aplicacion en ejecutarse
     $this->performance = NULL;
     if ($this->context->CalculatePerformance()) {
         //Incluye la clase Rendimiento
         $this->performance = new Support\Performance($timeBegin);
     }
 }
示例#4
0
/**
 * Cargo una libreria de composer pasando una direccion desde vendor folder
 * @param string $dir
 */
function import_librarie_composer($dir)
{
    $dir = EnolaContext::getInstance()->getPathRoot() . 'vendor/' . $dir . '.php';
    require_once $dir;
}
示例#5
0
/**
 * Retorna el locale configurado para el contenido internacionalizado
 * @return string
 */
function i18n_locale()
{
    return Ctx::getInstance()->app->view->i18n_locale();
}
示例#6
0
 /**
  * Se crea la URI ACTUAL de la aplicacion, una URI con el Locale y otra sin Locale, se define la base url real, etc.
  * @param \EnolaContext $context
  * @return array
  */
 public static function defineApplicationUri($context)
 {
     //Resultado de Configuracion - DefinirURI
     $result = array();
     //Cargo la URI segun el servidor - Esta casi siempre es todo lo que esta despues de www.edunola.com.ar o localhost/
     $uri_actual = $_SERVER['REQUEST_URI'];
     //Analizo la cantidad de partes de la baseurl + indexpage(si corresponde) para poder crear la URI correspondiente para la aplicacion
     $url_base = BASEURL;
     $index_page = $context->getIndexPage();
     if ($index_page != '') {
         $url_base .= trim($index_page, '/') . '/';
     }
     //REAL_BASE_URL: Real Base Url de la aplicacion - Es la union de BASE_URL y INDEX_PAGE
     $result['REAL_BASE_URL'] = $url_base;
     $url_base = explode("/", $url_base);
     $uri_app = "";
     //0= http, 1= //, 2= dominio, >3= una carpeta cualquiera
     if (count($url_base) > 3) {
         //Trabajar desde el 4to elemento del arreglo
         $count_url_base = count($url_base);
         for ($i = 3; $i < $count_url_base; $i++) {
             $uri_app .= "/" . $url_base[$i];
         }
     }
     //Elimino la parte de la URI que es fija y no es utilizada - Esto seria en caso de que haya carpeta
     $uri_actual = substr($uri_actual, strlen($uri_app));
     //Elimino "/" en caso de que haya una al final de la cadena
     $uri_actual = trim($uri_actual, "/");
     /*
      * Analizar Internacionalizacion
      */
     //Crea las variable LOCALE, LOCALE_URI, URI_LOCALE, BASEURL_LOCALE
     $locale_actual = NULL;
     $locale_uri = NULL;
     $uri_app_locale = $uri_actual;
     $base_url_locale = $result['REAL_BASE_URL'];
     //Si hay configuracion de internacionalizacion realiza analisis
     if ($context->isLocalesDefined()) {
         //Consigue el locale por defecto
         $locale_actual = $context->getI18nDefaultLocale();
         //Consigo la primer parte de la URI para ver si esta internacionalizada
         $uri_locale = explode("/", $uri_actual);
         $uri_locale = $uri_locale[0];
         //Consigo el resto de los posibles LOCALES
         //Recorro todos los locale para ver si alguno coincide con la primer parte de la URL
         foreach ($context->getI18nLocales() as $locale) {
             //Cuando un locale coincide armo los datos correspondientes
             if ($uri_locale == $locale) {
                 //Cambio el locale y el locale uri por el correspondiente
                 $locale_actual = $locale;
                 $locale_uri = $locale;
                 //Salgo del For
                 break;
             }
         }
         if ($locale_actual == $uri_locale) {
             //Le quito la parte de internacionalizacion a la uri actual
             $uri_actual = substr($uri_actual, strlen($locale_actual));
             $uri_actual = trim($uri_actual, "/");
             //Le agrego la parte internacinalizada al base locale
             if ($locale_uri != NULL) {
                 $base_url_locale = $base_url_locale . $locale_uri . "/";
             }
         }
     }
     //URIAPP: Contiene la URI de peticion sin el fragmento de internacionalizacion
     $result['URIAPP'] = $uri_actual;
     define('URIAPP', $uri_actual);
     //URIAPP_LOCALE: Contiene la URI de peticion con el fragmento de internacionalizacion
     $result['URIAPP_LOCALE'] = $uri_app_locale;
     //LOCALE_URI: Contiene el LOCALE segun la URI actual
     $result['LOCALE_URI'] = $locale_uri;
     //LOCALE: Contiene el Locale actual. Si no se encuentra ninguno en la URL es igual al por defecto, si no es igual a LOCALE_URI
     $result['LOCALE'] = $locale_actual;
     //BASEURL_LOCALE: Contiene la base URL con el LOCALE correspondiente. Si el locale es el por defecto esta es igual a REAL_BASE_URL
     $result['BASEURL_LOCALE'] = $base_url_locale;
     return $result;
 }
示例#7
0
 /**
  * Constructor que realiza la carga inicial
  * @param string $type
  */
 public function __construct($type)
 {
     $this->context = \EnolaContext::getInstance();
     //Inyecta las dependencias por tipo
     \EnolaContext::getInstance()->app->dependenciesEngine->injectDependenciesOfType($this, $type);
 }
示例#8
0
 /**
  * Setea la instancia de la clase
  * @param EnolaContext $instance
  */
 public static function setInstance($instance)
 {
     self::$instance = $instance;
 }
示例#9
0
 /**
  * Constructor
  * Guarda la carpeta a utilizar, la carpeta se debe indicar desde PathApp
  * @param string $folder
  */
 public function __construct($folder)
 {
     $this->folder = \EnolaContext::getInstance()->getPathApp() . $folder . '/';
 }