2ответ(ов) в теме
Здравствуйте!
Речь пойдет о функции pfm_add_global_var_approval_count() (файл approval.php, стр. 59).
Фрагмент кода:
$get_approval_count = $wpdb->get_results("SELECT topic_id, MIN(post_index) as min_post_index, COUNT(*) as count FROM " . RCL_PREF . "pforum_posts WHERE topic_id IN($lists) AND post_status = 'need_approval' GROUP BY topic_id", ARRAY_A);
if ($get_approval_count)) {
$TopicListApprovalID = array();
foreach ($get_approval_count as $get) {
$TopicListApprovalID[$get['topic_id']] = array('min_post_index' => $get['min_post_index'], 'count' => $get['count']);
}
}
return $TopicListApprovalID;Во-первых, $wpdb->get_results() может вернуть пустой массив, поэтому условие
if ($get_approval_count)) нужно дополнить "проверкой на пустоту".Во-вторых, даже если $wpdb->get_results() вернет NULL,
return $TopicListApprovalID; вернет предварительно сформированный массив $TopicListApprovalID (в строках 64-70).
А когда функция pfm_add_global_var_approval_count() возвращает такой массив, вызывающая ее функция pfm_topic_approval_class($classes) насыпает кучу notice в лог ошибок и непредсказуемо помечает топики, как нуждающиеся в утверждении или имеющие в себе записи, нуждающиеся в утверждении. И это при том, что ни у одного топика или поста нет статуса "need_approval"!
В общем, предлагаю немножко изменить код, приведенный выше:
$get_approval_count = $wpdb->get_results("SELECT topic_id, MIN(post_index) as min_post_index, COUNT(*) as count FROM " . RCL_PREF . "pforum_posts WHERE topic_id IN($lists) AND post_status = 'need_approval' GROUP BY topic_id", ARRAY_A);
if ($get_approval_count && !empty($get_approval_count)) {
$TopicListApprovalID = array();
foreach ($get_approval_count as $get) {
$TopicListApprovalID[$get['topic_id']] = array('min_post_index' => $get['min_post_index'], 'count' => $get['count']);
}
}
else return false;
return $TopicListApprovalID;
Это полностью решает проблему.
Тема закрыта. Публикация новых сообщений запрещена.