function getContent() { if (!empty($this->arguments[0])) { $user = \Idno\Entities\User::getByHandle($this->arguments[0]); } if (empty($user)) { $this->noContent(); } // Users own their own profiles $this->setOwner($user); $types = 'Idno\\Entities\\ActivityStreamPost'; $search['verb'] = 'post'; $offset = (int) $this->getInput('offset'); $count = \Idno\Entities\ActivityStreamPost::countFromX($types, array('owner' => $user->getUUID())); $feed = \Idno\Entities\ActivityStreamPost::getFromX($types, array('owner' => $user->getUUID()), array(), \Idno\Core\site()->config()->items_per_page, $offset); $last_modified = $user->updated; if (!empty($feed) && is_array($feed)) { if ($feed[0]->updated > $last_modified) { $last_modified = $feed[0]->updated; } } $this->setLastModifiedHeader($last_modified); $t = \Idno\Core\site()->template(); $t->__(array('title' => $user->getTitle(), 'body' => $t->__(array('user' => $user, 'items' => $feed, 'count' => $count, 'offset' => $offset))->draw('entity/User/profile'), 'description' => 'The ' . \Idno\Core\site()->config()->title . ' profile for ' . $user->getTitle()))->drawPage(); }
function getContent() { if (!empty($this->arguments[0])) { $user = \Idno\Entities\User::getByHandle($this->arguments[0]); } if (empty($user)) { $this->noContent(); } //$this->setPermalink(); // This is a permalink $offset = (int) $this->getInput('offset'); $count = \Idno\Entities\ActivityStreamPost::count(array('owner' => $user->getUUID())); $feed = \Idno\Entities\ActivityStreamPost::get(array('owner' => $user->getUUID()), [], \Idno\Core\site()->config()->items_per_page, $offset); $t = \Idno\Core\site()->template(); $t->__(array('title' => $user->getTitle(), 'body' => $t->__(array('user' => $user, 'items' => $feed, 'count' => $count, 'offset' => $offset))->draw('entity/User/profile'), 'description' => 'The ' . \Idno\Core\site()->config()->title . ' profile for ' . $user->getTitle()))->drawPage(); }
function getContent() { $offset = (int) $this->getInput('offset'); $types = $this->getInput('types'); if (!empty($this->arguments[0])) { // If we're on the friendly content-specific URL if ($friendly_types = explode('/', $this->arguments[0])) { $types = []; // Run through the URL parameters and set content types appropriately foreach ($friendly_types as $friendly_type) { if ($content_type_class = \Idno\Common\ContentType::categoryTitleToClass($friendly_type)) { $types[] = $content_type_class; } } } } if (empty($types)) { $types = 'Idno\\Entities\\ActivityStreamPost'; $search = ['verb' => 'post']; } else { if (!is_array($types)) { $types = [$types]; } $types[] = '!Idno\\Entities\\ActivityStreamPost'; $search = []; } $count = \Idno\Entities\ActivityStreamPost::countFromX($types, []); $feed = \Idno\Entities\ActivityStreamPost::getFromX($types, $search, [], \Idno\Core\site()->config()->items_per_page, $offset); if (\Idno\Core\site()->session()->isLoggedIn()) { $create = \Idno\Common\ContentType::getRegistered(); } else { $create = false; } if (!empty(\Idno\Core\site()->config()->description)) { $description = \Idno\Core\site()->description; } else { $description = 'An independent social website, powered by idno.'; } $t = \Idno\Core\site()->template(); $t->__(array('title' => \Idno\Core\site()->config()->title, 'description' => $description, 'body' => $t->__(array('items' => $feed, 'contentTypes' => $create, 'offset' => $offset, 'count' => $count))->draw('pages/home')))->drawPage(); }
/** * If this Known installation has a PubSubHubbub hub, send a publish notification to the hub * @param ActivityStreamPost $act_stream_post * @return array */ static function publish($act_stream_post) { if ($hub = \Idno\Core\Idno::site()->config()->hub) { if (!$act_stream_post instanceof ActivityStreamPost) { return false; } $object = $act_stream_post->getObject(); $base = \Idno\Core\Idno::site()->config()->getDisplayURL(); $feeds = array(); // Check to make sure there's an entity if (!$object instanceof Entity) { return false; } // homepage feed $homepage_types = \Idno\Core\Idno::site()->config()->getHomepageContentTypes(); $type_in_homepage = false; if ($object instanceof Entity) { if (in_array($object->getContentType(), $homepage_types)) { $type_in_homepage = true; } } if (empty($homepage_types) || $type_in_homepage) { $feeds[] = $base; } // type-specific feeds if ($object instanceof Entity) { $feeds[] = $base . 'content/' . $object->getContentTypeCategorySlug() . '/'; } $feeds[] = $base . 'content/all/'; // tag feeds foreach ($object->getTags() as $tag) { $feeds[] = $base . 'tag/' . $tag; } if (!empty($feeds)) { // encode the feeds and their RSS counterparts $encurls = array(); foreach ($feeds as $feed) { $encurls[] = urlencode($feed); $encurls[] = urlencode(\Idno\Core\Idno::site()->template()->getURLWithVar('_t', 'rss', $feed)); } $formdata = 'hub.mode=publish&hub.url=' . implode(',', $encurls); \Idno\Core\Idno::site()->logging()->log('Pinging ' . $hub . ' with data ' . $formdata); \Idno\Core\Webservice::post($hub, $formdata, array('Content-Type' => 'application/x-www-form-urlencoded')); } return true; } return false; }
/** * Delete this entity * @todo complete this * @return bool */ function delete() { $event = new \Idno\Core\Event(array('object' => $this)); $event->setResponse(true); if (\Idno\Core\Idno::site()->triggerEvent('delete', array('object' => $this))) { $this->unsyndicate(); if ($entries = \Idno\Entities\ActivityStreamPost::getByObjectUUID($this->getUUID())) { foreach ($entries as $entry) { $entry->delete(); } } if ($return = \Idno\Core\db()->deleteRecord($this->getID(), $this->collection)) { $this->deleteData(); \Idno\Core\Idno::site()->triggerEvent('deleted', array('object' => $this)); return $return; } } return false; }
<p class="user-tbl"> <small><strong>Joined</strong><br><time datetime="<?php echo date('r', $user->created); ?> " class="dt-published"><?php echo date('r', $user->created); ?> </time></small> </p> </div> <div class="col-sm-2 col-xs-6"> <p class="user-tbl"> <small><strong>Last update posted</strong> <br> <?php if ($feed = \Idno\Entities\ActivityStreamPost::getFromX(null, ['owner' => $user->getUUID()], array(), 1, 0)) { ?> <time datetime="<?php echo date('r', $feed[0]->updated); ?> " class="dt-published"><?php echo date('r', $feed[0]->updated); ?> </time> <?php } else { ?> Never <?php } ?>
function getContent() { $query = $this->getInput('q'); $offset = (int) $this->getInput('offset'); $types = $this->getInput('types'); $friendly_types = array(); // Check for an empty site if (!\Idno\Entities\User::get()) { $this->forward(\Idno\Core\Idno::site()->config()->getURL() . 'begin/'); } if (!empty($this->arguments[0])) { // If we're on the friendly content-specific URL if ($friendly_types = explode('/', $this->arguments[0])) { $friendly_types = array_filter($friendly_types); if (empty($friendly_types) && !empty($query)) { $friendly_types = array('all'); } $types = array(); // Run through the URL parameters and set content types appropriately foreach ($friendly_types as $friendly_type) { if ($friendly_type == 'all') { $types = \Idno\Common\ContentType::getRegisteredClasses(); break; } if ($content_type_class = \Idno\Common\ContentType::categoryTitleToClass($friendly_type)) { $types[] = $content_type_class; } } } } else { // If user has content-specific preferences, do something with $friendly_types if (empty($query)) { $types = \Idno\Core\Idno::site()->config()->getHomepageContentTypes(); } } $search = array(); if (!empty($query)) { $search = \Idno\Core\Idno::site()->db()->createSearchArray($query); } if (empty($types)) { $types = \Idno\Common\ContentType::getRegisteredClasses(); } else { if (!is_array($types)) { $types = array($types); } $types[] = '!Idno\\Entities\\ActivityStreamPost'; } $count = \Idno\Entities\ActivityStreamPost::countFromX($types, array()); $feed = \Idno\Entities\ActivityStreamPost::getFromX($types, $search, array(), \Idno\Core\Idno::site()->config()->items_per_page, $offset); if (\Idno\Core\Idno::site()->session()->isLoggedIn()) { $create = \Idno\Common\ContentType::getRegistered(); // If we can't create an object of this type, hide from the button bar foreach ($create as $key => $obj) { if (!$obj->createable) { unset($create[$key]); } } } else { $create = false; } if (!empty(\Idno\Core\Idno::site()->config()->description)) { $description = \Idno\Core\Idno::site()->config()->description; } else { $description = 'An independent social website, powered by Known.'; } // If we have a feed, set our last modified flag to the time of the latest returned entry if (!empty($feed)) { if (is_array($feed)) { $feed = array_filter($feed); $this->setLastModifiedHeader(reset($feed)->updated); } } if (!empty(\Idno\Core\Idno::site()->config()->homepagetitle)) { $title = \Idno\Core\Idno::site()->config()->homepagetitle; } else { $title = \Idno\Core\Idno::site()->config()->title; } $t = \Idno\Core\Idno::site()->template(); $t->__(array('title' => $title, 'description' => $description, 'content' => $friendly_types, 'body' => $t->__(array('items' => $feed, 'contentTypes' => $create, 'offset' => $offset, 'count' => $count, 'subject' => $query, 'content' => $friendly_types))->draw('pages/home')))->drawPage(); }
/** * Count the number of posts this user has made * @return int */ function countPosts() { return \Idno\Entities\ActivityStreamPost::countFromX('Idno\\Entities\\ActivityStreamPost', array('owner' => $this->getUUID())); }
/** * Retrieve all posts as an RSS feed * @param bool|true $hide_private Should we hide private posts? Default: true. * @param string $user_uuid User UUID to export for. Default: all users. * @return bool|false|string */ static function getExportRSS($hide_private = true, $user_uuid = '') { $types = \Idno\Common\ContentType::getRegisteredClasses(); if ($hide_private) { $groups = ['PUBLIC']; } else { $groups = []; } if (!empty($user_uuid)) { $search = ['owner' => $user_uuid]; if ($user = User::getByUUID($user_uuid)) { $title = $user->getTitle(); $description = $user->getDescription(); $base_url = $user_uuid; } } else { $search = []; $title = Idno::site()->config()->getTitle(); $description = Idno::site()->config()->getDescription(); $base_url = Idno::site()->config()->getDisplayURL(); } if ($feed = \Idno\Entities\ActivityStreamPost::getFromX($types, $search, array(), PHP_INT_MAX, 0, $groups)) { $rss_theme = new Template(); $rss_theme->setTemplateType('rss'); return $rss_theme->__(array('title' => $title, 'description' => $description, 'body' => $rss_theme->__(array('items' => $feed, 'offset' => 0, 'count' => sizeof($feed), 'subject' => [], 'nocdata' => true, 'base_url' => $base_url))->draw('pages/home')))->drawPage(false); } return false; }