gradient_server-1.0.x-dev/src/Commands/DemoData.php
src/Commands/DemoData.php
<?php
namespace Drupal\gradient_server\Commands;
use Drush\Commands\DrushCommands;
use Drupal\feeds\Entity\Feed;
use Drupal\taxonomy\Entity\Term;
use Drupal\source\Entity\Source;
use Drupal\file\Entity\File;
use Drupal\gradient\Entity\Gradient;
use Drupal\user\Entity\User;
use Drupal\user\Entity\Role;
/**
* A drush command class.
*/
class DemoData extends DrushCommands {
/**
* Create some demo content.
*
* @command gradient:demo_data:create:test
* @aliases gdct
* @usage gradient:demo_data:create:test
*/
public function createTestData() {
$term1 = Term::create([
'name' => 'Alternative Media',
'vid' => 'categories',
'uid' => $user2,
'status' => 1,
]);
$term1->save();
$term2 = Term::create([
'name' => 'Personal Blog',
'vid' => 'categories',
'uid' => $user2,
'status' => 1,
]);
$term2->save();
$term3 = Term::create([
'name' => 'Regular Media',
'vid' => 'categories',
'uid' => $user2,
'status' => 1,
]);
$term3->save();
$role1 = Role::load('source_user');
$role2 = Role::load('gradient_user');
$user1 = User::create([
'name' => 'Source user',
'email' => 'user1@example.com',
'password' => user_password(25),
'status' => 1,
'roles' => [$role1],
]);
$user1->save();
$user2 = User::create([
'name' => 'Source and Gradient User',
'email' => 'user2@example.com',
'password' => user_password(25),
'status' => 1,
'roles' => [$role1, $role2],
]);
$user2->save();
$user3 = User::create([
'name' => 'Gradient user',
'email' => 'user3@example.com',
'password' => user_password(25),
'status' => 1,
'roles' => [$role2],
]);
$user3->save();
$user3 = User::create([
'name' => 'normal user',
'email' => 'user4@example.com',
'password' => user_password(25),
'status' => 1,
'roles' => [],
]);
$user3->save();
file_put_contents('public://logo1.jpg', file_get_contents('https://news.alayham.com/sites/default/files/logo/1538728_751733994851906_2075983683_n.png'));
$logo1 = File::create(['uri' => 'public://logo1.jpg']);
$logo1->save();
$source1 = Source::create([
'type' => 'website',
'name' => '21 Century Wire',
'logo' => $logo1,
'url' => 'http://21stcenturywire.com',
'categories' => [$term1],
'user_id' => $user1,
'status' => 1,
]);
$source1->save();
$feed1 = Feed::create([
'type' => 'rss',
'title' => '21st Century Wire',
'status' => 1,
'source' => 'http://21stcenturywire.com/feed',
'source_entity' => [$source1],
'uid' => $user1,
]);
$feed1->save();
file_put_contents('public://logo2.jpg', file_get_contents('https://news.alayham.com/sites/default/files/logo/DevNullPhantom160-150x150.jpg'));
$logo2 = File::create(['uri' => 'public://logo2.jpg']);
$logo2->save();
$source2 = Source::create([
'type' => 'website',
'name' => 'Dissident Voice',
'logo' => $logo2,
'url' => 'http://dissidentvoice.org',
'categories' => [$term1],
'user_id' => $user1,
'status' => 1,
]);
$source2->save();
$feed2 = Feed::create([
'type' => 'rss',
'title' => 'Dissident Voice',
'status' => 1,
'source' => 'http://dissidentvoice.org/feed/',
'source_entity' => [$source2],
'uid' => $user1,
]);
$feed2->save();
file_put_contents('public://logo3.jpg', file_get_contents('https://i2.wp.com/freemanbeyondthewall.com/wp-content/uploads/2018/05/latest-pic.jpg'));
$logo3 = File::create(['uri' => 'public://logo3.jpg']);
$logo3->save();
$source3 = Source::create([
'type' => 'website',
'name' => 'Peter R. Quinones',
'logo' => $logo3,
'url' => 'https://freemanbeyondthewall.com',
'categories' => [$term2],
'user_id' => $user1,
'status' => 1,
]);
$source3->save();
$feed3 = Feed::create([
'type' => 'rss',
'title' => 'Free Man Beyond the Wall',
'status' => 1,
'source' => 'https://liviucerchez.com/castpod/feed/podcast',
'source_entity' => [$source3],
'uid' => $user1,
]);
$feed3->save();
$feed4 = Feed::create([
'type' => 'rss',
'title' => 'Peter R. Quinones website feed',
'status' => 1,
'source' => 'https://freemanbeyondthewall.com/feed',
'source_entity' => [$source3],
'uid' => $user1,
]);
$feed4->save();
file_put_contents('public://logo4.jpg', file_get_contents('https://eliasalias.com/wp-content/uploads/2015/06/James_Corbett.jpg'));
$logo4 = File::create(['uri' => 'public://logo4.jpg']);
$logo4->save();
$source4 = Source::create([
'type' => 'website',
'name' => 'The Corbett Report',
'logo' => $logo4,
'url' => 'https://corbettreport.com',
'categories' => [$term2],
'user_id' => $user2,
'status' => 1,
]);
$source4->save();
$feed5 = Feed::create([
'type' => 'rss',
'title' => 'The corbett report website feed',
'status' => 1,
'source' => 'https://corbettreport.com/feed',
'source_entity' => [$source4],
'uid' => $user2,
]);
$feed5->save();
file_put_contents('public://logo5.jpg', file_get_contents('https://www.freedomsphoenix.com/Uploads/Graphics/001-0602071125-2009-22-x-29-Banner-copy.jpg'));
$logo5 = File::create(['uri' => 'public://logo5.jpg']);
$logo5->save();
$source5 = Source::create([
'type' => 'website',
'name' => 'Freedom\'s Phoenix',
'logo' => $logo5,
'url' => 'https://www.freedomsphoenix.com',
'categories' => [$term1],
'user_id' => $user2,
'status' => 1,
]);
$source5->save();
$feed6 = Feed::create([
'type' => 'rss',
'title' => 'Freedom\'s Phoenix Feature Articles',
'status' => 1,
'source' => 'https://www.freedomsphoenix.com/RSS/RSS-Feed.xml?EdNo=001&Page=Art',
'source_entity' => [$source5],
'uid' => $user2,
]);
$feed6->save();
$feed7 = Feed::create([
'type' => 'rss',
'title' => 'Freedom\'s Phoenix Editorials',
'uid' => $user2,
'status' => 1,
'source' => 'https://www.freedomsphoenix.com/RSS/RSS-Feed.xml?EdNo=001&Page=Col',
'source_entity' => [$source5],
'uid' => $user2,
]);
$feed7->save();
$feed8 = Feed::create([
'type' => 'rss',
'title' => 'Freedom\'s Phoenix Newsletter Headlines',
'status' => 1,
'source' => 'https://www.freedomsphoenix.com/RSS/Top-News-Feed.xml',
'source_entity' => [$source5],
'uid' => $user2,
]);
$feed8->save();
$feed9 = Feed::create([
'type' => 'rss',
'title' => 'Freedom\'s Phoenix Radio/TV Show Archives',
'status' => 1,
'source' => 'https://www.freedomsphoenix.com/RSS/RSS-Feed.xml?EdNo=001&Page=Med',
'source_entity' => [$source5],
'uid' => $user2,
]);
$feed9->save();
file_put_contents('public://logo6.jpg', file_get_contents('https://pbs.twimg.com/profile_images/1226913212/mm_star_logo_400x400.jpg'));
$logo6 = File::create(['uri' => 'public://logo6.jpg']);
$logo6->save();
$source6 = Source::create([
'type' => 'website',
'name' => 'Media Monarchy',
'logo' => $logo6,
'url' => 'https://mediamonarchy.com/',
'categories' => [$term2],
'user_id' => $user2,
'status' => 1,
]);
$source6->save();
$feed10 = Feed::create([
'type' => 'rss',
'title' => 'Media Monarchy feed',
'status' => 1,
'source' => 'https://mediamonarchy.com/feed/',
'source_entity' => [$source6],
'uid' => $user2,
]);
$feed10->save();
file_put_contents('public://logo7.jpg', file_get_contents('https://pbs.twimg.com/profile_images/3539908374/6f1209cbd6791a478e65d8d03e32be8d_400x400.jpeg'));
$logo7 = File::create(['uri' => 'public://logo7.jpg']);
$logo7->save();
$source7 = Source::create([
'type' => 'website',
'name' => 'Ron Paul Institute',
'logo' => $logo7,
'url' => 'http://www.ronpaulinstitute.org',
'categories' => [$term1],
'user_id' => $user2,
'status' => 1,
]);
$source7->save();
$feed11 = Feed::create([
'type' => 'rss',
'title' => 'RPI Peace and Prosperity',
'status' => 1,
'source' => 'http://www.ronpaulinstitute.org/archives/peace-and-prosperity/rss.aspx?blogid=1',
'source_entity' => [$source7],
'uid' => $user2,
]);
$feed11->save();
$feed12 = Feed::create([
'type' => 'rss',
'title' => 'RPI Congress Alert',
'status' => 1,
'source' => 'http://www.ronpaulinstitute.org/archives/congress-alert/rss.aspx?blogid=2',
'source_entity' => [$source7],
'uid' => $user2,
]);
$feed12->save();
$feed13 = Feed::create([
'type' => 'rss',
'title' => 'RPI Features Articles',
'uid' => $user2,
'status' => 1,
'source' => 'http://www.ronpaulinstitute.org/archives/featured-articles/rss.aspx?blogid=3',
'source_entity' => [$source7],
'uid' => $user2,
]);
$feed13->save();
$feed14 = Feed::create([
'type' => 'rss',
'title' => 'RPI NeoCon Watch',
'status' => 1,
'source' => 'http://www.ronpaulinstitute.org/archives/neocon-watch/rss.aspx?blogid=4',
'source_entity' => [$source7],
'uid' => $user2,
]);
$feed14->save();
file_put_contents('public://logo8.jpg', file_get_contents('https://pbs.twimg.com/profile_images/952953971131469827/y-S5os89_400x400.jpg'));
$logo8 = File::create(['uri' => 'public://logo8.jpg']);
$logo8->save();
$source8 = Source::create([
'type' => 'website',
'name' => 'Off Guardian',
'logo' => $logo8,
'url' => 'https://off-guardian.org/',
'categories' => [$term1],
'user_id' => $user2,
'status' => 1,
]);
$source8->save();
$feed15 = Feed::create([
'type' => 'rss',
'title' => 'Off Guardian Feed',
'status' => 1,
'source' => 'https://off-guardian.org/feed',
'source_entity' => [$source8],
'uid' => $user2,
]);
$feed15->save();
Gradient::create([
'type' => 'gradient',
'name' => 'First Gradient',
'sources' => [$source1, $source2, $source5],
'user_id' => $user2,
'status' => $user2,
])->save();
Gradient::create([
'type' => 'gradient',
'name' => 'Second Gradient',
'sources' => [$source2, $source3, $source4, $source6],
'user_id' => $user2,
'status' => $user2,
])->save();
Gradient::create([
'type' => 'gradient',
'name' => 'Third Gradient',
'sources' => [$source1, $source4, $source6, $source7, $source8],
'user_id' => $user2,
'status' => $user3,
])->save();
Gradient::create([
'type' => 'gradient',
'name' => 'Fourth Gradient',
'sources' => [$source1, $source2, $source3, $source4, $source5, $source8],
'user_id' => $user2,
'status' => $user3,
])->save();
}
/**
* Empty db and remove all content.
*
* @command gradient:demo_data:remove
* @aliases gdr
* @usage gradient:demo_data:remove
*/
public function removeAllContent() {
$tables = [
'taxonomy_index', 'Taxonomy_term_data', 'taxonomy_term_field_data', 'taxonomy_term_field_revision', 'taxonomy_term_revision', 'taxonomy_term_revision__parent', 'taxonomy_term__parent',
'feeds_feed', 'feeds_feed__source_entity', 'feeds_subscription',
'source', 'source_field_data', 'source_revision', 'source_field_revision', 'source_revision__categories', 'source_revision__logo', 'source_revision__url', 'source__categories', 'source__logo', 'source__url',
'node', 'node_field_data', 'node_field_revision', 'node_revision', 'node_revision__body', 'node_revision__feeds_item', 'node_revision__feed_entity', 'node_revision__layout_builder__layout', 'node_revision__link', 'node_revision__tags',
'node__body', 'node__feeds_item', 'node__feed_entity', 'node__layout_builder__layout', 'node__link', 'node__tags',
'gradient', 'gradient_revision', 'gradient_revision__sources', 'gradient__sources',
'user__roles',
];
foreach ($tables as $table) {
\Drupal::database()->query("TRUNCATE $table");
}
\Drupal::database()->query('DELETE FROM users_field_data WHERE uid > 1');
\Drupal::database()->query('DELETE FROM users WHERE uid > 1');
}
/**
* Import json demo data.
*
* @param string $file
* The data file to import.
*
* @command gradient:demo_data:create:demo
* @aliases gdcd
* @usage gradient:demo_data:create:demo file
*/
public function createDemoData($file) {
if (!file_exists($file)) {
return;
}
$data = json_decode(file_get_contents($file));
if (!$data) {
return;
}
foreach ($data as $item) {
$source = Source::create([
'type' => 'website',
'name' => $item->name,
'url' => $item->url,
'user_id' => 1,
'status' => 1,
]);
$source->save();
$ext = pathinfo($item->logo, PATHINFO_EXTENSION);
$uri = 'public://logo/' . $source->id() . '.' . $ext;
file_put_contents($uri, file_get_contents($item->logo));
$logo = File::create(['uri' => $uri]);
$source->set('logo', $logo);
$source->save();
foreach ($item->feeds as $feed) {
Feed::create([
'type' => 'rss',
'title' => $feed->name,
'source' => $feed->source,
'uid' => 1,
'status' => 1,
'source_entity' => [$source],
'next' => time() + rand(60, 60 * 60 * 6),
])->save();
}
}
}
}
