<?php /** * ownCloud * * @author Jakob Sack * @copyright 2012 Jakob Sack owncloud@jakobsack.de * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see <http://www.gnu.org/licenses/>. * */ // Unfortunately we need this class for shutdown function class my_temporary_cron_class { public static $sent = false; } function handleUnexpectedShutdown() { if( !my_temporary_cron_class::$sent ){ if( OC::$CLI ){ echo 'Unexpected error!'.PHP_EOL; } else{ OC_JSON::error( array( 'data' => array( 'message' => 'Unexpected error!'))); } } } $RUNTIME_NOSETUPFS = true; require_once('lib/base.php'); // Don't do anything if ownCloud has not been installed if( !OC_Config::getValue( 'installed', false )){ exit( 0 ); } // Handle unexpected errors register_shutdown_function('handleUnexpectedShutdown'); // Exit if background jobs are disabled! $appmode = OC_Appconfig::getValue( 'core', 'backgroundjobs_mode', 'ajax' ); if( $appmode == 'none' ){ my_temporary_cron_class::$sent = true; if( OC::$CLI ){ echo 'Background Jobs are disabled!'.PHP_EOL; } else{ OC_JSON::error( array( 'data' => array( 'message' => 'Background jobs disabled!'))); } exit( 1 ); } if( OC::$CLI ){ if( $appmode != 'cron' ){ OC_Appconfig::setValue( 'core', 'backgroundjobs_mode', 'cron' ); } // check if backgroundjobs is still running $pid = OC_Appconfig::getValue( 'core', 'backgroundjobs_pid', false ); if( $pid !== false ){ // FIXME: check if $pid is still alive (*nix/mswin). if so then exit } // save pid OC_Appconfig::setValue( 'core', 'backgroundjobs_pid', getmypid()); // Work OC_BackgroundJob_Worker::doAllSteps(); } else{ if( $appmode == 'cron' ){ OC_JSON::error( array( 'data' => array( 'message' => 'Backgroundjobs are using system cron!'))); } else{ OC_BackgroundJob_Worker::doNextStep(); OC_JSON::success(); } } my_temporary_cron_class::$sent = true; exit();