Fatal error: Cannot redeclare createCategory() (previously declared

12
D
На сайте с 28.06.2008
Offline
980
578

Пытаюсь научится создавать категории в Джумле удаленно, через пхп скрипт.

Нашел в сети код для этого, не могу запустить.

function createCategory( $data )
{
$data['rules'] = array(
'core.edit.state' => array(),
'core.edit.delete' => array(),
'core.edit.edit' => array(),
'core.edit.state' => array(),
'core.edit.own' => array(1=>true)
);

$basePath = JPATH_ADMINISTRATOR.'/components/com_categories';
require_once $basePath.'/models/category.php';
$config = array('table_path' => $basePath.'/tables');
$category_model = new CategoriesModelCategory($config);
if(!$category_model->save($data)){
$err_msg = $category_model->getError();
return false;
}else{
$id = $category_model->getItem()->id;
return $id;
}
}

$db->setQuery("SELECT `name` FROM #__level1");
$result = $db->loadObjectList();
$alias = 0;

foreach ($result as $res) {
$alias++;
$category_data['id'] = NULL;
$category_data['parent_id'] = 0;
$category_data['title'] = $res->name;
$category_data['alias'] = $alias;
$category_data['extension'] = 'com_content';
$category_data['published'] = 1;
$category_data['language'] = '*';
$category_data['params'] = array('category_layout' => '','image' => '');
$category_data['metadata'] = array('author' => '','robots' => '');

$category_id = createCategory($category_data);

}

Ругается ошибкой

Fatal error: Cannot redeclare createCategory() (previously declared ............. /index.php on line 20

на строку - function createCategory( $data )

Что не так?

T7
На сайте с 19.09.2018
Offline
34
#1

Уже была объявлена где то ранее function createCategory(

D
На сайте с 28.06.2008
Offline
980
#2

Я привел весь код скрипта, нет ничего похожего... 20 строка это и есть первое упоминание createCategory

ДП
На сайте с 23.11.2009
Offline
190
#3

Самое простое - переименуйти функцию createCategory() в вашем скрипте. Если ошибка пройдёт - значит где-тов подключаемых скриптах есть функция с таким же именем.

У вас как миниум подключается еще require_once $basePath.'/models/category.php'; и неизвестно что он за собой тянет

А так есть функция funciton_exists() - ей можно проверять не объявили ли уже такую функцию

D
На сайте с 28.06.2008
Offline
980
#4

Первое что попробовал - переименовал, ошибка не пропала, только имя изменилось.

T7
На сайте с 19.09.2018
Offline
34
#5
Я привел весь код скрипта, нет ничего похожего...
previously declared ............. /index.php on line 20

ранее объявлен index.php on line 20

Возможно тут, повторное объявление.

require_once $basePath.'/models/category.php';

а так, после in д.б. указано в каком файле и на какой линии.

типа

Fatal error: Cannot redeclare _noty() (previously declared in /home/web/domains/0.aap/index.php:74) in /home/web/domains/0.aap/protected/lib/functions.php on line 24

D
На сайте с 28.06.2008
Offline
980
#6

Что самое интересное - если последние строки скрипта изменить так

$category_id = createCategory($category_data); заменить на

var_dump ($category_data);

То я вижу вывод данных которые должен видеть.

если так:

$category_id = createCategory($category_data);
var_dump($category_id);

то выводит bool(false) bool(false) bool(false) bool(false) .....

LEOnidUKG
На сайте с 25.11.2006
Offline
1553
#7

Это весь код файла или что-то "ну не значительное" ты не показал?

✅ Трастовых площадок под размещение статей и ссылок. Опыт 12 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
D
На сайте с 28.06.2008
Offline
980
#8

Ты меня уже знаешь :)) Вот весь код

<?php

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

set_time_limit(0);

define('DS', DIRECTORY_SEPARATOR);

require_once '/var/www/ugs/includes/defines.php';
require_once '/var/www/ugs/includes/framework.php';

$app = JFactory::getApplication('site')->initialise();
$db = JFactory::getDBO();
$query = $db->getQuery(true);


function createCategory( $data )
{
$data['rules'] = array(
'core.edit.state' => array(),
'core.edit.delete' => array(),
'core.edit.edit' => array(),
'core.edit.state' => array(),
'core.edit.own' => array(1=>true)
);

$basePath = JPATH_ADMINISTRATOR.'/components/com_categories';
require_once $basePath.'/models/category.php';
$config = array('table_path' => $basePath.'/tables');
$category_model = new CategoriesModelCategory($config);
if(!$category_model->save($data)){
$err_msg = $category_model->getError();
return false;
}else{
$id = $category_model->getItem()->id;
return $id;
}
}

$db->setQuery("SELECT `name` FROM #__level1");
$result = $db->loadObjectList();
$alias = 0;

foreach ($result as $res) {
$alias++;
$res->name = str_ireplace("&amp; ", "& ", $res->name);
$res->name = str_ireplace("'", "\'", $res->name);
$category_data['id'] = NULL;
$category_data['parent_id'] = 0;
$category_data['title'] = $res->name;
$category_data['alias'] = $alias;
$category_data['extension'] = 'com_content';
$category_data['published'] = 1;
$category_data['language'] = '*';
$category_data['params'] = array('category_layout' => '','image' => '');
$category_data['metadata'] = array('author' => '','robots' => '');

$category_id = createCategory($category_data);
var_dump($category_id);
}
LEOnidUKG
На сайте с 25.11.2006
Offline
1553
#9

Опять похоже на какой-то двойной вызов файла или там где прописана вставка index.php вновь в себя же.

D
На сайте с 28.06.2008
Offline
980
#10

А если попробовать уйти от функции - как мне ее код корректно в цикл засунуть?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий