Commit 39d0221a99e5deecc4b4cebe86e7ff93861945e9

Authored by Megan Watson
1 parent 52a54d3f

KTC-395

"Unable to compare content versions for a txt doc or an Open Office document"
Fixed. Changed the way it checks if open office is running.

Committed By: Megan Watson
Reviewed By: Conrad Vermeulen

git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@8188 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 86 additions and 27 deletions
bin/checkopenoffice.php
@@ -39,46 +39,105 @@ @@ -39,46 +39,105 @@
39 chdir(realpath(dirname(__FILE__))); 39 chdir(realpath(dirname(__FILE__)));
40 require_once('../config/dmsDefaults.php'); 40 require_once('../config/dmsDefaults.php');
41 41
42 -// Check if open office is running 42 +/*
  43 +Script checks if open office is running, if it isn't then it attempts to start it.
  44 +
  45 +Windows Vista always returns false if we try and check the host and port
  46 +so for windows we use the win32 service status checks.
  47 +
  48 +*/
  49 +
  50 +// Check if the calling function requires a return value
  51 +$sGiveOutput = (isset($argv[1]) && $argv[1] == 'output') ? true : false;
  52 +
  53 +// First we check the host:port to see if open office is running
43 $sCheckOO = SearchHelper::checkOpenOfficeAvailablity(); 54 $sCheckOO = SearchHelper::checkOpenOfficeAvailablity();
44 55
45 -// If it is running - exit, we don't need to do anything otherwise start it  
46 -if(!empty($sCheckOO)){ 56 +if(empty($sCheckOO)){
  57 + // If the check returns empty then it is available on that port so we exit
  58 + if($sGiveOutput){
  59 + echo 1;
  60 + }
  61 + exit;
  62 +}
  63 +
  64 +// Open office appears not to be running.
  65 +
  66 +if(OS_WINDOWS){
  67 + // If this is vista, it might be being blocked, so we query the service
  68 + $OOService = 'ktopenoffice';
  69 + $result = win32_query_service_status($OOService);
  70 +
  71 + if(is_array($result)){
  72 + $iProcessId = $result['ProcessId'];
  73 + if(!empty($iProcessId) && $iProcessId != 0){
  74 + // If there is a process id (PID) then open office is running so we exit
  75 + if($sGiveOutput){
  76 + echo 1;
  77 + }
  78 + exit;
  79 + }
  80 + }
47 81
  82 + // Service is not running - log it and attempt to start
48 $default->log->debug('Check Open Office Task: Open office service is not running... trying to start it.'); 83 $default->log->debug('Check Open Office Task: Open office service is not running... trying to start it.');
49 84
50 - if(OS_WINDOWS){ 85 + // Use the win32 service start
  86 + $result2 = win32_start_service($OOService);
51 87
52 - // Check the path first  
53 - $sPath = realpath('../../bin/winserv.exe'); 88 + if($result2 == 0){
  89 + // Service started successfully
  90 + $default->log->debug('Check Open Office Task: Open office service started.');
  91 + if($sGiveOutput){
  92 + echo 1;
  93 + }
  94 + exit;
  95 + }
  96 +
  97 + $default->log->debug('Check Open Office Task: Open office service could not be started. Error code '.$result2);
54 98
55 - if(file_exists($sPath)){  
56 - $sCmd = "\"$sPath\" start ktopenoffice";  
57 - KTUtil::pexec($sCmd);  
58 - exit; 99 +
  100 + // Attempt using the dmsctl batch script
  101 + $sPath = realpath('../../bin/dmsctl.bat');
  102 + if(file_exists($sPath)){
  103 + $sCmd = "\"$sPath\" start";
  104 + $res = KTUtil::pexec($sCmd);
  105 +
  106 + $default->log->debug('Check Open Office Task: Attempted start using dmsctl.bat.');
  107 + if($sGiveOutput){
  108 + echo 2;
59 } 109 }
60 - // If that doesn't work, check for the all start  
61 - $sPath = realpath('../../bin/dmsctl.bat');  
62 - if(file_exists($sPath)){  
63 - $sCmd = "\"$sPath\" start";  
64 - KTUtil::pexec($sCmd);  
65 - exit; 110 + exit;
  111 + }else{
  112 + $default->log->debug('Check Open Office Task: Can\'t find dmsctl.bat, this may be a source install.');
  113 + if($sGiveOutput){
  114 + echo 0;
  115 + }
  116 + exit;
  117 + }
  118 +}else{
  119 + // If the OS is Unix or Linux
  120 + $sPath = realpath('../../dmsctl.sh');
  121 + if(file_exists($sPath)){
  122 + $sCmd = "\"$sPath\" start";
  123 + KTUtil::pexec($sCmd);
  124 +
  125 + $default->log->debug('Check Open Office Task: Attempted start using dmsctl.sh.');
  126 + if($sGiveOutput){
  127 + echo 2;
66 } 128 }
67 - // Might be a source install ... ???  
68 - $default->log->debug('Check Open Office Task: Can\'t start Open office, this may be a source install.');  
69 exit; 129 exit;
70 }else{ 130 }else{
71 - $sPath = realpath('../../dmsctl.sh');  
72 - if(file_exists($sPath)){  
73 - $sCmd = "\"$sPath\" start";  
74 - KTUtil::pexec($sCmd);  
75 - exit; 131 + $default->log->debug('Check Open Office Task: Can\'t find dmsctl.sh, this may be a source install.');
  132 + if($sGiveOutput){
  133 + echo 0;
76 } 134 }
77 - // might be a source install  
78 - $default->log->debug('Check Open Office Task: Can\'t start Open office, this may be a source install.');  
79 exit; 135 exit;
80 - } 136 + }
  137 +}
  138 +$default->log->debug('Check Open Office Task: Can\'t start Open office, this may be a source install.');
  139 +if($sGiveOutput){
  140 + echo 0;
81 } 141 }
82 -  
83 exit; 142 exit;
84 ?> 143 ?>
85 \ No newline at end of file 144 \ No newline at end of file