/** 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; } } }
/** * 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; } }
/** * 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); } }
/** * 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; }
/** * Retorna el locale configurado para el contenido internacionalizado * @return string */ function i18n_locale() { return Ctx::getInstance()->app->view->i18n_locale(); }
/** * 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; }
/** * 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); }
/** * Setea la instancia de la clase * @param EnolaContext $instance */ public static function setInstance($instance) { self::$instance = $instance; }
/** * 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 . '/'; }