We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 28106
    • 91 Posts
    Подскажите, пожалуйста, как узнать в сниппете, что пользователь зарегистрированный?
    Пока мне не важно из какой группы пользователь, помнится когда-то слышал про (!isset($_SESSION[’mgrValidated’])), но что-то он не работает...

    А суть такая: будет сниппет, который должен показать одну строку для зарегистрированного пользователя и другую для не зарегистрированного.
      ----------------------------
      in ModX we trust
      • 26744
      • 157 Posts
      При использовании авторизации на сниппете WebLogin : $_SESSION[’webUserGroupID’] - покажет группу, в какую зарегистрирован пользователь
      или echo var_dump($_SESSION); - покажет всю сессию, а там уж смотри, что нужно
        • 28106
        • 91 Posts
        Спасибо! Я думал может api есть для этого (я имею ввиду именно обозначения залогиненного пользователя, принадлежащего любой группе), а так, похоже, придется копаться в дампе
          ----------------------------
          in ModX we trust
          • 26744
          • 157 Posts
            • 785
            • 2,113 Posts
            Не надо копаться, просто $_SESSION[’mgrValidated’] для менеджеров, а $_SESSION[’webValidated’] - для пользователей.
            А в API есть функция $modx->userLoggedIn и некоторые другие (getLoginUserID, getLoginUserName, getLoginUserType).
              Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
              Статьи о MODx, регулярно новые публикации
              • 28106
              • 91 Posts
              Ага, спасибо! теперь понятно)
              А еще вопрос, нельзя ли заставить WebSignup отправлять на почту администратора сообщение о том, что такой то пользователь, с таким-то именем и почтой зарегистрировался?
                ----------------------------
                in ModX we trust
                • 785
                • 2,113 Posts
                Можно на событие OnWebSaveUser добавить плагин, который отсылает нужное письмо.
                  Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                  Статьи о MODx, регулярно новые публикации
                  • 28106
                  • 91 Posts
                  Я сейчас залез в сниппет и в weblogin.common.inc.php такую функцию
                      function webLoginSendNewPassword($email,$uid,$pwd,$ufn){
                          global $modx, $site_url;
                          $mailto = $modx->config['mailto'];
                          $websignupemail_message = $modx->config['websignupemail_message'];    
                          $emailsubject = $modx->config['emailsubject'];
                          $emailsender = $modx->config['emailsender']; 
                          $site_name = $modx->config['site_name'];
                          $site_start = $modx->config['site_start'];
                          $message = sprintf($websignupemail_message, $uid, $pwd); // use old method
                          // replace placeholders
                          $message = str_replace("[+uid+]",$uid,$message);
                          $message = str_replace("[+pwd+]",$pwd,$message);
                          $message = str_replace("[+ufn+]",$ufn,$message);
                          $message = str_replace("[+sname+]",$site_name,$message);
                          $message = str_replace("[+semail+]",$emailsender,$message);
                          $message = str_replace("[+surl+]",$site_url,$message);
                          if (!ini_get('safe_mode')) $sent = mail($email, $emailsubject, $message, "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion(), "-f {$emailsender}");
                          else $sent = mail($email, $emailsubject, $message, "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion());
                          if (!$sent) webLoginAlert("Error while sending mail to $mailto",1);
                          return true;
                      }


                  Я и подумал, что мудрить? Взял и добавил такую же функцию, но с именем function webLoginSendNotification,
                  Поменял кому на $emailsender

                  потом в websignup.inc.php нашел такой код
                      $rt = webLoginSendNewPassword($email,$username,$password,$fullname);
                      if ($rt!==true) { // an error occured
                          $output = $rt.$tpl;
                          return;
                      }


                  Да и продублировал только для webLoginSendNotification.
                  Теперь шлет еще и администратору
                    ----------------------------
                    in ModX we trust
                    • 785
                    • 2,113 Posts
                    Ага, и при необходимости смены версии MODx возникнут проблемы... События как раз и предназначены для того, чтобы не менять исходный код, а добавлять свои действия.
                      Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                      Статьи о MODx, регулярно новые публикации
                      • 1208
                      • 79 Posts
                      Quote from: AKots at Apr 15, 2010, 03:37 PM

                      Можно на событие OnWebSaveUser добавить плагин, который отсылает нужное письмо.

                      А поподробнее этот вариант можно рассмотреть? или ссылку дать почитать