Example #1
0
File: View.php Project: hank/Known
 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();
 }
Example #2
0
 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();
 }
Example #3
0
 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();
 }
Example #4
0
 /**
  * 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;
 }
Example #5
0
 /**
  * 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;
 }
Example #6
0
                                <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 
                }
                ?>
Example #7
0
 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();
 }
Example #8
0
File: User.php Project: emory/Known
 /**
  * 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()));
 }
Example #9
0
 /**
  * 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;
 }