entityCondition('entity_type', 'node') // Restrict to BLASTDB nodes. ->entityCondition('bundle', 'blastdb') // Restrict to Published nodes. ->propertyCondition('status', 1) // Restrict to nodes the current user has permission to view. ->addTag('node_access'); $entities = $query->execute(); // Get all BlastDB nodes and delete them $nodes = node_load_multiple(array_keys($entities['node'])); foreach ($nodes as $node) { print "Delete node " . $node->title . "\n"; $nrs = node_revision_list($node); foreach ($nrs as $nr) { node_revision_delete($nr->vid); } node_delete($node->nid); } } /** * Implements hook_schema(). * Create the blastdb database table for storing addditional info related to blastdb nodes. * * NOTE: This hook is called via Drupal magic during the installation process and no longer * needs to be called explicitly in hook_install(). */ function blast_ui_schema() { // A table to keep extra information related to blastdb nodes. $schema['blastdb'] = array( 'description' => t('The base table for blastdb node'), 'fields' => array( 'nid' => array( 'description' => t('The primary identifier for a node.'), 'type' => 'serial', 'unsigned' => true, 'not null' => true, ), 'name' => array( 'description' => t('The human-readable name of the blast database.'), 'type' => 'varchar', 'length' => 255, 'not null' => true, ), 'path' => array( 'description' => t('The full path and filename prefix of the blast database.'), 'type' => 'varchar', 'length' => 1023, 'not null' => true, ), 'dbtype' => array( 'description' => t('Type of the blast database. Should be either n for nucleotide or p for protein.'), 'type' => 'varchar', 'length' => 15, 'not null' => true, ), 'dbxref_id_regex' => array( 'description' => t('The Regular Expression to use to extract the id from the FASTA header of the BLAST database hit.'), 'type' => 'text', ), 'dbxref_db_id' => array( 'description' => t('The Database records from this BLAST Database reference.'), 'type' => 'int', ), 'dbxref_linkout_type' => array( 'description' => t('Type of linkout to be used for this database reference.'), 'type' => 'varchar', 'length' => 50, 'not null' => true, 'default' => 'link' ), 'cvitjs_enabled' => array( 'description' => t('Indicate if CViTjs should be used to display hits on a whole genome'), 'type' => 'int', 'not null' => false, 'default' => 0 ), ), 'indexes' => array( 'name' => array('name'), ), 'primary key' => array('nid'), 'unique keys' => array( 'nid' => array('nid'), ), ); // BLAST JOBS // ------------------------ // Keeps track of additional information related to tripal blast jobs. $schema['blastjob'] = array( 'description' => t('Keeps track of additional information related to tripal blast jobs.'), 'fields' => array( 'job_id' => array( 'description' => t('The Tripal job_id for the blast job.'), 'type' => 'int', 'unsigned' => true, 'not null' => true, ), 'blast_program' => array( 'description' => t('The program to use to run the blast (ie: blastn, blastp, etc.).'), 'type' => 'varchar', 'length' => 20, 'not null' => true, ), 'target_blastdb' => array( 'description' => t('The nid of the blastdb used to search against; NULL if target was uploaded.'), 'type' => 'int', 'unsigned' => true, ), 'target_file' => array( 'description' => t('The absolute path to the uploaded blast database after it was run through makeblastdb; NULL if target was NOT uploaded.'), 'type' => 'text', ), 'query_file' => array( 'description' => t('The absolute path to the query file.'), 'type' => 'text', ), 'result_filestub' => array( 'description' => t('The absolute path and filename (without extension) of the blast results.'), 'type' => 'text', ), 'options' => array( 'description' => t('A serialized array of options selected for the blast job where the key is the machine name of the option used when calling blast (ie: gapextend) and the value is the value of the option.'), 'type' => 'text', ), ), 'primary key' => array('job_id'), 'foreign keys' => array( 'job_id' => array( 'table' => 'tripal_jobs', 'columns' => array( 'job_id' => 'job_id', ), ), ), ); return $schema; } /** * Make BlastDB type more readable & support Link-outs for BLAST Hits. */ function blast_ui_update_7101() { // Changing the length of the type field to allow it to be more readable. db_change_field('blastdb', 'dbtype', 'dbtype', array( 'description' => t('Type of the blast database. Should be either n for nucleotide or p for protein.'), 'type' => 'varchar', 'length' => 15, 'not null' => true, ) ); // Add fields related to Link-outs db_add_field( 'blastdb', 'dbxref_id_regex', array( 'description' => t('The Regular Expression to use to extract the id from the FASTA header of the BLAST database hit.'), 'type' => 'text', ) ); db_add_field( 'blastdb', 'dbxref_db_id', array( 'description' => t('The Database records from this BLAST Database reference.'), 'type' => 'int', ) ); } /** * Support complex types of link-outs such as GBrowse & JBrowse coordinate links. */ function blast_ui_update_7102() { db_add_field( 'blastdb', 'dbxref_linkout_type', array( 'description' => t('Type of linkout to be used for this database reference.'), 'type' => 'varchar', 'length' => 50, 'not null' => true, 'default' => 'link' ) ); } /** * Add saving of blast job information for recent job list & resubmit functionality. */ function blast_ui_update_7103() { $schema = array(); // Keeps track of additional information related to tripal blast jobs. $schema['blastjob'] = array( 'description' => t('Keeps track of additional information related to tripal blast jobs.'), 'fields' => array( 'job_id' => array( 'description' => t('The Tripal job_id for the blast job.'), 'type' => 'int', 'unsigned' => true, 'not null' => true, ), 'blast_program' => array( 'description' => t('The program to use to run the blast (ie: blastn, blastp, etc.).'), 'type' => 'varchar', 'length' => 20, 'not null' => true, ), 'target_blastdb' => array( 'description' => t('The nid of the blastdb used to search against; NULL if target was uploaded.'), 'type' => 'int', 'unsigned' => true, ), 'target_file' => array( 'description' => t('The absolute path to the uploaded blast database after it was run through makeblastdb; NULL if target was NOT uploaded.'), 'type' => 'text', ), 'query_file' => array( 'description' => t('The absolute path to the query file.'), 'type' => 'text', ), 'result_filestub' => array( 'description' => t('The absolute path and filename (without extension) of the blast results.'), 'type' => 'text', ), 'options' => array( 'description' => t('A serialized array of options selected for the blast job where the key is the machine name of the option used when calling blast (ie: gapextend) and the value is the value of the option.'), 'type' => 'text', ), ), 'primary key' => array('job_id'), 'foreign keys' => array( 'job_id' => array( 'table' => 'tripal_jobs', 'columns' => array( 'job_id' => 'job_id', ), ), ), ); // First create the tables. db_create_table('blastjob', $schema['blastjob']); } /** * Add fields to blastp table for CViTjs support. */ function blast_ui_update_7104() { db_add_field( 'blastdb', 'cvitjs_enabled', array( 'description' => t('Indicate if CViTjs should be used to display hits on a whole genome'), 'type' => 'int', 'not null' => false, 'default' => 0 ) ); }