<?php
// $Id$

function upload_dependency_form($form,&$form_state)
{
  global $user;

  /************************ start approve book details ************************/

  /*$proposal_q = db_query("SELECT * FROM {textbook_companion_proposal} WHERE uid = %d ORDER BY id DESC LIMIT 1", $user->uid);
  $proposal_data = db_fetch_object($proposal_q);*/

	$query = db_select('textbook_companion_proposal');
	$query->fields('textbook_companion_proposal');
	$query->condition('uid', $user->uid);
	$query->orderBy('id', 'DESC');
	$query->range(0, 1);
	$result = $query->execute();
	$proposal_data =$result->fetchObject();

  if (!$proposal_data)
  {
    drupal_set_message("Please submit a " . l('proposal', 'book_proposal') . ".", 'error');
    drupal_goto('');
  }
  if ($proposal_data->proposal_status  != 1 && $proposal_data->proposal_status  != 4)
  {
    switch ($proposal_data->proposal_status )
    {
    case 0:
      drupal_set_message(t('We have already received your proposal. We will get back to you soon.'), 'status');
      drupal_goto('');
      return;
      break;
    case 2:
      drupal_set_message(t('Your proposal has been dis-approved. Please create another proposal ' . l('here', 'book_proposal') . '.'), 'error');
      drupal_goto('');
      return;
      break;
    case 3:
      drupal_set_message(t('Congratulations! You have completed your last book proposal. You have to create another proposal ' . l('here', 'book_proposal') . '.'), 'status');
      drupal_goto('');
      return;
      break;
    default:
       drupal_set_message(t('Invalid proposal state. Please contact site administrator for further information.'), 'error');
       drupal_goto('');
       return;
       break;
    }
  }

  /*$preference_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE proposal_id = %d AND approval_status = 1 LIMIT 1", $proposal_data->id);
  $preference_data = db_fetch_object($preference_q);*/
	$query = db_select('textbook_companion_preference');
	$query->fields('textbook_companion_preference');
	$query->condition('proposal_id', $proposal_data->id);
	$query->condition('approval_status', 1);
	$query->range(0, 1);
	$result = $query->execute();
	$preference_data=$result->fetchObject();

  if (!$preference_data)
  {
    drupal_set_message(t('Invalid Book Preference status. Please contact site administrator for further information.'), 'error');
    drupal_goto('');
    return;
  }
  /************************ end approve book details **************************/

  $form['#attributes'] = array('enctype' => "multipart/form-data");

  $form['book_details']['book'] = array(
    '#type' => 'item',
    '#markup' => $preference_data->book,
    '#title' => t('Title of the Book'),
  );
  $form['contributor_name'] = array(
    '#type' => 'item',
    '#markup' => $proposal_data->full_name,
    '#title' => t('Contributor Name'),
  );

  $form['existing_depfile'] = array(
    '#type' => 'item',
    '#markup' => _list_existing_dependency($preference_data->id),
    '#title' => t('List of existing dependency files for this book'),
  );

  $form['depfile'] = array(
    '#type' => 'fieldset',
    '#title' => t('Upload Dependency Files'),
    '#collapsible' => FALSE,
    '#collapsed' => FALSE,
  );
  $form['depfile']['depfile1'] = array(
      '#type' => 'file',
      '#title' => t('Upload dependency file'),
      '#description' => t("Allowed file extensions : ") . variable_get('textbook_companion_dependency_extensions', ''),
  );
  $form['depfile']['depfile1_caption'] = array(
      '#type' => 'textfield',
      '#title' => t('Caption for dependency file'),
      '#size' => 15,
      '#maxlength' => 100,
      '#required' => TRUE,
  );
  $form['depfile']['depfile1_description'] = array(
      '#type' => 'textarea',
      '#title' => t('Brief Description of the dependency file'),
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit')
  );

  $form['cancel'] = array(
    '#type' => 'markup',
    '#value' => l(t('Back'), 'textbook_companion/code/upload'),
  );
  return $form;
}

function upload_dependency_form_validate($form, &$form_state)
{
  global $user;

  /* get approved book details */
  /*$book_q = db_query("SELECT pro.id as pro_id, pre.id as pre_id, pre.book as pre_book, pro.full_name as pro_full_name FROM {textbook_companion_proposal} pro JOIN {textbook_companion_preference} pre ON pro.id = pre.proposal_id WHERE pro.proposal_status = 1 AND pre.approval_status = 1 AND pro.uid = %d", $user->uid);
  $book_data = db_fetch_object($book_q);*/

	$query = db_select('textbook_companion_proposal', 'pro');
	$query->fields('pro', array('id', 'full_name'));
	$query->fields('pre', array('id', 'book'));
	$query->innerJoin('textbook_companion_preference', 'pre', 'pro.id = pre.proposal_id');
	$query->condition('pro.proposal_status', 1);
	$query->condition('pre.approval_status', 1);
	$query->condition('pro.uid', $user->uid);
	$result = $query->execute();
	$book_data=$result->fetchObject();

  if (isset($_FILES['files']))
  {
    /* check for valid filename extensions */  
    $allowed_extensions = explode(',' , variable_get('textbook_companion_dependency_extensions', ''));
    foreach ($_FILES['files']['name'] as $file_form_name => $file_name)
    {
      if ($file_name)
      {
         $temp_extension = end(explode('.', strtolower($_FILES['files']['name'][$file_form_name])));
         if (!in_array($temp_extension, $allowed_extensions))
           form_set_error($file_form_name, t('Only ' . variable_get('textbook_companion_dependency_extensions', '') . ' extensions can be uploaded.'));
         if ($_FILES['files']['size'][$file_form_name] <= 0)
           form_set_error($file_form_name, t('File size cannot be zero.'));

         /* check if file already exists */

         /*$dep_exists_data = db_fetch_object(db_query("SELECT * FROM {textbook_companion_dependency_files} WHERE filename = '%s'", $_FILES['files']['name'][$file_form_name]));*/

		$query = db_select('textbook_companion_dependency_files');
		$query->fields('textbook_companion_dependency_files');
		$query->condition('filename', $_FILES['files']['name'][$file_form_name]);
		$result = $query->execute();
		$dep_exists_data=$result->fetchObject();

         if ($dep_exists_data)
           form_set_error($file_form_name, t('Dependency file with the same name has already been uploaded in this or some other book. Please rename the file and try again.'));

         /* check if valid file name */
         if (!textbook_companion_check_valid_filename($_FILES['files']['name'][$file_form_name]))
           form_set_error($file_form_name, t('Invalid file name specified. Only alphabets, numbers and underscore is allowed as a valid filename.'));
      }
    }
  }
}

function upload_dependency_form_submit($form, &$form_state) {
  global $user;

  $root_path = textbook_companion_path();

  /* get approved book details */

  /*$proposal_q = db_query("SELECT * FROM {textbook_companion_proposal} WHERE uid = %d ORDER BY id DESC LIMIT 1", $user->uid);
  $proposal_data = db_fetch_object($proposal_q);*/

	$query = db_select('textbook_companion_proposal');
	$query->fields('textbook_companion_proposal');
	$query->condition('uid', $user->uid);
	$query->orderBy('id', 'DESC');
	$query->range(0, 1);
	$result = $query->execute();
	$proposal_data=$result->fetchObject();

  if (!$proposal_data)
  {
    drupal_set_message("Please submit a " . l('proposal', 'book_proposal') . ".", 'error');
    drupal_goto('');
  }
  if ($proposal_data->proposal_status  != 1 && $proposal_data->proposal_status  != 4)
  {
    switch ($proposal_data->proposal_status )
    {
    case 0:
      drupal_set_message(t('We have already received your proposal. We will get back to you soon.'), 'status');
      drupal_goto('');
      return;
      break;
    case 2:
      drupal_set_message(t('Your proposal has been dis-approved. Please create another proposal ' . l('here', 'book_proposal') . '.'), 'error');
      drupal_goto('');
      return;
      break;
    case 3:
      drupal_set_message(t('Congratulations! You have completed your last book proposal. You have to create another proposal ' . l('here', 'book_proposal') . '.'), 'status');
      drupal_goto('');
      return;
      break;
    default:
       drupal_set_message(t('Invalid proposal state. Please contact site administrator for further information.'), 'error');
       drupal_goto('');
       return;
       break;
    }
  }

  /*$preference_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE proposal_id = %d AND approval_status = 1 LIMIT 1", $proposal_data->id);
  $preference_data = db_fetch_object($preference_q);*/

	$query = db_select('textbook_companion_preference');
	$query->fields('textbook_companion_preference');
	$query->condition('proposal_id', $proposal_data->id);
	$query->condition('approval_status', 1);
	$query->range(0, 1);
	$result = $query->execute();
	$preference_data=$result->fetchObject();

  if (!$preference_data)
  {
    drupal_set_message(t('Invalid Book Preference status. Please contact site administrator for further information.'), 'error');
    drupal_goto('');
    return;
  }

  $preference_id = $preference_data->id;

  $dest_path = $preference_id . '/';
  if (!is_dir($root_path . $dest_path))
    mkdir($root_path . $dest_path);

  $dest_path .= 'DEPENDENCIES' . '/';
  if (!is_dir($root_path . $dest_path))
    mkdir($root_path . $dest_path);

  /* uploading dependencies */
  $file_upload_counter = 0;
  $dependency_ids = array();
  $dependency_names = array();

  foreach ($_FILES['files']['name'] as $file_form_name => $file_name)
  {
    if ($file_name)
    {
      /* uploading file */
      if (move_uploaded_file($_FILES['files']['tmp_name'][$file_form_name], $root_path . $dest_path . $_FILES['files']['name'][$file_form_name]))
      {
        /* for uploaded files making an entry in the database */
       /* db_query("INSERT INTO {textbook_companion_dependency_files} (preference_id, filename, filepath, filemime, filesize, caption, description, timestamp)
          VALUES (%d, '%s', '%s', '%s', %d, '%s', '%s', %d)",
          $preference_id,
          $_FILES['files']['name'][$file_form_name],
          $dest_path . $_FILES['files']['name'][$file_form_name],
          $_FILES['files']['type'][$file_form_name],
          $_FILES['files']['size'][$file_form_name],
          $form_state['values'][$file_form_name . '_caption'],
          $form_state['values'][$file_form_name . '_description'],
          time()
          );*/
	$query = "INSERT INTO {textbook_companion_dependency_files} (preference_id, filename, filepath, filemime, filesize, caption, 	description, timestamp)
          VALUES (:preference_id, :filename, :filepath, :filemime, :filesize, :caption, :description, :timestamp)";
			$args = array(
			":preference_id"=>$preference_id,
			":filename"=>$_FILES['files']['name'][$file_form_name],
			":filepath"=>$dest_path . $_FILES['files']['name'][$file_form_name],
			":filemime"=>$_FILES['files']['type'][$file_form_name],
			":filesize"=>$_FILES['files']['size'][$file_form_name],
			":caption"=>$form_state['values'][$file_form_name . '_caption'],
			":description"=>$form_state['values'][$file_form_name . '_description'],
			":timestamp"=>time(),
				);
			$result = db_query($query, $args, array('return' => Database::RETURN_INSERT_ID));


        drupal_set_message($file_name . ' uploaded successfully.', 'status');

        //$dependency_ids[] = db_last_insert_id('textbook_companion_dependency_files', 'id');
	$dependency_ids[]=$result;

        $dependency_names[] =  $_FILES['files']['name'][$file_form_name];
        $file_upload_counter++;
      } else {
        drupal_set_message('Error uploading dependency : ' . $dest_path . '/' . $_FILES['files']['name'][$file_form_name], 'error');
      }
    }
  }

  if ($file_upload_counter > 0)
  {
    drupal_set_message('Dependencies uploaded successfully.', 'status');
  
    /* sending email */
    $params['dependency_uploaded']['user_id'] = $user->uid;
    $params['dependency_uploaded']['dependency_names'] = $dependency_names;

    $email_to = $user->mail;
    if (!drupal_mail('textbook_companion', 'dependency_uploaded', $email_to, language_default(), $param, variable_get('textbook_companion_from_email', NULL), TRUE))
      drupal_set_message('Error sending email message.', 'error');
  }

  drupal_goto('textbook_companion/code/upload_dep');
}

function _list_existing_dependency($book_id)
{
  // $return_html = '<ul>';
  $return_html = "";
  /*$query = "SELECT * FROM textbook_companion_dependency_files WHERE preference_id = %d ORDER BY filename ASC";
  $result = db_query($query, $book_id);*/

	$query = db_select('textbook_companion_dependency_files');
	$query->fields('textbook_companion_dependency_files');
	$query->condition('preference_id', $book_id);
	$query->orderBy('filename', 'ASC');
	$result = $query->execute();

  $headers = array(
    "File", "Action",
  );
  $rows = array();
  while($row = $result->fetchObject()) {
    $item = array(
      l($row->filename . $temp_caption, 'download/dependency/' . $row->id),
      l("Edit", "textbook_companion/code/edit_dep/{$row->id}") 
      . " | " . l("Delete","textbook_companion/code/delete_dep/{$row->id}")
    );
    array_push($rows, $item);
  }
   $return_html .= theme("table",array("headers"=>$headers, "rows"=>$rows));
  return $return_html;
}

/******************** edit dependency section ********************/

function edit_dependency_form($form_state, $dependency_id=0)
{
  global $user;

  /************************ start approve book details ************************/
  
  /*$proposal_q = db_query("SELECT * FROM {textbook_companion_proposal} WHERE uid = %d ORDER BY id DESC LIMIT 1", $user->uid);
  $proposal_data = db_fetch_object($proposal_q);*/

	$query = db_select('textbook_companion_proposal');
	$query->fields('textbook_companion_proposal');
	$query->condition('uid', $user->uid);
	$query->orderBy('id', 'DESC');
	$query->range(0, 1);
	$result = $query->execute();
	$proposal_data=$result->fetchObject();

  if (!$proposal_data)
  {
    drupal_set_message("Please submit a " . l('proposal', 'proposal') . ".", 'error');
    drupal_goto('');
  }
  if ($proposal_data->proposal_status  != 1 && $proposal_data->proposal_status  != 4)
  {
    switch ($proposal_data->proposal_status )
    {
    case 0:
      drupal_set_message(t('We have already received your proposal. We will get back to you soon.'), 'status');
      drupal_goto('');
      return;
      break;
    case 2:
      drupal_set_message(t('Your proposal has been dis-approved. Please create another proposal ' . l('here', 'proposal') . '.'), 'error');
      drupal_goto('');
      return;
      break;
    case 3:
      drupal_set_message(t('Congratulations! You have completed your last book proposal. You have to create another proposal ' . l('here', 'proposal') . '.'), 'status');
      drupal_goto('');
      return;
      break;
    default:
       drupal_set_message(t('Invalid proposal state. Please contact site administrator for further information.'), 'error');
       drupal_goto('');
       return;
       break;
    }
  }

  /*$preference_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE proposal_id = %d AND approval_status = 1 LIMIT 1", $proposal_data->id);
  $preference_data = db_fetch_object($preference_q);*/

	$query = db_select('textbook_companion_preference');
	$query->fields('textbook_companion_preference');
	$query->condition('proposal_id', $proposal_data->id);
	$query->condition('approval_status', 1);
	$query->range(0, 1);
	$result = $query->execute();
	$preference_data=$result->fetchObject();

  if (!$preference_data)
  {
    drupal_set_message(t('Invalid Book Preference status. Please contact site administrator for further information.'), 'error');
    drupal_goto('');
    return;
  }
  /************************ end approve book details **************************/
  /* fetching the default values */

  /*$query = "
    SELECT * FROM {textbook_companion_dependency_files}
    WHERE id = {$dependency_id}
  ";
  $result = db_query($query);
  $row = db_fetch_object($result);*/

	$query = db_select('textbook_companion_dependency_files');
	$query->fields('textbook_companion_dependency_files');
	$query->condition('id', $dependency_id);
	$result = $query->execute();
	$row=$result->fetchObject();


  $form['#attributes'] = array('enctype' => "multipart/form-data");

  $form['depfile'] = array(
    '#type' => 'fieldset',
    '#title' => t('Upload New Dependency File'),
    '#collapsible' => FALSE,
    '#collapsed' => FALSE,
  );
  $form['depfile']['depfile1'] = array(
      '#type' => 'file',
      '#title' => t('Upload dependency file'),
      '#description' => t("Allowed file extensions : ") . variable_get('textbook_companion_dependency_extensions', ''),
  );
  $form['depfile']['depfile1_caption'] = array(
      '#type' => 'textfield',
      '#title' => t('Caption for dependency file'),
      '#size' => 15,
      '#maxlength' => 100,
      '#required' => TRUE,
      "#default_value" => $row->caption,
  );
  $form['depfile']['depfile1_description'] = array(
      '#type' => 'textarea',
      '#title' => t('Brief Description of the dependency file'),
      "#default_value" => $row->description,
  );

  $form["dependency_id"] = array(
    "#type" => "hidden",
    "#value" => $dependency_id
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit')
  );

  $form['cancel'] = array(
    '#type' => 'markup',
    '#value' => l(t('Back'), 'textbook_companion/code/upload_dep'),
  );
  return $form;
}

function edit_dependency_form_validate($form, &$form_state)
{
  global $user;

  if (isset($_FILES['files']))
  {
    /* check for valid filename extensions */  
    $allowed_extensions = explode(',' , variable_get('textbook_companion_dependency_extensions', ''));
    foreach ($_FILES['files']['name'] as $file_form_name => $file_name)
    {
      if ($file_name)
      {
         $temp_extension = end(explode('.', strtolower($_FILES['files']['name'][$file_form_name])));
         if (!in_array($temp_extension, $allowed_extensions))
           form_set_error($file_form_name, t('Only ' . variable_get('textbook_companion_dependency_extensions', '') . ' extensions can be uploaded.'));
         if ($_FILES['files']['size'][$file_form_name] <= 0)
           form_set_error($file_form_name, t('File size cannot be zero.'));

        /* check if file already exists */
         /*$dep_exists_data = db_fetch_object(
           db_query(
             "SELECT * FROM {textbook_companion_dependency_files} WHERE filename = '%s' AND id != %d",
             $_FILES['files']['name'][$file_form_name],
             $form_state["values"]["dependency_id"]
           )
         );*/
	$query = db_select('textbook_companion_dependency_files');
	$query->fields('textbook_companion_dependency_files');
	$query->condition('filename', $_FILES['files']['name'][$file_form_name]);
	$query->condition('id', $form_state["values"]["dependency_id"], '<>');
	$result = $query->execute();
	$dep_exists_data=$result->fetchObject();

        if ($dep_exists_data)
          form_set_error($file_form_name, t('Dendency file with the same name has already been uploaded in this or some other book. Please rename the file and try again.'));

         /* check if valid file name */
         if (!textbook_companion_check_valid_filename($_FILES['files']['name'][$file_form_name]))
           form_set_error($file_form_name, t('Invalid file name specified. Only alphabets, numbers and underscore is allowed as a valid filename.'));
      }
    }
  }
}

function edit_dependency_form_submit($form, &$form_state) {
  global $user;

  $root_path = textbook_companion_path();

  /* get approved book details */

  /*$proposal_q = db_query("SELECT * FROM {textbook_companion_proposal} WHERE uid = %d ORDER BY id DESC LIMIT 1", $user->uid);
  $proposal_data = db_fetch_object($proposal_q);*/

	$query = db_select('textbook_companion_proposal');
	$query->fields('textbook_companion_proposal');
	$query->condition('uid', $user->uid);
	$query->orderBy('id', 'DESC');
	$query->range(0, 1);
	$result = $query->execute();
	$proposal_data=$result->fetchObject();


  if (!$proposal_data)
  {
    drupal_set_message("Please submit a " . l('proposal', 'proposal') . ".", 'error');
    drupal_goto('');
  }
  if ($proposal_data->proposal_status  != 1 && $proposal_data->proposal_status  != 4)
  {
    switch ($proposal_data->proposal_status )
    {
    case 0:
      drupal_set_message(t('We have already received your proposal. We will get back to you soon.'), 'status');
      drupal_goto('');
      return;
      break;
    case 2:
      drupal_set_message(t('Your proposal has been dis-approved. Please create another proposal ' . l('here', 'proposal') . '.'), 'error');
      drupal_goto('');
      return;
      break;
    case 3:
      drupal_set_message(t('Congratulations! You have completed your last book proposal. You have to create another proposal ' . l('here', 'proposal') . '.'), 'status');
      drupal_goto('');
      return;
      break;
    default:
       drupal_set_message(t('Invalid proposal state. Please contact site administrator for further information.'), 'error');
       drupal_goto('');
       return;
       break;
    }
  }

  /*$preference_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE proposal_id = %d AND approval_status = 1 LIMIT 1", $proposal_data->id);
  $preference_data = db_fetch_object($preference_q);*/

	$query = db_select('textbook_companion_preference');
	$query->fields('textbook_companion_preference');
	$query->condition('proposal_id', $proposal_data->id);
	$query->condition('approval_status', 1);
	$query->range(0, 1);
	$result = $query->execute();
	$preference_data=$result->fetchObject();

  if (!$preference_data)
  {
    drupal_set_message(t('Invalid Book Preference status. Please contact site administrator for further information.'), 'error');
    drupal_goto('');
    return;
  }

  $preference_id = $preference_data->id;

  $dest_path = $preference_id . '/';
  if (!is_dir($root_path . $dest_path))
    mkdir($root_path . $dest_path);

  $dest_path .= 'DEPENDENCIES' . '/';
  if (!is_dir($root_path . $dest_path))
    mkdir($root_path . $dest_path);

  /* uploading dependencies */
  $file_upload_counter = 0;
  $dependency_ids = array();
  $dependency_names = array();

  /* deleting old dependency file if the filename changed */

  /*$query = "
    SELECT * FROM textbook_companion_dependency_files 
    WHERE id = %d
  ";
  $result = db_query($query, $form_state["values"]["dependency_id"]);
  $row = db_fetch_object($result);*/

	$query = db_select('textbook_companion_dependency_files');
	$query->fields('textbook_companion_dependency_files');
	$query->condition('id', $form_state["values"]["dependency_id"]);
	$result = $query->execute();
	$row = $result->fetchObject();

  if($row->filename != $_FILES["files"]["name"][$file_form_name] && $_FILES["files"]["name"][$file_form_name]) {
    unlink($root_path . $dest_path . $row->filename);
  }

  foreach ($_FILES['files']['name'] as $file_form_name => $file_name)
  {
    if ($file_name)
    {
      /* 
       * uploading file 
       * file will be overwritten if same name
      */
      if (move_uploaded_file($_FILES['files']['tmp_name'][$file_form_name], $root_path . $dest_path . $_FILES['files']['name'][$file_form_name]))
      {
        /* updating uploaded file entry in the database */
        /*db_query(
          "UPDATE {textbook_companion_dependency_files} SET
          filename = '%s', filepath = '%s', filemime = '%s', filesize = %d,
          caption = '%s', description = '%s', timestamp = %s
          WHERE id = %d",
          $_FILES['files']['name'][$file_form_name],
          $dest_path . $_FILES['files']['name'][$file_form_name],
          $_FILES['files']['type'][$file_form_name],
          $_FILES['files']['size'][$file_form_name],
          $form_state['values'][$file_form_name . '_caption'],
          $form_state['values'][$file_form_name . '_description'],
          time(),
          $form_state["values"]["dependency_id"]
        );*/

	$query = db_update('textbook_companion_dependency_files');
	$query->fields(array(
  	'filename' => $_FILES['files']['name'][$file_form_name],
  	'filepath' =>  $dest_path . $_FILES['files']['name'][$file_form_name],
  	'filemime' =>  $_FILES['files']['type'][$file_form_name],
  	'filesize' => $_FILES['files']['size'][$file_form_name],
  	'caption' => $form_state['values'][$file_form_name . '_caption'],
  	'description' => $form_state['values'][$file_form_name . '_description'],
  	'timestamp' =>time(),
	));
	$query->condition('id', $form_state["values"]["dependency_id"]);
	$num_updated = $query->execute();

      
        drupal_set_message($file_name . ' uploaded successfully.', 'status');
        $dependency_ids[] = db_last_insert_id('textbook_companion_dependency_files', 'id');
        $dependency_names[] =  $_FILES['files']['name'][$file_form_name];
        $file_upload_counter++;
      } else {
        drupal_set_message('Error uploading dependency : ' . $dest_path . '/' . $_FILES['files']['name'][$file_form_name], 'error');
      }
    }
  }

  if ($file_upload_counter > 0)
  {
    drupal_set_message('Dependencies uploaded successfully.', 'status');
  
    /* sending email */
    $from = variable_get('textbook_companion_from_email', '');
    $bcc= variable_get('textbook_companion_emails', '');
    $cc=variable_get('textbook_companion_cc_emails', '');
    $params['dependency_uploaded']['user_id'] = $user->uid;
    $params['dependency_uploaded']['dependency_names'] = $dependency_names;
    $params['dependency_uploaded']['headers']=array('From'=>$from,'MIME-Version'=> '1.0',
    			'Content-Type'=> 'text/plain; charset=UTF-8; format=flowed; delsp=yes',
    			'Content-Transfer-Encoding' => '8Bit',
    			'X-Mailer'=> 'Drupal','Cc' => $cc, 'Bcc' => $bcc);

    $email_to = $user->mail;
    if (!drupal_mail('textbook_companion', 'dependency_uploaded', $email_to, language_default(), $params, $from, TRUE))
      drupal_set_message('Error sending email message.', 'error');
  }

  drupal_goto('textbook_companion/code/upload_dep');
}

function edit_dependency($dependency_id = 0) {
  if($dependency_id){
    $page_content = "";
    $page_content .= drupal_get_form("edit_dependency_form", $dependency_id);
    return $page_content;
  } else {
    drupal_goto("textbook_companion/code/upload_dep");
  }
}

/******************** delete dependency section ********************/

function delete_dependency($dependency_id = 0, $confirm = "") {
  global $user;

  /************************ start approve book details ************************/

  /*$proposal_q = db_query("SELECT * FROM {textbook_companion_proposal} WHERE uid = %d ORDER BY id DESC LIMIT 1", $user->uid);
  $proposal_data = db_fetch_object($proposal_q);*/

	$query = db_select('textbook_companion_proposal');
	$query->fields('textbook_companion_proposal');
	$query->condition('uid', $user->uid);
	$query->orderBy('id', 'DESC');
	$query->range(0, 1);
	$result = $query->execute();
	$proposal_data=	$result->fetchObject();

  if (!$proposal_data)
  {
    drupal_set_message("Please submit a " . l('proposal', 'book_proposal') . ".", 'error');
    drupal_goto('');
  }
  if ($proposal_data->proposal_status  != 1 && $proposal_data->proposal_status  != 4)
  {
    switch ($proposal_data->proposal_status )
    {
    case 0:
      drupal_set_message(t('We have already received your proposal. We will get back to you soon.'), 'status');
      drupal_goto('');
      return;
      break;
    case 2:
      drupal_set_message(t('Your proposal has been dis-approved. Please create another proposal ' . l('here', 'book_proposal') . '.'), 'error');
      drupal_goto('');
      return;
      break;
    case 3:
      drupal_set_message(t('Congratulations! You have completed your last book proposal. You have to create another proposal ' . l('here', 'book_proposal') . '.'), 'status');
      drupal_goto('');
      return;
      break;
    default:
       drupal_set_message(t('Invalid proposal state. Please contact site administrator for further information.'), 'error');
       drupal_goto('');
       return;
       break;
    }
  }

  /*$preference_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE proposal_id = %d AND approval_status = 1 LIMIT 1", $proposal_data->id);
  $preference_data = db_fetch_object($preference_q);*/

	$query = db_select('textbook_companion_preference');
	$query->fields('textbook_companion_preference');
	$query->condition('proposal_id', $proposal_data->id);
	$query->condition('approval_status', 1);
	$query->range(0, 1);
	$result = $query->execute();
	$preference_data =$result->fetchObject();


  if (!$preference_data)
  {
    drupal_set_message(t('Invalid Book Preference status. Please contact site administrator for further information.'), 'error');
    drupal_goto('');
    return;
  }
  /************************ end approve book details **************************/
  $page_content = "";
  if($dependency_id && $confirm == "yes") {
    /* removing the dependency file from filesystem */

    /*$query = "
      SELECT * FROM {textbook_companion_dependency_files}
      WHERE id = {$dependency_id}
    ";
    $result = db_query($query);
    $row = db_fetch_object($result);*/

	$query = db_select('textbook_companion_dependency_files');
	$query->fields('textbook_companion_dependency_files');
	$query->condition('id', $dependency_id);
	$result = $query->execute();
	$row=$result->fetchObject();

    if($preference_data->id == $row->preference_id) {
      $root_path = textbook_companion_path();
      $dest_path = $row->preference_id . '/';
      $dest_path .= 'DEPENDENCIES' . '/';
      unlink($root_path . $dest_path . $row->filename);

      /* deleting entry in textbook_companion_dependency_files */

      /*$query = "
        DELETE FROM {textbook_companion_dependency_files}
        WHERE id = {$dependency_id}
        ";
      db_query($query);*/

	$query = db_delete('textbook_companion_dependency_files');
	$query->condition('id', $dependency_id);
	$num_deleted = $query->execute();

      /* deleting entries from textbook_companion_example_dependency */

      /*$query = "
        DELETE FROM {textbook_companion_example_dependency}
        WHERE dependency_id = {$dependency_id}
        ";
      db_query($query);*/

	$query = db_delete('textbook_companion_example_dependency');
	$query->condition('dependency_id', $dependency_id);
	$num_deleted = $query->execute();

      drupal_set_message("Dependency deleted successfully.");
      drupal_goto("textbook_companion/code/upload_dep");
    } else {
      drupal_set_message("Cannot delete other users dependency.", "error");
      drupal_goto("textbook_companion/code/upload_dep");
    }
  } else if($dependency_id) {
    /*$query = "
      SELECT * FROM {textbook_companion_dependency_files}
      WHERE id = %d
    ";
    $result = db_query($query, $dependency_id);
    $row = db_fetch_object($result);*/

	$query = db_select('textbook_companion_dependency_files');
	$query->fields('textbook_companion_dependency_files');
	$query->condition('id', $dependency_id);
	$result = $query->execute();
	$row =$result->fetchObject();


    if($preference_data->id == $row->preference_id) {
      $page_content .= "Are you sure you want to delete this dependency?<br><br>";
      $page_content .= "Dependency filename: <b>{$row->filename}</b><br><br>";

      /* fetching the examples linked to this dependency */
      
	/*$query = "
        SELECT * FROM textbook_companion_example_dependency dep
        LEFT JOIN textbook_companion_example exa ON exa.id = dep.example_id
        WHERE dep.id = %d
      ";
      $result = db_query($query, $dependency_id);*/

	$query = db_select('textbook_companion_example_dependency', 'dep');
	$query->fields('dep');
	$query->leftJoin('textbook_companion_example', 'exa', 'exa.id = dep.example_id');
	$query->condition('dep.id', $dependency_id);
	$result = $query->execute();

      $list = "";
      while($row = $result->fetchObject()) {
        $list .= "<li>Example {$row->number}</li>";
      }
      if($list) {
        $page_content .= "List of examples linking to this dependency are:";
        $page_content .= "<ul>{$list}</ul>";
      }
      $page_content .= l("Delete dependency", "textbook_companion/code/delete_dep/{$dependency_id}/yes");
      $page_content .= " | ";
      $page_content .= l("Cancel", "textbook_companion/code/upload_dep");
    } else {
      drupal_set_message("Cannot delete other users dependency.", "error");
      drupal_goto("textbook_companion/code/upload_dep");
    }
  } else {
    drupal_goto("textbook_companion/code/upload_dep");
  }
  return $page_content;
}