Пробежался глазами
@access @param @return
public static function deleteCategory($id)
{
$id_pages = array();
db::query('START TRANSACTION');
$res = db::query("SELECT `id`, `id_parent`
FROM `". IRB_CONFIG_DBPREFIX ."pages_category`"
);
while($row = mysqli_fetch_assoc($res))
$ids[$row['id']] = $row['id_parent'];
self::_setTreeCategory($ids, $id);
self::$_id_cat[] = $id;
$res = db::query("SELECT `id`
FROM `". IRB_CONFIG_DBPREFIX ."pages`
WHERE `id_parent` IN (". implode(',', db::intval(self::$_id_cat)) .")"
);
while($row = mysqli_fetch_assoc($res))
$id_pages[] = $row['id'];
$cond = "`id` IN (". implode(',', db::intval(self::$_id_cat)) .")";
if(false === parent::deleteFrom('pages_category', $cond))
return getLanguage('FATAL_ERROR');
if(!empty($id_pages))
{
if(false === parent::deleteFrom('pages', $cond))
return getLanguage('FATAL_ERROR');
if(false === Comments::delete('page', $id_pages))
return getLanguage('FATAL_ERROR');
}
if(false === Comments::delete('category', self::$_id_cat))
return getLanguage('FATAL_ERROR');
db::query('COMMIT');
return false;
}
1.Вы не умеете пользоваться транзакциями.
При ошибке, Вы должны делать rollback, а не выводить ошибку в виде строки,иначе у Вас транзакция осталось открытой.
autocommit remains disabled2.Вы не умеете пользоваться исключениями.
Внутри DB class
if($result === false)
{
throw new \Exception(debug::prepareError($trace[0]['file'], $trace[0]['line'], $sql, $error),
E_USER_ERROR);
}
Это еще раз доказывает что Вы не имеете понятия об множественных исключениях и как их разделять по типам.
А так же , как их нужно обрабатывать.
3.
* @return bool|string - Возврат миксовых типов - Говно-код.
Вы делаете хуже не только себе но и тому кто потом будет с этим работать.
Без комментариев.
$res = db::query("SELECT `id`
FROM `". IRB_CONFIG_DBPREFIX ."pages`
WHERE `id_parent` IN (". implode(',', db::intval(self::$_id_cat)) .")"
);
while($row = mysqli_fetch_assoc($res))
$id_pages[] = $row['id'];
db::query('COMMIT');
Сначала используете DB класс, потом используете mysqli_fetch_assoc внутри модели.
Если использовать PDO,то у Вас все рухнет. :D
4.Использование статических методов где они вообще не нужны.
Использование микса английских слов с русскими комментариями вызывает не уверенность в коде.
Я лишь пробежался глазами и убедился в Вашем уровне.
Вы многое не понимаете и Вам нужно самому учиться и учиться.
Если Вы считаете что Вы правы,то задайте Ваш вопрос на мировом уровне,где Вас будут оценивать программисты со всех стран мира ,а не токаря,студенты и люди с заводов итд.
http://programmers.stackexchange.com/