function signin ($args) { $results = array(); //check user and password $name = MediabirdUtility::getArgNoSlashes($args->name); $password = MediabirdUtility::getArgNoSlashes($args->password); $password=sha1(MediabirdConfig::$security_salt.$password); if ($userRecord = $this->db->getRecord(MediabirdConfig::tableName('User',true)," name='".$this->db->escape($name)."' AND password='******'")) { if ($userRecord->active == 1) { $user = $this->User->userFromRecord($userRecord); //save session time $_SESSION['mb_session_time'] = $user['lastLogin']; //update last login $time = time(); $userRecord->last_login = $this->db->datetime($time); $this->db->updateRecord(MediabirdConfig::tableName('User',true),$userRecord); //save the session info for subsequent requests $this->auth->createSession($user['id']); $results['user'] = $user; $results['r'] = MediabirdConstants::processed; } else { $results['r'] = MediabirdConstants::disabled; } } else { $results['r'] = MediabirdConstants::wrongPass; } return $results; }
/** * Determine note sheets that are related to a given URL * Technically speaking, this functions finds all note sheets that feature a reference marker pointing at the given location * Sorts results by modification date, descending * @param string $url Location * @param int $userId Id of the user whose notes are to be determined * @param MediabirdDbo $mediabirdDb Database connection to be used * @return string[] */ function findRelatedNotes($url, $userId, $mediabirdDb) { //find all topics which are accessible $query = "SELECT id FROM ".MediabirdConfig::tableName('Topic')." WHERE id IN ( SELECT topic_id FROM ".MediabirdConfig::tableName('Right')." WHERE mask > 1 AND user_id=$userId )"; $topicIds = (array)null; if ($result = $mediabirdDb->getRecordSet($query)) { //collect ids while ($results = $mediabirdDb->fetchNextRecord($result)) { $topicIds[] = intval($results->id); } } else { error_log($query); return null; } if (count($topicIds) > 0) { $query = "SELECT id FROM ".MediabirdConfig::tableName("Card")." WHERE id IN (SELECT card_id FROM ".MediabirdConfig::tableName("Marker")." WHERE id IN (SELECT marker_id FROM ".MediabirdConfig::tableName("Relation")." WHERE (shared=1 OR user_id IN (0,$userId)) AND relation_id IN (SELECT id FROM ".MediabirdConfig::tableName("Link")." WHERE url='".$mediabirdDb->escape($url)."') ) ) AND topic_id IN (".join(",", $topicIds).") ORDER BY modified DESC"; $ownCardIds = array (); if ($result = $mediabirdDb->getRecordSet($query)) { while ($results = $mediabirdDb->fetchNextRecord($result)) { $card = intval($results->id); $ownCardIds[] = $card; } return array ($ownCardIds, array()); } else { error_log($query); return null; } } else { return array (); } }