Sendex

Здравствуйте!
Очень понравились Ваши разработки для modx, однако при использовании снипета возникает следующая проблема:
В системе имеются два пользователя, при авторизации какого либо пользователя, происходит неправильная индикация состояния рассылки, т.е. если один из пользователей подписался на рассылку то и другой пользователь точно так же подписать почему то на неё, хотя в подписчиках его нет в настройках компонента для рассылки. Кэширование не производится, как написано в документации в чем может быть причина?
С Уважением Белоусов Е.А.
Евгений Белоусов
06 марта 2014, 20:49
modx.pro
1 034
+1

Комментарии: 17

Илья Уткин
07 марта 2014, 09:52
0
Как вызываете сниппет? Можно кусок шаблона, где он расположен?
    Евгений Белоусов
    07 марта 2014, 09:57
    0
    <!DOCTYPE html>
    
    <!-- BEGIN html -->
    <html>
    	<!-- BEGIN body -->
    	<body class="top">
    [[!Sendex? &id=`1`]]
    	<!-- END body -->
    	</body>
    	
    <!-- END html -->
    </html>
      Илья Уткин
      07 марта 2014, 10:00
      0
      А, прям так?))))
      А как авторизацию реализовали? Вы в админке не авторизованы, случайно?
        Евгений Белоусов
        07 марта 2014, 10:09
        0
        Ну не так конечно, еще разбито на чанки, но суть того что он в body. Один из пользователей да является администратором а другой нет, не стал создавать третью почту, но думал что возможно в этом дело. Авторизация происходит через дополнение для ModX Login.
          Илья Уткин
          07 марта 2014, 10:13
          0
          Проверять надо в окне в режиме инкогнито, так как авторизация в админке тоже считается, вот вам и выводится, что вы подписаны.

          Сам вчера ставил и все нормально: ilyaut.ru
            Евгений Белоусов
            07 марта 2014, 10:21
            0
            Пробовал на разных ПК, и результат тот же, попробую создать несколько учетных записей и посмотреть как будет работать.
              Евгений Белоусов
              07 марта 2014, 10:54
              0
              На разных ПК для зарегистрированных пользователей точно такая же проблема, в самом modx фильтрация пользователей происходит так как нужно.
                Илья Уткин
                07 марта 2014, 11:00
                0
                Еще частенько хостинг, бывает, кеширует страницы для уменьшения нагрузки. Прям в кеш Nginx'а загоняют, чтобы пользователи большую нагрузку не генерировали. У вас какой хостинг? На test.modx.pro проверяли?
                  Евгений Белоусов
                  07 марта 2014, 11:04
                  0
                  Хостинг-Центер, у меня данный сервер уже заказчик выбрал, поэтому сменить не получится, возможно в этом дело и есть.
                    Aртур Чикин
                    07 марта 2014, 11:44
                    0
                    Прекратите давать заказчикам решать где должен хоститься сайт! Что бы потом не было нытья что хостинг не позволяет сделать что то на сайте.
                    Евгений Белоусов
                    07 марта 2014, 11:26
                    0
                    Уважаемый разработчик у Вас ошибка в коде, а не проблемы с сервером.
                      Илья Уткин
                      07 марта 2014, 11:27
                      0
                      Где ошибка? Щас исправлю, только покажите, где
                        Евгений Белоусов
                        07 марта 2014, 11:53
                        +1
                        В классе расположенном в файле sxnewsletter.class.php, в методе isSubscribed:
                        У Вас:
                        public function isSubscribed($user_id = 0, $email = '') {
                        		$q = $this->xpdo->newQuery('sxSubscriber', array('newsletter_id' => $this->get('id')));
                        
                        		if (!empty($id)) { - вот в этом месте ошибка
                        			$q->where(array('user_id' => $user_id));
                        		}
                        		if (!empty($email)) {
                        			$q->where(array('email' => $email));
                        		}
                        
                        		/** @var sxSubscriber $subscriber */
                        		if ($subscriber = $this->xpdo->getObject('sxSubscriber', $q)) {
                        			return $subscriber->id;
                        		}
                        		else {
                        			return 0;
                        		}
                        	}
                        А нужно:
                        public function isSubscribed($user_id = 0, $email = '') {
                        		$q = $this->xpdo->newQuery('sxSubscriber', array('newsletter_id' => $this->get('id')));
                        
                        		if (!empty($user_id)) {
                        			$q->where(array('user_id' => $user_id));
                        		}
                        		if (!empty($email)) {
                        			$q->where(array('email' => $email));
                        		}
                        
                        		/** @var sxSubscriber $subscriber */
                        		if ($subscriber = $this->xpdo->getObject('sxSubscriber', $q)) {
                        			return $subscriber->id;
                        		}
                        		else {
                        			return 0;
                        		}
                        	}
      Роман
      06 декабря 2014, 03:31
      0
      Спасибо за чудесный снипет, но есть небольшая загвоздка, весь текст русский в подписке и тема все знаками вопросов. Хотя MODX установлен правильно в UTF-8 все, и бд, в чем может быть засада? Где подкрутить?
        Aртур Чикин
        06 декабря 2014, 10:58
        0
        В заголовках письма какая кодировка? Возможно в вашем клиенте весь текст в кодировке windows-1251 а письмо пришло в кодировке utf-8. Или если вы используете например пересылку почты для сбора с разных аккаунтов то возможно одно из звеньев пересылки изменяет кодировку письма.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        17