/** * @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; }