FOSSology  4.4.0
Open Source License Compliance by Open Source Software
fo-restore.php
1 #!/usr/bin/php
2 <?php
3 /*
4  SPDX-FileCopyrightText: © 2009 Hewlett-Packard Development Company, L.P.
5 
6  SPDX-License-Identifier: GPL-2.0-only
7 */
8 /**************************************************************
9  fo-restore
10 
11  Implement restore process.
12 
13  @return 0 for success, 1 for failure.
14  *************************************************************/
15 /* Have to set this or else plugins will not load. */
16 $GlobalReady = 1;
17 /* Load all code */
18 require_once (dirname(__FILE__) . '/../php/pathinclude.php');
19 global $WEBDIR;
20 $UI_CLI = 1; /* this is a command-line program */
21 require_once ("$WEBDIR/common/common.php");
22 cli_Init();
23 error_reporting(E_NOTICE & E_STRICT);
24 
25 
26 /*********************************************************
27  AddReunpackjob(): Given an uploadpk, add a reunpack job.
28  Return $jobpk if Success, or return fail string
29 *********************************************************/
30 
31 function AddReunpackjob ($uploadpk,$Depends=NULL,$priority=0)
32 {
33  global $DB;
34  if (empty($DB)) {
35  return;
36  }
37  $Job_name = str_replace("'", "''", "unpack");
38 
39  $SQLInsert = "INSERT INTO job
40  (job_queued,job_priority,job_name,job_upload_fk) VALUES
41  (now(),'$priority','$Job_name','$uploadpk');";
42 
43  $SQLcheck = "SELECT job_pk FROM job WHERE job_upload_fk = '$uploadpk' AND job_name = '$Job_name' AND job_user_fk is NULL;";
44  $Results = $DB->Action($SQLcheck);
45  if (empty($Results)) {
46  $DB->Action($SQLInsert);
47  $SQLcheck = "SELECT job_pk FROM job WHERE job_upload_fk = '$uploadpk' AND job_name = '$Job_name' AND job_user_fk is NULL;";
48  $Results = $DB->Action($SQLcheck);
49  }
50  $jobpk = $Results[0]['job_pk'];
51 
52  if (empty($jobpk) || ($jobpk < 0)) { return("Failed to insert job record! $SQLInsert"); }
53  if (!empty($Depends) && !is_array($Depends)) { $Depends = array($Depends); }
54 
55  /* job "unpack" has jobqueue item "unpack" */
56  $jqargs = "SELECT pfile.pfile_sha1 || '.' || pfile.pfile_md5 || '.' || pfile.pfile_size AS pfile,
57  upload_pk, pfile_fk
58  FROM upload
59  INNER JOIN pfile ON upload.pfile_fk = pfile.pfile_pk
60  WHERE upload.upload_pk = '$uploadpk';";
61  $jobqueuepk = JobQueueAdd($jobpk,"unpack",$jqargs,"no","pfile",$Depends,1);
62  if (empty($jobqueuepk)) { return("Failed to insert item into job queue"); }
63 
64  return ($jobqueuepk);
65 }/* AddReunpackjob() */
66 
67 
68 global $DB;
69 if (empty($DB)) {
70  return;
71 }
72 $SQL = "SELECT job_pk,jq_pk,job_upload_fk FROM jobqueue
73  INNER JOIN job ON jq_job_fk = job_pk
74  WHERE jq_end_bits = 0 AND jq_starttime IS NOT NULL AND jq_endtime IS NULL AND job_name NOT IN('unpack','wget','fo_notify')
75 ORDER BY job_Pk;";
76 $Results = $DB->Action($SQL);
77 $i = 0;
78 while(!empty($Results[$i]['job_pk'])) {
79  $jq_parent = AddReunpackjob($Results[$i]['job_upload_fk']);
80  print $jq_parent;
81  $jq_child = $Results[$i]['jq_pk'];
82  JobQueueAddDependency($jq_child,$jq_parent);
83  $i++;
84 }
85 return (0);
cli_Init()
Initialize the fossology environment for CLI use. This routine loads the plugins so they can be use b...
Definition: common-cli.php:25
JobQueueAdd($job_pk, $jq_type, $jq_args, $jq_runonpfile, $Depends, $host=NULL, $jq_cmd_args=NULL)
Insert a jobqueue + jobdepends records.
Definition: common-job.php:157