Exemple #1
0
	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;
	}
Exemple #2
0
	/**
	 * 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 ();
		}
	}
Exemple #3
0
	/**
	 * 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;
	}