'Lab Migration Proposal', 'description' => 'Lab Migration Proposal', 'page callback' => 'drupal_get_form', 'page arguments' => array('lab_migration_proposal_form'), 'access arguments' => array('create proposal'), 'type' => MENU_NORMAL_ITEM, 'file' => 'proposal.inc', ); /* for reviewers */ $items['lab_migration/manage_proposal'] = array( 'title' => 'Manage Lab Migration Proposals', 'description' => 'Manage Lab Migration Proposals', 'page callback' => '_proposal_pending', 'access callback' => 'user_access', 'access arguments' => array('approve proposal'), 'file' => 'manage_proposal.inc', ); $items['lab_migration/manage_proposal/pending'] = array( 'title' => 'Pending Proposals', 'description' => 'Pending Lab Migration Proposals Queue', 'page callback' => '_proposal_pending', 'access callback' => 'user_access', 'access arguments' => array('approve proposal'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => 1, 'file' => 'manage_proposal.inc', ); $items['lab_migration/manage_proposal/all'] = array( 'title' => 'All Proposals', 'description' => 'All Proposals', 'page callback' => '_proposal_all', 'access callback' => 'user_access', 'access arguments' => array('approve proposal'), 'type' => MENU_LOCAL_TASK, 'weight' => 2, 'file' => 'manage_proposal.inc', ); $items['lab_migration/manage_proposal/approve'] = array( 'title' => 'Approve Proposal', 'description' => 'Approve Proposal', 'page callback' => 'drupal_get_form', 'page arguments' => array('proposal_approval_form'), 'access arguments' => array('approve proposal'), 'type' => MENU_CALLBACK, 'file' => 'manage_proposal.inc', ); $items['lab_migration/manage_proposal/edit'] = array( 'title' => 'Edit Proposal', 'description' => 'Edit Proposal', 'page callback' => 'drupal_get_form', 'page arguments' => array('proposal_edit_form'), 'access arguments' => array('approve proposal'), 'type' => MENU_CALLBACK, 'file' => 'manage_proposal.inc', ); /* for admin */ $items['admin/settings/lab_migration'] = array( 'title' => 'Lab Migration Settings', 'description' => 'Lab Migration Settings', 'page callback' => 'drupal_get_form', 'page arguments' => array('lab_migration_settings_form'), 'access arguments' => array('administer lab migration'), 'type' => MENU_NORMAL_ITEM, 'file' => 'settings.inc', ); return $items; } /** * Implementation of hook_perm(). */ function lab_migration_perm() { return array('create proposal', 'reply proposal', 'approve proposal', 'view questions', 'view answers', 'administer lab migration'); } /** * Implementation of hook_mail(). */ function lab_migration_mail($key, &$message, $params) { global $user; $language = $message['language']; switch ($key) { case 'proposal_received': /* initializing data */ $proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d LIMIT 1", $params['proposal_received']['proposal_id']); $proposal_data = db_fetch_object($proposal_q); $user_data = user_load($params['proposal_received']['user_id']); $message['subject'] = t('[!site_name] Your Lab migration proposal has been received', array('!site_name' => variable_get('site_name', '')), $language->language); $message['body'] = t(' Dear !user_name, We have received your following lab migration proposal: Name of the Professor : ' . $proposal_data->name . ' Email : ' . $user_data->mail . ' Contact Phone No. : ' . $proposal_data->contact_ph . ' Department/Branch : ' . $proposal_data->department . ' University/Institute : ' . $proposal_data->university . ' Title of the Lab : ' . $proposal_data->lab_title . ' Topic of the Problem : ' . $proposal_data->problem_topic . ' Your proposal is under review and you will soon receive an email from us regarding the same. Best Wishes, Lab Migration Team !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), $language->language); break; case 'proposal_disapproved': /* initializing data */ $proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d LIMIT 1", $params['proposal_disapproved']['proposal_id']); $proposal_data = db_fetch_object($proposal_q); $user_data = user_load($params['proposal_disapproved']['user_id']); $message['subject'] = t('[!site_name] Your Lab migration proposal has been disapproved', array('!site_name' => variable_get('site_name', '')), $language->language); $message['body'] = t(' Dear !user_name, Your following Lab migration proposal has been disapproved: Reason for disapproval: ' . $proposal_data->message . ' Name of the Professor : ' . $proposal_data->name . ' Email : ' . $user_data->mail . ' Contact Phone No. : ' . $proposal_data->contact_ph . ' Department/Branch : ' . $proposal_data->department . ' University/Institute : ' . $proposal_data->university . ' Title of the Lab : ' . $proposal_data->lab_title . ' Topic of the Problem : ' . $proposal_data->problem_topic . ' Best Wishes, Lab Migration Team !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), $language->language); break; case 'proposal_approved': /* initializing data */ $proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d LIMIT 1", $params['proposal_approved']['proposal_id']); $proposal_data = db_fetch_object($proposal_q); $user_data = user_load($params['proposal_approved']['user_id']); $message['subject'] = t('[!site_name] Your Lab migration proposal has been approved', array('!site_name' => variable_get('site_name', '')), $language->language); $message['body'] = t(' Dear !user_name, Your following Lab migration proposal has been approved: Name of the Professor : ' . $proposal_data->name . ' Email : ' . $user_data->mail . ' Contact Phone No. : ' . $proposal_data->contact_ph . ' Department/Branch : ' . $proposal_data->department . ' University/Institute : ' . $proposal_data->university . ' Title of the Lab : ' . $proposal_data->lab_title . ' Topic of the Problem : ' . $proposal_data->problem_topic . ' Best Wishes, Lab Migration Team !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), $language->language); break; case 'standard': $message['subject'] = $params['standard']['subject']; $message['body'] = $params['standard']['body']; break; } } /******************************************************************************/ /**************************** GENERAL FUNCTION ********************************/ /******************************************************************************/ function lab_migration_path() { return $_SERVER['DOCUMENT_ROOT'] . base_path() . 'sites/default/files/lab_migration/'; } /******************************************************************************/ /*************************** VALIDATION FUNCTIONS *****************************/ /******************************************************************************/ function lab_migration_check_valid_filename($file_name) { if (!preg_match('/^[0-9a-zA-Z\_\.]+$/', $file_name)) return FALSE; else if (substr_count($file_name, ".") > 1) return FALSE; else return TRUE; }