Index: elysia_cron.admin.inc
===================================================================
--- elysia_cron.admin.inc	(revision 1811)
+++ elysia_cron.admin.inc	(working copy)
@@ -4,7 +4,7 @@
  * INTERFACE
  *
  * WARN: Below this point the word "context" should be avoided (use channel)
- *   Disabled should always be referenced as "disabled" (in db is "disable" for 
+ *   Disabled should always be referenced as "disabled" (in db is "disable" for
  *   compatibility with Ctools )
  ******************************************************************************/
 
@@ -20,6 +20,7 @@
 
   $v = variable_get('elysia_cron_disabled', false);
   $output .= '<p>Global disable: <i>' . ($v ? '<span class="warn">YES</span>' : 'no') . '</i></p>';
+  $output .= '<p>Ignore standard Drupal cron hooks: <i>'.(variable_get('elysia_cron_ignore_hook_cron', false) ? '<span class="warn">YES</span>':'no').'</i></p>';
   $output .= '<p>Last channel executed: <i>' . (($c = elysia_cron_last_channel()) ? $c : t('n/a')) . '</i></p>';
 
   if (EC_DRUPAL_VERSION < 7) {
@@ -195,6 +196,13 @@
     '#default_value' => variable_get('elysia_cron_disabled', false),
   );
 
+  $form['elysia_cron_ignore_hook_cron'] = array(
+    '#title' => t('Ignore standard Drupal cron hooks'),
+    '#type' => 'checkbox',
+    '#default_value' => variable_get('elysia_cron_ignore_hook_cron', false),
+    '#description' => t('When check elysia cron will NOT take over the cron process for modules that use standard Drupal cron. Elysia cron will only run modules that have enabled the cronapi hook.'),
+  );
+
   $form['installation'] = array(
     '#title' => t('Installation settings'),
     '#type' => 'fieldset',
@@ -305,10 +313,10 @@
     '#description' => t('You can specify new cron jobs or modify existing schedules by adding lines to the script.<br>' .
       '<b>Warning</b> All rules specified in the script will OVERRIDE single job settings and channel settings (sections below).'),
   );
-  
+
   $form['single_job'] = array(
     '#title' => t('Single job settings'),
-    '#description' => 
+    '#description' =>
       '<b>'.t('Disabled').'</b>: '.t('Flag this to disable job execution').'<br />'.
       '<b>'.t('Schedule rule').'</b>: '.t('Timing rule for the job. Leave empty to use default rule (shown after the field in parenthesis)').'<br />'.
       '<b>'.t('Weight').'</b>: '.t('Use this to specify execution order: low weights are executed before high weights. Default value shown in parenthesis').'<br />'.
@@ -317,7 +325,7 @@
     '#collapsible' => true,
     //'#collapsed' => true,
   );
-  
+
   $jobchannels = array(
     '#title' => t('Job channel associations'),
     '#description' => t('Leave empty for default channel'),
@@ -760,7 +768,7 @@
 function elysia_cron_maintenance_page() {
   $output = array();
   $output[] = drupal_get_form('elysia_cron_reset_statistics_form');
-  
+
   return _dcr_render_array($output);
 }
 
@@ -783,7 +791,7 @@
 
 function elysia_cron_reset_statistics_form_submit($_dco_form, &$_dco_form_state) {
   elysia_cron_reset_stats();
-  
+
   drupal_set_message(t('Reset done.'));
   drupal_goto(_dcf_internal_path('admin/config/system/cron/maintenance'));
 }
Index: elysia_cron.module
===================================================================
--- elysia_cron.module	(revision 1811)
+++ elysia_cron.module	(working copy)
@@ -165,7 +165,12 @@
     drupal_goto(_dcf_internal_path('admin/reports/status'));
   }
 
-  exit();
+  // Exit the cron process when all functions are managed from Elysia Cron.
+  // When elysia cron is ignoring the hook_cron functions, allow the process
+  // to continue.
+  if (!variable_get('elysia_cron_ignore_hook_cron', false)) {
+    exit();
+  }
 }
 
 /**
@@ -193,13 +198,13 @@
 // Variables managed by _ec_variable method, because are setted during cron execution handling (with standard variable_set this will invalidate variable cache in EVERY cron clock)
 $GLOBALS['_ec_variables_allowed'] = array(
   'elysia_cron_version', // Just for compatibility purpose during elysia_cron_update phase
-  'elysia_cron_semaphore', 
+  'elysia_cron_semaphore',
   'elysia_cron_last_run',
-  'elysia_cron_last_context', 
-  'cron_semaphore', 
+  'elysia_cron_last_context',
+  'cron_semaphore',
   'cron_last',
 );
- 
+
 function _ec_variable_init() {
   global $_ec_variables, $_ec_variables_allowed;
   $_ec_variables = array();
@@ -354,11 +359,11 @@
 
   if (EC_DRUPAL_VERSION >= 7) {
     db_merge('elysia_cron')->key(array('name' => $name))->fields($values)->execute();
-    
+
   } else {
     $fields = array("name" => "'%s'", "disable" => "%d", "rule" => "'%s'", "weight" => "%d", "context" => "'%s'", "running" => "%d", "last_run" => "%d", "last_aborted" => "%d", "abort_count" => "%d", "last_abort_function" => "'%s'", "last_execution_time" => "%d", "execution_count" => "%d", "avg_execution_time" => "%f", "max_execution_time" => "%d", "last_shutdown_time" => "%d");
     $ifields = array('disable', 'running', 'last_run', 'last_aborted', 'abort_count', 'last_execution_time', 'execution_count', 'avg_execution_time', 'max_execution_time', 'last_shutdown_time');
-    
+
     $uquery = array();
     $uvalues = array();
     foreach ($values as $k => $v) {
@@ -404,7 +409,7 @@
 function elysia_cron_get($name, $channel = false, $key, $default, $refresh = false) {
   global $elysia_cron_db_cache;
   static $elysia_cron_defaults;
-  
+
   if (!isset($elysia_cron_defaults)) {
     $elysia_cron_defaults = function_exists('elysia_cron_get_ctools_defaults') ? elysia_cron_get_ctools_defaults() : array();
   }
@@ -412,7 +417,7 @@
   if ($channel) {
     $name = ':' . $name;
   }
-  
+
   if ($refresh || !isset($elysia_cron_db_cache[$name])) {
     if (EC_DRUPAL_VERSION >= 7) {
       $elysia_cron_db_cache[$name] = db_query("select * from {elysia_cron} where name = :name", array(':name' => $name))->fetchAssoc();
@@ -420,7 +425,7 @@
     else {
       $elysia_cron_db_cache[$name] = db_fetch_array(db_query("select * from {elysia_cron} where name = '%s'", $name));
     }
-    
+
     if (!$elysia_cron_db_cache[$name] && isset($elysia_cron_defaults[$name])) {
       $elysia_cron_db_cache[$name] = (array)$elysia_cron_defaults[$name];
     }
@@ -691,9 +696,9 @@
 
 /*******************************************************************************
  * INTERNAL
- * 
+ *
  * WARN: Below this point the word "context" should be avoided (use channel)
- *   Disabled should always be referenced as "disabled" (in db is "disable" for 
+ *   Disabled should always be referenced as "disabled" (in db is "disable" for
  *   compatibility with Ctools )
  *******************************************************************************/
 
@@ -757,16 +762,19 @@
   static $jobs;
   if (!isset($jobs)) {
     $jobs = array();
-    foreach (module_implements('cron') as $module) {
-      if ($module != 'elysia_cron') {
-        $jobs[$module . '_cron'] = array(
-          'module' => $module,
-          'callback' => $module . '_cron',
-          'arguments' => array(),
-        );
+    // Skip the Drupal hook_cron when set to ignore Drupal functions.
+    if (!variable_get('elysia_cron_ignore_hook_cron', false)) {
+      foreach (module_implements('cron') as $module) {
+        if ($module != 'elysia_cron') {
+          $jobs[$module . '_cron'] = array(
+            'module' => $module,
+            'callback' => $module . '_cron',
+            'arguments' => array(),
+          );
+        }
       }
     }
-  
+
     foreach (module_implements('cronapi') as $module) {
       $fn = $module . '_cronapi';
       $l = $fn('list');
@@ -811,7 +819,7 @@
     if (!$defrule) {
       $defrule = variable_get('elysia_cron_default_rule', '0 * * * *');
     }
-    
+
     $defweight = !empty($jobpars['weight']) ? $jobpars['weight'] : 0;
     if (!is_numeric($defweight)) {
       $defweight = 0;
Index: elysia_cron_update.php
===================================================================
--- elysia_cron_update.php	(revision 1811)
+++ elysia_cron_update.php	(working copy)
@@ -16,6 +16,7 @@
       'elysia_cron_last_context',
       'elysia_cron_last_run',
       'elysia_cron_disabled',
+      'elysia_cron_ignore_hook_cron',
       'elysia_cron_semaphore',
       'elysia_cron_key',
       'elysia_cron_allowed_hosts',
@@ -288,7 +289,7 @@
 
     variable_set('elysia_cron_version', 20110323);
   }
-  
+
   if ($ver < 20111007) {
     $default_rules = variable_get('elysia_cron_default_rules', $GLOBALS['elysia_cron_default_rules']);
     if (!empty($default_rules['*/6 * * * *']) && $default_rules['*/6 * * * *'] == 'Every 6 hours') {
