/** * Update multiple posts at once * @param array $posts posts data * @return boolean always true */ function fn_update_discussion_posts($posts) { if (!empty($posts) && is_array($posts)) { $threads = db_get_hash_single_array("SELECT post_id, thread_id FROM ?:discussion_posts WHERE post_id IN (?n)", array('post_id', 'thread_id'), array_keys($posts)); $messages_exist = db_get_fields("SELECT post_id FROM ?:discussion_messages WHERE post_id IN (?n)", array_keys($posts)); $rating_exist = db_get_fields("SELECT post_id FROM ?:discussion_rating WHERE post_id IN (?n)", array_keys($posts)); fn_delete_notification('company_access_denied'); foreach ($posts as $p_id => $data) { if (!empty($data['date'])) { $data['timestamp'] = fn_discussion_parse_datetime($data['date'] . ' ' . $data['time']); } db_query("UPDATE ?:discussion_posts SET ?u WHERE post_id = ?i", $data, $p_id); if (in_array($p_id, $messages_exist)) { db_query("UPDATE ?:discussion_messages SET ?u WHERE post_id = ?i", $data, $p_id); } else { $data['thread_id'] = $threads[$p_id]; $data['post_id'] = $p_id; db_query("INSERT INTO ?:discussion_messages ?e", $data); } if (in_array($p_id, $rating_exist)) { db_query("UPDATE ?:discussion_rating SET ?u WHERE post_id = ?i", $data, $p_id); } else { $data['thread_id'] = $threads[$p_id]; $data['post_id'] = $p_id; db_query("INSERT INTO ?:discussion_rating ?e", $data); } } } return true; }
if (AREA != 'A' && !empty($discussion_settings[$object_name . '_post_ip_check']) && $discussion_settings[$object_name . '_post_ip_check'] == 'Y') { $is_exists = db_get_field("SELECT COUNT(*) FROM ?:discussion_posts WHERE thread_id = ?i AND ip_address = ?s", $post_data['thread_id'], $post_data['ip_address']); if (!empty($is_exists)) { fn_set_notification('E', __('error'), __('error_already_posted')); return array(CONTROLLER_STATUS_REDIRECT, $_REQUEST['redirect_url'] . $suffix); } } // Check if post needs to be approved if (AREA != 'A' && !empty($discussion_settings[$object_name . '_post_approval'])) { if ($discussion_settings[$object_name . '_post_approval'] == 'any' || $discussion_settings[$object_name . '_post_approval'] == 'anonymous' && empty($auth['user_id'])) { fn_set_notification('W', __('text_thank_you_for_post'), __('text_post_pended')); $post_data['status'] = 'D'; } } if (!empty($post_data['date'])) { $post_data['timestamp'] = fn_discussion_parse_datetime($post_data['date'] . ' ' . $post_data['time']); } else { $post_data['timestamp'] = TIME; } $post_data['user_id'] = $auth['user_id']; $post_data['post_id'] = db_query("INSERT INTO ?:discussion_posts ?e", $post_data); db_query("REPLACE INTO ?:discussion_messages ?e", $post_data); db_query("REPLACE INTO ?:discussion_rating ?e", $post_data); // For orders - set notification to admin and vendors or customer if ($object['object_type'] == 'O') { $order_info = db_get_row("SELECT email, company_id, lang_code FROM ?:orders WHERE order_id = ?i", $object['object_id']); if (AREA == 'C') { //Send to admin Mailer::sendMail(array('to' => 'default_company_orders_department', 'from' => array('email' => $order_info['email'], 'name' => $post_data['name']), 'data' => array('url' => fn_url("orders.details?order_id={$object['object_id']}", 'A', 'http', null, true), 'object_data' => $object_data, 'post_data' => $post_data, 'object_name' => $object_name, 'subject' => __('discussion_title_' . $discussion_object_types[$object['object_type']], '', Registry::get('settings.Appearance.backend_default_language')) . ' - ' . __($discussion_object_types[$object['object_type']], '', Registry::get('settings.Appearance.backend_default_language'))), 'tpl' => 'addons/discussion/notification.tpl', 'company_id' => $order_info['company_id']), 'A', Registry::get('settings.Appearance.backend_default_language')); //Send to vendor if (!empty($order_info['company_id']) && !empty($discussion_settings[$object_name . '_notify_vendor']) && $discussion_settings[$object_name . '_notify_vendor'] == 'Y') {