/**
  * @param string $method
  * @param array $args
  * @return mixed
  */
 public function callResourceMethod($method, $args)
 {
     $capture = false;
     if (Pimcore::inAdmin()) {
         $methodsToCheck = array("query", "update", "delete", "insert");
         if (in_array($method, $methodsToCheck)) {
             $capture = true;
             Pimcore_Resource::startCapturingDefinitionModifications($method, $args);
         }
     }
     //HACK - do not execute transaction methods when
     //Zend_Registry::set('explicit_transactions', true) was set earlier in code
     $transactionMethodsToCheck = array('beginTransaction', 'rollBack', 'commit');
     try {
         $explicitTransactions = Zend_Registry::get('explicit_transactions');
     } catch (Exception $e) {
         $explicitTransactions = false;
     }
     if (!$explicitTransactions || !in_array($method, $transactionMethodsToCheck)) {
         $r = call_user_func_array(array($this->getResource(), $method), $args);
     }
     if (Pimcore::inAdmin() && $capture) {
         Pimcore_Resource::stopCapturingDefinitionModifications();
     }
     return $r;
 }