本文整理汇总了PHP中XMLStringer::raw方法的典型用法代码示例。如果您正苦于以下问题:PHP XMLStringer::raw方法的具体用法?PHP XMLStringer::raw怎么用?PHP XMLStringer::raw使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLStringer
的用法示例。
在下文中一共展示了XMLStringer::raw方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: notify
/**
* Send an Activity Streams notification to the remote Salmon endpoint,
* if so configured.
*
* @param Profile $actor Actor who did the activity
* @param string $verb Activity::SUBSCRIBE or Activity::JOIN
* @param Object $object object of the action; must define asActivityNoun($tag)
*/
public function notify($actor, $verb, $object = null, $target = null)
{
if (!$actor instanceof Profile) {
$type = gettype($actor);
if ($type == 'object') {
$type = get_class($actor);
}
// TRANS: Server exception.
// TRANS: %1$s is the method name the exception occured in, %2$s is the actor type.
throw new ServerException(sprintf(_m('Invalid actor passed to %1$s: %2$s.'), __METHOD__, $type));
}
if ($object == null) {
$object = $this;
}
if ($this->salmonuri) {
$text = 'update';
$id = TagURI::mint('%s:%s:%s', $verb, $actor->getURI(), common_date_iso8601(time()));
// @todo FIXME: Consolidate all these NS settings somewhere.
$attributes = array('xmlns' => Activity::ATOM, 'xmlns:activity' => 'http://activitystrea.ms/spec/1.0/', 'xmlns:thr' => 'http://purl.org/syndication/thread/1.0', 'xmlns:georss' => 'http://www.georss.org/georss', 'xmlns:ostatus' => 'http://ostatus.org/schema/1.0', 'xmlns:poco' => 'http://portablecontacts.net/spec/1.0', 'xmlns:media' => 'http://purl.org/syndication/atommedia');
$entry = new XMLStringer();
$entry->elementStart('entry', $attributes);
$entry->element('id', null, $id);
$entry->element('title', null, $text);
$entry->element('summary', null, $text);
$entry->element('published', null, common_date_w3dtf(common_sql_now()));
$entry->element('activity:verb', null, $verb);
$entry->raw($actor->asAtomAuthor());
$entry->raw($actor->asActivityActor());
$entry->raw($object->asActivityNoun('object'));
if ($target != null) {
$entry->raw($target->asActivityNoun('target'));
}
$entry->elementEnd('entry');
$xml = $entry->getString();
common_log(LOG_INFO, "Posting to Salmon endpoint {$this->salmonuri}: {$xml}");
$salmon = new Salmon();
// ?
return $salmon->post($this->salmonuri, $xml, $actor);
}
return false;
}
示例2: notify
/**
* Send an Activity Streams notification to the remote Salmon endpoint,
* if so configured.
*
* @param Profile $actor Actor who did the activity
* @param string $verb Activity::SUBSCRIBE or Activity::JOIN
* @param Object $object object of the action; must define asActivityNoun($tag)
*/
public function notify(Profile $actor, $verb, $object = null, $target = null)
{
if ($object == null) {
$object = $this;
}
if (empty($this->salmonuri)) {
return false;
}
$text = 'update';
$id = TagURI::mint('%s:%s:%s', $verb, $actor->getURI(), common_date_iso8601(time()));
// @todo FIXME: Consolidate all these NS settings somewhere.
$attributes = array('xmlns' => Activity::ATOM, 'xmlns:activity' => 'http://activitystrea.ms/spec/1.0/', 'xmlns:thr' => 'http://purl.org/syndication/thread/1.0', 'xmlns:georss' => 'http://www.georss.org/georss', 'xmlns:ostatus' => 'http://ostatus.org/schema/1.0', 'xmlns:poco' => 'http://portablecontacts.net/spec/1.0', 'xmlns:media' => 'http://purl.org/syndication/atommedia');
$entry = new XMLStringer();
$entry->elementStart('entry', $attributes);
$entry->element('id', null, $id);
$entry->element('title', null, $text);
$entry->element('summary', null, $text);
$entry->element('published', null, common_date_w3dtf(common_sql_now()));
$entry->element('activity:verb', null, $verb);
$entry->raw($actor->asAtomAuthor());
$entry->raw($actor->asActivityActor());
$entry->raw($object->asActivityNoun('object'));
if ($target != null) {
$entry->raw($target->asActivityNoun('target'));
}
$entry->elementEnd('entry');
$xml = $entry->getString();
common_log(LOG_INFO, "Posting to Salmon endpoint {$this->salmonuri}: {$xml}");
Salmon::post($this->salmonuri, $xml, $actor);
}
示例3: format_entry
/**
* extra information for XMPP messages, as defined by Twitter
*
* @param Profile $profile Profile of the sending user
* @param Notice $notice Notice being sent
*
* @return string Extra information (Atom, HTML, addresses) in string format
*/
protected function format_entry(Notice $notice)
{
$profile = $notice->getProfile();
$entry = $notice->asAtomEntry(true, true);
$xs = new XMLStringer();
$xs->elementStart('html', array('xmlns' => 'http://jabber.org/protocol/xhtml-im'));
$xs->elementStart('body', array('xmlns' => 'http://www.w3.org/1999/xhtml'));
$xs->element('a', array('href' => $profile->profileurl), $profile->nickname);
try {
$parent = $notice->getParent();
$orig_profile = $parent->getProfile();
$orig_profurl = $orig_profile->getUrl();
$xs->text(" => ");
$xs->element('a', array('href' => $orig_profurl), $orig_profile->nickname);
$xs->text(": ");
} catch (InvalidUrlException $e) {
$xs->text(sprintf(' => %s', $orig_profile->nickname));
} catch (NoParentNoticeException $e) {
$xs->text(": ");
} catch (NoResultException $e) {
// Parent notice was probably deleted.
$xs->text(": ");
}
// FIXME: Why do we replace \t with ''? is it just to make it pretty? shouldn't whitespace be handled well...?
$xs->raw(str_replace("\t", "", $notice->getRendered()));
$xs->text(" ");
$xs->element('a', array('href' => common_local_url('conversation', array('id' => $notice->conversation)) . '#notice-' . $notice->id), sprintf(_m('[%u]'), $notice->id));
$xs->elementEnd('body');
$xs->elementEnd('html');
$html = $xs->getString();
return $html . ' ' . $entry;
}
示例4: format_entry
/**
* extra information for XMPP messages, as defined by Twitter
*
* @param Profile $profile Profile of the sending user
* @param Notice $notice Notice being sent
*
* @return string Extra information (Atom, HTML, addresses) in string format
*/
protected function format_entry(Notice $notice)
{
$profile = $notice->getProfile();
$entry = $notice->asAtomEntry(true, true);
$xs = new XMLStringer();
$xs->elementStart('html', array('xmlns' => 'http://jabber.org/protocol/xhtml-im'));
$xs->elementStart('body', array('xmlns' => 'http://www.w3.org/1999/xhtml'));
$xs->element('a', array('href' => $profile->profileurl), $profile->nickname);
try {
$parent = $notice->getParent();
$orig_profile = $parent->getProfile();
$orig_profurl = $orig_profile->getUrl();
$xs->text(" => ");
$xs->element('a', array('href' => $orig_profurl), $orig_profile->nickname);
$xs->text(": ");
} catch (InvalidUrlException $e) {
$xs->text(sprintf(' => %s', $orig_profile->nickname));
} catch (NoParentNoticeException $e) {
$xs->text(": ");
}
if (!empty($notice->rendered)) {
$notice->rendered = str_replace("\t", "", $notice->rendered);
$xs->raw($notice->rendered);
} else {
$xs->raw(common_render_content($notice->content, $notice));
}
$xs->text(" ");
$xs->element('a', array('href' => common_local_url('conversation', array('id' => $notice->conversation)) . '#notice-' . $notice->id), sprintf(_m('[%u]'), $notice->id));
$xs->elementEnd('body');
$xs->elementEnd('html');
$html = $xs->getString();
return $html . ' ' . $entry;
}
示例5: asString
function asString()
{
$xs = new XMLStringer(true);
$xs->element('poco:preferredUsername', null, $this->preferredUsername);
$xs->element('poco:displayName', null, $this->displayName);
if (!empty($this->note)) {
$xs->element('poco:note', null, common_xml_safe_str($this->note));
}
if (!empty($this->address)) {
$xs->raw($this->address->asString());
}
foreach ($this->urls as $url) {
$xs->raw($url->asString());
}
return $xs->getString();
}
示例6: toHTML
static function toHTML($profile, $question, $answer)
{
$notice = $question->getNotice();
$out = new XMLStringer();
$cls = array('qna_answer');
if (!empty($answer->best)) {
$cls[] = 'best';
}
$out->elementStart('p', array('class' => implode(' ', $cls)));
$out->elementStart('span', 'answer-content');
$out->raw(common_render_text($answer->content));
$out->elementEnd('span');
if (!empty($answer->revisions)) {
$out->elementstart('span', 'answer-revisions');
$out->text(htmlspecialchars(sprintf(_m('%s revision', '%s revisions', $answer->revisions), $answer->revisions)));
$out->elementEnd('span');
}
$out->elementEnd('p');
return $out->getString();
}
示例7: asAtomEntry
function asAtomEntry($namespace = false, $source = false, $author = true, $cur = null)
{
$profile = $this->getProfile();
$xs = new XMLStringer(true);
if ($namespace) {
$attrs = array('xmlns' => 'http://www.w3.org/2005/Atom', 'xmlns:thr' => 'http://purl.org/syndication/thread/1.0', 'xmlns:georss' => 'http://www.georss.org/georss', 'xmlns:activity' => 'http://activitystrea.ms/spec/1.0/', 'xmlns:media' => 'http://purl.org/syndication/atommedia', 'xmlns:poco' => 'http://portablecontacts.net/spec/1.0', 'xmlns:ostatus' => 'http://ostatus.org/schema/1.0', 'xmlns:statusnet' => 'http://status.net/schema/api/1/');
} else {
$attrs = array();
}
if (Event::handle('StartActivityStart', array(&$this, &$xs, &$attrs))) {
$xs->elementStart('entry', $attrs);
Event::handle('EndActivityStart', array(&$this, &$xs, &$attrs));
}
if (Event::handle('StartActivitySource', array(&$this, &$xs))) {
if ($source) {
$atom_feed = $profile->getAtomFeed();
if (!empty($atom_feed)) {
$xs->elementStart('source');
// XXX: we should store the actual feed ID
$xs->element('id', null, $atom_feed);
// XXX: we should store the actual feed title
$xs->element('title', null, $profile->getBestName());
$xs->element('link', array('rel' => 'alternate', 'type' => 'text/html', 'href' => $profile->profileurl));
$xs->element('link', array('rel' => 'self', 'type' => 'application/atom+xml', 'href' => $atom_feed));
$xs->element('icon', null, $profile->avatarUrl(AVATAR_PROFILE_SIZE));
$notice = $profile->getCurrentNotice();
if (!empty($notice)) {
$xs->element('updated', null, self::utcDate($notice->created));
}
$user = User::staticGet('id', $profile->id);
if (!empty($user)) {
$xs->element('link', array('rel' => 'license', 'href' => common_config('license', 'url')));
}
$xs->elementEnd('source');
}
}
Event::handle('EndActivitySource', array(&$this, &$xs));
}
$title = common_xml_safe_str($this->content);
if (Event::handle('StartActivityTitle', array(&$this, &$xs, &$title))) {
$xs->element('title', null, $title);
Event::handle('EndActivityTitle', array($this, &$xs, $title));
}
$atomAuthor = '';
if ($author) {
$atomAuthor = $profile->asAtomAuthor($cur);
}
if (Event::handle('StartActivityAuthor', array(&$this, &$xs, &$atomAuthor))) {
if (!empty($atomAuthor)) {
$xs->raw($atomAuthor);
Event::handle('EndActivityAuthor', array(&$this, &$xs, &$atomAuthor));
}
}
$actor = '';
if ($author) {
$actor = $profile->asActivityActor();
}
if (Event::handle('StartActivityActor', array(&$this, &$xs, &$actor))) {
if (!empty($actor)) {
$xs->raw($actor);
Event::handle('EndActivityActor', array(&$this, &$xs, &$actor));
}
}
$url = $this->bestUrl();
if (Event::handle('StartActivityLink', array(&$this, &$xs, &$url))) {
$xs->element('link', array('rel' => 'alternate', 'type' => 'text/html', 'href' => $url));
Event::handle('EndActivityLink', array(&$this, &$xs, $url));
}
$id = $this->uri;
if (Event::handle('StartActivityId', array(&$this, &$xs, &$id))) {
$xs->element('id', null, $id);
Event::handle('EndActivityId', array(&$this, &$xs, $id));
}
$published = self::utcDate($this->created);
if (Event::handle('StartActivityPublished', array(&$this, &$xs, &$published))) {
$xs->element('published', null, $published);
Event::handle('EndActivityPublished', array(&$this, &$xs, $published));
}
$updated = $published;
// XXX: notices are usually immutable
if (Event::handle('StartActivityUpdated', array(&$this, &$xs, &$updated))) {
$xs->element('updated', null, $updated);
Event::handle('EndActivityUpdated', array(&$this, &$xs, $updated));
}
$content = common_xml_safe_str($this->rendered);
if (Event::handle('StartActivityContent', array(&$this, &$xs, &$content))) {
$xs->element('content', array('type' => 'html'), $content);
Event::handle('EndActivityContent', array(&$this, &$xs, $content));
}
// Most of our notices represent POSTing a NOTE. This is the default verb
// for activity streams, so we normally just leave it out.
$verb = ActivityVerb::POST;
if (Event::handle('StartActivityVerb', array(&$this, &$xs, &$verb))) {
$xs->element('activity:verb', null, $verb);
Event::handle('EndActivityVerb', array(&$this, &$xs, $verb));
}
// We use the default behavior for activity streams: if there's no activity:object,
// then treat the entry itself as the object. Here, you can set the type of that object,
// which is normally a NOTE.
$type = ActivityObject::NOTE;
//.........这里部分代码省略.........
示例8: asString
function asString($namespace = false)
{
$xs = new XMLStringer(true);
if ($namespace) {
$attrs = array('xmlns' => 'http://www.w3.org/2005/Atom', 'xmlns:activity' => 'http://activitystrea.ms/spec/1.0/', 'xmlns:georss' => 'http://www.georss.org/georss', 'xmlns:ostatus' => 'http://ostatus.org/schema/1.0', 'xmlns:poco' => 'http://portablecontacts.net/spec/1.0', 'xmlns:media' => 'http://purl.org/syndication/atommedia');
} else {
$attrs = array();
}
$xs->elementStart('entry', $attrs);
$xs->element('id', null, $this->id);
$xs->element('title', null, $this->title);
$xs->element('published', null, common_date_iso8601($this->time));
$xs->element('content', array('type' => 'html'), $this->content);
if (!empty($this->summary)) {
$xs->element('summary', null, $this->summary);
}
if (!empty($this->link)) {
$xs->element('link', array('rel' => 'alternate', 'type' => 'text/html'), $this->link);
}
// XXX: add context
$xs->elementStart('author');
$xs->element('uri', array(), $this->actor->id);
if ($this->actor->title) {
$xs->element('name', array(), $this->actor->title);
}
$xs->elementEnd('author');
$xs->raw($this->actor->asString('activity:actor'));
$xs->element('activity:verb', null, $this->verb);
if (!empty($this->objects)) {
foreach ($this->objects as $object) {
$xs->raw($object->asString());
}
}
if ($this->target) {
$xs->raw($this->target->asString('activity:target'));
}
foreach ($this->categories as $cat) {
$xs->raw($cat->asString());
}
$xs->elementEnd('entry');
return $xs->getString();
}
示例9: jabber_format_entry
/**
* extra information for XMPP messages, as defined by Twitter
*
* @param Profile $profile Profile of the sending user
* @param Notice $notice Notice being sent
*
* @return string Extra information (Atom, HTML, addresses) in string format
*/
function jabber_format_entry($profile, $notice)
{
$entry = $notice->asAtomEntry(true, true);
$xs = new XMLStringer();
$xs->elementStart('html', array('xmlns' => 'http://jabber.org/protocol/xhtml-im'));
$xs->elementStart('body', array('xmlns' => 'http://www.w3.org/1999/xhtml'));
$xs->element('a', array('href' => $profile->profileurl), $profile->nickname);
$xs->text(": ");
if (!empty($notice->rendered)) {
$xs->raw($notice->rendered);
} else {
$xs->raw(common_render_content($notice->content, $notice));
}
$xs->text(" ");
$xs->element('a', array('href' => common_local_url('conversation', array('id' => $notice->conversation)) . '#notice-' . $notice->id), sprintf(_('[%s]'), $notice->id));
$xs->elementEnd('body');
$xs->elementEnd('html');
$html = $xs->getString();
return $html . ' ' . $entry;
}
示例10: asAtomEntry
function asAtomEntry($namespace = false, $source = false, $author = true)
{
$profile = $this->getProfile();
$xs = new XMLStringer(true);
if ($namespace) {
$attrs = array('xmlns' => 'http://www.w3.org/2005/Atom', 'xmlns:thr' => 'http://purl.org/syndication/thread/1.0', 'xmlns:georss' => 'http://www.georss.org/georss', 'xmlns:activity' => 'http://activitystrea.ms/spec/1.0/', 'xmlns:media' => 'http://purl.org/syndication/atommedia', 'xmlns:poco' => 'http://portablecontacts.net/spec/1.0', 'xmlns:ostatus' => 'http://ostatus.org/schema/1.0');
} else {
$attrs = array();
}
$xs->elementStart('entry', $attrs);
if ($source) {
$xs->elementStart('source');
$xs->element('id', null, $profile->profileurl);
$xs->element('title', null, $profile->nickname . " - " . common_config('site', 'name'));
$xs->element('link', array('href' => $profile->profileurl));
$user = User::staticGet('id', $profile->id);
if (!empty($user)) {
$atom_feed = common_local_url('ApiTimelineUser', array('format' => 'atom', 'id' => $profile->nickname));
$xs->element('link', array('rel' => 'self', 'type' => 'application/atom+xml', 'href' => $profile->profileurl));
$xs->element('link', array('rel' => 'license', 'href' => common_config('license', 'url')));
}
$xs->element('icon', null, $profile->avatarUrl(AVATAR_PROFILE_SIZE));
$xs->element('updated', null, common_date_w3dtf($this->created));
}
if ($source) {
$xs->elementEnd('source');
}
$xs->element('title', null, common_xml_safe_str($this->content));
if ($author) {
$xs->raw($profile->asAtomAuthor());
$xs->raw($profile->asActivityActor());
}
$xs->element('link', array('rel' => 'alternate', 'type' => 'text/html', 'href' => $this->bestUrl()));
$xs->element('id', null, $this->uri);
$xs->element('published', null, common_date_w3dtf($this->created));
$xs->element('updated', null, common_date_w3dtf($this->created));
if ($this->reply_to) {
$reply_notice = Notice::staticGet('id', $this->reply_to);
if (!empty($reply_notice)) {
$xs->element('link', array('rel' => 'related', 'href' => $reply_notice->bestUrl()));
$xs->element('thr:in-reply-to', array('ref' => $reply_notice->uri, 'href' => $reply_notice->bestUrl()));
}
}
if (!empty($this->conversation)) {
$conv = Conversation::staticGet('id', $this->conversation);
if (!empty($conv)) {
$xs->element('link', array('rel' => 'ostatus:conversation', 'href' => $conv->uri));
}
}
$reply_ids = $this->getReplies();
foreach ($reply_ids as $id) {
$profile = Profile::staticGet('id', $id);
if (!empty($profile)) {
$xs->element('link', array('rel' => 'ostatus:attention', 'href' => $profile->getUri()));
}
}
$groups = $this->getGroups();
foreach ($groups as $group) {
$xs->element('link', array('rel' => 'ostatus:attention', 'href' => $group->permalink()));
}
if (!empty($this->repeat_of)) {
$repeat = Notice::staticGet('id', $this->repeat_of);
if (!empty($repeat)) {
$xs->element('ostatus:forward', array('ref' => $repeat->uri, 'href' => $repeat->bestUrl()));
}
}
$xs->element('content', array('type' => 'html'), common_xml_safe_str($this->rendered));
$tag = new Notice_tag();
$tag->notice_id = $this->id;
if ($tag->find()) {
while ($tag->fetch()) {
$xs->element('category', array('term' => $tag->tag));
}
}
$tag->free();
# Enclosures
$attachments = $this->attachments();
if ($attachments) {
foreach ($attachments as $attachment) {
$enclosure = $attachment->getEnclosure();
if ($enclosure) {
$attributes = array('rel' => 'enclosure', 'href' => $enclosure->url, 'type' => $enclosure->mimetype, 'length' => $enclosure->size);
if ($enclosure->title) {
$attributes['title'] = $enclosure->title;
}
$xs->element('link', $attributes, null);
}
}
}
if (!empty($this->lat) && !empty($this->lon)) {
$xs->element('georss:point', null, $this->lat . ' ' . $this->lon);
}
$xs->elementEnd('entry');
return $xs->getString();
}
示例11: handle
/**
* Send a summary email to the user
*
* @param mixed $object
* @return boolean true on success, false on failure
*/
function handle($user_id)
{
// Skip if they've asked not to get summaries
$ess = Email_summary_status::staticGet('user_id', $user_id);
if (!empty($ess) && !$ess->send_summary) {
common_log(LOG_INFO, sprintf('Not sending email summary for user %s by request.', $user_id));
return true;
}
$since_id = null;
if (!empty($ess)) {
$since_id = $ess->last_summary_id;
}
$user = User::staticGet('id', $user_id);
if (empty($user)) {
common_log(LOG_INFO, sprintf('Not sending email summary for user %s; no such user.', $user_id));
return true;
}
if (empty($user->email)) {
common_log(LOG_INFO, sprintf('Not sending email summary for user %s; no email address.', $user_id));
return true;
}
$profile = $user->getProfile();
if (empty($profile)) {
common_log(LOG_WARNING, sprintf('Not sending email summary for user %s; no profile.', $user_id));
return true;
}
$stream = new InboxNoticeStream($user, $user->getProfile());
$notice = $stream->getNotices(0, self::MAX_NOTICES, $since_id);
if (empty($notice) || $notice->N == 0) {
common_log(LOG_WARNING, sprintf('Not sending email summary for user %s; no notices.', $user_id));
return true;
}
// XXX: This is risky fingerpoken in der objektvars, but I didn't feel like
// figuring out a better way. -ESP
$new_top = null;
if ($notice instanceof ArrayWrapper) {
$new_top = $notice->_items[0]->id;
}
// TRANS: Subject for e-mail.
$subject = sprintf(_m('Your latest updates from %s'), common_config('site', 'name'));
$out = new XMLStringer(true);
$out->elementStart('html');
$out->elementStart('head');
$out->element('title', null, $subject);
$out->elementEnd('head');
$out->elementStart('body');
$out->elementStart('div', array('width' => '100%', 'style' => 'background-color: #ffffff; border: 4px solid #4c609a; padding: 10px;'));
$out->elementStart('div', array('style' => 'color: #ffffff; background-color: #4c609a; font-weight: bold; margin-bottom: 10px; padding: 4px;'));
// TRANS: Text in e-mail summary.
// TRANS: %1$s is the StatusNet sitename, %2$s is the recipient's profile name.
$out->raw(sprintf(_m('Recent updates from %1$s for %2$s:'), common_config('site', 'name'), $profile->getBestName()));
$out->elementEnd('div');
$out->elementStart('table', array('width' => '550px', 'style' => 'border: none; border-collapse: collapse;', 'cellpadding' => '6'));
while ($notice->fetch()) {
$profile = Profile::staticGet('id', $notice->profile_id);
if (empty($profile)) {
continue;
}
$avatar = $profile->getAvatar(AVATAR_STREAM_SIZE);
$out->elementStart('tr');
$out->elementStart('td', array('width' => AVATAR_STREAM_SIZE, 'height' => AVATAR_STREAM_SIZE, 'align' => 'left', 'valign' => 'top', 'style' => 'border-bottom: 1px dotted #C5CEE3; padding: 10px 6px 10px 6px;'));
$out->element('img', array('src' => $avatar ? $avatar->displayUrl() : Avatar::defaultImage(AVATAR_STREAM_SIZE), 'width' => AVATAR_STREAM_SIZE, 'height' => AVATAR_STREAM_SIZE, 'alt' => $profile->getBestName()));
$out->elementEnd('td');
$out->elementStart('td', array('align' => 'left', 'valign' => 'top', 'style' => 'border-bottom: 1px dotted #C5CEE3; padding: 10px 6px 10px 6px;'));
$out->element('a', array('href' => $profile->profileurl), $profile->nickname);
$out->text(' ');
$out->raw($notice->rendered);
$out->elementStart('div', array('style' => 'font-size: 0.8em; padding-top: 4px;'));
$noticeurl = $notice->bestUrl();
// above should always return an URL
assert(!empty($noticeurl));
$out->elementStart('a', array('rel' => 'bookmark', 'href' => $noticeurl));
$dt = common_date_iso8601($notice->created);
$out->element('abbr', array('style' => 'border-bottom: none;', 'title' => $dt), common_date_string($notice->created));
$out->elementEnd('a');
if ($notice->hasConversation()) {
$conv = Conversation::staticGet('id', $notice->conversation);
$convurl = $conv->uri;
if (!empty($convurl)) {
$out->text(' ');
$out->element('a', array('href' => $convurl . '#notice-' . $notice->id), _m('in context'));
}
}
$out->elementEnd('div');
$out->elementEnd('td');
$out->elementEnd('tr');
}
$out->elementEnd('table');
// TRANS: Link text for link to e-mail settings.
// TRANS: %1$s is a link to the e-mail settings, %2$s is the StatusNet sitename.
$out->raw("<p>" . sprintf(_m('<a href="%1$s">change your email settings for %2$s</a>'), common_local_url('emailsettings'), common_config('site', 'name')) . "</p>");
$out->elementEnd('div');
$out->elementEnd('body');
$out->elementEnd('html');
//.........这里部分代码省略.........
示例12: toHTML
static function toHTML($profile, $question)
{
$notice = $question->getNotice();
$out = new XMLStringer();
$cls = array('qna_question');
if (!empty($question->closed)) {
$cls[] = 'closed';
}
$out->elementStart('p', array('class' => implode(' ', $cls)));
if (!empty($question->description)) {
$out->elementStart('span', 'question-description');
$out->raw(common_render_text($question->description));
$out->elementEnd('span');
}
$cnt = $question->countAnswers();
if (!empty($cnt)) {
$out->elementStart('span', 'answer-count');
// TRANS: Number of given answers to a question.
// TRANS: %s is the number of given answers.
$out->text(sprintf(_m('%s answer', '%s answers', $cnt), $cnt));
$out->elementEnd('span');
}
if (!empty($question->closed)) {
$out->elementStart('span', 'question-closed');
// TRANS: Notification that a question cannot be answered anymore because it is closed.
$out->text(_m('This question is closed.'));
$out->elementEnd('span');
}
$out->elementEnd('p');
return $out->getString();
}
示例13: asString
function asString($tag = 'activity:object')
{
$xs = new XMLStringer(true);
$xs->elementStart($tag);
$xs->element('activity:object-type', null, $this->type);
$xs->element(self::ID, null, $this->id);
if (!empty($this->title)) {
$xs->element(self::TITLE, null, common_xml_safe_str($this->title));
}
if (!empty($this->summary)) {
$xs->element(self::SUMMARY, null, common_xml_safe_str($this->summary));
}
if (!empty($this->content)) {
// XXX: assuming HTML content here
$xs->element(ActivityUtils::CONTENT, array('type' => 'html'), common_xml_safe_str($this->content));
}
if (!empty($this->link)) {
$xs->element('link', array('rel' => 'alternate', 'type' => 'text/html', 'href' => $this->link), null);
}
if ($this->type == ActivityObject::PERSON || $this->type == ActivityObject::GROUP) {
foreach ($this->avatarLinks as $avatar) {
$xs->element('link', array('rel' => 'avatar', 'type' => $avatar->type, 'media:width' => $avatar->width, 'media:height' => $avatar->height, 'href' => $avatar->url), null);
}
}
if (!empty($this->geopoint)) {
$xs->element('georss:point', null, $this->geopoint);
}
if (!empty($this->poco)) {
$xs->raw($this->poco->asString());
}
$xs->elementEnd($tag);
return $xs->getString();
}