Elgg  Version master
Seed.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Database\Seeds;
4 
7 
14 abstract class Seed implements Seedable {
15 
16  use Seeding;
17  use Progressing {
18  advance as private progressAdvance;
19  }
20 
24  protected int $limit;
25 
29  protected bool $create = false;
30 
34  protected int $seeded_counter = 0;
35 
45  public function __construct(array $options = []) {
46  $limit = (int) elgg_extract('limit', $options);
47  if ($limit > 0) {
48  $this->limit = $limit;
49  } else {
50  $this->limit = static::getDefaultLimit();
51  }
52 
53  $this->create = (bool) elgg_extract('create', $options, $this->create);
54  $this->setCreateSince(elgg_extract('create_since', $options, 'now'));
55  $this->setCreateUntil(elgg_extract('create_until', $options, 'now'));
56  }
57 
65  final public static function register(\Elgg\Event $event) {
66  $seeds = $event->getValue();
67 
68  $seeds[] = static::class;
69 
70  return $seeds;
71  }
72 
78  final public function getCount(): int {
79  if ($this->create) {
80  return $this->seeded_counter;
81  }
82 
83  $defaults = [
84  'metadata_names' => '__faker',
85  ];
86  $options = array_merge($defaults, $this->getCountOptions());
87 
89  }
90 
98  public function advance(int $step = 1): void {
99  $this->seeded_counter += $step;
100 
101  $this->progressAdvance($step);
102  }
103 
109  public static function getDefaultLimit(): int {
110  return max(elgg_get_config('default_limit'), 20);
111  }
112 
118  abstract public function seed();
119 
125  abstract public function unseed();
126 
132  abstract public static function getType(): string;
133 
140  abstract protected function getCountOptions(): array;
141 }
return[ 'admin/delete_admin_notices'=>['access'=> 'admin'], 'admin/menu/save'=>['access'=> 'admin'], 'admin/plugins/activate'=>['access'=> 'admin'], 'admin/plugins/activate_all'=>['access'=> 'admin'], 'admin/plugins/deactivate'=>['access'=> 'admin'], 'admin/plugins/deactivate_all'=>['access'=> 'admin'], 'admin/plugins/set_priority'=>['access'=> 'admin'], 'admin/security/security_txt'=>['access'=> 'admin'], 'admin/security/settings'=>['access'=> 'admin'], 'admin/security/regenerate_site_secret'=>['access'=> 'admin'], 'admin/site/cache/invalidate'=>['access'=> 'admin'], 'admin/site/flush_cache'=>['access'=> 'admin'], 'admin/site/icons'=>['access'=> 'admin'], 'admin/site/set_maintenance_mode'=>['access'=> 'admin'], 'admin/site/set_robots'=>['access'=> 'admin'], 'admin/site/theme'=>['access'=> 'admin'], 'admin/site/unlock_upgrade'=>['access'=> 'admin'], 'admin/site/settings'=>['access'=> 'admin'], 'admin/upgrade'=>['access'=> 'admin'], 'admin/upgrade/reset'=>['access'=> 'admin'], 'admin/user/ban'=>['access'=> 'admin'], 'admin/user/bulk/ban'=>['access'=> 'admin'], 'admin/user/bulk/delete'=>['access'=> 'admin'], 'admin/user/bulk/unban'=>['access'=> 'admin'], 'admin/user/bulk/validate'=>['access'=> 'admin'], 'admin/user/change_email'=>['access'=> 'admin'], 'admin/user/delete'=>['access'=> 'admin'], 'admin/user/login_as'=>['access'=> 'admin'], 'admin/user/logout_as'=>[], 'admin/user/makeadmin'=>['access'=> 'admin'], 'admin/user/resetpassword'=>['access'=> 'admin'], 'admin/user/removeadmin'=>['access'=> 'admin'], 'admin/user/unban'=>['access'=> 'admin'], 'admin/user/validate'=>['access'=> 'admin'], 'annotation/delete'=>[], 'avatar/upload'=>[], 'comment/save'=>[], 'diagnostics/download'=>['access'=> 'admin'], 'entity/chooserestoredestination'=>[], 'entity/delete'=>[], 'entity/mute'=>[], 'entity/restore'=>[], 'entity/subscribe'=>[], 'entity/trash'=>[], 'entity/unmute'=>[], 'entity/unsubscribe'=>[], 'login'=>['access'=> 'logged_out'], 'logout'=>[], 'notifications/mute'=>['access'=> 'public'], 'plugins/settings/remove'=>['access'=> 'admin'], 'plugins/settings/save'=>['access'=> 'admin'], 'plugins/usersettings/save'=>[], 'register'=>['access'=> 'logged_out', 'middleware'=>[\Elgg\Router\Middleware\RegistrationAllowedGatekeeper::class,],], 'river/delete'=>[], 'settings/notifications'=>[], 'settings/notifications/subscriptions'=>[], 'user/changepassword'=>['access'=> 'public'], 'user/requestnewpassword'=>['access'=> 'public'], 'useradd'=>['access'=> 'admin'], 'usersettings/save'=>[], 'widgets/add'=>[], 'widgets/delete'=>[], 'widgets/move'=>[], 'widgets/save'=>[],]
Definition: actions.php:73
Abstract seed.
Definition: Seed.php:14
getCount()
Get the count of the seeded entities.
Definition: Seed.php:78
static getType()
Get the (un)seeding type of this handler.
seed()
Populate database.
static getDefaultLimit()
Get the default number of content to seed.
Definition: Seed.php:109
getCountOptions()
Get options for elgg_count_entities()
advance(int $step=1)
Advance progressbar.
Definition: Seed.php:98
__construct(array $options=[])
Seed constructor.
Definition: Seed.php:45
unseed()
Removed seeded rows from database.
Models an event passed to event handlers.
Definition: Event.php:11
elgg_get_config(string $name, $default=null)
Get an Elgg configuration value.
if($who_can_change_language==='nobody') elseif($who_can_change_language==='admin_only' &&!elgg_is_admin_logged_in()) $options
Definition: language.php:20
elgg_extract($key, $array, $default=null, bool $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.
Definition: elgglib.php:256
elgg_count_entities(array $options=[])
Returns a count of entities.
Definition: entities.php:518
$defaults
Generic entity header upload helper.
Definition: header.php:6
$step
Definition: time.php:40
Provides seedable methods for database seeding and unit tests.
Definition: Seedable.php:8
trait Progressing
Progress reporting.
Definition: Progressing.php:12
setCreateSince($since='now')
Set a time for entities to be created after.
Definition: TimeHelpers.php:33
setCreateUntil($until='now')
Set a time for entities to be created until.
Definition: TimeHelpers.php:45
if(parse_url(elgg_get_site_url(), PHP_URL_PATH) !=='/') if(file_exists(elgg_get_root_path() . 'robots.txt'))
Set robots.txt.
Definition: robots.php:10