public static function send($to = [], $subject = '', $message = '', $attach = []) { $config = autoload_config(); if (self::$server === 'smtp') { self::getInstance()->isSMTP(); self::getInstance()->SMTPSecure = $config['mailer'][self::$server]['secure']; self::getInstance()->SMTPDebug = $config['mailer'][self::$server]['debug']; self::getInstance()->SMTPAuth = $config['mailer'][self::$server]['auth']; } self::getInstance()->Host = $config['mailer'][self::$server]['host']; self::getInstance()->Port = $config['mailer'][self::$server]['port']; self::getInstance()->Username = $config['mailer'][self::$server]['username']; self::getInstance()->Password = $config['mailer'][self::$server]['password']; self::getInstance()->SetFrom($config['mailer'][self::$server]['email'], $config['mailer'][self::$server]['name']); self::getInstance()->AddReplyTo($config['mailer'][self::$server]['email'], $config['mailer'][self::$server]['name']); self::getInstance()->isHTML(true); self::getInstance()->Subject = $subject; self::getInstance()->Body = $message; self::getInstance()->AltBody = $config['mailer'][Session::get('s_locale')]['app']['mailer.altbody'] . '\\r\\n\\n\\n' . $message; foreach ($to as $address) { self::getInstance()->AddAddress($address); } foreach ($attach as $file) { self::getInstance()->AddAttachment($file); } if (!self::getInstance()->Send()) { return self::getInstance()->ErrorInfo; } return false; }
public function setConnections() { foreach (self::$config['database']['connections'] as $environment => $connections) { // força o ambiente padrão de uma determinada maquina. autoload_machines(); $DB_DEFAULT_ENV = Session::get('s_environment') ? Session::get('s_environment') : self::$config['database']['DB_DEFAULT_ENV']; if ($DB_DEFAULT_ENV === $environment) { foreach ($connections as $instance) { if ($instance['autoload']) { if (self::$config['database']['DB_AUTH'] && self::$config['database']['DB_DEFAULT_CONN'] === $instance['connection']) { $username = Session::get('s_username') ? Session::get('s_username') : false; $password = Session::get('s_password') ? base64_decode(Session::get('s_password')) : false; } else { $username = $instance['username']; $password = $instance['password']; } switch ($instance['driver']) { case 'oci': $this->connections[$instance['connection']] = new \Database\Driver\Oci($instance['connection'], $instance['database'], $instance['host'], $instance['port'], $username, $password); break; case 'mysql': $this->connections[$instance['connection']] = new \Database\Driver\Mysql($instance['connection'], $instance['database'], $instance['host'], $instance['port'], $username, $password); break; } } } } } return $this; }
public function __construct() { $this->config = autoload_config(); $this->model = new Model(); if ($_GET['lang']) { $languages = scandir(DOC_ROOT . 'app/Language'); if (in_array($_GET['lang'], $languages)) { Session::set('s_locale', $_GET['lang']); } else { \Service\Debug\Debug::message('não foi possível localizar o idioma ' . $_GET['lang'] . '. Seu idioma não foi alterado.'); } } }
public static function formSearch($id, $url, $actions = [], $validate = true) { // carrega as configurações do frame para pegar o idioma $language = autoload_config(); $name[0] = $id ? 'search-' . $id : 'search'; $name[1] = $id ? 'form-fields-' . $id : 'form-fields'; $form = "\n <div class='row'>\n <div class='container'>\n <div class='form-horizontal' role='form'>\n\n <div class='row row-header'>\n <div class='col-md-4 left'>"; if (in_array('new', $actions)) { if ($validate) { $form .= "\n <a href='{$url}' class='btn btn-success'>\n <span class='glyphicon glyphicon-plus' aria-hidden='true'></span> " . $language[Session::get('s_locale')]['app']['new'] . "\n </a>"; } } if (in_array('print', $actions)) { $form .= "\n\n <a id='imprimir' class='btn btn-primary'>\n <span class='glyphicon glyphicon-print' aria-hidden='true'></span> " . $language[Session::get('s_locale')]['app']['print'] . "\n </a>"; } $form .= "\n </div>\n\n <div class='clearfix visible-xs visible-sm right mobile-search'>\n <form class='{$name['1']}'>\n <div class='form-group'>\n <div class='input-group right' style='width:300px; margin-right:15px;'>\n <input type='text' class='form-control Enter' id='TX_PESQUISA' name='TX_PESQUISA' placeholder='" . $language[Session::get('s_locale')]['app']['search_'] . "'>\n <div class='input-group-btn'>\n <div class='btn-group' role='group'>\n <button type='button' class='btn btn-primary {$name['0']}'>\n <span class='glyphicon glyphicon-search' aria-hidden='true'></span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>"; echo $form; }
function autoload_machines() { foreach (autoload_config()['machines'] as $env => $array) { foreach ($array as $machine) { if (in_array(gethostname(), autoload_config()['machines'][$env])) { Session::set('s_environment', $env); return $env != 'dev' ? true : false; } } } return false; }
public static function Rows($options = [], $data, $actions = [], $pkey = [], $config = []) { // carrega as configurações do frame para pegar o idioma $language = autoload_config(); // se houver registros if ($data) { // prepara os dados para paginação, se solicitado. if (self::$paginate) { $paginator = new Paginator(); $paginator->paginate($data); } // mostra uma mensagem de alerta se existir. if (self::$message) { self::$table .= "<tr>\n <td colspan='100'>" . self::$message . "</td>\n </tr>"; } $name[0] = $options['id'] ? 'edit-' . $options['id'] : 'edit'; $name[1] = $options['id'] ? 'del-' . $options['id'] : 'delete'; // prepara o conteudo dos campos para cada linha foreach ($data as $index => $row) { // prepara atributos para os elementos tr e td, se solicitado. if ($config) { //dd($config); foreach ($config as $key => $configure) { $k = explode(':', $key); // // switch($k[0]) { // case 'td': // // // // // foreach($configure as $cfg_key => $cfg_val) { // if($k[1]) { // // $attr_td = $cfg_key.'="'.$cfg_val.'" '; // } else { // $attr_td = $cfg_key.'="'.$cfg_val.'" '; // } // } // //dd($attr_td); // // break; // } // switch($key) { // case 'tr': // foreach($configure as $tr_key => $tr_value) { // $attr_tr .= $tr_key.'="'.$tr_value.'" '; // } // break; // // case 'td': // //dd($configure); // foreach($configure as $td_key => $td_value) { // //dd($td_key); // if(is_array($td_value)) { // //dd($td_value); // } // else { // $attr_td .= $td_key.'="'.$td_value.'" '; // } // // } // break; // } } } // seta atributo para o elemento tr self::$table .= "<tr {$attr_tr}>"; // pega o conteudo de cada campo foreach ($row as $field => $value) { // verifica se existe campos para serem eliminados if (self::$ignore) { // remove os campos ignorados if (in_array($field, self::$ignore)) { continue; } } else { if (self::$only) { // remove todos os campos que nao forem passados if (!in_array($field, self::$only)) { continue; } } } // retorna nome do campo limpo $fname = explode('_', $field)[1]; if ($v[1]) { if ($field === $v[1]) { self::$table .= "<td data-label='{$fname}' {$attr_td}>{$value}</td>"; unset($attr_td); } else { self::$table .= "<td data-label='{$fname}'>{$value}</td>"; } } else { self::$table .= "<td data-label='{$fname}' {$attr_td} class='{$field}'>{$value}</td>"; } } // se houver botoes de acoes if ($actions) { // verifica se foi passado as chaves da tabela if ($pkey) { // pega todas as chaves passadas foreach ($pkey as $pk) { $arr[] = $row[$pk]; } // cria uma string separando por ífen $pk = implode('-', $arr); // limpa o array unset($arr); } // seta o atributo para o elemento td self::$table .= "<td {$attr_td}>"; $validarAcesso = true; $link = URL . \Routing\Router::getControllerName(); // verifica quais os botoes serao adicionados foreach ($actions as $k => $action) { if (!is_numeric($k)) { if (is_bool($action)) { $validarAcesso = $action; } $action = $k; } switch ($action) { case 'detail': if ($validarAcesso) { self::$table .= "<a href='{$link}/detail/{$pk}' class='btn btn-primary' alt='" . $language[Session::get('s_locale')]['app']['details'] . "' title='" . $language[Session::get('s_locale')]['app']['details'] . "'>\n <span class='glyphicon glyphicon-list' aria-hidden='true'></span>\n " . $language[Session::get('s_locale')]['app']['details'] . "\n </a> "; } break; case 'edit': if ($validarAcesso) { self::$table .= "<a href='{$pk}' class='btn btn-warning {$name['0']}' alt='" . $language[Session::get('s_locale')]['app']['edit'] . "' title='" . $language[Session::get('s_locale')]['app']['edit'] . "'>\n <span class='glyphicon glyphicon-edit' aria-hidden='true'></span>\n </a> "; } break; case 'delete': if ($validarAcesso) { self::$table .= "<a href='{$pk}' class='btn btn-danger {$name['1']}' alt='" . $language[Session::get('s_locale')]['app']['delete'] . "' title='" . $language[Session::get('s_locale')]['app']['delete'] . "'>\n <span class='glyphicon glyphicon-trash' aria-hidden='true'></span>\n </a> "; } break; case 'print': if ($validarAcesso) { self::$table .= "<a href='{$pk}' class='btn btn-default' alt='" . $language[Session::get('s_locale')]['app']['print'] . "' title='" . $language[Session::get('s_locale')]['app']['print'] . "'>\n <span class='glyphicon glyphicon-print' aria-hidden='true'></span>\n </a> "; } break; default: self::$table .= "<a href='{$pk}' class='btn btn-default' alt='" . $language[Session::get('s_locale')]['app']['btnUnknow'] . "' title='" . $language[Session::get('s_locale')]['app']['btnUnknow'] . "'>\n <span class='glyphicon' aria-hidden='true'>?</span>\n </a> "; } } // fecha a coluna dos botoes self::$table .= '</td>'; } // finaliza a linha self::$table .= '</tr>'; } if (self::$paginate) { self::$table .= "<tr class='tfoot'><td colspan='100' class='nohover'>" . $paginator->pages() . "</td></tr>"; } } else { self::$table .= "<tr>\n <td colspan='100' align='center' class='nohover' style='padding:30px; font-size:15px'>\n <span class='glyphicon glyphicon-exclamation-sign'></span> " . $language[Session::get('s_locale')]['app']['searchnotfound'] . "\n </td>\n </tr>"; } }
public static function flash($message, $alert = 'info') { Session::set('flash', XHR::alert($message, $alert)); }
public static function dispatch() { // Se tiver filtros, carrega todos aqui. autoload_filters(); // Se tiver, rotas carrega todos aqui. autoload_routes(); // Verifica e prepara a URL self::uri_prepare(); self::$method = $_SERVER['REQUEST_METHOD']; $searches = array_keys(static::$patterns); $replaces = array_values(static::$patterns); self::$routes = str_replace('//', '', self::$routes); $found_route = false; $query = ''; $q_arr = array(); if (strpos(self::$uri, '&') > 0) { $query = substr(self::$uri, strpos(self::$uri, '&') + 1); self::$uri = substr(self::$uri, 0, strpos(self::$uri, '&')); $q_arr = explode('&', $query); foreach ($q_arr as $q) { $qobj = explode('=', $q); $q_arr[] = array($qobj[0] => $qobj[1]); if (!isset($_GET[$qobj[0]])) { $_GET[$qobj[0]] = $qobj[1]; } } } if (in_array(self::$uri, self::$routes)) { $route_pos = array_keys(self::$routes, self::$uri); foreach ($route_pos as $route) { if (self::$methods[$route] == self::$method || self::$methods[$route] == 'ANY') { $found_route = true; if (!is_object(self::$callbacks[$route])) { self::invokeObject(self::$callbacks[$route]); if (self::$halts) { return; } } else { call_user_func(self::$callbacks[$route]); if (self::$halts) { return; } } } } } else { $pos = 0; foreach (self::$routes as $route) { $route = str_replace('//', '', $route); if (strpos($route, ':') !== false) { $route = str_replace($searches, $replaces, $route); } if (preg_match('#^' . $route . '$#', self::$uri, $matched)) { if (self::$methods[$pos] == self::$method || self::$methods[$pos] == 'ANY') { $found_route = true; array_shift($matched); if (!is_object(self::$callbacks[$pos])) { self::invokeObject(self::$callbacks[$pos], $matched); if (self::$halts) { return; } } else { call_user_func_array(self::$callbacks[$pos], $matched); if (self::$halts) { return; } } } } ++$pos; } } if (self::$fallback) { $found_route = self::autoDispatch(); } if (!$found_route) { if (!self::$errorCallback) { self::$errorCallback = function () { $method = explodeCamelCase(self::$method); if ($method[0] != 'xhr') { if (Session::get('s_loggedIn')) { header("{$_SERVER['SERVER_PROTOCOL']} 404 Not Found"); Response::error('404'); } else { Redirect::to("/"); } } }; } if (!is_object(self::$errorCallback)) { self::invokeObject(self::$errorCallback, null, 'No routes found.'); if (self::$halts) { return; } } else { call_user_func(self::$errorCallback); if (self::$halts) { return; } } } // verifica os filtros if (self::$filter) { foreach (self::$filters as $action => $name) { foreach ($name as $callback) { if (self::AFTER === $action) { $callback(); } } } } }
private function decodeTemplate($file) { $file = str_replace('{%arrayPkTable%}', $this->arrayPkTable(), $file); // controller $file = str_replace('{%Controller%}', ucwords(strtolower($this->program_name)), $file); $file = str_replace('{%controller_name%}', strtolower($this->program_name), $file); $file = str_replace('{%tablePk%}', $this->tablePk, $file); $file = str_replace('{%tablePk_var%}', $this->tablePk_var, $file); $file = str_replace('{%TABLE_NAME%}', strtoupper($this->table[0]), $file); $file = str_replace('{%ColumnsDB%}', $this->ColumnsDB, $file); // model $this->query = str_replace(',', ",\n", $this->query); $this->query = str_replace("\n\n\n\n", "\n", $this->query); $file = str_replace('{%QueryPesquisar%}', $this->query, $file); $file = str_replace('{%QueryCamposPesquisa%}', $this->search, $file); $file = str_replace('{%QueryBuscar%}', $this->queryBuscar, $file); // index.tpl $file = str_replace('{%tableHeader%}', $this->tableHeader, $file); // novo.tpl $file = str_replace('{%HTMLNew%}', $this->HTMLNew, $file); $file = str_replace('{%HTMLNewFields%}', $this->HTMLNewFields, $file); $file = str_replace('{%HTMLNew-valid%}', 'validar', $file); // editar.tpl $file = str_replace('{%HTMLEdit%}', $this->HTMLEdit, $file); $file = str_replace('{%HTMLEditFields%}', $this->HTMLEditFields, $file); $file = str_replace('{%HTMLEditFieldsID%}', $this->HTMLEditFieldsID, $file); $file = str_replace('{%HTMLEdit-valid%}', 'validar', $file); // detail.tpl $file = str_replace('{%HTMLDetail%}', $this->HTMLDetail, $file); $file = str_replace('{%HTMLDetailBtn%}', $this->HTMLDetailBtn, $file); //pdf $file = str_replace('{%HeaderClean%}', $this->HeaderClean, $file); $file = str_replace('{%FieldsPDF%}', $this->FieldsPDF, $file); //comentario $file = str_replace('{%GC_VERSION%}', '1.0', $file); $file = str_replace('{%GC_DATE%}', date('d/m/Y G:i:s'), $file); $file = str_replace('{%GC_DEVELOPER%}', Session::get('TX_LOGIN'), $file); $file = str_replace('{%GC_MACHINE%}', gethostname(), $file); return $file; }
public static function logout($redirect = '/') { Session::destroy(); Redirect::to($redirect); }