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;
Это полностью решает проблему.
Тема закрыта. Публикация новых сообщений запрещена.