/** * Método que desplegará y procesará el formulario de contacto * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]delaf.cl) * @version 2015-04-12 */ public function index() { // si no hay datos para el envió del correo electrónico no // permirir cargar página de contacto if (Configure::read('email.default') === NULL) { Model_Datasource_Session::message('Página de contacto deshabilitada', 'error'); $this->redirect('/'); } // si se envió el formulario se procesa if (isset($_POST['submit'])) { $_POST['nombre'] = trim(strip_tags($_POST['nombre'])); $_POST['correo'] = trim(strip_tags($_POST['correo'])); $_POST['mensaje'] = trim(strip_tags($_POST['mensaje'])); if (!empty($_POST['nombre']) and !empty($_POST['correo']) and !empty($_POST['mensaje'])) { $email = new Network_Email(); $email->replyTo($_POST['correo'], $_POST['nombre']); $email->to(Configure::read('email.default.to')); $email->subject('Contacto desde la web #' . date('YmdHis')); $msg = $_POST['mensaje'] . "\n\n" . '-- ' . "\n" . $_POST['nombre'] . "\n" . $_POST['correo']; $status = $email->send($msg); if ($status === true) { Model_Datasource_Session::message('Su mensaje ha sido enviado, se responderá a la brevedad.', 'ok'); $this->redirect('/contacto'); } else { Model_Datasource_Session::message('Ha ocurrido un error al intentar enviar su mensaje, por favor intente nuevamente.<br /><em>' . $status['message'] . '</em>', 'error'); } } else { Model_Datasource_Session::message('Debe completar todos los campos del formulario', 'error'); } } }
/** * Acción para poder cambiar la configuración de la sesión a través de la * URL * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]delaf.cl) * @version 2014-03-22 */ public function config($var, $val, $redirect = null) { Model_Datasource_Session::write('config.' . $var, $val); if (!$redirect) { $this->redirect('/'); } else { $this->redirect(base64_decode($redirect)); } }
/** * Constructor de la clase * @param request Objeto con la solicitud realizada * @param response Objeto para la respuesta que se enviará al cliente * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]delaf.cl) * @version 2014-03-22 */ public function __construct(Network_Request $request, Network_Response $response) { // copiar objeto para solicitud y respuesta $this->request = $request; $this->response = $response; // crear colección de componentes if (count($this->components)) { $this->Components = new Controller_Component_Collection(); // crear las clases e inicializa atributos con componentes $this->Components->init($this); } // agregar variables por defecto que se pasarán a la vista $this->set(array('_base' => $this->request->base, '_request' => $this->request->request, '_url' => $this->request->url)); // obtener layout por defecto (el configurado en Config/core.php) $this->layout = Model_Datasource_Session::read('config.page.layout'); }
/** * Función que realiza la traducción de un string a otro idioma. * * Plantilla para archivo master.po (para locale en_US.utf8): * * msgid "" * msgstr "" * "Project-Id-Version: proyecto en_US master\n" * "PO-Revision-Date: 2014-03-02 11:37-0300\n" * "Last-Translator: Nombre del traductor <*****@*****.**>\n" * "Language-Team: English\n" * "Language: en_US\n" * "MIME-Version: 1.0\n" * "Content-Type: text/plain; charset=UTF-8\n" * "Content-Transfer-Encoding: 8bit\n" * "Plural-Forms: nplurals=2; plural=(n != 1);\n" * * msgid "Buscar" * msgstr "Search" * * Guardar la plantilla en DIR_WEBSITE/Locale/en_US.utf8/LC_MESSAGES/master.po * Luego ejecutar: * $ msgfmt master.po -o master.mo * * En caso que se esté creando desde un archivo pot se debe crear el archivo po con: * $ msginit --locale=en_US.utf8 --input=master.pot * Lo anterior creará el archivo en_US.po y luego se usa msgfmt con este archivo * * La locale que se esté utilizando debe existir en el sistema, verificar con: * $ locale -a * En caso que no exista editar /etc/locale.gen para agregarla y luego ejecutar: * # locale-gen * * Cuando se crean o modifican los directorios en DIR_WEBSITE/Locale se * debe reiniciar el servicio Apache (¿?) * * @param string Texto que se desea traducir * @param domain Dominio que se desea utilizar para la traducción * @param locale Localee (o idioma) al cual traducir el texto * @param encoding Tipo de codificación de las traducciones * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]delaf.cl) * @version 2014-06-04 */ public static function translate($string, $domain = 'master', $locale = null, $encoding = 'UTF-8') { if (!$locale) { $locale = Model_Datasource_Session::read('config.language'); } if (!strpos($locale, '_')) { if (!isset(self::$locale[$locale])) { $locale = Configure::read('language'); } $locale = self::$locale[$locale]; } putenv("LANG=" . $locale); setlocale(LC_MESSAGES, $locale); bindtextdomain($domain, DIR_WEBSITE . '/Locale'); textdomain($domain); bind_textdomain_codeset($domain, $encoding); return gettext($string); }