'auth', 'project'=>true), array('name'=>'course', 'project'=>true), array('name'=>'note', 'project'=>true), array('name'=>'doc', 'project'=>true) ); parent::__construct($oClassManagement, $sProcessPage, $asClasses); //if($this->oDb->sDbState == Db::DB_PEACHY) $this->oAuth = new Auth($this->oDb, Settings::API_KEY); $this->oAuth = new Auth($this->oDb, Settings::API_KEY); } protected function install() { //Install DB $this->oDb->install(); $this->oDb->loadFile('db_build.sql'); } protected function getSqlOptions() { return array ( 'tables' => array ( Auth::USER_TABLE => array(Db::getText(Auth::USER_TABLE), 'nickname', 'pass', 'cookie'), Course::WS_TABLE => array('dates'), Course::COURSE_TABLE=> array(Db::getId('workshops'), 'description', 'timeslot'), 'notes' => array(Db::getId(Auth::USER_TABLE), Db::getId(Course::COURSE_TABLE), 'notes'), Doc::DOC_TABLE => array(Db::getId(Auth::USER_TABLE), Db::getId(Course::COURSE_TABLE), 'type', 'filename'), 'todos' => array(Db::getId(Auth::USER_TABLE), Db::getId(Course::COURSE_TABLE), 'description') ), 'types' => array ( Db::getText(Auth::USER_TABLE) => "VARCHAR(32) NOT NULL", 'nickname' => "VARCHAR(60) NOT NULL", 'pass' => "VARCHAR(256) NOT NULL", 'cookie' => "VARCHAR(255)", 'dates' => "VARCHAR(50)", 'description' => "VARCHAR(200)", 'timeslot' => "ENUM('SAT-M', 'SAT-A', 'SUN-M', 'SUN-A')", 'notes' => "LONGTEXT", 'type' => "VARCHAR(10)", 'filename' => "VARCHAR(200)" ), 'constraints' => array ( Doc::DOC_TABLE => "UNIQUE KEY `uni_file` (`filename`)" ) ); } private function getVars() { return array( 'id' => $this->oAuth->getUserId(), 'log_in' => $this->isLoggedIn() ); } public function getAppMainPage() { return self::getMainPage( array( 'consts' => array( 'token_sep' => Auth::TOKEN_SEP, 'error' => self::ERROR, 'success' => self::SUCCESS, 'context' => $this->asContext, 'cookie' => Auth::USER_COOKIE_PASS, 'courses' => (new Course($this->oDb))->getCourses() ), 'vars' => $this->getVars() ), 'index', array( 'filepath_css' => self::addTimestampToFilePath('style/catc.css'), 'filepath_js_catc' => self::addTimestampToFilePath('scripts/catc.js') ) ); } /* Authorizations handling */ public function register($sToken, $sNickname) { $asResult = $this->oAuth->register($sToken, $sNickname); if($asResult['success']) return $this->logMeIn($sToken); else return self::getJsonResult($asResult['success'], $asResult['desc']); } public function isLoggedIn() { return $this->oAuth->isLoggedIn(); } public function logMeIn($sToken) { $asLogResult = $this->oAuth->logMeIn($sToken); return self::getJsonResult($asLogResult['success'], $asLogResult['desc'], $this->getVars()); } public function checkApiKey($sApiKey) { return $this->oAuth->checkApiKey($sApiKey); } /* Workshops / Courses */ public function getWorkshops() { return self::getJsonResult(true, '', (new Course($this->oDb))->getWorkshops()); } /* Notes*/ public function getNote($iCourseId) { $oNote = new Note($this->oDb, $this->oAuth->getUserId(), $iCourseId); $asNote = $oNote->getNote(); return self::getJsonResult(!empty($asNote), '', $asNote); } public function setNote($iCourseId, $asOps) { $oNote = new Note($this->oDb, $this->oAuth->getUserId(), $iCourseId); $sError = $oNote->setNote($asOps); $bSuccess = ($sError==''); $asData = ($bSuccess)?array('led_time' => $oNote->getNote()['led_time']):array(); return self::getJsonResult($bSuccess, $sError, $asData); } /* Docs */ public function getDocs($iCourseId) { $oDoc = new Doc($this->oDb, $this->oAuth->getUserId(), $iCourseId); $asDocList = $oDoc->getList(); return self::getJsonResult(!empty($asDocList), '', $asDocList); } public function uploadDoc($iCourseId) { $this->oClassManagement->incClass('uploader', true); $oDoc = new Doc($this->oDb, $this->oAuth->getUserId(), $iCourseId); $oUploader = new Uploader($oDoc); return $oUploader->sBody; } }