/** * storeFiles move the files from incomming folder to file storage * @param array $p [ //upload params * files property - array of uploaded files, * response - response from user when asked about overwrite for single or many file * ] */ public function storeFiles(&$p) { /* here we'll iterate all files and comparing the md5 with already contained files will upload only new contents to our store. Existent contents will be reused */ foreach ($p['files'] as &$f) { if ($f['error'] == UPLOAD_ERR_NO_FILE) { continue; } if ($f['error'] !== UPLOAD_ERR_OK) { continue; } //apply general properties from $p to $f (file) variable foreach ($p as $k => $v) { if (in_array($k, array('id', 'pid', 'draftPid', 'name', 'title', 'content_id', 'template_id', 'cid', 'oid', 'data'))) { $f[$k] = $v; } } @($f['date'] = Util\dateISOToMysql($p['date'])); if (empty($f['template_id'])) { $f['template_id'] = Config::get('default_file_template'); } $this->storeContent($f); $pid = $p['pid']; if (!empty($f['dir'])) { $pid = $this->mkTreeDir($pid, $f['dir']); $f['pid'] = $pid; } $fileId = empty($p['id']) ? $this->getFileId($pid, $f['name']) : intval($p['id']); if (!empty($fileId)) { //newversion, replace, rename, autorename, cancel switch (@$p['response']) { case 'newversion': // case 'overwrite': // case 'overwriteall': $this->saveCurrentVersion($fileId); break; case 'replace': /* TODO: only mark file as deleted but dont delte it Note: we cant leave the previous file record if we have a given id for file */ DM\Tree::delete($fileId, true); $solr = new Solr\Client(); $solr->deleteByQuery('id:' . $fileId . ' OR pids: ' . $fileId); break; case 'rename': $fileId = null; $f['name'] = $p['newName']; //here is the new name break; case 'autorename': $fileId = null; $f['name'] = Objects::getAvailableName($pid, $f['name']); break; } } $f['type'] = 5; //file //save file $fileObject = new Objects\File(); if (!empty($fileId)) { $f['id'] = $fileId; if (@$p['response'] == 'replace') { $fileObject->create($f); } else { $fileObject->update($f); } } else { $f['id'] = $fileObject->create($f); } $this->updateFileProperties($f); } return true; }
public function confirmUploadRequest($p) { //if cancel then delete all uploaded files from incomming $files = new Files(); $a = $files->getUploadParams(); $a['response'] = $p['response']; switch ($p['response']) { case 'rename': $a['newName'] = Purify::filename($p['newName']); //check if the new name does not also exist if (empty($a['response'])) { return array('success' => false, 'msg' => L\get('FilenameCannotBeEmpty')); } reset($a['files']); $k = key($a['files']); $a['files'][$k]['name'] = $a['newName']; if ($files->fileExists($a['pid'], $a['newName'])) { $files->saveUploadParams($a); return array('success' => false, 'type' => 'filesexist', 'allow_new_version' => Files::getMFVC($a['newName']) > 0, 'suggestedFilename' => Objects::getAvailableName($a['pid'], $a['newName']), 'msg' => str_replace('{filename}', '"' . $a['newName'] . '"', L\get('FilenameExistsInTarget'))); } // $files->storeFiles($a); // break; // $files->storeFiles($a); // break; case 'newversion': case 'replace': case 'autorename': $files->storeFiles($a); break; default: //cancel $files->removeIncomingFiles($a['files']); return array('success' => true, 'data' => array()); break; } Solr\Client::runCron(); $rez = array('success' => true, 'data' => array('pid' => $a['pid'])); $files->attachPostUploadInfo($a['files'], $rez); return $rez; }