/** * Cria o JavaScript necessário para utilizar o CKEditor * * @param string|array $campos Nomes dos campos para colocar o CKEditor * @param array $userOptions (OPTIONAL) Configurações extras * * @return string * * - Ele sempre considera que o JQuery está presente e irá colocar no document.ready() * Ex: $(document).ready(function(){ Código do CKEDITOR }); * * - Ele verifica se existe a configuração do ckeditor no application.ini * Ex: cms.htmleditor.ckeditor = 3.6.2 * * - Ele só irá configura o CKFinder se ele estiver definido no application.ini * Ex: cms.htmleditor.ckfinder = 2.1.1 * */ public function CKEDITOR($campos, $userOptions = null) { $config = RW_Config::getApplicationIni(); // Verifica a versão do CKEditor $ckeditor = false; if (isset($config->cms->htmleditor->ckeditor)) { foreach ($this->availablePaths as $path) { if (is_dir(APPLICATION_HTTP . $path . $config->cms->htmleditor->ckeditor)) { $ckeditor = $path . $config->cms->htmleditor->ckeditor; break; } } } // Verifica se localizou o CKEditor if ($ckeditor === false) { throw new Exception('Configuração do CKEditor não encontrada no application.ini em RW_View_Helper_CKEDITOR'); } // Verifica se deve usar o CKFinder $ckfinder = false; if (isset($config->cms->htmleditor->ckfinder) && !empty($config->cms->htmleditor->ckfinder)) { foreach ($this->availablePaths as $path) { if (is_dir(APPLICATION_HTTP . $path . $config->cms->htmleditor->ckfinder)) { $ckfinder = $path . $config->cms->htmleditor->ckfinder; break; } } } // Verifica os inputs que deve colocar o CKEditor if (!is_array($campos) && is_string($campos)) { $campos = array($campos); } // Cria a configuração da opções $options = array(); // Verifica o CKFinder if ($ckfinder !== false) { $options['filebrowserBrowseUrl'] = $ckfinder . '/ckfinder.html'; $options['filebrowserImageBrowseUrl'] = $ckfinder . '/ckfinder.html?Type=Images'; $options['filebrowserUploadUrl'] = $ckfinder . '/core/connector/php/connector.php?command=QuickUpload&type=Files'; $options['filebrowserImageUploadUrl'] = $ckfinder . '/core/connector/php/connector.php?command=QuickUpload&type=Images'; } // Verifica as outras opções if (!empty($userOptions) && is_array($userOptions)) { $options += $userOptions; } // Formata as configurações $options = empty($options) ? '{}' : Zend_Json::encode($options); // Carrega as opções para cada campo $config = ''; foreach ($campos as $c) { $config .= "\$( '{$c}' ).ckeditor(function() {}, {$options});"; } // Cria a configuração do CKEditor $script = "\$(document).ready(function(){ {$config} });"; // Carrega a biblioteca do CKEditor $this->view->headScript()->appendFile($ckeditor . '/ckeditor.js', 'text/javascript', array('minify_disabled' => true)); // Carrega o JQuery Adapter $this->view->headScript()->appendFile($ckeditor . '/adapters/jquery.js', 'text/javascript', array('minify_disabled' => true)); // Carrega o código CKEditor $this->view->headScript()->appendScript($script, 'text/javascript', array('minify_disabled' => true)); }
public function __construct($isException = false) { // Configuração de remetente $config = RW_Config::getApplicationIni(); $this->_name = $config->cms->email->name; $this->_email = $config->cms->email->email; $this->_returnPath = $config->cms->email->returnPath; // Verifica se está em ambiente de teste if (APPLICATION_ENV != 'production') { $this->_name .= ' (teste local)'; $this->_email = '*****@*****.**'; } // Configuração de envio de email $default = Zend_Mail::getDefaultTransport(); // Verifica se há transport a ser usado if (empty($default)) { if ($isException instanceof Zend_Mail_Transport_Abstract) { $transport = $isException; } else { $this->_type = $isException ? 'exception' : $config->cms->email->type; $this->_username = isset($config->cms->email->smtp) ? $config->cms->email->smtp->username : ''; $this->_password = isset($config->cms->email->smtp) ? $config->cms->email->smtp->password : ''; // Configura o método de envio if ($this->_type == 'exception') { $transport = new Zend_Mail_Transport_Sendmail('-f' . $this->_returnPath); // Envio do servidor local. Deve impedir que o cliente receba sem querer } elseif (APPLICATION_ENV != 'production') { $transport = new Zend_Mail_Transport_Sendmail("*****@*****.**"); // Configurações da Locaweb } elseif ($this->_type == 'locaweb') { /* * Return-Path padrão da Locaweb * sendmail_path = /usr/sbin/sendmail -t -i -r'*****@*****.**' */ $transport = new Zend_Mail_Transport_Sendmail("-f{$this->_returnPath}"); // Configurações do GMail } elseif ($this->_type == 'gmail') { $serverconfig = array('auth' => 'login', 'username' => $this->_username, 'password' => $this->_password, 'ssl' => 'ssl', 'port' => 465); $transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $serverconfig); // Configuração genérica de SMTP } elseif ($this->_type == 'smtp') { $serverconfig = array('auth' => 'login', 'username' => $this->_username, 'password' => $this->_password); // Verifica se há SSL if (isset($config->cms->email->smtp->ssl) && $config->cms->email->smtp->ssl != '') { $serverconfig['ssl'] = $config->cms->email->smtp->ssl; } // veriufica se há uma porta definida if (isset($config->cms->email->smtp->port) && $config->cms->email->smtp->port != '') { $serverconfig['port'] = $config->cms->email->smtp->port; } // Configura o transport $transport = new Zend_Mail_Transport_Smtp($config->cms->email->smtp->host, $serverconfig); } else { throw new Exception('Tipo de envio <b>' . $this->_type . '</b> não definido em RW_Mail'); } } // Grava o transport a ser usado para envio de emails Zend_Mail::setDefaultTransport($transport); } }
/** * Faz o logou da WIKI e remove os cookies * @param string $url (OPCIONAL) URL da API da wiki, se não fornecida irá utilizar a do application.ini * @throws Exception */ static function logout($url = null) { $config = RW_Config::getApplicationIni(); // Recupera as configurações $apiurl = is_null($url) ? $config->wiki->apiurl : $url; // Cria o cliente $client = new Zend_Http_Client(); // Recupera os cookies $cookies = new Zend_Http_CookieJar(); foreach ($_COOKIE as $c => $val) { $cookies->addCookie(new Zend_Http_Cookie($c, $val, $_SERVER['HTTP_HOST'])); } // Faz o logout $client->setUri($apiurl); $client->setHeaders('Accept-Encoding', 'none'); $client->setParameterPost('action', 'logout'); $client->setParameterPost('format', 'php'); $client->setCookieJar($cookies); $response = $client->request(Zend_Http_Client::POST); $result = unserialize($response->getBody()); //RW_Debug::dump($response->getBody()); //RW_Debug::dump($response->getHeader('Set-Cookie')); //RW_Debug::dump($result); // Remove os cookies $cookies = $response->getHeader('Set-Cookie'); foreach ($cookies as $c) { $c = explode('=', $c, 2); setcookie($c[0], 'deleted', 1, '/', $_SERVER['HTTP_HOST'], false, true); } // RW_Debug::dump($_COOKIE); }
/** * Cria um script para fazer um restore a partir dos dumps contidos no ZIP * * @param string $file nome do arquivo ZIP dentro da pasta dumps * * @throws Exception * * @return string */ public static function restore($file) { $config = RW_Config::getApplicationIni(); // Grava os dados de acesso a banco de dados $dbhost = $config->resources->db->params->host; $dbuser = $config->resources->db->params->username; $dbpass = '******'; //$config->resources->db->params->password; $dbname = $config->resources->db->params->dbname; // Recupera o diretório dos dumps $dumpPath = self::getPath(); // Define o caminho do arquivo $filepath = $dumpPath . '/' . str_replace('.zip', '', $file); // Verifica se o zip existe if (!file_exists($filepath . '.zip')) { require_once 'Zend/Controller/Action/Exception.php'; throw new Exception('Arquivo não encontrado: ' . $filepath . '.zip'); } // Cria o script $script = <<<'RESTORESCRIPT' #!/bin/bash echo "***********" echo "* RESTORE *" echo "***********" echo echo "Confirme a configuracao:" read -p "Restore all files [Y,n]: " RESTOREALL case $RESTOREALL in N|n) RESTOREALL="N" ;; *) RESTOREALL="Y" ;; esac read -p "HOST[{{host}}]: " HOST if [ "$HOST" = "" ]; then HOST="{{host}}" fi read -p "DATABASE[{{database}}]: " DATABASE if [ "$DATABASE" = "" ]; then DATABASE="{{database}}" fi read -p "USER [{{user}}]: " USER if [ "$USER" = "" ]; then USER="******" fi read -s -p "PASSWORD: "******" [client] host = $HOST database = $DATABASE user = $USER password = $PASSWORD " echo echo -n "Verificando conectividade $USER@$HOST, DATABASE:$DATABASE ... " if mysql --defaults-extra-file=<(printf "$TEMPCONFIG") -e ";"; then echo "ok" else echo "Nao foi possivel se conectar ao servidor MYSQL" exit 1 fi echo echo -n "Criando diretorio temporario... " TEMPDIR="$(mktemp -d $(basename $0).XXXXXXXXXX)" echo "ok" echo echo -n "Extraindo arquivo do arquivo {{file}} ... " if unzip -q "{{file}}" -d $TEMPDIR; then echo "ok" else echo "arquivo ZIP nao encontrado" rmdir $TEMPDIR; exit 1 fi echo for SQLFILE in "$TEMPDIR"/*.sql do RESTOREFILE="Y" if [ "$RESTOREALL" == "N" ]; then echo read -p "Restore $(basename "$SQLFILE") [y,N]: " RESTOREFILE case $RESTOREFILE in Y|y) RESTOREFILE="Y" ;; *) RESTOREFILE="N" ;; esac fi if [ "$RESTOREFILE" == "N" ]; then echo -n -e "\e[2mSkipping $(basename "$SQLFILE") ... " else echo -n -e "Restoring \e[1m$(basename "$SQLFILE")\e[0m ... " mysql --defaults-extra-file=<(printf "$TEMPCONFIG") < $SQLFILE; fi rm -f $SQLFILE; echo -e "ok\e[0m" done echo "Finalizando..." rmdir $TEMPDIR; echo echo "*** Restore Completo*** " echo RESTORESCRIPT; $script = str_replace('{{file}}', basename($filepath), $script); $script = str_replace('{{host}}', basename($dbhost), $script); $script = str_replace('{{database}}', basename($dbname), $script); $script = str_replace('{{user}}', basename($dbuser), $script); // Retorna o comando ao usuário return $script; }