예제 #1
0
 /**
  * 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));
 }
예제 #2
0
 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);
     }
 }
예제 #3
0
 /**
  * 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);
 }
예제 #4
0
    /**
     * 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;
    }