Mikl
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 128
|
 |
« : 10.02.2011, 22:07:44 » |
|
Ребята! Вроде почти удалось сделать этот замечательный компонент рассылки писем под Joostina 1.3. Потом могу файлы выложить. Но есть одна проблема. Загружаю mod_letterman_1_2_5, а во фронте сайта пишет: This module requires the Letterman component.Что делать? Как подключить компонент к модулю? Подскажите пожалуйста. Вроде единственная проблема осталась и Joostina 1.3 с Letterman подружатся  Код модуля: <?php /** * Letterman Subscriber Module * based on the one for Yanc 1.3 * * @author shaynebartlett * @author soeren * @author Wee Keat Chin * @Copyright (C) 2004-2005 soeren * @ All rights reserved * @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html * @version 1.2.5 * * Email: support@thejfactory.com **/
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); global $my, $database; /** * Configuration * ------------------ */ if( !file_exists($mosConfig_absolute_path . "/components/com_letterman/letterman.php")) { echo '<p>This module requires the Letterman component.</p>'; } else {
if( !@include_once( $mosConfig_absolute_path . "/administrator/components/com_letterman/language/$mosConfig_lang.messages.php" ) ) { include_once( $mosConfig_absolute_path . "/administrator/components/com_letterman/language/english.messages.php" ); }
require_once( $mosConfig_absolute_path . '/components/com_letterman/letterman.class.php');
// The Text to be shown in front of the Subscribe Form $pretext = isset( $params->_params->pretext ) ? $params->_params->pretext :"Keep yourself updated with our FREE newsletters now!";
//1 to limit the number of characters of title, 0 to disable it $chars_limit = $params->get( 'chars_limit', 1);
// used with character limits enabled. the value signifies the number of characters to display $chars = intval( $params->get( 'chars', 15) );
//to hide the name field, set it to 1 $hide_name_field = $params->get( 'hide_name_field', 0); $my->load( $my->id ); $username = ( !empty( $my->name ) )? $my->name : $my->username;
// GetItemid $query = "SELECT id" . "\n FROM #__menu" . "\n WHERE type = 'components'" . "\n AND published = 1" . "\n AND link = 'index.php?option=com_letterman'" ; $database->setQuery( $query ); $_Itemid = $database->loadResult();
?> <script type="text/javascript" language="Javascript"><!-- function changeTask() { var name = document.lettermanMod.subscriber_name.value; var email; var max_length = <?php echo $chars ?>; var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
if (filter.test(document.lettermanMod.email.value)) { email = document.lettermanMod.email.value; var a = true; } else { alert("<?php echo LM_FORM_NOEMAIL ?>"); var a = true; return false; } try { <?php if( !empty($chars_limit) && $hide_name_field=="0" ) { ?> if(document.lettermanMod.subscriber_name.length > max_length) { alert("<?php echo LM_FORM_SHORTERNAME; ?>"); return false; } <?php } if( $hide_name_field=="0" ) { ?> if(document.lettermanMod.subscriber_name.length < 1) { alert("<?php echo LM_FORM_NONAME ?>"); return false; } <?php } ?> } catch(e) {} return true; } // --> </script> <?php if( !empty( $pretext)) { echo '<p>'. $pretext .'</p>'; } ?> <form method="post" action="<?php echo $mosConfig_live_site ?>/index.php?option=com_letterman&Itemid=<?php echo $_Itemid; ?>" name="lettermanMod"> <p> <?php if($hide_name_field == 1) { ?> <input type="hidden" name="subscriber_name" value="<?php echo !empty( $username)? $username: "Subscriber"; ?>" /> <?php } else { ?> <input type="text" id="subscriber_name" style="font-size:smaller;" name="subscriber_name" class="inputbox" value="<?php echo $username; ?>" /><br/> <span class="smallgrey"><label for="subscriber_name"><?php echo _CMN_NAME ; ?></label></span><br/> <?php } ?> <input type="text" id="lm_email" name="email" style="font-size:smaller;" class="inputbox" value="<?php echo $my->email; ?>" /><br/> <span class="smallgrey"><label for="lm_email"><?php echo _CMN_EMAIL ; ?></label></span> </p> <p> <?php if( $my->id ) {
$q = "SELECT subscriber_id FROM `#__letterman_subscribers` WHERE user_id=".$my->id.' OR subscriber_email=\''.$my->email.'\''; $database->setQuery($q); $subscriber = $database->loadResult();
if( empty($subscriber)) { ?> <input name="task" type="hidden" value="subscribe" /> <input type="submit" class="button" value="<?php echo LM_SUBSCRIBE ?>" onclick="return changeTask();" /> <?php } else { echo LM_ALREADY_SUBSCRIBED; ?><br/> <input name="task" type="hidden" value="unsubscribe" /> <input type="submit" onclick="return( confirm('<?php echo LM_CONFIRM_UNSUBSCRIBE ?>'));" class="button" value="<?php echo LM_UNSUBSCRIBE ?>" onclick="return changeTask();" /> <?php } } else { ?> <input name="task" type="radio" class="inputbox" id="lm_subscribe" value="subscribe" checked="checked"/> <label for="lm_subscribe"><?php echo LM_SUBSCRIBE; ?></label><br/> <input name="task" type="radio" class="inputbox" id="lm_unsubscribe" value="unsubscribe" /> <label for="lm_unsubscribe"><?php echo LM_UNSUBSCRIBE; ?></label> <br/> <input type="submit" class="button" value="<?php echo LM_BUTTON_SUBMIT ?>" onclick="return changeTask();" />
<?php } ?> </p> <input type="hidden" name="Itemid" value="<?php echo $_Itemid; ?>" /> <?php // used for spoof hardening $validate = lm_SpoofValue(1); ?> <input type="hidden" name="<?php echo $validate; ?>" value="1" /> </form> <?php $my = $mainframe->getUser(); } ?>
|
|
|
|
|
Записан
|
|
|
|
Vladzimir
Давно я тут
  
Репутация: +22/-0
Offline
Пол: 
Сообщений: 334
В очередь! в очередь! День Сурка © М.Борзыкин
|
 |
« Ответ #1 : 11.02.2011, 00:08:08 » |
|
Не объявлена глобальная переменная $mosConfig_absolute_path Но лучше заменить в модуле все $mosConfig_absolute_path на JPATH_BASE
|
|
|
|
|
Записан
|
|
|
|
Mikl
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 128
|
 |
« Ответ #2 : 11.02.2011, 00:13:55 » |
|
Vladzimir, а как строка должна выглядеть? допустим эта: if( !file_exists($mosConfig_absolute_path . "/components/com_letterman/letterman.php")) { echo '<p>This module requires the Letterman component.</p>'; } else {
|
|
|
|
|
Записан
|
|
|
|
Vladzimir
Давно я тут
  
Репутация: +22/-0
Offline
Пол: 
Сообщений: 334
В очередь! в очередь! День Сурка © М.Борзыкин
|
 |
« Ответ #3 : 11.02.2011, 04:00:51 » |
|
if( !file_exists(JPATH_BASE . '/components/com_letterman/letterman.php')) { echo '<p>This module requires the Letterman component.</p>'; } else {
|
|
|
|
|
Записан
|
|
|
|
Mikl
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 128
|
 |
« Ответ #4 : 11.02.2011, 09:13:12 » |
|
хм... теперь пишет в модуле такую штуку: Fatal error: Call to a member function Quote() on a non-object in /home/site.com/docs/includes/libraries/database/database.php on line 821 что копать?..
|
|
|
|
« Последнее редактирование: 11.02.2011, 15:38:27 от Mikl »
|
Записан
|
|
|
|
Arkadiy
Moderator
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #5 : 11.02.2011, 09:38:45 » |
|
Этой функции не передается ничего, либо передаеттся не объект. Смотри где в модуле вызывается эта функция и что ей передается.
|
|
|
|
|
Записан
|
|
|
|
Vladzimir
Давно я тут
  
Репутация: +22/-0
Offline
Пол: 
Сообщений: 334
В очередь! в очередь! День Сурка © М.Борзыкин
|
 |
« Ответ #6 : 11.02.2011, 11:32:02 » |
|
Наверное из-за вот этого проблемы $query = "SELECT id" . "\n FROM #__menu" . "\n WHERE type = 'components'" . "\n AND published = 1" . "\n AND link = 'index.php?option=com_letterman'" ; Надо переписать более красиво (убрать переводы строки и т.д.)
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Moderator
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #7 : 11.02.2011, 11:39:58 » |
|
Да не должно от этого быть, я так многие запросы на строки бью чтобы при отладке нормально читались. Возможно такой строки в таблице нет?
|
|
|
|
|
Записан
|
|
|
|
Mikl
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 128
|
 |
« Ответ #8 : 11.02.2011, 15:40:23 » |
|
хмм... и что тут сделать можно?
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Moderator
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #9 : 11.02.2011, 15:46:00 » |
|
1. Вывести этот запрос на отладку функцией var_dump или print_r, скопировать запрос и проверить его в майадмине, предварительно заменив #_ на свой префикс БД. Если выводит непустую строку значит все ннормально и ошибка происходит дальше, если нет, то разбирать запрос, хотя с виду он правильный. 2. А какой функцией у тебя создается объект данных из этого запроса?
|
|
|
|
|
Записан
|
|
|
|
Mikl
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 128
|
 |
« Ответ #10 : 11.02.2011, 16:04:52 » |
|
Arkadiy, я в БД вообще на шарю фактически... где можно почитать что-то, чтобы ответить на Ваши вопросы?
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Moderator
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #11 : 11.02.2011, 18:16:30 » |
|
Ну хотя-бы php.su про MySQL и php
|
|
|
|
|
Записан
|
|
|
|
Mikl
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 128
|
 |
« Ответ #12 : 11.02.2011, 23:43:24 » |
|
не могу врубиться... может кто поможет?..
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Moderator
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #13 : 11.02.2011, 23:52:13 » |
|
Ошибка не явная и никто не сможет подсказать ее 100% решение, даже неизвестно что ее производит.
|
|
|
|
|
Записан
|
|
|
|
Mikl
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 128
|
 |
« Ответ #14 : 12.02.2011, 11:10:53 » |
|
я бы смог это сделать, если бы была хотя бы более подробная пошаговая инструкция... 
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Moderator
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #15 : 12.02.2011, 11:35:51 » |
|
Да как таковой инструкции-то и нет, можно пробовать комментировать разные строки и смотреть когда уберется эта ошибка, исходя из этого и думать дальше.
|
|
|
|
|
Записан
|
|
|
|
Mikl
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 128
|
 |
« Ответ #16 : 12.02.2011, 11:38:13 » |
|
Arkadiy, комментировать тут - includes/libraries/database/database.php ?
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Moderator
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #17 : 13.02.2011, 02:02:24 » |
|
Нет, в модуле. Там все работает нормально.
|
|
|
|
|
Записан
|
|
|
|
Mikl
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 128
|
 |
« Ответ #18 : 13.02.2011, 13:28:32 » |
|
Нет, в модуле. Там все работает нормально.
пробую, но пока что-то нет результата... на другом сайте в ошибке выше прибавляется ещё такая: Notice: Undefined property: mosUser::$_db in /home/siti.ru/docs/includes/libraries/database/database.php on line 821
|
|
|
|
|
Записан
|
|
|
|
Mikl
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 128
|
 |
« Ответ #19 : 13.02.2011, 14:08:17 » |
|
Помогло комментирование вот этой строки: /* //to hide the name field, set it to 1 $hide_name_field = $params->get( 'hide_name_field', 0); $my->load( $my->id ); $username = ( !empty( $my->name ) )? $my->name : $my->username; */
|
|
|
|
|
Записан
|
|
|
|
Arkadiy
Moderator
   
Репутация: +244/-5
Offline
Сообщений: 4895
Былененький он зел.
|
 |
« Ответ #20 : 13.02.2011, 16:20:34 » |
|
Значит косячит строка $my->load( $my->id ); Попробуй закомментировать только ее и все.
|
|
|
|
|
Записан
|
|
|
|
|
Gold Dragon
|
 |
« Ответ #21 : 25.03.2011, 09:56:23 » |
|
Mikl, компонент адаптирован под 1.3.0.4 ? Если ДА, то поделись. Если НЕТ, то я буду адаптировать, т.к. очень нужен
|
|
|
|
|
Записан
|
|
|
|
Mikl
Осваиваюсь на форуме
 
Репутация: +0/-0
Offline
Сообщений: 128
|
 |
« Ответ #22 : 25.03.2011, 11:06:39 » |
|
Mikl, компонент адаптирован под 1.3.0.4 ? Если ДА, то поделись. Если НЕТ, то я буду адаптировать, т.к. очень нужен
слушай, мне сложно сказать. но я сделал так, что у меня всё что надо - работает  файлы рабочие могу скинуть, пиши в личку куда
|
|
|
|
|
Записан
|
|
|
|
|
Gold Dragon
|
 |
« Ответ #23 : 25.03.2011, 11:22:00 » |
|
отписался... проверю что и как и тогда выложу компонент у себя на сайте
|
|
|
|
|
Записан
|
|
|
|
|