|
|
|
| всем привет!
возникла проблемка с компонентом галереи TrueGallery для Joomla 1.5
имеется файл true.legasy.php (листинг ниже). Этот файл включается инструкцией require_once в файл admin.true.php в самом начале, еще до определения функций...
НО, почему то в функциях файла admin.true.php переменные определенные в true.legasy.php не видны... хотя в начале каждой функции все необходимые переменные определяются как global...
в чем может быть проблема?
В частности, я говорю о переменной $language
файл - true.legasy.php
<?php
(defined ( '_VALID_MOS' ) or defined ( '_JEXEC' )) or die ( 'Direct Access to this location is not allowed.' );
if (! defined ( 'DS' )) {
define ( 'DS', DIRECTORY_SEPARATOR );
}
if (! defined ( 'JOOMLA_JVERSION' )) {
if (defined ( '_JEXEC' ) && class_exists ( 'JApplication' )) {
if (! defined ( '_ISO' )) {
define ( '_ISO', 'charset=utf-8' );
}
$config = &JFactory::getConfig ();
define ( 'JOOMLA_JVERSION', '1.5' );
define ( 'TRUE_ADMIN', JPATH_ROOT . DS . 'administrator' . DS . 'components' . DS . 'com_true' . DS );
define ( 'TRUE_BASE', JPATH_ROOT . DS . 'components' . DS . 'com_true' . DS );
define ( 'TRUE_HELPERS', JPATH_ROOT . DS . 'components' . DS . 'com_true' . DS . 'helpers' . DS );
define ( 'TRUE_LEGACY', JPATH_ROOT . DS . 'components' . DS . 'com_true' . DS . 'libraries' . DS . 'joomlatune' . DS . 'legacy' . DS );
define ( 'TRUE_LIBRARIES', JPATH_ROOT . DS . 'components' . DS . 'com_true' . DS . 'libraries' . DS );
define ( 'TRUE_INDEX2', $mainframe->getCfg ( 'live_site' ) . '/administrator/index2.php?option=com_true' );
if (! $config->getValue ( 'config.legacy' )) {
$config->setValue ( 'config.live_site', substr_replace ( JURI::root (), '', - 1, 1 ) );
$config->setValue ( 'config.absolute_path', JPATH_SITE );
$config->setValue ( 'config.cachepath', JPATH_BASE . DS . 'cache' );
$lang = & JFactory::getLanguage ();
$config->setValue ( 'config.lang', $lang->getBackwardLang () );
if (! class_exists ( 'mosDBTable' )) {
class mosDBTable extends JTable {
function mosDBTable($table, $key, &$db) {
parent::__construct ( $table, $key, $db );
}
}
}
} else {
$config->setValue ( 'config.cachepath', JPATH_BASE . DS . 'cache' );
}
$language = & JFactory::getLanguage ();
$language->load ( 'com_true', JPATH_ROOT );
} else {
global $mosConfig_absolute_path, $mosConfig_lang, $mainframe;
define ( 'JOOMLA_JVERSION', '1.0' );
define ( 'TRUE_ADMIN', $mainframe->getCfg ( 'absolute_path' ) . DS . 'administrator' . DS . 'components' . DS . 'com_true' . DS );
define ( 'TRUE_BASE', $mainframe->getCfg ( 'absolute_path' ) . DS . 'components' . DS . 'com_true' . DS );
define ( 'TRUE_HELPERS', $mainframe->getCfg ( 'absolute_path' ) . DS . 'components' . DS . 'com_true' . DS . 'helpers' . DS );
define ( 'TRUE_LEGACY', $mainframe->getCfg ( 'absolute_path' ) . DS . 'components' . DS . 'com_true' . DS . 'libraries' . DS . 'joomlatune' . DS . 'legacy' . DS );
define ( 'TRUE_LIBRARIES', $mainframe->getCfg ( 'absolute_path' ) . DS . 'components' . DS . 'com_true' . DS . 'libraries' . DS );
define ( 'TRUE_INDEX2', $mainframe->getCfg ( 'live_site' ) . '/administrator/index2.php?option=com_true' );
require_once (TRUE_LIBRARIES . 'joomlatune' . DS . 'localization' . DS . 'string.php');
require_once (TRUE_LIBRARIES . 'joomlatune' . DS . 'localization' . DS . 'language.php');
$lang = $mosConfig_lang;
if (! is_file ( TRUE_BASE . 'languages' . DS . $lang . '.ini' )) {
$lang = 'english';
}
$language = &JoomlaTuneLanguage::getInstance ();
$language->setRoot ( TRUE_BASE . 'languages' );
$language->load ( $lang );
$joomfish = $mosConfig_absolute_path . DS . 'components' . DS . 'com_joomfish' . DS . 'joomfish.php';
// small hack for JoomFish 1.8.2+ on Joomla 1.0.x
if (is_file ( $joomfish )) {
include_once ($mosConfig_absolute_path . DS . 'administrator' . DS . 'components' . DS . 'com_joomfish' . DS . 'joomfish.class.php');
include_once ($mosConfig_absolute_path . DS . 'administrator' . DS . 'components' . DS . 'com_joomfish' . DS . 'libraries' . DS . 'joomla' . DS . 'language.php');
if (class_exists ( 'JLanguageHelper' )) {
if (isset ( $mainframe ) && $mainframe->isAdmin ()) {
$jfm = new JoomFishManager ( $mosConfig_absolute_path . DS . 'administrator' . DS . 'components' . DS . 'com_joomfish' );
$adminLang = strtolower ( $jfm->getCfg ( 'componentAdminLang' ) );
$lng = & JLanguageHelper::getLanguage ( $adminLang );
} else {
$lng = & JLanguageHelper::getLanguage ();
}
if (is_array ( $lng->_strings ) && is_array ( $language->languages [$lang] )) {
$lng->_strings = array_merge ( $lng->_strings, $language->languages [$lang] );
}
}
} else {
if ( !class_exists ( 'JText' )) {
class JText {
function _($text, $jsSafe = false) {
$lang = & JoomlaTuneLanguage::getInstance ();
return $lang->_ ( $text, $jsSafe );
}
function sprintf($string) {
$lang = & JoomlaTuneLanguage::getInstance ();
$args = func_get_args ();
if (count ( $args ) > 0) {
$args [0] = $lang->_ ( $args [0] );
return call_user_func_array ( 'sprintf', $args );
}
return '';
}
}
}
if (class_exists ( 'JLanguageHelper' )) {
// small hack for JoomFish 1.8.2+ on Joomla 1.0.x
$lng = & JLanguageHelper::getLanguage ();
if (is_array ( $lng->_strings ) && is_array ( $language->languages [$lang] )) {
$lng->_strings = array_merge ( $lng->_strings, $language->languages [$lang] );
}
}
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: alba
(19.07.2009 в 11:43)
| | возможно
к этому моменту уже определена константа JOOMLA_JVERSION
либо не определены константа _JEXEC или класс JApplication | |
|
|
|
|
 123.2 Кб |
|
|
для: Trianon
(19.07.2009 в 12:28)
| | нет, я сразу под строкой где подключается файл legasy.true.php делаю print_r($language) и все хорошо отрабатывает, т.е. выводится листинг переменной $language, а если делаю тоже самое в какой-нить ф-ии, то ничего не выводится...
на всякий прикрепил файл admin.true.php | |
|
|
|
|
|
|
|
для: Alba
(19.07.2009 в 12:43)
| | а где в функции указывается, что $language - глобальная переменная? | |
|
|
|
|
|
|
|
для: Trianon
(19.07.2009 в 12:52)
| | только в тех, где нужна она, посмотрите пожалуйста строку 2249, в ней у меня ошибка возникает...
Fatal error: Call to a member function getLanguage() on a non-object in Z:\home\woter\www\administrator\components\com_true\admin.true.php on line 2249
|
| |
|
|
|
|
|
|
|
для: Alba
(19.07.2009 в 12:43)
| | >нет, я сразу под строкой где подключается файл legasy.true.php делаю print_r($language) и все хорошо отрабатывает,
А если в этом месте сделать print_r($GLOBALS['language']); ? | |
|
|
|
|
|
|
|
для: Trianon
(19.07.2009 в 13:13)
| | >А если в этом месте сделать print_r($GLOBALS['language']); ?
ничего не вывелось... что это значит? | |
|
|
|
|
|
|
|
для: Alba
(19.07.2009 в 13:53)
| | значит переменная не глобальная. | |
|
|
|
|
|
|
|
для: Trianon
(19.07.2009 в 14:05)
| | ну это понятно, просто тот кто писал компонент как-то тестировал его наверно, и думаю что у него все работало....
как сделать ее глобальной? глобалс в настройках отключены у меня...
и почему то другие скрипты работают нормально, хотя специально никак не колдовал с переменными... | |
|
|
|
|
|
|
|
для: Alba
(19.07.2009 в 14:14)
| | общее впечатление такое, что Вы пытаетесь подключать эти файлы внутрь открытого тела функции... или класса...
А еще я праткически уверен, что у Вас заблокированы диагностики. | |
|
|
|
|
|
|
|
для: Trianon
(19.07.2009 в 15:10)
| | >общее впечатление такое, что Вы пытаетесь подключать эти файлы внутрь открытого тела функции... или класса...
я думал об этом, проверил, но ничего не нашел... если вы знакомы с жумлой, то наверняка знаете, что компонент начинает исполнение с файла admin.имя_компонента.php. Этот стартовый файл я прикреплял к сообщению выше. Там видно что второй файл включается вне функции...
>А еще я праткически уверен, что у Вас заблокированы диагностики.
Извиняюсь, вы про что? :-) | |
|
|
|
|
|
|
|
для: alba
(19.07.2009 в 15:43)
| | >если вы знакомы с жумлой,
незнаком
>>А еще я праткически уверен, что у Вас заблокированы диагностики.
>Извиняюсь, вы про что? :-)
error_reporting() | |
|
|
|