function postContent() { $body = strip_tags($this->getInput('body')); $name = strip_tags($this->getInput('name')); $url = trim($this->getInput('url')); $url2 = trim($this->getInput('url-2')); $validator = $this->getInput('validator'); if (!empty($url2)) { $this->deniedContent(); } $this->referrerGatekeeper(); if (!empty($body) && !empty($name) && !empty($validator)) { if ($object = Entity::getByUUID($validator)) { if ($url = Webservice::sanitizeURL($url)) { if ($content = Webservice::get($url)) { if ($content['response'] == '200') { $icon = Webmention::getIconFromWebsiteContent($content['content'], $url); } } } if (empty($icon)) { $bn = hexdec(substr(md5($url), 0, 15)); $number = 1 + $bn % 5; $icon = \Idno\Core\site()->config()->url . 'gfx/users/default-' . str_pad($number, 2, '0', STR_PAD_LEFT) . '.png'; } $object->addAnnotation('reply', $name, $url, $icon, $body); $this->forward($object->getDisplayURL()); } } }
function getContent() { if ($staticpages = \Idno\Core\Idno::site()->plugins()->get('StaticPages')) { if (!empty($staticpages->getCurrentHomepageId())) { $object = \Idno\Common\Entity::getByID($staticpages->getCurrentHomepageId()); if (empty($object)) { $object = \Idno\Common\Entity::getBySlug($staticpages->getCurrentHomepageId()); } if (empty($object)) { $this->goneContent(); } // From here, we know the object is set // Ensure we're talking about pages ... if (!$object instanceof \IdnoPlugins\StaticPages\StaticPage) { $this->goneContent(); } // Check that we can see it if (!$object->canRead()) { $this->deniedContent(); } // Forward if necessary if (!empty($object->forward_url) && !\Idno\Core\Idno::site()->session()->isAdmin()) { $this->forward($object->forward_url); } $this->setOwner($object->getOwner()); $this->setPermalink(); // This is a permalink $this->setLastModifiedHeader($object->updated); // Say when this was last modified $t = \Idno\Core\Idno::site()->template(); $t->__(array('title' => $object->getTitle(), 'body' => $t->__(array('object' => $object))->draw('staticpages/page'), 'description' => $object->getShortDescription()))->drawPage(); } } parent::getContent(); }
function getContent() { $subject = $this->getInput('q'); $types = $this->getInput('types'); $subject = trim($subject); $offset = (int) $this->getInput('offset'); if (empty($types)) { $types = '!Idno\\Entities\\ActivityStreamPost'; } else { if (!is_array($types)) { $types = [$types]; } $types[] = '!Idno\\Entities\\ActivityStreamPost'; } if (!empty($subject)) { $regexObj = new \MongoRegex("/" . addslashes($subject) . "/i"); $items = \Idno\Common\Entity::getFromX($types, ['$or' => [['body' => $regexObj], ['title' => $regexObj], ['description' => $regexObj]]], [], 10, $offset); $count = \Idno\Common\Entity::countFromX($types, ['$or' => [['body' => $regexObj], ['title' => $regexObj], ['description' => $regexObj]]]); } else { $items = []; $subject = 'Search'; $count = 0; } $t = \Idno\Core\site()->template(); $t->__(array('title' => $subject, 'body' => $t->__(array('subject' => $subject, 'items' => $items, 'count' => $count, 'offset' => $offset))->draw('entity/search')))->drawPage(); }
function postContent() { $this->createGatekeeper(); // User is logged in and can post content // Get variables $body = $this->getInput('body'); $object_uuid = $this->getInput('object'); $type = $this->getInput('type'); $user = \Idno\Core\site()->session()->currentUser(); if ($type != 'like') { $type = 'reply'; } if ($object = Entity::getByUUID($object_uuid)) { $has_liked = false; if ($type == 'like') { if ($like_annotations = $object->getAnnotations('like')) { foreach ($like_annotations as $like) { if ($like['owner_url'] == \Idno\Core\site()->session()->currentUser()->getURL()) { $object->removeAnnotation($like['permalink']); $object->save(); $has_liked = true; } } } } if (!$has_liked) { if ($object->addAnnotation($type, $user->getTitle(), $user->getURL(), $user->getIcon(), $body)) { $object->save(); } } $this->forward($object->getURL() . '#comments'); } }
function save() { // generate our own meaningful, unique(ish) slug if (!$this->getSlug() && !$this->_id && $this->getTitle() && $this->likeof) { $this->setSlugResilient($this->getTitle() . '-' . substr(md5($this->likeof), 0, 10)); } return parent::save(); }
function __construct() { parent::__construct(); $this->code = hash('sha256', mt_rand() . microtime(true)); $this->expires = strtotime('now + 10 minutes'); $this->setTitle($this->code); // better stub generation, not that it matters }
function getURL() { if (!$this->getSlug() && $this->getID()) { return \Idno\Core\site()->config()->url . 'entry/' . $this->getID() . '/' . $this->getPrettyURLTitle(); } else { return parent::getURL(); } }
function getURL() { if (!$this->getSlug() && $this->getID()) { return \Idno\Core\site()->config()->url . 'rsvp/' . $this->getID() . '/'; } else { return parent::getURL(); } }
function getURL() { if ($this->getID()) { return \Idno\Core\site()->config()->url . 'slides/' . $this->getID(); // . '/' . $this->getPrettyURLTitle(); } else { return parent::getURL(); } }
/** * Retrieve icon * @return mixed|string */ function getIcon() { $xpath = new \DOMXPath(@\DOMDocument::loadHTML($this->getDescription())); $src = $xpath->evaluate("string(//img/@src)"); if (!empty($src)) { return $src; } return parent::getIcon(); }
function __construct($token_type = 'grant', $expires_in = 2419200) { parent::__construct(); $this->access_token = hash('sha256', mt_rand() . microtime(true)); $this->refresh_token = hash('sha256', mt_rand() . microtime(true)); $this->expires_in = $expires_in; // Default expires is 1 month, like facebook $this->token_type = $token_type; $this->setTitle($this->access_token); // better stub generation, not that it matters }
/** * Extend json serialisable to include some extra data */ public function jsonSerialize() { $object = parent::jsonSerialize(); // Add some thumbs $object['thumbnails'] = []; $sizes = \Idno\Core\site()->events()->dispatch('photo/thumbnail/getsizes', new \Idno\Core\Event(array('sizes' => ['large' => 800, 'medium' => 400, 'small' => 200]))); foreach ($sizes->data()['sizes'] as $label => $size) { $varname = "thumbnail_{$label}"; $object['thumbnails'][$label] = $this->{$varname}; } return $object; }
/** * Sets a static page as the homepage, overwriting the current setting if one is set. * @param $pageId * @return bool */ function setAsHomepage($pageId) { if (\Idno\Core\Idno::site()->session()->isLoggedIn()) { if (\Idno\Core\Idno::site()->session()->currentUser()->isAdmin()) { if (!empty(\Idno\Common\Entity::getByID($pageId))) { \Idno\Core\Idno::site()->config->staticPages['homepage'] = $pageId; return \Idno\Core\Idno::site()->config->save(); } } } return false; }
/** * Extend json serialisable to include some extra data */ public function jsonSerialize() { $object = parent::jsonSerialize(); // Add some thumbs $object['thumbnails'] = array(); $sizes = \Idno\Core\Idno::site()->events()->dispatch('photo/thumbnail/getsizes', new \Idno\Core\Event(array('sizes' => array('large' => 800, 'medium' => 400, 'small' => 200)))); $eventdata = $sizes->data(); foreach ($eventdata['sizes'] as $label => $size) { $varname = "thumbnail_{$label}"; $object['thumbnails'][$label] = preg_replace('/^(https?:\\/\\/\\/)/', \Idno\Core\Idno::site()->config()->url, $this->{$varname}); } return $object; }
function deleteContent() { if (!empty($this->arguments[0])) { $object = \Idno\Common\Entity::getByID($this->arguments[0]); } if (empty($object)) { $this->forward(); } // TODO: 404 if ($object->delete()) { \Idno\Core\Idno::site()->session()->addMessage($object->getTitle() . ' was deleted.'); } $this->forward($_SERVER['HTTP_REFERER']); }
function webmentionContent($source, $target, $source_content, $source_mf2) { if (!empty($this->arguments[0])) { $object = \Idno\Common\Entity::getByShortURL($this->arguments[0]); } if (empty($object)) { return false; } $return = true; if ($object instanceof \Idno\Common\Entity) { $return = $object->addWebmentions($source, $target, $source_content, $source_mf2); } return $return; }
function getURL() { // If we have a URL override, use it if (!empty($this->url)) { return $this->url; } if (!empty($this->canonical)) { return $this->canonical; } if (!$this->getSlug() && $this->getID()) { return \Idno\Core\Idno::site()->config()->url . 'event/' . $this->getID() . '/' . $this->getPrettyURLTitle(); } else { return parent::getURL(); } }
function getContent() { if (!empty($this->arguments[0])) { $object = \Idno\Common\Entity::getByID($this->arguments[0]); } if (empty($object)) { $this->forward(); } // TODO: 404 if (!$object->canEdit()) { $this->forward($object->getURL()); } $t = \Idno\Core\site()->template(); $t->__(array('title' => $object->getTitle(), 'body' => $object->drawEdit()))->drawPage(); }
function getContent() { if (!empty($this->arguments[0])) { $object = \Idno\Common\Entity::getByID($this->arguments[0]); if (empty($object)) { $object = \Idno\Common\Entity::getBySlug($this->arguments[0]); } } if (empty($object)) { $this->goneContent(); } $permalink = $object->getUrl() . '/annotations/' . $this->arguments[1]; $annotation = $object->getAnnotation($permalink); $subtype = $object->getAnnotationSubtype($permalink); $this->setPermalink(); // This is a permalink $t = \Idno\Core\site()->template(); $t->__(array('title' => $object->getTitle(), 'body' => $t->__(array('annotation' => $annotation, 'subtype' => $subtype, 'permalink' => $permalink, 'object' => $object))->draw('entity/annotations/shell'), 'description' => $object->getShortDescription()))->drawPage(); }
function getContent() { if (!empty($this->arguments[0])) { $object = \Idno\Common\Entity::getByID($this->arguments[0]); } if (empty($object)) { $this->forward(); } // TODO: 404 if (!$object->canEdit()) { $this->forward($object->getDisplayURL()); } if ($owner = $object->getOwner()) { $this->setOwner($owner); } session_write_close(); $t = \Idno\Core\Idno::site()->template(); $t->__(array('title' => $object->getTitle(), 'body' => $t->__(['object' => $object])->draw('entity/editwrapper')))->drawPage(); }
function postContent() { if (!empty($this->arguments[0])) { $object = \Idno\Common\Entity::getByID($this->arguments[0]); } if (empty($object)) { $this->setResponse(404); echo \Idno\Core\Idno::site()->template()->__(array('body' => \Idno\Core\Idno::site()->template()->draw('404'), 'title' => 'Not found'))->drawPage(); exit; } if (!$object->canEdit()) { $this->setResponse(403); echo \Idno\Core\Idno::site()->template()->__(array('body' => \Idno\Core\Idno::site()->template()->draw('403'), 'title' => 'Permission denied'))->drawPage(); exit; } $object->unsyndicate(); \Idno\Core\Idno::site()->session()->addMessage("We removed copies on all the syndicated sites."); $this->forward($object->getDisplayURL()); }
function postContent() { $this->gatekeeper(); if (!empty($this->arguments[0])) { $object = \Idno\Common\Entity::getByID($this->arguments[0]); if (empty($object)) { $object = \Idno\Common\Entity::getBySlug($this->arguments[0]); } } if (empty($object)) { $this->goneContent(); } $permalink = $object->getURL() . '/annotations/' . $this->arguments[1]; if ($object->canEditAnnotation($permalink)) { if ($object->removeAnnotation($permalink) && $object->save()) { //\Idno\Core\site()->session()->addMessage('The annotation was deleted.'); } } $this->forward($object->getURL() . '#comments'); }
function postContent() { $this->gatekeeper(); if (!empty($this->arguments[0])) { $object = \Idno\Common\Entity::getByID($this->arguments[0]); if (empty($object)) { $object = \Idno\Common\Entity::getBySlug($this->arguments[0]); } } if (empty($object)) { $this->goneContent(); } $permalink = $object->getUrl() . '/annotations/' . $this->arguments[1]; if ($object->canEdit()) { if ($object->removeAnnotation($permalink) && $object->save()) { \Idno\Core\site()->session()->addMessage('Annotation ' . $permalink . ' was deleted.'); } } $this->forward($_SERVER['HTTP_REFERER']); }
function postContent() { $this->createGatekeeper(); if (!empty($this->arguments)) { $object = Entity::getByID($this->arguments[0]); } if ($object) { if (!$object->canEdit()) { $this->setResponse(403); Idno::site()->session()->addErrorMessage("You don't have permission to delete this object."); } else { if ($object->delete()) { Idno::site()->session()->addMessage($object->getTitle() . ' was deleted.'); } else { Idno::site()->session()->addErrorMessage("We couldn't delete " . $object->getTitle() . "."); } } } $this->forward($_SERVER['HTTP_REFERER']); }
function post() { \Idno\Core\Idno::site()->logging->debug("Pubsub: Ping received"); // Since we've overloaded post, we need to parse the arguments $arguments = func_get_args(); if (!empty($arguments)) { $this->arguments = $arguments; } // Find users if (!empty($this->arguments[0])) { $subscriber = \Idno\Common\Entity::getByID($this->arguments[0]); } if (empty($subscriber) || !$subscriber instanceof \Idno\Entities\User) { $this->goneContent(); } if (!empty($this->arguments[1])) { $subscription = \Idno\Common\Entity::getByID($this->arguments[1]); } if (empty($subscription) || !$subscription instanceof \Idno\Entities\User) { $this->goneContent(); } \Idno\Core\Idno::site()->logging->debug("Pubsub: Ping received, pinging out..."); \Idno\Core\Idno::site()->triggerEvent('pubsubhubbub/ping', array('subscriber' => $subscriber, 'subscription' => $subscription, 'data' => trim(file_get_contents("php://input")))); }
function post() { parse_str(trim(file_get_contents("php://input")), $vars); // Check that both source and target are non-empty if (!empty($vars['source']) && !empty($vars['target']) && $vars['source'] != $vars['target']) { $source = $vars['source']; $target = $vars['target']; // Remove anchors from target URL, but save them to '#' input so we can still reference them later if (strpos($target, '#')) { list($target, $fragment) = explode('#', $target, 2); if (!empty($fragment)) { $this->setInput('#', $fragment); } } // Get the page handler for target if ($page = \Idno\Core\Idno::site()->getPageHandler($target)) { // First of all, make sure the target page isn't the source page. Let's not webmention ourselves! $webmention_ok = true; if (\Idno\Common\Entity::isLocalUUID($source)) { if ($source_page = \Idno\Core\Idno::site()->getPageHandler($source)) { if ($source_page == $page) { $webmention_ok = false; } } } // Check that source exists, parse it for mf2 content, // and ensure that it genuinely mentions this page if ($webmention_ok) { if ($source_content = \Idno\Core\Webservice::get($source)) { if (substr_count($source_content['content'], $target) || $source_content['response'] == 410) { $source_mf2 = \Idno\Core\Webmention::parseContent($source_content['content'], $source); // Set source and target information as input variables $page->setPermalink(); if ($page->webmentionContent($source, $target, $source_content, $source_mf2)) { $this->setResponse(202); // Webmention received a-ok. exit; } else { $error = 'target_not_supported'; $error_text = 'This is not webmentionable.'; } } else { $error = 'no_link_found'; $error_text = 'The source URI does not contain a link to the target URI.'; \Idno\Core\Idno::site()->logging->warning('No link from ' . $source . ' to ' . $target); } } else { $error = 'source_not_found'; $error_text = 'The source content for ' . $source . ' could not be obtained.'; \Idno\Core\Idno::site()->logging->warning('No content from ' . $source); } } else { $error = 'target_not_supported'; $error_text = 'A page can\'t webmention itself.'; } } else { $error = 'target_not_found'; $error_text = 'The target page ' . $target . ' does not exist.'; \Idno\Core\Idno::site()->logging()->error('Could not find handler for ' . $target); } } $this->setResponse(400); // Webmention failed. if (empty($error)) { $error = 'unknown_error'; $error_text = 'Not all the required webmention variables were set.'; } echo json_encode(array('error' => $error, 'error_text' => $error_text)); }
/** * Sets the URL slug of this entity to the given non-empty string, returning * the sanitized slug on success * @param string $slug * @param int $max_pieces The maximum number of words in the slug (default: 10) * @param int $max_chars The maximum number of characters in the slug (default: 255) * @return bool */ function setSlug($slug, $max_pieces = 10, $max_chars = 255) { $plugin_slug = \Idno\Core\Idno::site()->triggerEvent('entity/slug', array('object' => $this)); if (!empty($plugin_slug) && $plugin_slug !== true) { return $plugin_slug; } $slug = $this->prepare_slug($slug, $max_pieces, $max_chars); if (empty($slug)) { return false; } if ($entity = \Idno\Common\Entity::getBySlug($slug)) { if ($entity->getUUID() != $this->getUUID()) { return false; } } $this->slug = $slug; return $slug; }
public function jsonSerialize() { $data = parent::jsonSerialize(); $data['image'] = array('url' => $this->getIcon()); return $data; }
/** * Sets the URL slug of this entity to the given non-empty string, returning * the sanitized slug on success * @param string $slug * @param int $limit The maximum length of the slug * @return bool */ function setSlug($slug, $limit = 140) { $plugin_slug = \Idno\Core\site()->triggerEvent('entity/slug', ['object' => $this]); if (!empty($plugin_slug) && $plugin_slug !== true) { return $plugin_slug; } $slug = trim($slug); $slug = strtolower($slug); $slug = preg_replace('|https?://[a-z\\.0-9]+|i', '', $slug); $slug = preg_replace("/[^A-Za-z0-9\\-\\_ ]/", '', $slug); $slug = preg_replace("/[ ]+/", ' ', $slug); $slug = substr($slug, 0, $limit); $slug = str_replace(' ', '-', $slug); if (empty($slug)) { return false; } if ($entity = \Idno\Common\Entity::getBySlug($slug)) { if ($entity->getUUID() != $this->getUUID()) { return false; } } $this->slug = $slug; return $slug; }
/** * Get the actor associated with this entity */ function getActor() { return \Idno\Common\Entity::getByUUID($this->actor); }