deprecated-addons/appnet/test/ADNRecipes.php

255 lines
6.6 KiB
PHP

<?php
/**
* ADNRecipes.php
* App.net PHP library
* https://github.com/jdolitsky/AppDotNetPHP
*
* This class contains some simple recipes for publishing to App.net.
*/
require_once "AppDotNet.php";
class ADNRecipe {
protected $_adn = null;
public function __construct() {
$this->_adn = new AppDotNet(null, null);
}
public function setAccessToken($access_token) {
$this->_adn->setAccessToken($access_token);
}
}
class ADNBroadcastMessageBuilder extends ADNRecipe {
// stores the channel ID for this message
private $_channel_id = null;
// stores the headline
private $_headline = null;
// stores the body text
private $_text = null;
// should we parse markdown links?
private $_parseMarkdownLinks = false;
// should we parse URLs out of the text body?
private $_parseLinks = false;
// stores the read more link
private $_readMoreLink = null;
// stores the photo filename
private $_photo = null;
// stores the attachment filename
private $_attachment = null;
/**
* Sets the destination channel ID. Required.
* @param string $channel_id The App.net Channel ID to send to. Get this
* from the web publisher tools if you don't have one.
*/
public function setChannelID($channel_id) {
$this->_channel_id = $channel_id;
return $this;
}
public function getChannelID() {
return $this->_channel_id;
}
/**
* Sets the broadcast headline. This string shows up in the push
* notifications which are sent to mobile apps, and is the title
* displayed in the UI.
* @param string $headline A short string for a headline.
*/
public function setHeadline($headline) {
$this->_headline = $headline;
return $this;
}
public function getHeadline() {
return $this->_headline;
}
/**
* Sets the broadcast text. This string shows up as a description
* on the broadcast detail page and in the "card" view in the
* mobile apps. Can contain links.
* @param string $text Broadcast body text.
*/
public function setText($text) {
$this->_text = $text;
return $this;
}
public function getText() {
return $this->_text;
}
/**
* Sets a flag which allows links to be parsed out of body text in
* [Markdown](http://daringfireball.net/projects/markdown/)
* format.
* @param bool $parseMarkdownLinks Parse markdown links.
*/
public function setParseMarkdownLinks($parseMarkdownLinks) {
$this->_parseMarkdownLinks = $parseMarkdownLinks;
return $this;
}
public function getParseMarkdownLinks() {
return $this->_parseMarkdownLinks;
}
/**
* Sets a flag which causes bare URLs in body text to be linkified.
* @param bool $parseLinks Parse links.
*/
public function setParseLinks($parseLinks) {
$this->_parseLinks = $parseLinks;
return $this;
}
public function getParseLinks() {
return $this->_parseLinks;
}
/**
* Sets the URL the broadcast should link to.
* @param string $readMoreLink Read more link URL.
*/
public function setReadMoreLink($readMoreLink) {
$this->_readMoreLink = $readMoreLink;
return $this;
}
public function getReadMoreLink() {
return $this->_readMoreLink;
}
/**
* Sets the filename of a photo associated with a broadcast.
* Probably requires the php-imagick extension. File will be
* uploaded to App.net.
* @param string $photo Photo filename.
*/
public function setPhoto($photo) {
$this->_photo = $photo;
return $this;
}
public function getPhoto() {
return $this->_photo;
}
/**
* Sets the filename of a attachment associated with a broadcast.
* File will be uploaded to App.net.
* @param string $attachment Attachment filename.
*/
public function setAttachment($attachment) {
$this->_attachment = $attachment;
return $this;
}
public function getAttachment() {
return $this->_attachment;
}
/**
* Sends the built-up broadcast.
*/
public function send() {
$parseLinks = $this->_parseLinks || $this->_parseMarkdownLinks;
$message = array(
"annotations" => array(),
"entities" => array(
"parse_links" => $parseLinks,
"parse_markdown_links" => $this->_parseMarkdownLinks,
),
);
if (isset($this->_photo)) {
$photoFile = $this->_adn->createFile($this->_photo, array(
type => "com.github.jdolitsky.appdotnetphp.photo",
));
$message["annotations"][] = array(
"type" => "net.app.core.oembed",
"value" => array(
"+net.app.core.file" => array(
"file_id" => $photoFile["id"],
"file_token" => $photoFile["file_token"],
"format" => "oembed",
),
),
);
}
if (isset($this->_attachment)) {
if (isset($this->_attachment)) {
$attachmentFile = $this->_adn->createFile($this->_attachment, array(
type => "com.github.jdolitsky.appdotnetphp.attachment",
));
$message["annotations"][] = array(
"type" => "net.app.core.oembed",
"value" => array(
"+net.app.core.file" => array(
"file_id" => $attachmentFile["id"],
"file_token" => $attachmentFile["file_token"],
"format" => "metadata",
),
),
);
}
}
if (isset($this->_text)) {
$message["text"] = $this->_text;
} else {
$message["machine_only"] = true;
}
if (isset($this->_headline)) {
$message["annotations"][] = array(
"type" => "net.app.core.broadcast.message.metadata",
"value" => array(
"subject" => $this->_headline,
),
);
}
if (isset($this->_readMoreLink)) {
$message["annotations"][] = array(
"type" => "net.app.core.crosspost",
"value" => array(
"canonical_url" => $this->_readMoreLink,
),
);
}
return $this->_adn->createMessage($this->_channel_id, $message);
}
}
?>