Chris@0: delete('tracker.index_nid'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Implements hook_install(). Chris@0: */ Chris@0: function tracker_install() { Chris@0: $max_nid = db_query('SELECT MAX(nid) FROM {node}')->fetchField(); Chris@0: if ($max_nid != 0) { Chris@0: \Drupal::state()->set('tracker.index_nid', $max_nid); Chris@0: // To avoid timing out while attempting to do a complete indexing, we Chris@0: // simply call our cron job to remove stale records and begin the process. Chris@0: tracker_cron(); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * Implements hook_schema(). Chris@0: */ Chris@0: function tracker_schema() { Chris@0: $schema['tracker_node'] = [ Chris@0: 'description' => 'Tracks when nodes were last changed or commented on.', Chris@0: 'fields' => [ Chris@0: 'nid' => [ Chris@0: 'description' => 'The {node}.nid this record tracks.', Chris@0: 'type' => 'int', Chris@0: 'unsigned' => TRUE, Chris@0: 'not null' => TRUE, Chris@0: 'default' => 0, Chris@0: ], Chris@0: 'published' => [ Chris@0: 'description' => 'Boolean indicating whether the node is published.', Chris@0: 'type' => 'int', Chris@0: 'not null' => FALSE, Chris@0: 'default' => 0, Chris@0: 'size' => 'tiny', Chris@0: ], Chris@0: 'changed' => [ Chris@0: 'description' => 'The Unix timestamp when the node was most recently saved or commented on.', Chris@0: 'type' => 'int', Chris@0: 'unsigned' => TRUE, Chris@0: 'not null' => TRUE, Chris@0: 'default' => 0, Chris@0: ], Chris@0: ], Chris@0: 'indexes' => [ Chris@0: 'tracker' => ['published', 'changed'], Chris@0: ], Chris@0: 'primary key' => ['nid'], Chris@0: 'foreign keys' => [ Chris@0: 'tracked_node' => [ Chris@0: 'table' => 'node', Chris@0: 'columns' => ['nid' => 'nid'], Chris@0: ], Chris@0: ], Chris@0: ]; Chris@0: Chris@0: $schema['tracker_user'] = [ Chris@0: 'description' => 'Tracks when nodes were last changed or commented on, for each user that authored the node or one of its comments.', Chris@0: 'fields' => [ Chris@0: 'nid' => [ Chris@0: 'description' => 'The {node}.nid this record tracks.', Chris@0: 'type' => 'int', Chris@0: 'unsigned' => TRUE, Chris@0: 'not null' => TRUE, Chris@0: 'default' => 0, Chris@0: ], Chris@0: 'uid' => [ Chris@0: 'description' => 'The {users}.uid of the node author or commenter.', Chris@0: 'type' => 'int', Chris@0: 'unsigned' => TRUE, Chris@0: 'not null' => TRUE, Chris@0: 'default' => 0, Chris@0: ], Chris@0: 'published' => [ Chris@0: 'description' => 'Boolean indicating whether the node is published.', Chris@0: 'type' => 'int', Chris@0: 'not null' => FALSE, Chris@0: 'default' => 0, Chris@0: 'size' => 'tiny', Chris@0: ], Chris@0: 'changed' => [ Chris@0: 'description' => 'The Unix timestamp when the node was most recently saved or commented on.', Chris@0: 'type' => 'int', Chris@0: 'unsigned' => TRUE, Chris@0: 'not null' => TRUE, Chris@0: 'default' => 0, Chris@0: ], Chris@0: ], Chris@0: 'indexes' => [ Chris@0: 'tracker' => ['uid', 'published', 'changed'], Chris@0: ], Chris@0: 'primary key' => ['nid', 'uid'], Chris@0: 'foreign keys' => [ Chris@0: 'tracked_node' => [ Chris@0: 'table' => 'node', Chris@0: 'columns' => ['nid' => 'nid'], Chris@0: ], Chris@0: 'tracked_user' => [ Chris@0: 'table' => 'users', Chris@0: 'columns' => ['uid' => 'uid'], Chris@0: ], Chris@0: ], Chris@0: ]; Chris@0: Chris@0: return $schema; Chris@0: }