Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated module code #1

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion README.md
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1 +1 @@
# freecad_lab_migration
Lab migration Module for FOSSEE, IIT Bombay written for Drupal 9,10
9 changes: 9 additions & 0 deletions config/install/lab_migration.settings.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
lab_migration_from_email: null
lab_migration_emails: ''
lab_migration_cc_emails: ''
lab_migration_source_extensions: ''
lab_migration_result_extensions: ''
lab_migration_xcos_extensions: ''
lab_migration_dependency_extensions: ''
lab_migration_pdf_extensions: ''
lab_migration_syllabus_file_extensions: ''
22 changes: 22 additions & 0 deletions config/schema/lab_migration.schema.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
lab_migration.settings:
type: mapping
label: Settings
mapping:
lab_migration_from_email:
type: 'NULL'
lab_migration_emails:
type: string
lab_migration_cc_emails:
type: string
lab_migration_source_extensions:
type: string
lab_migration_result_extensions:
type: string
lab_migration_xcos_extensions:
type: string
lab_migration_dependency_extensions:
type: string
lab_migration_pdf_extensions:
type: string
lab_migration_syllabus_file_extensions:
type: string
241 changes: 241 additions & 0 deletions general_deletion.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
<?php

/******************************************************************************/
/****************************** DELETION FUNCTIONS ****************************/
/******************************************************************************/
function lab_migration_delete_solution($solution_id)
{
$user = \Drupal::currentUser();
$root_path = lab_migration_path();
$status = TRUE;
$query = \Drupal::database()->select('lab_migration_solution');
$query->fields('lab_migration_solution');
$query->condition('id', $solution_id);
$solution_q = $query->execute();
$solution_data = $solution_q->fetchObject();
if (!$solution_data)
{
\Drupal::messenger()->addError(t('Invalid solution.'));
return FALSE;
}
$query = \Drupal::database()->select('lab_migration_experiment');
$query->fields('lab_migration_experiment');
$query->condition('id', $solution_data->experiment_id);
$experiment_q = $query->execute();
$experiment_data = $experiment_q->fetchObject();
$query = \Drupal::database()->select('lab_migration_proposal');
$query->fields('lab_migration_proposal');
$query->condition('id', $experiment_data->proposal_id);
$proposal_q = $query->execute();
$proposal_data = $proposal_q->fetchObject();
if (!$experiment_data)
{
\Drupal::messenger()->addError(t('Invalid experiment.'));
return FALSE;
}
/* deleting solution files */
$query = \Drupal::database()->select('lab_migration_solution_files');
$query->fields('lab_migration_solution_files');
$query->condition('solution_id', $solution_id);
$solution_files_q = $query->execute();
while ($solution_files_data = $solution_files_q->fetchObject())
{
$ex_path = $proposal_data->directory_name . '/' . $solution_files_data->filepath;
$dir_path = $root_path . $ex_path;
if (!file_exists($dir_path))
{
$status = FALSE;
\Drupal::messenger()->addError(t('Error deleting !file. File does not exists.', array('!file' => $dir_path)));
continue;
}
/* removing solution file */
if (!unlink($dir_path))
{
$status = FALSE;
\Drupal::messenger()->addError(t('Error deleting !file', array('!file' => $dir_path)));

/* sending email to admins */
$email_to = \Drupal::config('lab_migration.settings')->get('lab_migration_emails');
$from = \Drupal::config('lab_migration.settings')->get('lab_migration_from_email');
$bcc="";
$cc=\Drupal::config('lab_migration.settings')->get('lab_migration_cc_emails');
$param['standard']['subject'] = "[ERROR] Error deleting example file";
$param['standard']['body'] = "Error deleting solution files by " . $user->uid . " at " . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . " :
solution id : " . $solution_id . "
file id : " . $solution_files_data->id . "
file path : " . $solution_files_data->filepath."
PDF path : " . $PdfStatus;
$param['standard']['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);

if (!drupal_mail('lab_migration', 'standard', $email_to, language_default(), $param, $from, TRUE))
\Drupal::messenger()->addError('Error sending email message.');
}
else {
/* deleting example files database entries */
\Drupal::database()->delete('lab_migration_solution_files')->condition('id', $solution_files_data->id)->execute();
}
}

if (!$status)
return FALSE;
$query = \Drupal::database()->select('lab_migration_solution');
$query->fields('lab_migration_solution');
$query->condition('id', $solution_id);
$solution_q = $query->execute();
$solution_data = $solution_q->fetchObject();
if (!$solution_data)
{
\Drupal::messenger()->addError(t('Invalid solution.'));
return FALSE;
}
$query = \Drupal::database()->select('lab_migration_experiment');
$query->fields('lab_migration_experiment');
$query->condition('id', $solution_data->experiment_id);
$experiment_q = $query->execute();
$experiment_data = $experiment_q->fetchObject();
$query = \Drupal::database()->select('lab_migration_proposal');
$query->fields('lab_migration_proposal');
$query->condition('id', $experiment_data->proposal_id);
$proposal_q = $query->execute();
$proposal_data = $proposal_q->fetchObject();
$dir_path = $root_path . $proposal_data->directory_name . '/EXP' . $experiment_data->number . '/CODE' . $solution_data->code_number;
if (is_dir($dir_path))
{
if (!rmdir($dir_path))
{
\Drupal::messenger()->addError(t('Error deleting folder !folder', array('!folder' => $dir_path)));

/* sending email to admins */
$email_to = \Drupal::config('lab_migration.settings')->get('lab_migration_emails');
$from = \Drupal::config('lab_migration.settings')->get('lab_migration_from_email');
$bcc="";
$cc=\Drupal::config('lab_migration.settings')->get('lab_migration_cc_emails');


$param['standard']['subject'] = "[ERROR] Error deleting folder";
$param['standard']['body'] = "Error deleting folder " . $dir_path . " by " . $user->uid . " at " . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$param['standard']['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);

if (!drupal_mail('lab_migration', 'standard', $email_to, language_default(), $param, $from, TRUE))
\Drupal::messenger()->addError('Error sending email message.');
return FALSE;
}
}
else
{
\Drupal::messenger()->addError(t('Cannot delete solution folder. !folder does not exists.', array('!folder' => $dir_path)));
return FALSE;
}

/* deleting solution dependency and solution database entries */
\Drupal::database()->delete('lab_migration_solution_dependency')->condition('solution_id', $solution_id)->execute();
\Drupal::database()->delete('lab_migration_solution')->condition('id', $solution_id)->execute();
return $status;
}

function lab_migration_delete_experiment($experiment_id)
{
$status = TRUE;
$root_path = lab_migration_path();
$query = \Drupal::database()->select('lab_migration_experiment');
$query->fields('lab_migration_experiment');
$query->condition('id', $experiment_id);
$experiment_q = $query->execute();
$experiment_data = $experiment_q->fetchObject();
$query = \Drupal::database()->select('lab_migration_proposal');
$query->fields('lab_migration_proposal');
$query->condition('id', $experiment_data->proposal_id);
$proposal_q = $query->execute();
$proposal_data = $proposal_q->fetchObject();
if (!$experiment_data)
{
\Drupal::messenger()->addError('Invalid experiment.');
return FALSE;
}
/* deleting solutions */
$query = \Drupal::database()->select('lab_migration_solution');
$query->fields('lab_migration_solution');
$query->condition('experiment_id', $experiment_id);
$solution_q = $query->execute();
$delete_exp_folder = FALSE;
while ($solution_data = $solution_q->fetchObject())
{
$delete_exp_folder = TRUE;
if (!lab_migration_delete_solution($solution_data->id))
$status = FALSE;
}
if (!$delete_exp_folder)
{
return TRUE;
}
if ($status)
{
$dir_path = $root_path . $proposal_data->directory_name . '/EXP' . $experiment_data->number;
if (is_dir($dir_path))
{
$res = rmdir($dir_path);
if (!$res)
{
\Drupal::messenger()->addError(t('Error deleting experiment folder !folder', array('!folder' => $dir_path)));
/* sending email to admins */
$email_to = \Drupal::config('lab_migration.settings')->get('lab_migration_emails');
$from = \Drupal::config('lab_migration.settings')->get('lab_migration_from_email');
$bcc="";
$cc=\Drupal::config('lab_migration.settings')->get('lab_migration_cc_emails');
$param['standard']['subject'] = "[ERROR] Error deleting experiment folder";
$param['standard']['body'] = "Error deleting folder " . $dir_path;
$param['standard']['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);
if (!drupal_mail('lab_migration', 'standard', $email_to, language_default(), $param,$from, TRUE))
\Drupal::messenger()->addError('Error sending email message.');
return FALSE;
}
else
{
return TRUE;
}
}
else {
\Drupal::messenger()->addError(t('Cannot delete experiment folder. !folder does not exists.', array('!folder' => $dir_path)));
return FALSE;
}
}
return FALSE;
}

function lab_migration_delete_lab($lab_id)
{
$status = TRUE;
$root_path = lab_migration_path();
$query = \Drupal::database()->select('lab_migration_proposal');
$query->fields('lab_migration_proposal');
$query->condition('id', $lab_id);
$proposal_q = $query->execute();
$proposal_data = $proposal_q->fetchObject();
if (!$proposal_data)
{
\Drupal::messenger()->addError('Invalid Lab.');
return FALSE;
}
/* delete experiments */
$query = \Drupal::database()->select('lab_migration_experiment');
$query->fields('lab_migration_experiment');
$query->condition('proposal_id', $proposal_data->id);
$experiment_q = $query->execute();
while ($experiment_data = $experiment_q->fetchObject())
{
if (!lab_migration_delete_experiment($experiment_data->id))
{
$status = FALSE;
}
}
return $status;
}
6 changes: 6 additions & 0 deletions lab_migration.info.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
name: 'Lab Migration'
description: 'IIT Bombay Lab Migration project'
package: IITB
core: 8.x
type: module
dependencies: { }
59 changes: 59 additions & 0 deletions lab_migration.links.menu.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
lab_migration.proposal_form:
route_name: lab_migration.proposal_form
title: 'Lab Migration Proposal'
description: 'Lab Migration Proposal'
lab_migration.proposal_pending:
route_name: lab_migration.proposal_pending
title: 'LM Manage Lab Proposals'
description: 'Manage Lab Migration Proposals'
lab_migration.proposal_open:
route_name: lab_migration.proposal_open
title: 'Lab Migration Solve'
description: 'Lab Migration Proposal Open For Solution'
lab_migration.code_approval:
route_name: lab_migration.code_approval
title: 'LM Manage Code Approval'
description: 'Manage Code Approval'
lab_migration.list_experiments:
route_name: lab_migration.list_experiments
title: 'Code Submission'
description: 'Code Submission'
lab_migration.completed_labs_all:
route_name: lab_migration.completed_labs_all
title: 'Completed Labs'
lab_migration.labs_progress_all:
route_name: lab_migration.labs_progress_all
title: 'Labs in Progress'
lab_migration.run_form:
route_name: lab_migration.run_form
title: 'Download Codes'
lab_migration.settings_form:
route_name: lab_migration.settings_form
title: 'Lab Migration Settings'
description: 'Lab Migration Settings'
lab_migration._list_all_lm_certificates:
route_name: lab_migration._list_all_lm_certificates
title: 'List Of All Certificates LM'
description: 'List of all available lab migration certificates'
lab_migration.certificate_form:
route_name: lab_migration.certificate_form
title: 'Create Certificate'
lab_migration.certificate_edit_form:
route_name: lab_migration.certificate_edit_form
title: 'Edit Proposer Certificate'
parent: lab_migration.certificate_form
lab_migration.certificate_participation_form:
route_name: lab_migration.certificate_participation_form
title: 'Create Certificates for Participation'
lab_migration.certificate_participation_edit_form:
route_name: lab_migration.certificate_participation_edit_form
title: 'Edit Certificates for Participation'
parent: lab_migration.certificate_participation_form
lab_migration.generate_lm_pdf:
route_name: lab_migration.generate_lm_pdf
title: 'Download Certificate'
description: 'Download Certificate'
parent: lab_migration._list_all_lm_certificates
lab_migration.verify_lab_migration_certificates:
route_name: lab_migration.verify_lab_migration_certificates
title: 'Lab Migration Certificate Verification'
45 changes: 45 additions & 0 deletions lab_migration.links.task.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
lab_migration.proposal_pending:
route_name: lab_migration.proposal_pending
title: 'Pending Proposals'
weight: 1
base_route: lab_migration.proposal_pending
lab_migration.solution_proposal_pending:
route_name: lab_migration.solution_proposal_pending
title: 'Pending Solution Proposals'
weight: 2
base_route: lab_migration.proposal_pending
lab_migration.proposal_pending_solution:
route_name: lab_migration.proposal_pending_solution
title: 'Pending Solution'
weight: 3
base_route: lab_migration.proposal_pending
lab_migration.proposal_all:
route_name: lab_migration_proposal_all
title: 'All Proposals'
weight: 4
base_route: lab_migration_proposal_pending
lab_migration.category_all:
route_name: lab_migration.category_all
title: Category
weight: 5
base_route: lab_migration.proposal_pending
lab_migration.code_approval:
route_name: lab_migration.code_approval
title: 'Code Approval'
weight: 1
base_route: lab_migration.code_approval
lab_migration.bulk_approval_form:
route_name: lab_migration.bulk_approval_form
title: 'Bulk Manage'
weight: 2
base_route: lab_migration.code_approval
lab_migration.list_experiments:
route_name: lab_migration.list_experiments
title: 'List Experiments'
weight: 1
base_route: lab_migration_list_experiments
lab_migration.upload_code_form:
route_name: lab_migration.upload_code_form
title: 'Code Submission'
weight: 2
base_route: lab_migration.code_approval
2 changes: 2 additions & 0 deletions lab_migration.module
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<?php

Loading