oDb = &$oDb; $this->setDocId(0); $this->setUserCourseId($iUserId, $iCourseId); } public function setDocId($iDocId) { $this->iDocId = $iDocId; } public function setUserCourseId($iUserId, $iCourseId) { $this->iUserId = $iUserId; $this->iCourseId = $iCourseId; } public function exists($sFileName) { return file_exists(self::DOC_FOLDER.$sFileName); } 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; case 'application/pdf': $sType = 'pdf'; break; case 'audio/mpeg': $sType = 'audio'; break; case 'image/gif': $sType = 'image'; break; case 'image/jpeg': $sType = 'image'; break; case 'image/png': $sType = 'image'; break; } $asData = array_merge($this->getDocKeys(), array('filename'=>$sFileName, 'type'=>$sType)); $bResult = $this->oDb->insertRow(self::DOC_TABLE, $asData); return $bResult?'':'error_db'; } public function delete() { if($this->iDocId > 0) { $asDoc = $this->getDoc(); $bResult = $this->oDb->deleteRow(self::DOC_TABLE, $this->iDocId); if($bResult) $bResult = unlink($asDoc['filepath']); } return $bResult; } public function getDoc() { $asDocList = $this->getList(array(Db::getId(self::DOC_TABLE) => $this->iDocId)); return array_shift($asDocList); } public function getList($asConstraint=array()) { $asKeys = empty($asConstraint)?$this->getDocKeys():$asConstraint; $asDocs = $this->oDb->selectRows(array('select'=>array(Db::getId(self::DOC_TABLE), 'type', 'filename'), 'from'=>self::DOC_TABLE, 'constraint'=>$asKeys)); foreach($asDocs as &$asDoc) $asDoc['filepath'] = self::getFilePath($asDoc['filename']); return $asDocs; } private function getDocKeys() { return array(Db::getId(Auth::USER_TABLE) => $this->iUserId, Db::getId(Course::COURSE_TABLE) => $this->iCourseId); } private static function getFilePath($sFileName) { return self::DOC_FOLDER.$sFileName; } }