1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-02 20:57:26 +02:00

cron administration clean up

This commit is contained in:
secretr
2010-11-15 16:32:33 +00:00
parent aa0d2e8da4
commit ecfebe6284

View File

@@ -1,37 +1,31 @@
<?php <?php
/* /*
+ ----------------------------------------------------------------------------+ * e107 website system
| e107 website system *
| * Copyright (C) 2008-2010 e107 Inc (e107.org)
| Copyright (C) 2008-2010 e107 Inc * Released under the terms and conditions of the
| http://e107.org/ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
| *
| * Cron Administration
| Released under the terms and conditions of the *
| GNU General Public License (http://gnu.org/). * $URL$
| * $Id$
| $Source: /cvs_backup/e107_0.8/e107_admin/cron.php,v $ *
| $Revision$ */
| $Date$
| $Author$
+----------------------------------------------------------------------------+
*/
/** /**
* *
* @package e107 * @package e107
* @subpackage admin * @subpackage admin
* @version $Revision$ * @version $Id$
* @author $Author$
* Admin-related functions for cron (Scheduler) management * Admin-related functions for cron (Scheduler) management
*/ */
require_once('../class2.php'); require_once('../class2.php');
if (!getperms('U')) if (!getperms('U'))
{ {
header('location:'.e_BASE.'index.php'); header('location:'.e_BASE.'index.php');
exit; exit;
} }
include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/admin/lan_'.e_PAGE); include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/admin/lan_'.e_PAGE);
@@ -39,171 +33,155 @@ include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/admin/lan_'.e_PAGE);
$e_sub_cat = 'cron'; $e_sub_cat = 'cron';
require_once('auth.php'); require_once('auth.php');
require_once (e_HANDLER.'message_handler.php'); $frm = e107::getForm();
require_once(e_HANDLER.'form_handler.php'); $cron = new cron();
$frm = new e_form(true);
$cron = new cron;
require_once(e_ADMIN.'footer.php'); require_once(e_ADMIN.'footer.php');
exit; exit;
class cron class cron
{ {
var $coreCrons = array(); protected $coreCrons = array();
var $cronAction; protected $cronAction;
var $e_cron = array(); protected $e_cron = array();
function cron() public function __construct()
{ {
global $pref; $pref = e107::getPref();
$mes = $mes = e107::getMessage(); $mes = e107::getMessage();
$this->cronAction = e_QUERY; $this->cronAction = e_QUERY;
// The 'available' flag only gives the option to configure the cron if the underlying feature is enabled // The 'available' flag only gives the option to configure the cron if the underlying feature is enabled
$this->coreCrons['_system'] = array( $this->coreCrons['_system'] = array(
0 => array('name' => 'Test Email', 'function' => 'sendEmail', 'description' => 'Send a test email to '.$pref['siteadminemail'].'<br />Recommended to test the scheduling system.'), 0 => array('name' => 'Test Email', 'function' => 'sendEmail', 'description' => 'Send a test email to '.$pref['siteadminemail'].'<br />Recommended to test the scheduling system.'),
1 => array('name' => 'Mail Queue', 'function' => 'procEmailQueue', 'description' => 'Process mail queue'), 1 => array('name' => 'Mail Queue', 'function' => 'procEmailQueue', 'description' => 'Process mail queue'),
2 => array('name' => 'Mail Bounce Check', 'function' => 'procEmailBounce', 'description' => 'Check for bounced emails', 'available' => vartrue($pref['mail_bounce_auto'])), 2 => array('name' => 'Mail Bounce Check', 'function' => 'procEmailBounce', 'description' => 'Check for bounced emails', 'available' => vartrue($pref['mail_bounce_auto'])),
// 1 => array('name'=>'User Purge', 'function' => 'userPurge', 'description'=>'Purge Unactivated Users'), // 1 => array('name'=>'User Purge', 'function' => 'userPurge', 'description'=>'Purge Unactivated Users'),
// 2 => array('name'=>'User UnActivated', 'function' => 'userUnactivated', 'description'=>'Resend activation email to unactivated users.'), // 2 => array('name'=>'User UnActivated', 'function' => 'userUnactivated', 'description'=>'Resend activation email to unactivated users.'),
// 3 => array('name'=>'News Sticky', 'function' => 'newsPurge', 'description'=>'Remove Sticky News Items') // 3 => array('name'=>'News Sticky', 'function' => 'newsPurge', 'description'=>'Remove Sticky News Items')
); );
if (!vartrue($pref['e_cron_pwd']))
if(!vartrue($pref['e_cron_pwd'])) {
{
$pwd = $this->setCronPwd(); $pwd = $this->setCronPwd();
} }
if(isset($_POST['submit'])) if (isset($_POST['submit']))
{ {
$this->cronSave(); $this->cronSave();
} }
$this->lastRefresh(); $this->lastRefresh();
$this->cronLoad(); $this->cronLoad();
if(isset($_POST['save_prefs'])) if (isset($_POST['save_prefs']))
{ {
$this -> cronSavePrefs(); $this->cronSavePrefs();
} }
if(isset($_POST['execute'])) if (isset($_POST['execute']))
{ {
$class_func = key($_POST['execute']); $class_func = key($_POST['execute']);
$this -> cronExecute($class_func); $this->cronExecute($class_func);
} }
// Set Core Cron Options. // Set Core Cron Options.
// These core functions need to be put into e_BASE/cron.php ie. news_purge()
// These core functions need to be put into e_BASE/cron.php ie. news_purge() if ($this->cronAction == "" || $this->cronAction == "main")
if($this->cronAction == "" || $this->cronAction == "main")
{ {
$this -> cronRenderPage(); $this->cronRenderPage();
} }
if($this->cronAction == "pref") if ($this->cronAction == "pref")
{ {
$this -> cronRenderPrefs(); $this->cronRenderPrefs();
} }
} }
function lastRefresh() function lastRefresh()
{ {
global $pref; $pref = e107::getPref();
e107::getCache()->CachePageMD5 = '_'; e107::getCache()->CachePageMD5 = '_';
$lastload = e107::getCache()->retrieve('cronLastLoad',FALSE,TRUE,TRUE); $lastload = e107::getCache()->retrieve('cronLastLoad', FALSE, TRUE, TRUE);
$mes = e107::getMessage(); $mes = e107::getMessage();
$ago = (time() - $lastload); $ago = (time() - $lastload);
$active = ($ago < 901) ? TRUE : FALSE; $active = ($ago < 901) ? TRUE : FALSE;
$status = ($active) ? LAN_ENABLED : LAN_DISABLED; // "Enabled" : "Offline"; $status = ($active) ? LAN_ENABLED : LAN_DISABLED; // "Enabled" : "Offline";
$mins = floor ($ago / 60); $mins = floor($ago / 60);
$secs = $ago % 60; $secs = $ago % 60;
$lastRun = ($mins) ? $mins." minutes and ".$secs." seconds ago." : $secs." seconds ago."; $lastRun = ($mins) ? $mins." minutes and ".$secs." seconds ago." : $secs." seconds ago.";
$lastRefresh = ($ago < 10000) ? $lastRun : 'Never'; $lastRefresh = ($ago < 10000) ? $lastRun : 'Never';
$mes->add("Status: <b>".$status."</b>", E_MESSAGE_INFO); $mes->add("Status: <b>".$status."</b>", E_MESSAGE_INFO);
// print_a($pref['e_cron_pref']); // print_a($pref['e_cron_pref']);
if ($pref['e_cron_pref']) // grab cron
if($pref['e_cron_pref']) // grab cron
{ {
foreach($pref['e_cron_pref'] as $func=>$cron) foreach ($pref['e_cron_pref'] as $func => $cron)
{ {
if($cron['active']==1) if ($cron['active'] == 1)
{ {
$list[$func] = $cron; $list[$func] = $cron;
} }
} }
} }
$mes->add("Active Crons: <b>".count($list)."</b>", E_MESSAGE_INFO); $mes->add("Active Crons: <b>".count($list)."</b>", E_MESSAGE_INFO);
$mes->add("Last cron refresh: ".$lastRefresh, E_MESSAGE_INFO); $mes->add("Last cron refresh: ".$lastRefresh, E_MESSAGE_INFO);
//FIXME: for Windows, the is_executable() function only checks the file //FIXME: for Windows, the is_executable() function only checks the file
// extensions of exe, com, bat and cmd. // extensions of exe, com, bat and cmd.
if(!is_executable(e_BASE."cron.php")) if (!is_executable(e_BASE."cron.php"))
{ {
$mes->add("Please CHMOD /cron.php to 755" , E_MESSAGE_WARNING); $mes->add("Please CHMOD /cron.php to 755", E_MESSAGE_WARNING);
} }
elseif(!$active) elseif (!$active)
{ {
$setpwd_message = "Use the following Cron Command: <b style='color:black'>".$_SERVER['DOCUMENT_ROOT'].e_HTTP."cron.php ".$pref['e_cron_pwd']."</b><br /> $setpwd_message = "Use the following Cron Command: <b style='color:black'>".$_SERVER['DOCUMENT_ROOT'].e_HTTP."cron.php ".$pref['e_cron_pwd']."</b><br />
Using your server control panel (eg. cPanel,Plesk etc.) please create a crontab to run this command on your server every minute."; Using your server control panel (eg. cPanel,Plesk etc.) please create a crontab to run this command on your server every minute.";
$mes->add($setpwd_message, E_MESSAGE_INFO); $mes->add($setpwd_message, E_MESSAGE_INFO);
} }
} }
function cronName($classname, $method)
function cronName($classname,$method)
{
$tp = e107::getParser();
foreach($this->e_cron as $class=>$val)
{ {
$tp = e107::getParser();
if($class == $classname)
foreach ($this->e_cron as $class => $val)
{ {
foreach($val as $func)
if ($class == $classname)
{ {
if($func['function'] == $method) foreach ($val as $func)
{ {
return $tp->toHtml($func['name']); if ($func['function'] == $method)
{
return $tp->toHtml($func['name']);
}
} }
} }
} }
} }
}
function cronExecute($class_func) function cronExecute($class_func)
{ {
//TODO LANs //TODO LANs
list($class_name,$method_name) = explode("__",$class_func); list($class_name, $method_name) = explode("__", $class_func);
$mes = e107::getMessage(); $mes = e107::getMessage();
$taskName = $class_name; $taskName = $class_name;
if($class_name =='_system') if ($class_name == '_system')
{ {
require_once(e_HANDLER.'cron_class.php'); require_once(e_HANDLER.'cron_class.php');
} }
@@ -212,14 +190,14 @@ function cronName($classname,$method)
require_once(e_PLUGIN.$class_name.'/e_cron.php'); require_once(e_PLUGIN.$class_name.'/e_cron.php');
} }
$class_name .= '_cron'; $class_name .= '_cron';
$status = $this->cronExecuteMethod($class_name,$method_name) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR; $status = $this->cronExecuteMethod($class_name, $method_name) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
$mes->add("Running <b>".$this->cronName($taskName,$method_name)."</b>", $status); $mes->add("Running <b>".$this->cronName($taskName, $method_name)."</b>", $status);
} }
function cronSavePref() function cronSavePref()
{ {
// Store the USERID with the password. // Store the USERID with the password.
// This way only the one password is needed, and the user login can be looked up in e_base/cron.php // This way only the one password is needed, and the user login can be looked up in e_base/cron.php
} }
@@ -227,92 +205,91 @@ function cronName($classname,$method)
function cronSave() function cronSave()
{ {
global $pref; global $pref;
$mes = e107::getMessage(); $mes = e107::getMessage();
$activeCount = 0; $activeCount = 0;
foreach($_POST['cron'] as $key=>$val) foreach ($_POST['cron'] as $key => $val)
{ {
if(!$val['active']) if (!$val['active'])
{ {
$val['active'] = 0; $val['active'] = 0;
} }
else else
{ {
$activeCount++; $activeCount++;
} }
$t['minute'] = implode(",",$_POST['tab'][$key]['minute']); $t['minute'] = implode(",", $_POST['tab'][$key]['minute']);
$t['hour'] = implode(",",$_POST['tab'][$key]['hour']); $t['hour'] = implode(",", $_POST['tab'][$key]['hour']);
$t['day'] = implode(",",$_POST['tab'][$key]['day']); $t['day'] = implode(",", $_POST['tab'][$key]['day']);
$t['month'] = implode(",",$_POST['tab'][$key]['month']); $t['month'] = implode(",", $_POST['tab'][$key]['month']);
$t['weekday'] = implode(",",$_POST['tab'][$key]['weekday']); $t['weekday'] = implode(",", $_POST['tab'][$key]['weekday']);
$val['tab'] = implode(" ",$t); $val['tab'] = implode(" ", $t);
$tabs .= $val['tab']."<br />"; $tabs .= $val['tab']."<br />";
list($class,$func) = explode("__",$key); list($class, $func) = explode("__", $key);
$val['function'] = $func; $val['function'] = $func;
$val['class'] = $class; $val['class'] = $class;
$val['path'] = $class; $val['path'] = $class;
$cron[$key] = $val; $cron[$key] = $val;
} }
$pref['e_cron_pref'] = $cron; $pref['e_cron_pref'] = $cron;
if(!vartrue($pref['e_cron_pwd']) || varset($_POST['generate_pwd'])) if (!vartrue($pref['e_cron_pwd']) || varset($_POST['generate_pwd']))
{ {
$pwd = $this->setCronPwd(); $pwd = $this->setCronPwd();
$setpwd_message = "Use the following Cron Command:<br /><b style='color:black'>".$_SERVER['DOCUMENT_ROOT'].e_HTTP."cron.php ".$pwd."</b><br /> $setpwd_message = "Use the following Cron Command:<br /><b style='color:black'>".$_SERVER['DOCUMENT_ROOT'].e_HTTP."cron.php ".$pwd."</b><br />
This cron command is unique and will not be displayed again. Please copy and paste it into your webserver cron area to be run every minute (or 15 minutes) of every day."; This cron command is unique and will not be displayed again. Please copy and paste it into your webserver cron area to be run every minute (or 15 minutes) of every day.";
$mes->add($setpwd_message, E_MESSAGE_WARNING); $mes->add($setpwd_message, E_MESSAGE_WARNING);
} }
// print_a($pref['e_cron_pref']);
if(save_prefs()) // print_a($pref['e_cron_pref']);
if (save_prefs())
{ {
$mes->add(LAN_SETSAVED, E_MESSAGE_SUCCESS); $mes->add(LAN_SETSAVED, E_MESSAGE_SUCCESS);
$mes->add($activeCount." Cron(s) Active", E_MESSAGE_SUCCESS); $mes->add($activeCount." Cron(s) Active", E_MESSAGE_SUCCESS);
} }
else else
{ {
$mes->add("There was a problem saving your settings.", E_MESSAGE_ERROR); $mes->add("There was a problem saving your settings.", E_MESSAGE_ERROR);
} }
} }
function setCronPwd() function setCronPwd()
{ {
global $pref; //global $pref;
$userMethods = e107::getUserSession(); $userMethods = e107::getUserSession();
$newpwd = $userMethods->generateRandomString('*^*#.**^*'); $newpwd = $userMethods->generateRandomString('*^*#.**^*');
$newpwd = sha1($newpwd.time()); $newpwd = sha1($newpwd.time());
$pref['e_cron_pwd'] = $newpwd; //$pref['e_cron_pwd'] = $newpwd;
e107::getConfig()->set('e_cron_pwd', $newpwd)->save(false);
return save_prefs(); return true;
} }
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
function cronRenderPrefs() function cronRenderPrefs()
{ {
global $frm,$ns; //global $frm,$ns;
$frm = e107::getForm();
$text = "<div style='text-align:center'> $text = "<div style='text-align:center'>
<form method='post' action='".e_SELF."' id='linkform'> <form method='post' action='"
.e_SELF."' id='linkform'>
<table class='adminlist'> <table class='adminlist'>
<tr> <tr>
<td style='width:30%'>Cron Password</td> <td style='width:30%'>Cron Password</td>
<td style='width:70%'> <td style='width:70%'>
".$frm->password('cron_password',100)." "
.$frm->password('cron_password', 100)."
</td> </td>
</tr> </tr>
@@ -320,48 +297,47 @@ function setCronPwd()
<tr style='vertical-align:top'> <tr style='vertical-align:top'>
<td colspan='2' class='center buttons-bar'>"; <td colspan='2' class='center buttons-bar'>";
$text .= $frm->admin_button('save_prefs',LAN_SAVE, 'update'); $text .= $frm->admin_button('save_prefs', LAN_SAVE, 'update');
$text .= "</td> $text .= "</td>
</tr> </tr>
</table> </table>
</form> </form>
</div>"; </div>";
$ns -> tablerender(LAN_PREFS, $text); e107::getRender()->tablerender(LAN_PREFS, $text);
} }
function cronLoad() //TODO Make a generic function to work with e_cron, e_sitelink, e_url etc. function cronLoad() //TODO Make a generic function to work with e_cron, e_sitelink, e_url etc.
{ {
global $pref; $pref = e107::getPref();
$core_cron = $this->coreCrons; // May need to check 'available' flag here $core_cron = $this->coreCrons; // May need to check 'available' flag here
$new_cron = e107::getAddonConfig('e_cron'); $new_cron = e107::getAddonConfig('e_cron');
$this->e_cron = array_merge($core_cron,$new_cron); $this->e_cron = array_merge($core_cron, $new_cron);
return; return;
} }
// ----------- Grab All e_cron parameters -----------------------------------
// ----------- Grab All e_cron parameters -----------------------------------
function cronRenderPage() function cronRenderPage()
{ {
global $pref; $pref = e107::getPref();
$cronpref = $pref['e_cron_pref']; $cronpref = $pref['e_cron_pref'];
$ns = e107::getRender(); $ns = e107::getRender();
$frm = e107::getForm(); $frm = e107::getForm();
$mes = e107::getMessage(); $mes = e107::getMessage();
$e_cron = $this->e_cron; $e_cron = $this->e_cron;
// ---------------------- List All Functions -----------------------------
// ---------------------- List All Functions -----------------------------
$text = "<div style='text-align:center'> $text = "<div style='text-align:center'>
<form method='post' action='".e_SELF."' id='cronform'> <form method='post' action='"
.e_SELF."' id='cronform'>
<table class='adminlist'> <table class='adminlist'>
<colgroup span='8'> <colgroup span='8'>
<col></col> <col></col>
@@ -375,85 +351,95 @@ function setCronPwd()
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
<th>".LAN_CRON_1."</th> <th>"
<th>".LAN_CRON_2."</th> .LAN_CRON_1."</th>
<th>".LAN_CRON_3."</th> <th>"
<th>".LAN_CRON_4."</th> .LAN_CRON_2."</th>
<th>".LAN_CRON_5."</th> <th>"
<th>".LAN_CRON_6."</th> .LAN_CRON_3."</th>
<th>".LAN_CRON_7."</th> <th>"
<th>".LAN_CRON_8."</th> .LAN_CRON_4."</th>
<th>"
.LAN_CRON_5."</th>
<th>"
.LAN_CRON_6."</th>
<th>"
.LAN_CRON_7."</th>
<th>"
.LAN_CRON_8."</th>
<th>Run Now</th> <th>Run Now</th>
</tr> </tr>
</thead> </thead>
<tbody>"; <tbody>";
foreach($e_cron as $plug=>$cfg) foreach ($e_cron as $plug => $cfg)
{
foreach($cfg as $class=>$cron)
{ {
if (!isset($cron['available']) || $cron['available']) // Only display cron functions which are available foreach ($cfg as $class => $cron)
{ {
$c = $plug.'__'. $cron['function']; // class and function. if (!isset($cron['available']) || $cron['available']) // Only display cron functions which are available
$sep = array();
list($sep['minute'],$sep['hour'],$sep['day'],$sep['month'],$sep['weekday']) = explode(" ",$cronpref[$c]['tab']);
foreach($sep as $key=>$value)
{ {
if($value=="") $c = $plug.'__'.$cron['function']; // class and function.
$sep = array();
list($sep['minute'], $sep['hour'], $sep['day'], $sep['month'], $sep['weekday']) = explode(" ", $cronpref[$c]['tab']);
foreach ($sep as $key => $value)
{ {
$sep[$key] = "*"; if ($value == "")
{
$sep[$key] = "*";
}
} }
}
$minute = explode(",",$sep['minute']); $minute = explode(",", $sep['minute']);
$hour = explode(",",$sep['hour']); $hour = explode(",", $sep['hour']);
$day = explode(",",$sep['day']); $day = explode(",", $sep['day']);
$month = explode(",",$sep['month']); $month = explode(",", $sep['month']);
$weekday = explode(",",$sep['weekday']); $weekday = explode(",", $sep['weekday']);
$min_options = array( $min_options = array(
"*" => LAN_CRON_11, "*" => LAN_CRON_11,
"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58" => LAN_CRON_12, "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58" => LAN_CRON_12,
"0,5,10,15,20,25,30,35,40,45,50,55" => LAN_CRON_13, "0,5,10,15,20,25,30,35,40,45,50,55" => LAN_CRON_13,
"0,10,20,30,40,50" => LAN_CRON_14, "0,10,20,30,40,50" => LAN_CRON_14,
"0,15,30,45" => LAN_CRON_10, "0,15,30,45" => LAN_CRON_10,
"0,30" => LAN_CRON_15 "0,30" => LAN_CRON_15
); );
$hour_options = array( $hour_options = array(
"*" => LAN_CRON_16, "*" => LAN_CRON_16,
"0,2,4,6,8,10,12,14,16,18,20,22" => LAN_CRON_17, "0,2,4,6,8,10,12,14,16,18,20,22" => LAN_CRON_17,
"0,3,6,9,12,15,18,21" => LAN_CRON_18, "0,3,6,9,12,15,18,21" => LAN_CRON_18,
"0,6,12,18" => LAN_CRON_19 "0,6,12,18" => LAN_CRON_19
); );
$text .= "<tr> $text .= "<tr>
<td>".$cron['name']."</td> <td>"
<td>".$cron['description']."</td> .$cron['name']."</td>
<td>"
.$cron['description']."</td>
<td> <td>
<input type='hidden' name='cron[$c][path]' value='".$cron['path']."' /> <input type='hidden' name='cron[$c][path]' value='".$cron['path']."' />
<select class='tbox' style='height:70px' multiple='multiple' name='tab[$c][minute][]'>\n"; <select class='tbox' style='height:70px' multiple='multiple' name='tab[$c][minute][]'>\n";
foreach($min_options as $key=>$val) foreach ($min_options as $key => $val)
{ {
if($sep['minute'] == $key) if ($sep['minute'] == $key)
{ {
$sel = "selected='selected'"; $sel = "selected='selected'";
$minute = array(); $minute = array();
} }
else else
{ {
$sel = ""; $sel = "";
} }
$text .= "<option value='$key' $sel>".$val."</option>\n"; $text .= "<option value='$key' $sel>".$val."</option>\n";
} }
for ($i = 0; $i <= 59; $i++)
for ($i=0; $i<=59; $i++)
{ {
$sel = (in_array(strval($i),$minute)) ? "selected='selected'" : ""; $sel = (in_array(strval($i), $minute)) ? "selected='selected'" : "";
$text .= "<option value='$i' $sel>".$i."</option>\n"; $text .= "<option value='$i' $sel>".$i."</option>\n";
} }
$text .= "</select> $text .= "</select>
@@ -462,25 +448,25 @@ function setCronPwd()
<select class='tbox' style='height:70px' multiple='multiple' name='tab[$c][hour][]'> <select class='tbox' style='height:70px' multiple='multiple' name='tab[$c][hour][]'>
\n"; \n";
foreach($hour_options as $key=>$val) foreach ($hour_options as $key => $val)
{ {
if($sep['hour'] == $key) if ($sep['hour'] == $key)
{ {
$sel = "selected='selected'"; $sel = "selected='selected'";
$hour = array(); $hour = array();
} }
else else
{ {
$sel = ""; $sel = "";
} }
$text .= "<option value='$key' $sel>".$val."</option>\n"; $text .= "<option value='$key' $sel>".$val."</option>\n";
} }
for ($i=0; $i<=23; $i++) for ($i = 0; $i <= 23; $i++)
{ {
$sel = (in_array(strval($i),$hour)) ? "selected='selected'" : ""; $sel = (in_array(strval($i), $hour)) ? "selected='selected'" : "";
$diz = mktime($i,00,00,1,1,2000); $diz = mktime($i, 00, 00, 1, 1, 2000);
$text .= "<option value='$i' $sel>".$i." - ".date("g A",$diz)."</option>\n"; $text .= "<option value='$i' $sel>".$i." - ".date("g A", $diz)."</option>\n";
} }
$text .= "</select> $text .= "</select>
</td> </td>
@@ -490,9 +476,9 @@ function setCronPwd()
$sel_day = ($day[0] == "*") ? "selected='selected'" : ""; $sel_day = ($day[0] == "*") ? "selected='selected'" : "";
$text .= "<option value='*' {$sel_day}>".LAN_CRON_20."</option>\n"; // Every Day $text .= "<option value='*' {$sel_day}>".LAN_CRON_20."</option>\n"; // Every Day
for ($i=1; $i<=31; $i++) for ($i = 1; $i <= 31; $i++)
{ {
$sel = (in_array($i,$day)) ? "selected='selected'" : ""; $sel = (in_array($i, $day)) ? "selected='selected'" : "";
$text .= "<option value='$i' $sel>".$i."</option>\n"; $text .= "<option value='$i' $sel>".$i."</option>\n";
} }
$text .= "</select> $text .= "</select>
@@ -503,11 +489,11 @@ function setCronPwd()
$sel_month = ($month[0] == "*") ? "selected='selected'" : ""; $sel_month = ($month[0] == "*") ? "selected='selected'" : "";
$text .= "<option value='*' $sel_month>".LAN_CRON_21."</option>\n"; // Every Month $text .= "<option value='*' $sel_month>".LAN_CRON_21."</option>\n"; // Every Month
for ($i=1; $i<=12; $i++) for ($i = 1; $i <= 12; $i++)
{ {
$sel = (in_array($i,$month)) ? "selected='selected'" : ""; $sel = (in_array($i, $month)) ? "selected='selected'" : "";
$diz = mktime(00,00,00,$i,1,2000); $diz = mktime(00, 00, 00, $i, 1, 2000);
$text .= "<option value='$i' $sel>".strftime("%B",$diz)."</option>\n"; $text .= "<option value='$i' $sel>".strftime("%B", $diz)."</option>\n";
} }
$text .= "</select> $text .= "</select>
</td> </td>
@@ -516,11 +502,11 @@ function setCronPwd()
$sel_weekday = ($weekday[0] == "*") ? "selected='selected'" : ""; $sel_weekday = ($weekday[0] == "*") ? "selected='selected'" : "";
$text .= "<option value='*' $sel_weekday>".LAN_CRON_22."</option>\n"; // Every Week Day. $text .= "<option value='*' $sel_weekday>".LAN_CRON_22."</option>\n"; // Every Week Day.
$days = array(LAN_SUN,LAN_MON,LAN_TUE,LAN_WED,LAN_THU,LAN_FRI,LAN_SAT); $days = array(LAN_SUN, LAN_MON, LAN_TUE, LAN_WED, LAN_THU, LAN_FRI, LAN_SAT);
for ($i=0; $i<=6; $i++) for ($i = 0; $i <= 6; $i++)
{ {
$sel = (in_array(strval($i),$weekday)) ? "selected='selected'" : ""; $sel = (in_array(strval($i), $weekday)) ? "selected='selected'" : "";
$text .= "<option value='$i' $sel>".$days[$i]."</option>\n"; $text .= "<option value='$i' $sel>".$days[$i]."</option>\n";
} }
$text .= "</select> $text .= "</select>
@@ -532,68 +518,67 @@ function setCronPwd()
<td class='center'>".$frm->admin_button('execute['.$c.']', 'Run Now')."</td> <td class='center'>".$frm->admin_button('execute['.$c.']', 'Run Now')."</td>
</tr>"; </tr>";
}
} }
} }
}
$text .= " $text .= "
<tr > <tr >
<td colspan='9' class='center'> <td colspan='9' class='center'>
<div class='center buttons-bar'>"; <div class='center buttons-bar'>";
// $text .= "<input class='button' type='submit' name='submit' value='".LAN_SAVE."' />"; // $text .= "<input class='button' type='submit' name='submit' value='".LAN_SAVE."' />";
$text .= $frm->admin_button('submit', LAN_SAVE, $action = 'update'); $text .= $frm->admin_button('submit', LAN_SAVE, $action = 'update');
$text .= $frm->checkbox_switch('generate_pwd',1,'','Generate new cron command'); $text .= $frm->checkbox_switch('generate_pwd', 1, '', 'Generate new cron command');
$text .= "</div></td> $text .= "</div></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</form> </form>
</div>"; </div>";
$ns -> tablerender(PAGE_NAME, $mes->render() . $text); $ns->tablerender(PAGE_NAME, $mes->render().$text);
} }
function cronOptions() function cronOptions()
{ {
$e107 = &e107::getInstance(); $e107 = e107::getInstance();
$var['main']['text'] = PAGE_NAME; $var['main']['text'] = PAGE_NAME;
$var['main']['link'] = e_SELF; $var['main']['link'] = e_SELF;
/* /*
$var['pref']['text'] = LAN_PREFS; $var['pref']['text'] = LAN_PREFS;
$var['pref']['link'] = e_SELF."?pref"; $var['pref']['link'] = e_SELF."?pref";
$var['pref']['perm'] = "N"; $var['pref']['perm'] = "N";
*/ $action = ($this->cronAction) ? $this->cronAction : 'main'; */ $action = ($this->cronAction) ? $this->cronAction : 'main';
e_admin_menu(PAGE_NAME, $action, $var); e_admin_menu(PAGE_NAME, $action, $var);
} }
function cronExecuteMethod($class_name, $method_name, $return = 'boolean')
function cronExecuteMethod($class_name,$method_name,$return='boolean')
{ {
$mes = e107::getMessage(); $mes = e107::getMessage();
if(class_exists($class_name)) if (class_exists($class_name))
{ {
$obj = new $class_name; $obj = new $class_name;
if(method_exists($obj,$method_name)) if (method_exists($obj, $method_name))
{ {
$mes->add("Executing config function <b>".$key." : ".$method_name."()</b>", E_MESSAGE_DEBUG); $mes->add("Executing config function <b>".$class_name." : ".$method_name."()</b>", E_MESSAGE_DEBUG);
if($return == 'boolean') if ($return == 'boolean')
{ {
call_user_func(array($obj,$method_name)); call_user_func(array($obj, $method_name));
return TRUE; return TRUE;
} }
else else
{ {
return call_user_func(array($obj,$method_name)); return call_user_func(array($obj, $method_name));
} }
} }
else else
{ {
$mes->add("Config function <b>".$method_name."()</b> NOT found.", E_MESSAGE_DEBUG); $mes->add("Config function <b>".$method_name."()</b> NOT found.", E_MESSAGE_DEBUG);
} }
} }
return FALSE; return FALSE;
} }
@@ -605,5 +590,4 @@ function cron_adminmenu()
$cron->cronOptions(); $cron->cronOptions();
} }
?> ?>