function signout($args) { $results = array(); //delete card locks associated with this user if ($this->auth->isAuthorized()) { $query="SELECT id,locked_by FROM ".MediabirdConfig::tableName('Content')." WHERE locked_by=$this->userId"; if ($result = $this->db->getRecordSet($query)) { while($record = $this->db->fetchNextRecord($result)) { $record->locked_by = 0; $this->db->updateRecord(MediabirdConfig::tableName('Content',true),$record); } } if ( property_exists($args,'settings')) { $settings = MediabirdUtility::getArgNoSlashes($args->settings); if ($settingsJson = json_decode($settings)) { $settings = json_encode($settingsJson); $user = $this->db->getRecord(MediabirdConfig::tableName('User',true),"id=$this->userId"); $user->settings = $settings; $this->db->updateRecord(MediabirdConfig::tableName('User',true),$user); } } $this->auth->restartSession(); //notify back $results['r'] = MediabirdConstants::processed; } 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 (); } }
/** * Send's an anonymous email to some address, preferably the Mediabird team or a user * @param $to Id of user to which to deliver email * @param $subject Subject of email * @param $body Body of email * @return bool Success */ function sendMail($to,$subject,$body) { if(!isset($this->db)) { return false; } if(!MediabirdConfig::$disable_mail) { $address=null; if($to==-1) { $address=MediabirdConfig::$webmaster_address; } else { $query="SELECT email FROM ".MediabirdConfig::tableName('User')." WHERE id=$to"; if($result=$this->db->getRecordSet($query)) { $results=$this->db->recordToArray($this->db->fetchNextRecord($result)); $address=$results['email']; } } if(isset($address)) { $headers = "From: ".MediabirdConfig::$no_reply_address."\r\n". "Reply-To: ".MediabirdConfig::$no_reply_address."\r\n". "X-Mailer: PHP/".phpversion(); return mail($address, $subject, $body, $headers); } } return false; }