Пример #1
0
 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;
 }
Пример #2
0
 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;
 }
Пример #3
0
 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.');
         }
     }
 }
Пример #4
0
 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;
 }
Пример #5
0
 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;
 }
Пример #6
0
 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>";
     }
 }
Пример #7
0
 public static function flash($message, $alert = 'info')
 {
     Session::set('flash', XHR::alert($message, $alert));
 }
Пример #8
0
 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();
                 }
             }
         }
     }
 }
Пример #9
0
 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;
 }
Пример #10
0
 public static function logout($redirect = '/')
 {
     Session::destroy();
     Redirect::to($redirect);
 }