Exemplo n.º 1
0
 /**
  * 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;
 }