diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/argument/UserUid.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/argument/UserUid.php index 5ff1fe6..d49aa23 100644 --- a/core/modules/comment/lib/Drupal/comment/Plugin/views/argument/UserUid.php +++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/argument/UserUid.php @@ -20,15 +20,35 @@ */ class UserUid extends ArgumentPluginBase { + /** + * Database Service Object. + * + * @var \Drupal\Core\Database\Connection + */ + protected $database; + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) { + return new static($configuration, $plugin_id, $plugin_definition, $container->get('database')); + } + + /** + * {@inheritdoc} + */ + public function __construct(array $configuration, $plugin_id, array $plugin_definition, Connection $database) { + parent::__construct($configuration, $plugin_id, $plugin_definition); + + $this->database = $database; + } + function title() { if (!$this->argument) { $title = config('user.settings')->get('anonymous'); } else { - $query = db_select('users', 'u'); - $query->addField('u', 'name'); - $query->condition('u.uid', $this->argument); - $title = $query->execute()->fetchField(); + $title = $this->database->query('SELECT u.name FROM {users} u WHERE u.uid = :uid', array(':uid' => $this->argument))->fetchField(); } if (empty($title)) { return t('No user'); @@ -54,7 +74,7 @@ function default_actions($which = NULL) { public function query($group_by = FALSE) { $this->ensureMyTable(); - $subselect = db_select('comment', 'c'); + $subselect = $this->database->select('comment', 'c'); $subselect->addField('c', 'cid'); $subselect->condition('c.uid', $this->argument); $subselect->where("c.nid = $this->tableAlias.nid"); diff --git a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeNewComments.php b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeNewComments.php index 3f3f903..1c2fd8c 100644 --- a/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeNewComments.php +++ b/core/modules/comment/lib/Drupal/comment/Plugin/views/field/NodeNewComments.php @@ -22,6 +22,29 @@ class NodeNewComments extends Numeric { /** + * Database Service Object. + * + * @var \Drupal\Core\Database\Connection + */ + protected $database; + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) { + return new static($configuration, $plugin_id, $plugin_definition, $container->get('database')); + } + + /** + * {@inheritdoc} + */ + public function __construct(array $configuration, $plugin_id, array $plugin_definition, Connection $database) { + parent::__construct($configuration, $plugin_id, $plugin_definition); + + $this->database = $database; + } + + /** * Overrides Drupal\views\Plugin\views\field\FieldPluginBase::init(). */ public function init(ViewExecutable $view, DisplayPluginBase $display, array &$options = NULL) { @@ -76,16 +99,15 @@ function pre_render(&$values) { } if ($nids) { - $query = db_select('node', 'n'); - $query->addField('n', 'nid'); - $query->innerJoin('comment', 'c', 'n.nid = c.nid'); - $query->addExpression('COUNT(c.cid)', 'num_comments'); - $query->leftJoin('history', 'h', 'h.nid = n.nid'); - $query->condition('n.nid', $nids); - $query->where('c.changed > GREATEST(COALESCE(h.timestamp, :timestamp), :timestamp)', array(':timestamp' => HISTORY_READ_LIMIT)); - $query->condition('c.status', COMMENT_PUBLISHED); - $query->groupBy('n.nid'); - $result = $query->execute(); + $result = $this->database->query("SELECT n.nid, COUNT(c.cid) as num_comments FROM {node} n INNER JOIN {comment} c ON n.nid = c.nid + LEFT JOIN {history} h ON h.nid = n.nid AND h.uid = :h_uid WHERE n.nid IN (:nids) + AND c.changed > GREATEST(COALESCE(h.timestamp, :timestamp), :timestamp) AND c.status = :status GROUP BY n.nid", array( + ':status' => COMMENT_PUBLISHED, + ':h_uid' => $user->uid, + ':nids' => $nids, + ':timestamp' => HISTORY_READ_LIMIT, + )); + foreach ($result as $node) { foreach ($ids[$node->nid] as $id) { $values[$id]->{$this->field_alias} = $node->num_comments; diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/argument/Vid.php b/core/modules/node/lib/Drupal/node/Plugin/views/argument/Vid.php index eb2565b..0f4d94b 100644 --- a/core/modules/node/lib/Drupal/node/Plugin/views/argument/Vid.php +++ b/core/modules/node/lib/Drupal/node/Plugin/views/argument/Vid.php @@ -17,7 +17,28 @@ */ class Vid extends Numeric { - // No constructor is necessary. + /** + * Database Service Object. + * + * @var \Drupal\Core\Database\Connection + */ + protected $database; + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) { + return new static($configuration, $plugin_id, $plugin_definition, $container->get('database')); + } + + /** + * {@inheritdoc} + */ + public function __construct(array $configuration, $plugin_id, array $plugin_definition, Connection $database) { + parent::__construct($configuration, $plugin_id, $plugin_definition); + + $this->database = $database; + } /** * Override the behavior of title(). Get the title of the revision. @@ -25,11 +46,7 @@ class Vid extends Numeric { function title_query() { $titles = array(); - $results = db_select('node_field_revision', 'npr') - ->fields('npr', array('vid', 'nid', 'title')) - ->condition('npr.vid', $this->value) - ->execute() - ->fetchAllAssoc('vid', PDO::FETCH_ASSOC); + $results = $this->database->query("SELECT npr.vid, npr.nid, npr.title FROM {node_field_revision} npr WHERE npr.vid IN (:vids)", array(':vids' => $this->value))->fetchAllAssoc('vid', PDO::FETCH_ASSOC); $nids = array(); foreach ($results as $result) { $nids[] = $result['nid']; diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/argument_validator/User.php b/core/modules/user/lib/Drupal/user/Plugin/views/argument_validator/User.php index 929ed42..14a27d9 100644 --- a/core/modules/user/lib/Drupal/user/Plugin/views/argument_validator/User.php +++ b/core/modules/user/lib/Drupal/user/Plugin/views/argument_validator/User.php @@ -26,6 +26,29 @@ */ class User extends ArgumentValidatorPluginBase { + /** + * Database Service Object. + * + * @var \Drupal\Core\Database\Connection + */ + protected $database; + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) { + return new static($configuration, $plugin_id, $plugin_definition, $container->get('database')); + } + + /** + * {@inheritdoc} + */ + public function __construct(array $configuration, $plugin_id, array $plugin_definition, Connection $database) { + parent::__construct($configuration, $plugin_id, $plugin_definition); + + $this->database = $database; + } + protected function defineOptions() { $options = parent::defineOptions(); $options['type'] = array('default' => 'uid'); @@ -104,7 +127,7 @@ function validate_argument($argument) { } if (!isset($account)) { - $account = db_select('users', 'u') + $account = $this->database->select('users', 'u') ->fields('u', array('uid', 'name')) ->condition($condition, $argument) ->execute() @@ -120,10 +143,7 @@ function validate_argument($argument) { $roles = $this->options['roles']; $account->roles = array(); $account->roles[] = $account->uid ? DRUPAL_AUTHENTICATED_RID : DRUPAL_ANONYMOUS_RID; - $query = db_select('users_roles', 'u'); - $query->addField('u', 'rid'); - $query->condition('u.uid', $account->uid); - $result = $query->execute(); + $result = $this->database->query('SELECT rid FROM {users_roles} WHERE uid = :uid', array(':uid' => $account->uid)); foreach ($result as $role) { $account->roles[] = $role->rid; } diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/Permissions.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/Permissions.php index a14f625..d37b2c5 100644 --- a/core/modules/user/lib/Drupal/user/Plugin/views/field/Permissions.php +++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/Permissions.php @@ -22,6 +22,29 @@ class Permissions extends PrerenderList { /** + * Database Service Object. + * + * @var \Drupal\Core\Database\Connection + */ + protected $database; + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) { + return new static($configuration, $plugin_id, $plugin_definition, $container->get('database')); + } + + /** + * {@inheritdoc} + */ + public function __construct(array $configuration, $plugin_id, array $plugin_definition, Connection $database) { + parent::__construct($configuration, $plugin_id, $plugin_definition); + + $this->database = $database; + } + + /** * Overrides Drupal\views\Plugin\views\field\FieldPluginBase::init(). */ public function init(ViewExecutable $view, DisplayPluginBase $display, array &$options = NULL) { @@ -55,14 +78,8 @@ function pre_render(&$values) { $permissions = module_invoke_all('permission'); - $query = db_select('role_permission', 'rp'); - $query->join('users_roles', 'u', 'u.rid = rp.rid'); - $query->fields('u', array('uid', 'rid')); - $query->addField('rp', 'permission'); - $query->condition('u.uid', $uids); - $query->condition('rp.module', array_keys($modules)); - $query->orderBy('rp.permission'); - $result = $query->execute(); + $result = $this->database->query("SELECT u.uid, u.rid, rp.permission FROM {role_permission} rp INNER JOIN {users_roles} u ON u.rid = rp.rid WHERE u.uid IN (:uids) AND rp.module IN (:modules) ORDER BY rp.permission", + array(':uids' => $uids, ':modules' => array_keys($modules))); foreach ($result as $perm) { $this->items[$perm->uid][$perm->permission]['permission'] = $permissions[$perm->permission]['title']; diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/Roles.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/Roles.php index 4fa6811..2c840d6 100644 --- a/core/modules/user/lib/Drupal/user/Plugin/views/field/Roles.php +++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/Roles.php @@ -22,6 +22,29 @@ class Roles extends PrerenderList { /** + * Database Service Object. + * + * @var \Drupal\Core\Database\Connection + */ + protected $database; + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) { + return new static($configuration, $plugin_id, $plugin_definition, $container->get('database')); + } + + /** + * {@inheritdoc} + */ + public function __construct(array $configuration, $plugin_id, array $plugin_definition, Connection $database) { + parent::__construct($configuration, $plugin_id, $plugin_definition); + + $this->database = $database; + } + + /** * Overrides Drupal\views\Plugin\views\field\FieldPluginBase::init(). */ public function init(ViewExecutable $view, DisplayPluginBase $display, array &$options = NULL) { @@ -45,12 +68,7 @@ function pre_render(&$values) { if ($uids) { $roles = user_roles(); - $query = db_select('users_roles', 'u'); - $query->fields('u', array('uid', 'rid')); - $query->condition('u.rid', array_keys($roles)); - $query->condition('u.uid', $uids); - - $result = $query->execute(); + $result = $this->database->query("SELECT u.uid, u.rid FROM {users_roles} u WHERE u.uid IN (:uids) AND u.rid IN (:rids)", array(':uids' => $uids, ':rids' => array_keys($roles))); foreach ($result as $role) { $this->items[$role->uid][$role->rid]['role'] = check_plain($roles[$role->rid]->label()); $this->items[$role->uid][$role->rid]['rid'] = $role->rid;