/** * Deals with all script uploads, whether ajax or en masses * @pages all filenames in $_FILES to be uploaded * @return arrary of arrays with (bool:success,string:message) * @todo unlink temporary files */ public function _upload($page, Script $script, $pageNum = null) { // allows us to take either one page or an array $this->load->helper('url'); $this->lang->load('upload'); $this->load->library('secureupload'); $uploadResult; $publicResult; // we've actually got a page uploaded - error 4 if no file - for the multiple uploads w/o js that will have empty // file inputs and we don't want error messages for each of those // were $_FILES successfully POSTed? if (@$_FILES[$page]['error'] === 0) { $oldPageName = $_FILES[$page]['name']; $newName = $script->newPageName(); $uploadResult = $this->_uploadPage($page, $newName); } else { // find out why not if (!isset($_FILES[$page]) || $_FILES[$page]['error'] === 4) { $publicResult = 'NO_FILE'; return $publicResult; } if ($_FILES[$page]['error'] === 1 || $_FILES[$page]['error'] === 2) { SecureUpload::cleanTemporary($page); $publicResult = SecureUpload::TOO_LARGE; return $publicResult; } // return a generic error return SecureUpload::UNSUCCESSFUL; } switch ($uploadResult) { case SecureUpload::SUCCESSFUL: $script->pages->addPage($pageNum, $newName, $oldPageName); $script->update(); $publicResult = SecureUpload::SUCCESSFUL; break; case SecureUpload::MOVE_FAILED: $publicResult = SecureUpload::MOVE_FAILED; break; case 'too large': case SecureUpload::TOO_LARGE: $publicResult = SecureUpload::TOO_LARGE; break; case SecureUpload::WRONG_TYPE: $publicResult = SecureUpload::WRONG_TYPE; break; default: $publicResult = SecureUpload::UNSUCCESSFUL; break; } return $publicResult; }