<?php // Define hooks $updateHook = array('class' => 'Mutation', 'function' => 'mutUpdate', 'filename' => 'Mutation.php', 'filepath' => 'extensions/Mutation', 'params' => array('$fullRelationSignature', '$stableAtom', '$stableConcept', '$modifiedAtom', '$modifiedConcept', '$source')); $insertHook = array('class' => 'Mutation', 'function' => 'mutInsert', 'filename' => 'Mutation.php', 'filepath' => 'extensions/Mutation', 'params' => array('$fullRelationSignature', '$stableAtom', '$stableConcept', '$modifiedAtom', '$modifiedConcept', '$source')); $deleteHook = array('class' => 'Mutation', 'function' => 'mutDelete', 'filename' => 'Mutation.php', 'filepath' => 'extensions/Mutation', 'params' => array('$fullRelationSignature', '$stableAtom', '$stableConcept', '$modifiedAtom', '$modifiedConcept', '$source')); Hooks::addHook('postDatabaseUpdate', $updateHook); Hooks::addHook('postDatabaseInsert', $insertHook); Hooks::addHook('postDatabaseDelete', $deleteHook); class Mutation { public static function mutUpdate($fullRelationSignature, $stableAtom, $stableConcept, $modifiedAtom, $modifiedConcept, $source) { $operation = 'Changed'; Mutation::saveMutation($operation, $fullRelationSignature, $stableAtom, $stableConcept, $modifiedAtom, $modifiedConcept, $source); } public static function mutInsert($fullRelationSignature, $stableAtom, $stableConcept, $modifiedAtom, $modifiedConcept, $source) { $operation = 'Added'; Mutation::saveMutation($operation, $fullRelationSignature, $stableAtom, $stableConcept, $modifiedAtom, $modifiedConcept, $source); } public static function mutDelete($fullRelationSignature, $stableAtom, $stableConcept, $modifiedAtom, $modifiedConcept, $source) { $operation = 'Removed'; Mutation::saveMutation($operation, $fullRelationSignature, $stableAtom, $stableConcept, $modifiedAtom, $modifiedConcept, $source); } private static function saveMutation($operation, $fullRelationSignature, $stableAtom, $stableConcept, $modifiedAtom, $modifiedConcept, $source) { if (array_key_exists($fullRelationSignature, Config::get('mutationConcepts', 'MutationExtension'))) { Notifications::addLog("Save mutation on '{$fullRelationSignature}' (editUpdate)", 'Mutation'); $mutConcept = Config::get('mutationConcepts', 'MutationExtension')[$fullRelationSignature];
<?php require_once __DIR__ . '/lib/class.phpmailer.php'; // Define hooks $hook = array('class' => 'EmailNotifications', 'function' => 'pushNotificationCache', 'filename' => 'Email.php', 'filepath' => 'extensions/Messaging', 'params' => array()); Hooks::addHook('postDatabaseCommitTransaction', $hook); $hook = array('class' => 'EmailNotifications', 'function' => 'clearNotificationCache', 'filename' => 'Email.php', 'filepath' => 'extensions/Messaging', 'params' => array()); Hooks::addHook('postDatabaseRollbackTransaction', $hook); class EmailNotifications { private static $notifications = array(); public static function execEnginePushNotificationOnCommit($userKeys, $message, $title = null, $url = null, $urltitle = null) { Notifications::addLog('Email[execEnginePushNotificationOnCommit' . ']; $userKeys=[' . $userKeys . ']; $message=[' . $message . ']; $title=[' . $title . ']; $url=[' . $url . ']; $urltitle=[' . $urltitle . ']', 'MESSAGING'); if ($userKeys == '_NULL') { $userKeys = array(null); } else { $userKeys = explode('_AND', $userKeys); } self::pushNotificationOnCommit($userKeys, $message, $title, $url, $urltitle); } public static function pushNotificationOnCommit($userKeys, $message, $title = null, $url = null, $urltitle = null) { Notifications::addLog('Email[pushNotificationOnCommit' . ']; $userKeys=[' . $userKeys . ']; $message=[' . $message . ']; $title=[' . $title . ']; $url=[' . $url . ']; $urltitle=[' . $urltitle . ']', 'MESSAGING'); foreach ($userKeys as $userKey) { if (!is_null($userKey)) { self::$notifications[] = array('userKey' => $userKey, 'message' => $message, 'title' => $title, 'url' => $url, 'urltitle' => $urltitle); } } // Send same notification to users in 'alwaysNotifyUsers' config foreach ((array) Config::get('alwaysNotifyUsers', 'msg_email') as $notifyUser) {
<?php // Define hooks $hook1 = array('class' => 'ExecEngine', 'function' => 'run', 'filename' => 'ExecEngine.php', 'filepath' => 'extensions/ExecEngine', 'params' => array()); Hooks::addHook('preDatabaseCloseTransaction', $hook1); $hook2 = array('class' => 'ExecEngine', 'function' => 'run', 'filename' => 'ExecEngine.php', 'filepath' => 'extensions/ExecEngine', 'params' => array(true)); Hooks::addHook('postDatabaseReinstallDB', $hook2); // UI $GLOBALS['navBar']['refreshMenu'][] = array('url' => 'extensions/ExecEngine/ui/views/MenuItem.html'); AngularApp::addJS('extensions/ExecEngine/ui/js/ExecEngine.js'); // Config (can be overwritten in localSettings.php) Config::set('execEngineRoleName', 'execEngine', 'ExecEngine'); Config::set('autoRerun', 'execEngine', true); Config::set('maxRunCount', 'execEngine', 10); class ExecEngine { private static $roleName; public static $doRun = true; public static $autoRerun; public static $runCount; public static function run($allRules = false) { $database = Database::singleton(); Notifications::addLog('------------------------- EXEC ENGINE STARTED -------------------------', 'ExecEngine'); // Load the execEngine functions (security hazard :P) $files = getDirectoryList(__DIR__ . '/functions'); foreach ($files as $file) { if (substr($file, -3) !== 'php') { continue; } require_once __DIR__ . '/functions/' . $file;