array('ENABLE',
'DISABLE',
'DISABLE ON SLAVE'),
'display' => array('ENABLED',
'DISABLED',
'SLAVESIDE_DISABLED')
);
$event_type = array('RECURRING',
'ONE TIME');
$event_interval = array('YEAR',
'QUARTER',
'MONTH',
'DAY',
'HOUR',
'MINUTE',
'WEEK',
'SECOND',
'YEAR_MONTH',
'DAY_HOUR',
'DAY_MINUTE',
'DAY_SECOND',
'HOUR_MINUTE',
'HOUR_SECOND',
'MINUTE_SECOND');
}
/**
* Main function for the events functionality
*
* @return void
*/
function PMA_EVN_main()
{
global $db;
PMA_EVN_setGlobals();
/**
* Process all requests
*/
PMA_EVN_handleEditor();
PMA_EVN_handleExport();
/**
* Display a list of available events
*/
$columns = "`EVENT_NAME`, `EVENT_TYPE`, `STATUS`";
$where = "EVENT_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "'";
$query = "SELECT $columns FROM `INFORMATION_SCHEMA`.`EVENTS` "
. "WHERE $where ORDER BY `EVENT_NAME` ASC;";
$items = $GLOBALS['dbi']->fetchResult($query);
echo PMA_RTE_getList('event', $items);
/**
* Display a link for adding a new event, if
* the user has the privileges and a link to
* toggle the state of the event scheduler.
*/
echo PMA_EVN_getFooterLinks();
} // end PMA_EVN_main()
/**
* Handles editor requests for adding or editing an item
*
* @return void
*/
function PMA_EVN_handleEditor()
{
global $_REQUEST, $_POST, $errors, $db;
if (! empty($_REQUEST['editor_process_add'])
|| ! empty($_REQUEST['editor_process_edit'])
) {
$sql_query = '';
$item_query = PMA_EVN_getQueryFromRequest();
if (! count($errors)) { // set by PMA_RTN_getQueryFromRequest()
// Execute the created query
if (! empty($_REQUEST['editor_process_edit'])) {
// Backup the old trigger, in case something goes wrong
$create_item = $GLOBALS['dbi']->getDefinition(
$db,
'EVENT',
$_REQUEST['item_original_name']
);
$drop_item = "DROP EVENT "
. PMA_Util::backquote($_REQUEST['item_original_name']) . ";\n";
$result = $GLOBALS['dbi']->tryQuery($drop_item);
if (! $result) {
$errors[] = sprintf(
__('The following query has failed: "%s"'),
htmlspecialchars($drop_item)
)
. '
'
. __('MySQL said: ') . $GLOBALS['dbi']->getError(null);
} else {
$result = $GLOBALS['dbi']->tryQuery($item_query);
if (! $result) {
$errors[] = sprintf(
__('The following query has failed: "%s"'),
htmlspecialchars($item_query)
)
. '
'
. __('MySQL said: ') . $GLOBALS['dbi']->getError(null);
// We dropped the old item, but were unable to create
// the new one. Try to restore the backup query
$result = $GLOBALS['dbi']->tryQuery($create_item);
if (! $result) {
// OMG, this is really bad! We dropped the query,
// failed to create a new one
// and now even the backup query does not execute!
// This should not happen, but we better handle
// this just in case.
$errors[] = __(
'Sorry, we failed to restore the dropped event.'
)
. '
'
. __('The backed up query was:')
. "\"" . htmlspecialchars($create_item) . "\""
. '
'
. __('MySQL said: ') . $GLOBALS['dbi']->getError(null);
}
} else {
$message = PMA_Message::success(
__('Event %1$s has been modified.')
);
$message->addParam(
PMA_Util::backquote($_REQUEST['item_name'])
);
$sql_query = $drop_item . $item_query;
}
}
} else {
// 'Add a new item' mode
$result = $GLOBALS['dbi']->tryQuery($item_query);
if (! $result) {
$errors[] = sprintf(
__('The following query has failed: "%s"'),
htmlspecialchars($item_query)
)
. '
'
. __('MySQL said: ') . $GLOBALS['dbi']->getError(null);
} else {
$message = PMA_Message::success(
__('Event %1$s has been created.')
);
$message->addParam(
PMA_Util::backquote($_REQUEST['item_name'])
);
$sql_query = $item_query;
}
}
}
if (count($errors)) {
$message = PMA_Message::error(__('One or more errors have occurred while processing your request:'));
$message->addString('