Assign a doc to a workshop and not a course

This commit is contained in:
2019-09-18 19:21:02 +02:00
parent 49fbf665e8
commit c36d33890e
5 changed files with 25 additions and 14 deletions

View File

@@ -0,0 +1,6 @@
ALTER TABLE docs ADD id_workshop int(10) unsigned DEFAULT NULL AFTER id_user;
ALTER TABLE docs ADD INDEX(`id_workshop`);
ALTER TABLE docs ADD FOREIGN KEY (`id_workshop`) REFERENCES workshops(`id_workshop`);
UPDATE docs INNER JOIN courses USING(id_course) SET docs.id_workshop = courses.id_workshop;
ALTER TABLE docs DROP FOREIGN KEY docs_ibfk_2;
ALTER TABLE docs DROP id_course;

View File

@@ -143,15 +143,15 @@ class CATC extends Main
/* Docs */ /* Docs */
public function getDocs($iCourseId) { public function getDocs($iWorkshopId) {
$oDoc = new Doc($this->oDb, $this->oAuth->getUserId(), $iCourseId); $oDoc = new Doc($this->oDb, $this->oAuth->getUserId(), $iWorkshopId);
$asDocList = $oDoc->getList(); $asDocList = $oDoc->getList();
return self::getJsonResult(!empty($asDocList), '', $asDocList); return self::getJsonResult(!empty($asDocList), '', $asDocList);
} }
public function uploadDoc($iCourseId) { public function uploadDoc($iWorkshopId) {
$this->oClassManagement->incClass('uploader', true); $this->oClassManagement->incClass('uploader', true);
$oDoc = new Doc($this->oDb, $this->oAuth->getUserId(), $iCourseId); $oDoc = new Doc($this->oDb, $this->oAuth->getUserId(), $iWorkshopId);
$oUploader = new Uploader($oDoc); $oUploader = new Uploader($oDoc);
return $oUploader->sBody; return $oUploader->sBody;

View File

@@ -45,7 +45,7 @@ class Course extends PhpObject {
} }
public function getCourses($iWorkshopId=0) { public function getCourses($iWorkshopId=0) {
$asInfo = array('select'=> array(Db::getId(self::COURSE_TABLE), 'description', 'timeslot'), 'from' => self::COURSE_TABLE); $asInfo = array('select'=> array(Db::getId(self::COURSE_TABLE), Db::getId(self::WS_TABLE), 'description', 'timeslot'), 'from' => self::COURSE_TABLE);
if($iWorkshopId > 0) $asInfo['constraint'] = array(Db::getId(self::WS_TABLE) => $iWorkshopId); if($iWorkshopId > 0) $asInfo['constraint'] = array(Db::getId(self::WS_TABLE) => $iWorkshopId);
return $this->oDb->selectRows($asInfo, Db::getId(self::COURSE_TABLE)); return $this->oDb->selectRows($asInfo, Db::getId(self::COURSE_TABLE));

View File

@@ -12,23 +12,23 @@ class Doc extends PhpObject {
private $iDocId; private $iDocId;
private $iUserId; private $iUserId;
private $iCourseId; private $iWorkshopId;
public function __construct(Db &$oDb, $iUserId=0, $iCourseId=0) public function __construct(Db &$oDb, $iUserId=0, $iWorkshopId=0)
{ {
parent::__construct(__CLASS__, Settings::DEBUG); parent::__construct(__CLASS__, Settings::DEBUG);
$this->oDb = &$oDb; $this->oDb = &$oDb;
$this->setDocId(0); $this->setDocId(0);
$this->setUserCourseId($iUserId, $iCourseId); $this->setUserWorkshopId($iUserId, $iWorkshopId);
} }
public function setDocId($iDocId) { public function setDocId($iDocId) {
$this->iDocId = $iDocId; $this->iDocId = $iDocId;
} }
public function setUserCourseId($iUserId, $iCourseId) { public function setUserWorkshopId($iUserId, $iWorkshopId) {
$this->iUserId = $iUserId; $this->iUserId = $iUserId;
$this->iCourseId = $iCourseId; $this->iWorkshopId = $iWorkshopId;
} }
public function exists($sFileName) { public function exists($sFileName) {
@@ -37,6 +37,7 @@ class Doc extends PhpObject {
public function add($sFileName, $sMimeType) { public function add($sFileName, $sMimeType) {
$sType = ''; $sType = '';
switch(mime_content_type(self::getFilePath($sFileName))) { switch(mime_content_type(self::getFilePath($sFileName))) {
case 'application/msword': case 'application/msword':
case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': $sType = 'word'; break; case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': $sType = 'word'; break;
@@ -45,11 +46,15 @@ class Doc extends PhpObject {
case 'image/gif': $sType = 'image'; break; case 'image/gif': $sType = 'image'; break;
case 'image/jpeg': $sType = 'image'; break; case 'image/jpeg': $sType = 'image'; break;
case 'image/png': $sType = 'image'; break; case 'image/png': $sType = 'image'; break;
default:
switch(pathinfo($sFileName, PATHINFO_EXTENSION)) {
case 'mp3': $sType = 'audio'; break;
}
} }
$asData = array_merge($this->getDocKeys(), array('filename'=>$sFileName, 'type'=>$sType)); $asData = array_merge($this->getDocKeys(), array('filename'=>$sFileName, 'type'=>$sType));
$bResult = $this->oDb->insertRow(self::DOC_TABLE, $asData); $bResult = $this->oDb->insertRow(self::DOC_TABLE, $asData);
return $bResult?'':'error_db'; return $bResult?'':'error_db';
} }
@@ -77,7 +82,7 @@ class Doc extends PhpObject {
} }
private function getDocKeys() { private function getDocKeys() {
return array(Db::getId(Auth::USER_TABLE) => $this->iUserId, Db::getId(Course::COURSE_TABLE) => $this->iCourseId); return array(Db::getId(Auth::USER_TABLE) => $this->iUserId, Db::getId(Course::WS_TABLE) => $this->iWorkshopId);
} }
private static function getFilePath($sFileName) { private static function getFilePath($sFileName) {

View File

@@ -59,7 +59,7 @@ oCATC.pageInit = function(asHash, bFirstPage) {
.fileupload({ .fileupload({
dataType: 'json', dataType: 'json',
acceptFileTypes: /(\.|\/)(gif|jpe?g|png|mov|doc|docx|pdf|mp3|wav)$/i, acceptFileTypes: /(\.|\/)(gif|jpe?g|png|mov|doc|docx|pdf|mp3|wav)$/i,
formData: {id: self.tmp('id_course')}, formData: {id: self.consts.courses[self.tmp('id_course')].id_workshop},
progressall: function (e, asData) { progressall: function (e, asData) {
console.log(asData); console.log(asData);
var iProgress = parseInt(asData.loaded / asData.total * 100, 10); var iProgress = parseInt(asData.loaded / asData.total * 100, 10);
@@ -112,7 +112,7 @@ function loadDocs() {
}); });
}, },
{id: self.tmp('id_course')}, {id: self.consts.courses[self.tmp('id_course')].id_workshop},
() => {console.log('No doc found for course ID = '+self.tmp('id_course'))} () => {console.log('No doc found for course ID = '+self.tmp('id_course'))}
); );
} }