Skip to content
This repository has been archived by the owner on Aug 30, 2019. It is now read-only.

Commit

Permalink
feat(core): align with latest core changes
Browse files Browse the repository at this point in the history
  • Loading branch information
hypeJunction committed Apr 25, 2018
1 parent ab24023 commit 9acff29
Show file tree
Hide file tree
Showing 20 changed files with 484 additions and 445 deletions.
78 changes: 0 additions & 78 deletions actions/upgrade/scraper/move_to_db.php

This file was deleted.

34 changes: 34 additions & 0 deletions classes/hypeJunction/Scraper/AddBookmarkProfilePreview.php
@@ -0,0 +1,34 @@
<?php

namespace hypeJunction\Scraper;

class AddBookmarkProfilePreview {

/**
* Display a preview of a bookmark
*
* @param string $hook 'view_vars'
* @param string $type "object/elements/full"
* @param array $return View vars
* @param array $params Hook params
*
* @return array
*/
public function __invoke($hook, $type, $return, $params) {

if (!elgg_get_plugin_setting('bookmarks', 'hypeScraper')) {
return;
}

$entity = elgg_extract('entity', $return);
if (!elgg_instanceof($entity, 'object', 'bookmarks')) {
return;
}

$return['body'] .= elgg_view('output/player', [
'href' => $entity->address,
]);

return $return;
}
}
51 changes: 51 additions & 0 deletions classes/hypeJunction/Scraper/AddBookmarkRiverPreview.php
@@ -0,0 +1,51 @@
<?php

namespace hypeJunction\Scraper;

class AddBookmarkRiverPreview {

/**
* Display a preview of a bookmark
*
* @param string $hook 'view_vars'
* @param string $type "river/elements/layout"
* @param array $return View vars
* @param array $params Hook params
*
* @return array
*/
public function __invoke($hook, $type, $return, $params) {

if (!elgg_get_plugin_setting('bookmarks', 'hypeScraper')) {
return;
}

$item = elgg_extract('item', $return);
if (!$item instanceof ElggRiverItem) {
return;
}

if ($item->view != 'river/object/bookmarks/create') {
return;
}

$object = $item->getObjectEntity();
if (!elgg_instanceof($object, 'object', 'bookmarks')) {
return;
}

$preview_type = elgg_get_plugin_setting('preview_type', 'hypeScraper', 'card');
if ($preview_type != 'card') {
$return['attachments'] = elgg_view('output/player', [
'href' => $object->address,
'fallback' => true,
]);
} else {
$return['attachments'] = elgg_view('output/card', [
'href' => $object->address,
]);
}

return $return;
}
}
107 changes: 107 additions & 0 deletions classes/hypeJunction/Scraper/Bootstrap.php
@@ -0,0 +1,107 @@
<?php

namespace hypeJunction\Scraper;

use Elgg\Includer;
use Elgg\PluginBootstrap;

class Bootstrap extends PluginBootstrap {

/**
* Get plugin root
* @return string
*/
protected function getRoot() {
return dirname(dirname(dirname(dirname(__FILE__))));
}

/**
* {@inheritdoc}
*/
public function load() {
Includer::requireFileOnce($this->getRoot() . '/autoloader.php');
}

/**
* {@inheritdoc}
*/
public function boot() {

}

/**
* {@inheritdoc}
*/
public function init() {

elgg_extend_view('elgg.css', 'framework/scraper/stylesheet.css');
elgg_extend_view('admin.css', 'framework/scraper/stylesheet.css');
elgg_extend_view('elgg.js', 'framework/scraper/player.js');

elgg_register_ajax_view('output/card');

elgg_register_plugin_hook_handler('format:src', 'embed', PrepareEmbedCard::class);
elgg_register_plugin_hook_handler('extract:meta', 'all', ScrapeUrlMetadata::class);
elgg_register_plugin_hook_handler('extract:qualifiers', 'all', ExtractTokensFromText::class);
elgg_register_plugin_hook_handler('prepare', 'html', PrepareHtmlOutput::class, 100);

elgg_register_plugin_hook_handler('fields', 'object', AddFormField::class);

// Bookmark previews
if (elgg_is_active_plugin('bookmarks')) {
elgg_register_plugin_hook_handler('view_vars', 'river/elements/layout', AddBookmarkRiverPreview::class);
elgg_register_plugin_hook_handler('view_vars', 'object/elements/full', AddBookmarkProfilePreview::class);
}

// Basic XSS protection
elgg_register_plugin_hook_handler('parse', 'framework:scraper', FilteroEmbedHtml::class);

// Menus
elgg_register_plugin_hook_handler('register', 'menu:scraper:card', CardMenu::class);
elgg_register_plugin_hook_handler('register', 'menu:page', PageMenu::class);

if (elgg()->has('shortcodes')) {
elgg()->shortcodes->register('player');

elgg_register_action('embed/player', \hypeJunction\Scraper\EmbedAction::class);

elgg_register_plugin_hook_handler('register', 'menu:embed', EmbedMenu::class);
elgg_register_plugin_hook_handler('view_vars', 'river/elements/layout', EmbedRiverAttachment::class, 999);
}
}

/**
* {@inheritdoc}
*/
public function ready() {

}

/**
* {@inheritdoc}
*/
public function shutdown() {

}

/**
* {@inheritdoc}
*/
public function activate() {

}

/**
* {@inheritdoc}
*/
public function deactivate() {

}

/**
* {@inheritdoc}
*/
public function upgrade() {

}
}
Expand Up @@ -16,27 +16,27 @@ class CardMenu {
*/
public function __invoke(Hook $hook) {

$menu = $hook->getValue();

if (!elgg_is_admin_logged_in()) {
return;
return null;
}

$href = $hook->getParam('href');
if (!$href) {
return;
return null;
}

$return[] = ElggMenuItem::factory([
$menu = $hook->getValue();

$menu->add(ElggMenuItem::factory([
'name' => 'edit',
'href' => elgg_http_add_url_query_elements('admin/scraper/edit', [
'href' => $href,
]),
'text' => elgg_view_icon('pencil'),
'title' => elgg_echo('edit'),
]);
]));

$return[] = ElggMenuItem::factory([
$menu->add(ElggMenuItem::factory([
'name' => 'refetch',
'href' => elgg_http_add_url_query_elements('action/admin/scraper/refetch', [
'href' => $href,
Expand All @@ -45,8 +45,8 @@ public function __invoke(Hook $hook) {
'title' => elgg_echo('scraper:refetch'),
'is_action' => true,
'confirm' => elgg_echo('scraper:refetch:confirm'),
]);
]));

return $return;
return $menu;
}
}
23 changes: 23 additions & 0 deletions classes/hypeJunction/Scraper/ExtractTokensFromText.php
@@ -0,0 +1,23 @@
<?php

namespace hypeJunction\Scraper;

use Elgg\Hook;

class ExtractTokensFromText {

/**
* Extract qualifiers such as hashtags, usernames, urls, and emails
*
* @elgg_plugin_hook extract:qualifiers scraper
*
* @param Hook $hook Hook
*
* @return array
*/
public static function extractTokens(Hook $hook) {
$text = $hook->getParam('source');

return Extractor::all($text);
}
}

0 comments on commit 9acff29

Please sign in to comment.