- $msg = TRUE;
-
- $configSalt = defined('SALT') ? constant('SALT') : '';
-
- if (empty($configSalt)) {
- $this->notInstalledMessage[] = 'You have not yet filled in the SALT value in the config.inc.php file.';
- $msg = FALSE;
- }
- if (STORAGE == 'sqlite' && ! file_exists(STORAGE_SQLITE)) {
- Tools::logm('sqlite file doesn\'t exist');
- $this->notInstalledMessage[] = 'sqlite file doesn\'t exist, you can find it in install folder. Copy it in /db folder.';
- $msg = FALSE;
- }
- if (is_dir(ROOT . '/install') && ! DEBUG_POCHE) {
- $this->notInstalledMessage[] = 'you have to delete the /install folder before using poche.';
- $msg = FALSE;
- }
- if (STORAGE == 'sqlite' && ! is_writable(STORAGE_SQLITE)) {
- Tools::logm('you don\'t have write access on sqlite file');
- $this->notInstalledMessage[] = 'You don\'t have write access on sqlite file.';
- $msg = FALSE;
- }
-
- if (! $msg) {
- return false;
- }
-
- return true;
- }
-
- public function getNotInstalledMessage() {
- return $this->notInstalledMessage;
- }
-
- private function initTpl()
- {
- $loaderChain = new Twig_Loader_Chain();
-
- # add the current theme as first to the loader chain so Twig will look there first for overridden template files
- try {
- $loaderChain->addLoader(new Twig_Loader_Filesystem(THEME . '/' . $this->getTheme()));
- } catch (Twig_Error_Loader $e) {
- # @todo isInstalled() should catch this, inject Twig later
- die('The currently selected theme (' . $this->getTheme() . ') does not seem to be properly installed (' . THEME . '/' . $this->getTheme() .' is missing)');
- }
-
- # add all required themes to the loader chain
- foreach ($this->installedThemes[$this->getTheme()]['requires'] as $requiredTheme) {
- try {
- $loaderChain->addLoader(new Twig_Loader_Filesystem(THEME . '/' . DEFAULT_THEME));
- } catch (Twig_Error_Loader $e) {
- # @todo isInstalled() should catch this, inject Twig later
- die('The required "' . $requiredTheme . '" theme is missing for the current theme (' . $this->getTheme() . ')');
- }
- }
-
- if (DEBUG_POCHE) {
- $twig_params = array();
- } else {
- $twig_params = array('cache' => CACHE);
- }
-
- $this->tpl = new Twig_Environment($loaderChain, $twig_params);
- $this->tpl->addExtension(new Twig_Extensions_Extension_I18n());
-
- # filter to display domain name of an url
- $filter = new Twig_SimpleFilter('getDomain', 'Tools::getDomain');
- $this->tpl->addFilter($filter);
-
- # filter for reading time
- $filter = new Twig_SimpleFilter('getReadingTime', 'Tools::getReadingTime');
- $this->tpl->addFilter($filter);
-
- # filter for simple filenames in config view
- $filter = new Twig_SimpleFilter('getPrettyFilename', function($string) { return str_replace(ROOT, '', $string); });
- $this->tpl->addFilter($filter);
- }
-
- private function install()
- {
- Tools::logm('poche still not installed');
- echo $this->tpl->render('install.twig', array(
- 'token' => Session::getToken(),
- 'theme' => $this->getTheme(),
- 'poche_url' => Tools::getPocheUrl()
- ));
- if (isset($_GET['install'])) {
- if (($_POST['password'] == $_POST['password_repeat'])
- && $_POST['password'] != "" && $_POST['login'] != "") {
- # let's rock, install poche baby !
- if ($this->store->install($_POST['login'], Tools::encodeString($_POST['password'] . $_POST['login'])))
- {
- Session::logout();
- Tools::logm('poche is now installed');
+ Tools::logm('Trying to create a new user...');
+ if (!empty($username) && !empty($password)){
+ $newUsername = filter_var($username, FILTER_SANITIZE_STRING);
+ $email = filter_var($email, FILTER_SANITIZE_STRING);
+ if (!$this->store->userExists($newUsername)){
+ if ($this->store->install($newUsername, Tools::encodeString($password . $newUsername), $email)) {
+ if ($email != "") { // if email is filled
+ if (SEND_CONFIRMATION_EMAIL && function_exists('mail')) {
+
+ // if internal registration from config screen
+ $body_internal = _('Hi,') . "\r\n\r\n" . sprintf(_('Someone just created a wallabag account for you on %1$s.'), Tools::getPocheUrl()) .
+ "\r\n\r\n" . sprintf(_('Your login is %1$s.'), $newUsername) ."\r\n\r\n" .
+ _('Note : The password has been chosen by the person who created your account. Get in touch with that person to know your password and change it as soon as possible') . "\r\n\r\n" .
+ _('Have fun with it !') . "\r\n\r\n" .
+ _('This is an automatically generated message, no one will answer if you respond to it.');
+
+ // if external (public) registration
+ $body = sprintf(_('Hi, %1$s'), $newUsername) . "\r\n\r\n" .
+ sprintf(_('You\'ve just created a wallabag account on %1$s.'), Tools::getPocheUrl()) .
+ "\r\n\r\n" . _("Have fun with it !");
+
+ $body = $internalRegistration ? $body_internal : $body;
+
+ $body = wordwrap($body, 70, "\r\n"); // cut lines with more than 70 caracters (MIME standard)
+ if (mail($email, sprintf(_('Your new wallabag account on %1$s'), Tools::getPocheUrl()), $body,
+ 'X-Mailer: PHP/' . phpversion() . "\r\n" .
+ 'Content-type: text/plain; charset=UTF-8' . "\r\n" .
+ "From: " . $newUsername . "@" . gethostname() . "\r\n")) {
+ Tools::logm('The user ' . $newUsername . ' has been emailed');
+ $this->messages->add('i', sprintf(_('The new user %1$s has been sent an email at %2$s. You may have to check spam folder.'), $newUsername, $email));
+ Tools::redirect('?');
+
+ } else {
+ Tools::logm('A problem has been encountered while sending an email');
+ $this->messages->add('e', _('A problem has been encountered while sending an email'));
+ }
+ } else {
+ Tools::logm('The user has been created, but the server did not authorize sending emails');
+ $this->messages->add('i', _('The server did not authorize sending a confirmation email, but the user was created.'));
+ }
+ } else {
+ Tools::logm('The user has been created, but no email was saved, so no confimation email was sent');
+ $this->messages->add('i', _('The user was created, but no email was sent because email was not filled in'));
+ }
+ Tools::logm('The new user ' . $newUsername . ' has been installed');
+ if (\Session::isLogged()) {
+ $this->messages->add('s', sprintf(_('The new user %s has been installed. Do you want to <a href="?logout">logout ?</a>'), $newUsername));
+ }
+ Tools::redirect();
+ }
+ else {
+ Tools::logm('error during adding new user');