Version 1
[yaffs-website] / vendor / drush / drush / lib / Drush / User / UserSingleBase.php
diff --git a/vendor/drush/drush/lib/Drush/User/UserSingleBase.php b/vendor/drush/drush/lib/Drush/User/UserSingleBase.php
new file mode 100644 (file)
index 0000000..083ce2f
--- /dev/null
@@ -0,0 +1,133 @@
+<?php
+
+namespace Drush\User;
+
+abstract class UserSingleBase {
+
+  // A Drupal user entity.
+  public $account;
+
+  public function __construct($account) {
+    $this->account = $account;
+  }
+
+  /**
+   * A flatter and simpler array presentation of a Drupal $user object.
+   *
+   * @return array
+   */
+  public function info() {
+    return array(
+      'uid' => $this->account->id(),
+      'name' => $this->account->getUsername(),
+      'password' => $this->account->getPassword(),
+      'mail' => $this->account->getEmail(),
+      'user_created' => $this->account->getCreatedTime(),
+      'created' => format_date($this->account->getCreatedTime()),
+      'user_access' => $this->account->getLastAccessedTime(),
+      'access' => format_date($this->account->getLastAccessedTime()),
+      'user_login' => $this->account->getLastLoginTime(),
+      'login' => format_date($this->account->getLastLoginTime()),
+      'user_status' => $this->account->get('status')->value,
+      'status' => $this->account->isActive() ? 'active' : 'blocked',
+      'timezone' => $this->account->getTimeZone(),
+      'roles' => $this->account->getRoles(),
+      'langcode' => $this->account->getPreferredLangcode(),
+      'uuid' => $this->account->uuid->value,
+    );
+  }
+
+  /**
+   * Block a user from login.
+   */
+  public function block() {
+    $this->account->block();
+    $this->account->save();
+  }
+
+  /**
+   * Unblock a user from login.
+   */
+  public function unblock() {
+    $this->account->get('status')->value = 1;
+    $this->account->save();
+  }
+
+  /**
+   * Add a role to the current user.
+   *
+   * @param $rid
+   *   A role ID.
+   */
+  public function addRole($rid) {
+    $this->account->addRole($rid);
+    $this->account->save();
+  }
+
+  /**
+   * Remove a role from the current user.
+   *
+   * @param $rid
+   *   A role ID.
+   */
+  public function removeRole($rid) {
+    $this->account->removeRole($rid);
+    $this->account->save();
+  }
+
+  /**
+   * Block a user and remove or reassign their content.
+   */
+  public function cancel() {
+      if (drush_get_option('delete-content')) {
+        user_cancel(array(), $this->id(), 'user_cancel_delete');
+      }
+      else {
+        user_cancel(array(), $this->id(), 'user_cancel_reassign');
+      }
+      // I got the following technique here: http://drupal.org/node/638712
+      $batch =& batch_get();
+      $batch['progressive'] = FALSE;
+      batch_process();
+  }
+
+  /**
+   * Change a user's password.
+   *
+   * @param $password
+   */
+  public function password($password) {
+    $this->account->setPassword($password);
+    $this->account->save();
+  }
+
+  /**
+   * Build a one time login link.
+   *
+   * @param string $path
+   * @return string
+   */
+  public function passResetUrl($path = '') {
+    $url = user_pass_reset_url($this->account) . '/login';
+    if ($path) {
+      $url .= '?destination=' . $path;
+    }
+    return $url;
+  }
+
+  /**
+   * Get a user's name.
+   * @return string
+   */
+  public function getUsername() {
+    return $this->account->getUsername();
+  }
+
+  /**
+   * Return an id from a Drupal user account.
+   * @return int
+   */
+  public function id() {
+    return $this->account->id();
+  }
+}