/** Datei: plugins/logs/hooks/model/updated.php **/ * @copyright 2025 ARUNOX * @version 1.0.0 * * @hook model::updated * @param mixed $result save result * @param string $table Current Database Table Name * @param object $query Database\QueryBuilder Object * @param string $hook Hook type/name * @param array $changed changed Data * @param string $class Current static class * * @since 1.0.0 File is created */ use ARUNOX\Core\Hooks; use ARUNOX\Plugins\Logs; use ARUNOX\Plugins\Users; if( $result === FALSE ) return $result; if( is_string( $result ) ) $originHID = $result; elseif( is_numeric( $result ) ) $originHID = $class::getHashID( $result ); /* ### LOAD CLASSES ################################################# # */ $modelClass = ARUNOX\Plugins\Logs\Model::resolveTable( $table ); $ctrlClass = $modelClass::getControllerClass(); if( $modelClass ) $rules = $modelClass::getLogRulesUpdated( $result ); /* ### FILTER RULES ################################################# # */ $changed = array_merge( $changed, [ "__self" => TRUE ] ); $rules = Hooks::filter("logs.rules::{$hook}->{$table}", $rules ?? [], $hook, $table, $result ); $rules = array_intersect_key( $rules, $changed ); // show( $modelClass, $hook, $rules, $changed ); if( !$rules || !$ctrlClass ) return $result; $action = explode( "_", $table ); $action = implode(".", $action ); $action = strtolower( $action ); // show( $hook, $rules, $changed ); /* ### CREATE LOGS ################################################## # */ foreach( $rules as $column => $rule ) { if( is_string( $rule ) ) $rule = [ "message" => $rule ]; $targetHIDs = (array)( $rule["target_hids"] ?? [] ); $value = $changed[ $column ]; $message = $rule["message"] ?? "%3\$T wurde geƤndert zu '%4\$t'"; $arguments = [ /* 1 */ $ctrlClass::getSingular(), /* 2 */ $originHID, /* 3 */ $column, /* 4 */ $changed[ $column ], ...(array)($rule["arguments"] ?? []) ]; if( preg_match( '/_hid$/', $column ) ) $targetHIDs[] = $changed[ $column ]; if( isset( $rule["class"] ) ) $targetHIDs[] = $rule["class"]::get( $changed[ $column ] )->hashid; $targetHIDs = array_unique( $targetHIDs ); $targetHIDs = array_filter( $targetHIDs ); if( isset( $rule["options"][ $value ]["label"] ) ) $arguments[3] = $rule["options"][ $value ]["label"]; // show( $column, $message, $targetHIDs, $arguments, $rule ); Logs\Model::save([ // show([ "source_hid" => $originHID, "target_hids" => $targetHIDs, "created_by" => Users\Model::get()->hashid, "action" => "{$action}::{$hook}->{$column}", "message" => __( $message, ...$arguments ), // ], FALSE ); ]); } return $result; /** Datei: plugins/logs/hooks/model/created.php **/ * @copyright 2025 ARUNOX * @version 1.0.0 * * @hook model::created * @param mixed $result save result * @param string $table Current Database Table Name * @param object $query Database\QueryBuilder Object * @param string $hook Hook type/name * @param array $changed changed Data * @param string $class Current static class * * @since 1.0.0 File is created */ use ARUNOX\Core\Hooks; use ARUNOX\Plugins\Logs; use ARUNOX\Plugins\Users; if( $result === FALSE ) return $result; if( is_string( $result ) ) $originHID = $result; elseif( is_numeric( $result ) ) $originHID = $class::getHashID( $result ); /* ### LOAD CLASSES ################################################# # */ $modelClass = ARUNOX\Plugins\Logs\Model::resolveTable( $table ); $ctrlClass = $modelClass::getControllerClass(); if( $modelClass ) $rules = $modelClass::getLogRulesCreated( $result ); /* ### FILTER RULES ################################################# # */ $changed = array_merge( $changed, [ "__self" => TRUE ] ); $rules = Hooks::filter("logs.rules::{$hook}->{$table}", $rules ?? [], $hook, $table, $result ); $rules = array_intersect_key( $rules, $changed ); // show( $modelClass, $hook, $rules, $changed ); if( !$rules || !$ctrlClass ) return $result; $action = explode( "_", $table ); $action = implode(".", $action ); $action = strtolower( $action ); // show( $hook, $rules, $changed ); /* ### CREATE LOGS ################################################## # */ foreach( $rules as $column => $rule ) { if( is_string( $rule ) ) $rule = [ "message" => $rule ]; $originHID = $rule["origin_hid"] ?? $originHID; $targetHIDs = (array)( $rule["target_hids"] ?? [] ); $value = $changed[ $column ]; $message = $rule["message"] ?? "%1\$t wurde erstellt"; $arguments = [ /* 1 */ $ctrlClass::getSingular(), /* 2 */ $originHID, /* 3 */ $column, /* 4 */ $changed[ $column ], ...(array)($rule["arguments"] ?? []) ]; if( preg_match( '/_hid$/', $column ) ) $targetHIDs[] = $changed[ $column ]; if( isset( $rule["class"] ) ) $targetHIDs[] = $rule["class"]::get( $changed[ $column ] )->hashid; $targetHIDs = array_unique( $targetHIDs ); $targetHIDs = array_filter( $targetHIDs ); // show( $column, $message, $targetHIDs, $arguments, $rule ); Logs\Model::save([ "source_hid" => $originHID, "target_hids" => $targetHIDs, "created_by" => Users\Model::get()->hashid, "action" => "{$action}::{$hook}", "message" => __( $message, ...$arguments ), ]); } return $result;