All pastes #74025 Raw Edit

Someone

public text v1 · immutable
#74025 ·published 2006-06-28 15:43 UTC
rendered paste body
function views_scheduler_schedule_form() {
	
  // Description section
  $form['details'] = array(
    '#type' => 'fieldset',
    '#title' => t('Schedule Description'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#tree' => TRUE,
  );
  
  $form['details']['name'] = array(
    '#type' => 'textfield',
    '#title' => t('Name'),
    '#size' => 30,
    '#maxlength' => 64,
    '#required' => TRUE,
    '#description' => t('Name of the schedule'),
  );
  $view_name=db_fetch_array(db_query('SELECT name FROM view_view'));
  $form['details']['view'] = array(
    '#type' => 'select',
    '#title' => t('Existing views'),
    '#default_value' => 'NULL',
    '#options' => array(
    'NULL' => 'Select a View',
    $view_name['name'] =>$view_name['name'],  
    ),
    '#description' => t('Select a view to link this schedule to.'),
  );
  
  $form['details']['node'] = array(
   '#type' => 'textfield',
   '#title' => t('No. of node'),
   '#default_value' => '0',
   '#size' => 2,
   '#maxlength' => 3,
   '#required' => TRUE,
   '#description' => t('Number of nodes to published each time (0 means all)'),
  );
  //END 
  
  // Schedule Timing Details
  $form['schedule'] = array(
    '#type' => 'fieldset',
    '#title' => t('Frequency'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#tree' => TRUE,
    '#description' => t('Schedule Frequency'),
  );
  $form['schedule']['every'] = array(
    '#type' => 'textfield',
    '#title' => t('Every'),
    '#size' => 5,
    '#maxlength' => 3,
    //'#required' => TRUE,
    '#description' => t('Every'),
  );
  $form['schedule']['frequency'] = array(
    '#type' => 'radios',
    '#title' => t('Frequency'),
    '#default_value' =>  'manual',
    '#options' => array(
    'hour' => t('Hour(s)'), 
    'day' => t('Day(s)'), 
    'month' => t('Month(s)'), 
    'manual' => t('Manual Publication')),
 
  );
  // END
  
  // First Sending Takes Place.
  $form['next'] = array(
    '#type' => 'fieldset',
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#tree' => TRUE,
    '#title' => t('Next Send'),
    '#description' => t('DateTime to send next publication.'),
  );
   $form['next']['date'] = array(
    '#type' => 'textfield',
    '#title' => t('Date'),
    '#default_value' => $start_day=date("m/d/y"),
    '#size' => 10,
    '#maxlength' => 10,
    '#required' => TRUE,
    '#description' => t('%start_day (mm/dd/yy)', array('%start_day' => $start_day)),
  );
  $form['next']['hour'] = array(
    '#type' => 'select',
    '#title' => t('Time'),
    '#default_value' => $hour=date("G"),
    '#options' => array(
    '1' => '1 a.m.', 
    '2' => '2 a.m.', 
    '3' => '3 a.m.', 
    '4' => '4 a.m.', 
    '5' => '5 a.m.', 
    '6' => '6 a.m.', 
    '7' => '7 a.m.', 
    '8' => '8 a.m.', 
    '9' => '9 a.m.', 
    '10' => '10 a.m.', 
    '11' => '11 a.m.', 
    '12' => '12 a.m.', 
    '13' => '1 p.m.', 
    '14' => '2 p.m.',  
    '15' => '3 p.m.',  
    '16' => '4 p.m.',  
    '17' => '5 p.m.',  
    '18' => '6 p.m.',  
    '19' => '7 p.m.',  
    '20' => '8 p.m.',  
    '21' => '9 p.m.',  
    '22' => '10 p.m.',  
    '23' => '11 p.m.', 
    '0' => '12 p.m.'),
  );
  // END
   
  //Finish off the form	
  $form['submit'] = array('#type' => 'submit', '#value' => t('Save Schedule'));
  $output = drupal_get_form('view_schedule_form', $form);
  // END
  
  
  return $output;
}

function view_schedule_form_validate($form_id, $form_value) {

  if ($form_value['details']['view'] ==NULL) {
  	  form_set_error('view', t('Please select a view.'));
  }   
  if (!is_numeric($form_value['details']['node'])) {
  	  form_set_error('node', t('Please enter a number of you nodes you would like to be published..'));
  }
  
  
  if (!is_numeric($form_value['schedule']['every'])) {
  	  form_set_error('every', t('Please enter a number for every.'));
  } 
  if ($form_value['schedule']['frequency'] == 'manual') {
    $form_value['schedule']['every']= 0; 
  }
     
  
// check whether date/time is valid or has already passed
    $date_array=getdate(strtotime($form_value['next']['date']));
 
    if (checkdate( $date_array['mon'], $date_array['mday'], $date_array['year'] == TRUE )) {
        $form_value['next']['send']=mktime($form_value['next']['hour'],0,0,$date_array['mon'], $date_array['mday'], $date_array['year']);
        
        if ($form_value['next']['send']<= time()) {
		           form_set_error('next', t('The date/time has already passed ')); 
		} 
	  }
		else {
		 	form_set_error('next', t('The date entered is wrong, Please make sure to enter the date in following format: mm/dd/yy.'));
        }
//print_r ($form_value);
}

function view_schedule_form_submit($form_id, $form_value) {

  db_query("INSERT INTO {view_schedules} (vschedule_id , view , node , actions_id)
  VALUES (NULL, '%s', '%s', '%d' )", $form_value['details']['view'], $form_value['details']['node'], 4);
  $view_schedule_id=db_result(db_query("SELECT LAST_INSERT_ID()"));
  	
  db_query("INSERT INTO {schedules} (schedule_id, schedule_title, type, publication_id, start, first, next, last, every, frequency) 
  VALUES (NULL, '%s','%d', '%d', '%d', '%d', '%d', '%d', '%d', '%s')", $form_value['details']['name'], 0,$view_schedule_id, 0, 0, $form_value['next']['send'], 0, $form_value['schedule']['every'], $form_value['schedule']['frequency']);
	
	drupal_set_message(t('Your form has been saved.'));
}