diff --git a/files/db/update_v2_to_v3.sql b/files/db/update_v2_to_v3.sql new file mode 100644 index 0000000..c712074 --- /dev/null +++ b/files/db/update_v2_to_v3.sql @@ -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; \ No newline at end of file diff --git a/inc/catc.php b/inc/catc.php index 5ee12fe..bf5c944 100644 --- a/inc/catc.php +++ b/inc/catc.php @@ -143,15 +143,15 @@ class CATC extends Main /* Docs */ - public function getDocs($iCourseId) { - $oDoc = new Doc($this->oDb, $this->oAuth->getUserId(), $iCourseId); + public function getDocs($iWorkshopId) { + $oDoc = new Doc($this->oDb, $this->oAuth->getUserId(), $iWorkshopId); $asDocList = $oDoc->getList(); return self::getJsonResult(!empty($asDocList), '', $asDocList); } - public function uploadDoc($iCourseId) { + public function uploadDoc($iWorkshopId) { $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); return $oUploader->sBody; diff --git a/inc/course.php b/inc/course.php index 6cf938b..081bccc 100644 --- a/inc/course.php +++ b/inc/course.php @@ -45,7 +45,7 @@ class Course extends PhpObject { } 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); return $this->oDb->selectRows($asInfo, Db::getId(self::COURSE_TABLE)); diff --git a/inc/doc.php b/inc/doc.php index 790ddb9..2a01648 100644 --- a/inc/doc.php +++ b/inc/doc.php @@ -12,23 +12,23 @@ class Doc extends PhpObject { private $iDocId; 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); $this->oDb = &$oDb; $this->setDocId(0); - $this->setUserCourseId($iUserId, $iCourseId); + $this->setUserWorkshopId($iUserId, $iWorkshopId); } public function setDocId($iDocId) { $this->iDocId = $iDocId; } - public function setUserCourseId($iUserId, $iCourseId) { + public function setUserWorkshopId($iUserId, $iWorkshopId) { $this->iUserId = $iUserId; - $this->iCourseId = $iCourseId; + $this->iWorkshopId = $iWorkshopId; } public function exists($sFileName) { @@ -37,6 +37,7 @@ class Doc extends PhpObject { public function add($sFileName, $sMimeType) { $sType = ''; + switch(mime_content_type(self::getFilePath($sFileName))) { case 'application/msword': 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/jpeg': $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)); - $bResult = $this->oDb->insertRow(self::DOC_TABLE, $asData); + return $bResult?'':'error_db'; } @@ -77,7 +82,7 @@ class Doc extends PhpObject { } 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) { diff --git a/masks/course.html b/masks/course.html index 0c98c77..f84feee 100644 --- a/masks/course.html +++ b/masks/course.html @@ -59,7 +59,7 @@ oCATC.pageInit = function(asHash, bFirstPage) { .fileupload({ dataType: 'json', 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) { console.log(asData); 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'))} ); }