public static function selectForQuestion(CMA_Thread $thread) { $ids = $thread->getPostMeta(CMA_Thread::$_meta['attachment'], false); if (!empty($ids)) { return parent::select($thread->getId(), $ids); } else { return array(); } }
public static function selectForAnswer(CMA_Answer $answer) { $ids = get_comment_meta($answer->getId(), CMA_Answer::META_ATTACHMENT, false); if (!empty($ids)) { $result = parent::select($answer->getThreadId(), get_comment_meta($answer->getId(), CMA_Answer::META_ATTACHMENT, false)); foreach ($result as $attachment) { $attachment->setAnswerId($answer->getId()); } return $result; } else { return array(); } }
protected static function _processUpload() { header('content-type: application/json'); require_once ABSPATH . 'wp-admin/includes/image.php'; require_once ABSPATH . 'wp-admin/includes/media.php'; $attachments = array(); if (CMA_Settings::areAttachmentsAllowed() and !empty($_FILES['cma-file'])) { $maxFileSize = CMA_Settings::getOption(CMA_Settings::OPTION_ATTACHMENTS_MAX_SIZE); foreach ($_FILES['cma-file']['name'] as $i => $name) { $attachment = array('name' => $name); if ($_FILES['cma-file']['size'][$i] > $maxFileSize) { $attachments[] = array_merge($attachment, array('status' => 'ERROR', 'msg' => CMA::__('File is too large.'))); } else { if (!CMA_Thread::checkAttachmentAllowed($name)) { $msg = CMA::__('Filetype is not allowed. Allowed extensions:'); $msg .= ' ' . implode(', ', CMA_Settings::getOption(CMA_Settings::OPTION_ATTACHMENTS_FILE_EXTENSIONS)); $attachments[] = array_merge($attachment, array('status' => 'ERROR', 'msg' => $msg)); } else { $newName = floor(microtime(true) * 1000) . '_' . sanitize_file_name($name); $target = CMA_Attachment::getUploadPath() . $newName; if (move_uploaded_file($_FILES['cma-file']['tmp_name'][$i], $target)) { $data = array('guid' => $target, 'post_mime_type' => $_FILES['cma-file']['type'][$i], 'post_title' => $name, 'post_content' => '', 'post_status' => 'draft'); $attach_id = wp_insert_attachment($data, $target); $attach_data = wp_generate_attachment_metadata($attach_id, $target); wp_update_attachment_metadata($attach_id, $attach_data); $attachments[] = array_merge($attachment, array('status' => 'OK', 'id' => $attach_id)); } else { $attachments[] = array_merge($attachment, array('status' => 'ERROR')); } } } } } echo json_encode($attachments); exit; }