From 375ee9dd03ae55bdfc3761c44b7ef033073588fc Mon Sep 17 00:00:00 2001 From: Georg Duemmler <gd@bergwerk.ag> Date: Mon, 9 May 2016 17:17:20 +0200 Subject: [PATCH 1/5] add backend users output --- Classes/Domain/Model/Backend/User.php | 140 ++++++++++++++++++ Classes/Domain/Model/Client.php | 54 +++++++ .../Repository/Backend/UserRepository.php | 16 ++ Classes/Service/Import/ClientImport.php | 66 +++++++++ ...t3monitoring_domain_model_backend_user.php | 112 ++++++++++++++ .../tx_t3monitoring_domain_model_client.php | 24 ++- Resources/Private/Language/locallang.xlf | 24 +++ Resources/Private/Language/locallang_db.xlf | 21 +++ Resources/Private/Templates/Client/Show.html | 34 +++++ ...t3monitoring_domain_model_backend_user.gif | Bin 0 -> 533 bytes ext_tables.sql | 40 +++++ 11 files changed, 528 insertions(+), 3 deletions(-) create mode 100644 Classes/Domain/Model/Backend/User.php create mode 100644 Classes/Domain/Repository/Backend/UserRepository.php create mode 100644 Configuration/TCA/tx_t3monitoring_domain_model_backend_user.php create mode 100644 Resources/Public/Icons/tx_t3monitoring_domain_model_backend_user.gif diff --git a/Classes/Domain/Model/Backend/User.php b/Classes/Domain/Model/Backend/User.php new file mode 100644 index 0000000..9c1e959 --- /dev/null +++ b/Classes/Domain/Model/Backend/User.php @@ -0,0 +1,140 @@ +<?php +namespace T3Monitor\T3monitoring\Domain\Model\Backend; + +/* + * This file is part of the t3monitoring extension for TYPO3 CMS. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + */ + +use TYPO3\CMS\Extbase\DomainObject\AbstractEntity; + +class User extends AbstractEntity +{ + /** + * @var string + */ + protected $userName; + + /** + * @var string + */ + protected $realName; + + /** + * @var string + */ + protected $description; + + /** + * @var string + */ + protected $lastLogin; + + /** + * @var string + */ + protected $emailAddress; + + /** + * @var string + */ + protected $avatar; + + /** + * @return string + */ + public function getUserName() + { + return $this->userName; + } + + /** + * @param string $userName + */ + public function setUserName($userName) + { + $this->userName = $userName; + } + + /** + * @return string + */ + public function getRealName() + { + return $this->realName; + } + + /** + * @param string $realName + */ + public function setRealName($realName) + { + $this->realName = $realName; + } + + /** + * @return string + */ + public function getDescription() + { + return $this->description; + } + + /** + * @param string $description + */ + public function setDescription($description) + { + $this->description = $description; + } + + /** + * @return string + */ + public function getLastLogin() + { + return $this->lastLogin; + } + + /** + * @param string $lastLogin + */ + public function setLastLogin($lastLogin) + { + $this->lastLogin = $lastLogin; + } + + /** + * @return string + */ + public function getEmailAddress() + { + return $this->emailAddress; + } + + /** + * @param string $emailAddress + */ + public function setEmailAddress($emailAddress) + { + $this->emailAddress = $emailAddress; + } + + /** + * @return string + */ + public function getAvatar() + { + return $this->avatar; + } + + /** + * @param string $avatar + */ + public function setAvatar($avatar) + { + $this->avatar = $avatar; + } +} \ No newline at end of file diff --git a/Classes/Domain/Model/Client.php b/Classes/Domain/Model/Client.php index 1e7fcd9..0a68899 100644 --- a/Classes/Domain/Model/Client.php +++ b/Classes/Domain/Model/Client.php @@ -7,6 +7,8 @@ * For the full copyright and license information, please read the * LICENSE.txt file that was distributed with this source code. */ +use TYPO3\CMS\Core\Utility\GeneralUtility; +use TYPO3\CMS\Extbase\Utility\DebuggerUtility; /** * Client @@ -130,6 +132,14 @@ class Client extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity */ protected $extensions = null; + /** + * backendUsers + * + * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\T3Monitor\T3monitoring\Domain\Model\Backend\User> + * @lazy + */ + protected $backendUsers = null; + /** * core * @@ -166,6 +176,7 @@ public function __construct() protected function initStorageObjects() { $this->extensions = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); + $this->backendUsers = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); } /** @@ -546,6 +557,49 @@ public function setExtensions(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $exte $this->extensions = $extensions; } + /** + * Adds a backend user + * + * @param \T3Monitor\T3monitoring\Domain\Model\Backend\User $backendUser + * @return void + */ + public function addBackendUser(\T3Monitor\T3monitoring\Domain\Model\Backend\User $backendUser) + { + $this->backendUsers->attach($backendUser); + } + + /** + * Removes a backend user + * + * @param \T3Monitor\T3monitoring\Domain\Model\Backend\User $backendUserToRemove The backend user to be removed + * @return void + */ + public function removeBackendUser(\T3Monitor\T3monitoring\Domain\Model\Backend\User $backendUserToRemove) + { + $this->backendUsers->detach($backendUserToRemove); + } + + /** + * Returns the backend users + * + * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\T3Monitor\T3monitoring\Domain\Model\Backend\User> $backendUsers + */ + public function getBackendUsers() + { + return $this->backendUsers; + } + + /** + * Sets the backend users + * + * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\T3Monitor\T3monitoring\Domain\Model\Backend\User> $backendUsers + * @return void + */ + public function setBackendUsers(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $backendUsers) + { + $this->backendUsers = $backendUsers; + } + /** * Returns the core * diff --git a/Classes/Domain/Repository/Backend/UserRepository.php b/Classes/Domain/Repository/Backend/UserRepository.php new file mode 100644 index 0000000..cd1f28c --- /dev/null +++ b/Classes/Domain/Repository/Backend/UserRepository.php @@ -0,0 +1,16 @@ +<?php +namespace T3Monitor\T3monitoring\Domain\Repository\Backend; + +/* + * This file is part of the t3monitoring extension for TYPO3 CMS. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + */ + +use T3Monitor\T3monitoring\Domain\Repository\BaseRepository; + +class UserRepository extends BaseRepository +{ + +} \ No newline at end of file diff --git a/Classes/Service/Import/ClientImport.php b/Classes/Service/Import/ClientImport.php index 7e86d5e..6bec4fe 100644 --- a/Classes/Service/Import/ClientImport.php +++ b/Classes/Service/Import/ClientImport.php @@ -80,6 +80,7 @@ protected function importSingleClient(array $row) 'mysql_version' => $json['core']['mysqlClientVersion'], 'core' => $this->getUsedCore($json['core']['typo3Version']), 'extensions' => $this->handleExtensionRelations($row['uid'], $json['extensions']), + 'backend_users' => $this->handleBackendUserRelations($row['uid'], $json['users']['backend']), ); $this->addExtraData($json, $update, 'info'); @@ -211,6 +212,71 @@ protected function handleExtensionRelations($client, array $extensions = array() return count($extensions); } + /** + * @param int $client client uid + * @param array $users list of extensions + * @return int count of used extensions + */ + protected function handleBackendUserRelations($client, array $users = array()) + { + $table = 'tx_t3monitoring_domain_model_backend_user'; + $mmTable = 'tx_t3monitoring_client_backend_user_mm'; + + $existingUsers = $this->getDatabaseConnection()->exec_SELECTgetRows('A.*', $table.' A LEFT OUTER JOIN '.$mmTable.' B ON A.uid=B.uid_foreign', 'B.uid_local='.(int)$client); + + foreach($users as $user) + { + $userLastLoginDateTime = new \DateTime($user['lastLogin']['date'], new \DateTimeZone($user['lastLogin']['timezone'])); + $found = null; + + foreach($existingUsers as $existingUser) + { + if($existingUser['user_name'] == $user['userName']) + { + $found = $existingUser; + break; + } + } + + if($found) + { + $relationId = $found['uid']; + $update = array( + 'real_name' => (string)$user['realName'], + 'email_address' => (string)$user['emailAddress'], + 'description' => (string)$user['description'], + 'last_login' => (string)$userLastLoginDateTime->format('U'), + 'avatar' => (string)$user['avatar'], + 'tstamp' => $GLOBALS['EXEC_TIME'], + ); + $this->getDatabaseConnection()->exec_UPDATEquery($table, 'uid='.(int)$relationId, $update); + } else { + $insert = array( + 'pid' => $this->emConfiguration->getPid(), + 'user_name' => (string)$user['userName'], + 'real_name' => (string)$user['realName'], + 'email_address' => (string)$user['emailAddress'], + 'description' => (string)$user['description'], + 'last_login' => (string)$userLastLoginDateTime->format('U'), + 'avatar' => (string)$user['avatar'], + 'tstamp' => $GLOBALS['EXEC_TIME'], + ); + $this->getDatabaseConnection()->exec_INSERTquery($table, $insert); + $relationId = $this->getDatabaseConnection()->sql_insert_id(); + } + $fields = array('uid_local', 'uid_foreign'); + $relationsToBeAdded[] = array( + $client, + $relationId + ); + + $this->getDatabaseConnection()->exec_DELETEquery($mmTable, 'uid_local=' . (int)$client); + $this->getDatabaseConnection()->exec_INSERTmultipleRows($mmTable, $fields, $relationsToBeAdded); + } + + return count($users); + } + protected function getUsedCore($version) { if (isset($this->coreVersions[$version])) { diff --git a/Configuration/TCA/tx_t3monitoring_domain_model_backend_user.php b/Configuration/TCA/tx_t3monitoring_domain_model_backend_user.php new file mode 100644 index 0000000..352a24d --- /dev/null +++ b/Configuration/TCA/tx_t3monitoring_domain_model_backend_user.php @@ -0,0 +1,112 @@ +<?php +return [ + 'ctrl' => [ + 'title' => 'LLL:EXT:t3monitoring/Resources/Private/Language/locallang.xlf:tx_t3monitoring_domain_model_backend_user', + 'label' => 'real_name', + 'label_alt' => 'user_name', + 'label_alt_force' => true, + 'hideTable' => true, + 'tstamp' => 'tstamp', + 'crdate' => 'crdate', + 'cruser_id' => 'cruser_id', + 'delete' => 'deleted', + 'enablecolumns' => [ + 'disabled' => 'hidden', + ], + 'searchFields' => 'user_name,real_name,email_address,last_login,description,avatar,', + 'iconfile' => 'EXT:t3monitoring/Resources/Public/Icons/tx_t3monitoring_domain_model_backend_user.gif' + ], + 'interface' => [ + 'showRecordFieldList' => 'hidden, user_name, real_name, email_address, description, last_login, avatar', + ], + 'types' => [ + '1' => [ + 'showitem' => ' + --div--;Readonly information,user_name, real_name, email_address, description, last_login, avatar' + ], + ], + 'palettes' => [ + ], + 'columns' => [ + + 'hidden' => [ + 'exclude' => 1, + 'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden', + 'config' => [ + 'type' => 'check', + ], + ], + + 'user_name' => [ + 'exclude' => 1, + 'label' => 'LLL:EXT:t3monitoring/Resources/Private/Language/locallang.xlf:tx_t3monitoring_domain_model_backend_user.user_name', + 'config' => [ + 'readOnly' => true, + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim,required', + 'max' => 255 + ], + + ], + 'email_address' => [ + 'exclude' => 1, + 'label' => 'LLL:EXT:t3monitoring/Resources/Private/Language/locallang.xlf:tx_t3monitoring_domain_model_backend_user.email_address', + 'config' => [ + 'readOnly' => true, + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim', + 'max' => 255 + ], + + ], + 'real_name' => [ + 'exclude' => 1, + 'label' => 'LLL:EXT:t3monitoring/Resources/Private/Language/locallang.xlf:tx_t3monitoring_domain_model_backend_user.real_name', + 'config' => [ + 'readOnly' => true, + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim,required', + 'max' => 255 + ], + + ], + 'avatar' => [ + 'exclude' => 1, + 'label' => 'LLL:EXT:t3monitoring/Resources/Private/Language/locallang.xlf:tx_t3monitoring_domain_model_backend_user.avatar', + 'config' => [ + 'readOnly' => true, + 'type' => 'input', + 'size' => 30, + 'eval' => 'trim', + 'max' => 255 + ], + + ], + 'description' => [ + 'exclude' => 1, + 'label' => 'LLL:EXT:t3monitoring/Resources/Private/Language/locallang.xlf:tx_t3monitoring_domain_model_backend_user.description', + 'config' => [ + 'readOnly' => true, + 'type' => 'text', + 'default' => '', + 'cols' => 40, + 'rows' => 5, + ], + + ], + 'last_login' => [ + 'exclude' => 1, + 'label' => 'LLL:EXT:t3monitoring/Resources/Private/Language/locallang.xlf:tx_t3monitoring_domain_model_backend_user.last_login', + 'config' => [ + 'readOnly' => true, + 'type' => 'input', + 'size' => 30, + 'eval' => 'datetime' + ], + + ], + ], +]; diff --git a/Configuration/TCA/tx_t3monitoring_domain_model_client.php b/Configuration/TCA/tx_t3monitoring_domain_model_client.php index 9efa186..f373e62 100644 --- a/Configuration/TCA/tx_t3monitoring_domain_model_client.php +++ b/Configuration/TCA/tx_t3monitoring_domain_model_client.php @@ -10,17 +10,17 @@ 'enablecolumns' => [ 'disabled' => 'hidden', ], - 'searchFields' => 'title,domain,secret,email,php_version,mysql_version,insecure_core,outdated_core,insecure_extensions,outdated_extensions,error_message,extensions,core,sla,', + 'searchFields' => 'title,domain,secret,email,php_version,mysql_version,insecure_core,outdated_core,insecure_extensions,outdated_extensions,error_message,extensions,backend_users,core,sla,', 'iconfile' => 'EXT:t3monitoring/Resources/Public/Icons/tx_t3monitoring_domain_model_client.gif' ], 'interface' => [ - 'showRecordFieldList' => 'hidden, title, domain, secret, php_version, mysql_version, insecure_core, outdated_core, insecure_extensions, outdated_extensions, error_message, extensions, core, sla', + 'showRecordFieldList' => 'hidden, title, domain, secret, php_version, mysql_version, insecure_core, outdated_core, insecure_extensions, outdated_extensions, error_message, extensions, backend_users, core, sla', ], 'types' => [ '1' => [ 'showitem' => ' --div--;General,title, --palette--;;paletteDomain,sla, - --div--;Readonly information,last_successful_import,error_message,core, --palette--;;paletteVersions,extensions, + --div--;Readonly information,last_successful_import,error_message,core, --palette--;;paletteVersions,extensions,backend_users, insecure_core, outdated_core, insecure_extensions, outdated_extensions, --div--;Extra,extra_info,extra_warning,extra_danger' ], @@ -234,6 +234,24 @@ 'multiple' => 0, ], + ], + 'backend_users' => [ + 'exclude' => 1, + 'label' => 'LLL:EXT:t3monitoring/Resources/Private/Language/locallang.xlf:tx_t3monitoring_domain_model_client.backend_users', + 'config' => [ + 'readOnly' => true, + 'type' => 'group', + 'internal_type' => 'db', + 'allowed' => 'tx_t3monitoring_domain_model_backend_user', + 'foreign_table' => 'tx_t3monitoring_domain_model_backend_user', + 'foreign_table_where' => 'ORDER BY tx_t3monitoring_domain_model_backend_user.user_name', + 'MM' => 'tx_t3monitoring_client_backend_user_mm', + 'size' => 10, + 'autoSizeMax' => 30, + 'maxitems' => 9999, + 'multiple' => 0, + ], + ], 'core' => [ 'exclude' => 1, diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index 9f7542b..f51d890 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -3,6 +3,27 @@ <file source-language="en" datatype="plaintext" original="messages" date="2016-04-03T20:21:29Z" product-name="t3monitoring"> <header/> <body> + <trans-unit id="tx_t3monitoring_domain_model_backend_user"> + <source>Backend User</source> + </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_backend_user.user_name"> + <source>Username</source> + </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_backend_user.real_name"> + <source>Real Name</source> + </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_backend_user.description"> + <source>Description</source> + </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_backend_user.last_login"> + <source>Last login</source> + </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_backend_user.email_address"> + <source>Email Address</source> + </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_backend_user.avatar"> + <source>Avatar</source> + </trans-unit> <trans-unit id="tx_t3monitoring_domain_model_client"> <source>Client</source> </trans-unit> @@ -54,6 +75,9 @@ <trans-unit id="tx_t3monitoring_domain_model_client.extensions"> <source>Extensions</source> </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_client.backend_users"> + <source>Backend Users</source> + </trans-unit> <trans-unit id="tx_t3monitoring_domain_model_client.core"> <source>Core</source> </trans-unit> diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf index 1ecca80..c875ed4 100644 --- a/Resources/Private/Language/locallang_db.xlf +++ b/Resources/Private/Language/locallang_db.xlf @@ -3,6 +3,27 @@ <file source-language="en" datatype="plaintext" original="messages" date="2016-04-11T12:45:21Z" product-name="t3monitoring"> <header/> <body> + <trans-unit id="tx_t3monitoring_domain_model_backend_user"> + <source>Backend User</source> + </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_backend_user.user_name"> + <source>Username</source> + </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_backend_user.real_name"> + <source>Real Name</source> + </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_backend_user.description"> + <source>Description</source> + </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_backend_user.last_login"> + <source>Last login</source> + </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_backend_user.email_address"> + <source>Email Address</source> + </trans-unit> + <trans-unit id="tx_t3monitoring_domain_model_backend_user.avatar"> + <source>Avatar</source> + </trans-unit> <trans-unit id="tx_t3monitoring_domain_model_client"> <source>Client</source> </trans-unit> diff --git a/Resources/Private/Templates/Client/Show.html b/Resources/Private/Templates/Client/Show.html index f00d853..27a519e 100644 --- a/Resources/Private/Templates/Client/Show.html +++ b/Resources/Private/Templates/Client/Show.html @@ -90,6 +90,40 @@ <h1> </div> </f:if> + <f:if condition="{client.backendUsers}"> + <div class="panel panel-default"> + <div class="panel-heading"> + Backend Users ({client.backendUsers -> f:count()}) + </div> + <table class="table table-striped table-hover"> + <thead> + <tr> + <th>Avatar</th> + <th>User Name</th> + <th>Real Name</th> + <th>Email Address</th> + <th>Description</th> + <th>Last Login</th> + </tr> + </thead> + <tbody> + <f:for each="{client.backendUsers}" as="backendUser"> + <tr> + <td><f:if condition="{backendUser.avatar}"> + <span class="avatar-image"><img src="{client.domain}{backendUser.avatar}" width="32" /></span> + </f:if></td> + <td>{backendUser.userName}</td> + <td>{backendUser.realName}</td> + <td>{backendUser.emailAddress}</td> + <td>{backendUser.description}</td> + <td><f:format.date format="d-m-Y H:i">{backendUser.lastLogin}</f:format.date></td> + </tr> + </f:for> + </tbody> + </table> + </div> + </f:if> + <f:if condition="{client.extensions}"> <div class="panel panel-default"> <div class="panel-heading"> diff --git a/Resources/Public/Icons/tx_t3monitoring_domain_model_backend_user.gif b/Resources/Public/Icons/tx_t3monitoring_domain_model_backend_user.gif new file mode 100644 index 0000000000000000000000000000000000000000..6cc5f16355d84652db5ce39fcbc7256b7ea457cd GIT binary patch literal 533 zcmZ?wbhEHb6krfwc;>^PT&ti`uNc2IM6Fr5d*_GlT^}Mg`l>Z4?cBL@{mqr@Zmft{ z7wEdsHlXM1p|kH6En2i~+qT*bFHc_i5WY6x!0ESfTY`5SewDjFA!B!R!NKH=-7#5v z<8pIzr=96jYgDqIV-eVU&ToZld3pKFnKKjS+;FNpvSrJblpPUfQw-u~UN@U;5Wc}@ z$BrEa{W=>rZk&4HOZ}!-d-m*!-W0Ir`qGWJ*7TfcZfa@@UE^PKph&A-&32ZV$71`A zWAz0q9tEs&-?wjHUteGDl80Iy>iRueDs>7`>w{xsV{`V!C+`Sfvt~_7N=o9k(EtDc zGYnRs_>+Z^fx(AC2joCdoG`E#HTX0&x3sqT=(8Hwwzskf@u~E-2#Sa)Om246<W-$H zzgIwSvb`aPnkT=qgPD?ySBuU}w*_sI;?fdLOl)@6O}b9Za_%Oa9!=V^rt(deuH1}L mT*gdIiZ&J+P3*$v4C>yZMom0cTFy<3E({D?-?uh0SOWmDq@H{L literal 0 HcmV?d00001 diff --git a/ext_tables.sql b/ext_tables.sql index 6d59d2f..15a9f13 100644 --- a/ext_tables.sql +++ b/ext_tables.sql @@ -1,3 +1,29 @@ +# +# Table structure for table 'tx_t3monitoring_domain_model_backend_user' +# +CREATE TABLE tx_t3monitoring_domain_model_backend_user ( + + uid int(11) NOT NULL auto_increment, + pid int(11) DEFAULT '0' NOT NULL, + + user_name varchar(255) DEFAULT '' NOT NULL, + real_name varchar(255) DEFAULT '' NOT NULL, + email_address varchar(255) DEFAULT '' NOT NULL, + avatar varchar(255) DEFAULT '' NOT NULL, + description text NOT NULL, + last_login int(11) DEFAULT '0' NOT NULL, + + tstamp int(11) unsigned DEFAULT '0' NOT NULL, + crdate int(11) unsigned DEFAULT '0' NOT NULL, + cruser_id int(11) unsigned DEFAULT '0' NOT NULL, + deleted tinyint(4) unsigned DEFAULT '0' NOT NULL, + hidden tinyint(4) unsigned DEFAULT '0' NOT NULL, + + PRIMARY KEY (uid), + KEY parent (pid), + +); + # # Table structure for table 'tx_t3monitoring_domain_model_client' # @@ -22,6 +48,7 @@ CREATE TABLE tx_t3monitoring_domain_model_client ( extra_danger text NOT NULL, last_successful_import int(11) DEFAULT '0' NOT NULL, extensions int(11) unsigned DEFAULT '0' NOT NULL, + backend_users int(11) unsigned DEFAULT '0' NOT NULL, core int(11) unsigned DEFAULT '0', sla int(11) unsigned DEFAULT '0', @@ -129,6 +156,19 @@ CREATE TABLE tx_t3monitoring_domain_model_sla ( ); +# +# Table structure for table 'tx_t3monitoring_client_backend_user_mm' +# +CREATE TABLE tx_t3monitoring_client_backend_user_mm ( + uid_local int(11) unsigned DEFAULT '0' NOT NULL, + uid_foreign int(11) unsigned DEFAULT '0' NOT NULL, + sorting int(11) unsigned DEFAULT '0' NOT NULL, + sorting_foreign int(11) unsigned DEFAULT '0' NOT NULL, + + KEY uid_local (uid_local), + KEY uid_foreign (uid_foreign) +); + # # Table structure for table 'tx_t3monitoring_client_extension_mm' # From ca77f01511ec06be99ada53234b1875cb3438a6a Mon Sep 17 00:00:00 2001 From: Georg Duemmler <gd@bergwerk.ag> Date: Mon, 9 May 2016 17:18:19 +0200 Subject: [PATCH 2/5] remove unised namespace usages --- Classes/Domain/Model/Client.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/Classes/Domain/Model/Client.php b/Classes/Domain/Model/Client.php index 0a68899..4a71ccf 100644 --- a/Classes/Domain/Model/Client.php +++ b/Classes/Domain/Model/Client.php @@ -7,8 +7,6 @@ * For the full copyright and license information, please read the * LICENSE.txt file that was distributed with this source code. */ -use TYPO3\CMS\Core\Utility\GeneralUtility; -use TYPO3\CMS\Extbase\Utility\DebuggerUtility; /** * Client From e5f608c504f186ff2f3d62cfa340bd6bb0e27a96 Mon Sep 17 00:00:00 2001 From: Georg Duemmler <gd@bergwerk.ag> Date: Tue, 10 May 2016 14:45:17 +0200 Subject: [PATCH 3/5] remove avatar usage & fix lastlogin usage caus no one datetime usage is necessary --- Classes/Controller/StatisticController.php | 4 ++++ Classes/Domain/Model/Backend/User.php | 21 ------------------- Classes/Service/Import/ClientImport.php | 7 ++----- ...t3monitoring_domain_model_backend_user.php | 18 +++------------- Resources/Private/Language/locallang.xlf | 3 --- Resources/Private/Language/locallang_db.xlf | 3 --- Resources/Private/Templates/Client/Show.html | 4 ---- ext_tables.sql | 1 - 8 files changed, 9 insertions(+), 52 deletions(-) diff --git a/Classes/Controller/StatisticController.php b/Classes/Controller/StatisticController.php index 1942802..20e2546 100644 --- a/Classes/Controller/StatisticController.php +++ b/Classes/Controller/StatisticController.php @@ -60,6 +60,9 @@ public function indexAction(ClientFilterDemand $filter = null) $feedItems = $bulletinImport->start(); } + $monitorIpAddress = null; + + $this->view->assignMultiple([ 'filter' => $filter, 'clients' => $this->clientRepository->findByDemand($filter), @@ -76,6 +79,7 @@ public function indexAction(ClientFilterDemand $filter = null) 'numberOfClients' => $this->clientRepository->countAll(), 'slaVersions' => $this->slaRepository->findAll(), 'feedItems' => $feedItems, + 'monitorIpAddress' => $monitorIpAddress, 'importTimes' => [ 'client' => $this->registry->get('t3monitoring', 'importClient'), 'core' => $this->registry->get('t3monitoring', 'importCore'), diff --git a/Classes/Domain/Model/Backend/User.php b/Classes/Domain/Model/Backend/User.php index 9c1e959..ac7d622 100644 --- a/Classes/Domain/Model/Backend/User.php +++ b/Classes/Domain/Model/Backend/User.php @@ -37,11 +37,6 @@ class User extends AbstractEntity */ protected $emailAddress; - /** - * @var string - */ - protected $avatar; - /** * @return string */ @@ -121,20 +116,4 @@ public function setEmailAddress($emailAddress) { $this->emailAddress = $emailAddress; } - - /** - * @return string - */ - public function getAvatar() - { - return $this->avatar; - } - - /** - * @param string $avatar - */ - public function setAvatar($avatar) - { - $this->avatar = $avatar; - } } \ No newline at end of file diff --git a/Classes/Service/Import/ClientImport.php b/Classes/Service/Import/ClientImport.php index 6bec4fe..6353fe8 100644 --- a/Classes/Service/Import/ClientImport.php +++ b/Classes/Service/Import/ClientImport.php @@ -226,7 +226,6 @@ protected function handleBackendUserRelations($client, array $users = array()) foreach($users as $user) { - $userLastLoginDateTime = new \DateTime($user['lastLogin']['date'], new \DateTimeZone($user['lastLogin']['timezone'])); $found = null; foreach($existingUsers as $existingUser) @@ -245,8 +244,7 @@ protected function handleBackendUserRelations($client, array $users = array()) 'real_name' => (string)$user['realName'], 'email_address' => (string)$user['emailAddress'], 'description' => (string)$user['description'], - 'last_login' => (string)$userLastLoginDateTime->format('U'), - 'avatar' => (string)$user['avatar'], + 'last_login' => (string)$user['lastLogin'], 'tstamp' => $GLOBALS['EXEC_TIME'], ); $this->getDatabaseConnection()->exec_UPDATEquery($table, 'uid='.(int)$relationId, $update); @@ -257,8 +255,7 @@ protected function handleBackendUserRelations($client, array $users = array()) 'real_name' => (string)$user['realName'], 'email_address' => (string)$user['emailAddress'], 'description' => (string)$user['description'], - 'last_login' => (string)$userLastLoginDateTime->format('U'), - 'avatar' => (string)$user['avatar'], + 'last_login' => (string)$user['lastLogin'], 'tstamp' => $GLOBALS['EXEC_TIME'], ); $this->getDatabaseConnection()->exec_INSERTquery($table, $insert); diff --git a/Configuration/TCA/tx_t3monitoring_domain_model_backend_user.php b/Configuration/TCA/tx_t3monitoring_domain_model_backend_user.php index 352a24d..a88f1c9 100644 --- a/Configuration/TCA/tx_t3monitoring_domain_model_backend_user.php +++ b/Configuration/TCA/tx_t3monitoring_domain_model_backend_user.php @@ -13,16 +13,16 @@ 'enablecolumns' => [ 'disabled' => 'hidden', ], - 'searchFields' => 'user_name,real_name,email_address,last_login,description,avatar,', + 'searchFields' => 'user_name,real_name,email_address,last_login,description,', 'iconfile' => 'EXT:t3monitoring/Resources/Public/Icons/tx_t3monitoring_domain_model_backend_user.gif' ], 'interface' => [ - 'showRecordFieldList' => 'hidden, user_name, real_name, email_address, description, last_login, avatar', + 'showRecordFieldList' => 'hidden, user_name, real_name, email_address, description, last_login', ], 'types' => [ '1' => [ 'showitem' => ' - --div--;Readonly information,user_name, real_name, email_address, description, last_login, avatar' + --div--;Readonly information,user_name, real_name, email_address, description, last_login' ], ], 'palettes' => [ @@ -72,18 +72,6 @@ 'max' => 255 ], - ], - 'avatar' => [ - 'exclude' => 1, - 'label' => 'LLL:EXT:t3monitoring/Resources/Private/Language/locallang.xlf:tx_t3monitoring_domain_model_backend_user.avatar', - 'config' => [ - 'readOnly' => true, - 'type' => 'input', - 'size' => 30, - 'eval' => 'trim', - 'max' => 255 - ], - ], 'description' => [ 'exclude' => 1, diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index f51d890..49e5de3 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -21,9 +21,6 @@ <trans-unit id="tx_t3monitoring_domain_model_backend_user.email_address"> <source>Email Address</source> </trans-unit> - <trans-unit id="tx_t3monitoring_domain_model_backend_user.avatar"> - <source>Avatar</source> - </trans-unit> <trans-unit id="tx_t3monitoring_domain_model_client"> <source>Client</source> </trans-unit> diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf index c875ed4..9c41407 100644 --- a/Resources/Private/Language/locallang_db.xlf +++ b/Resources/Private/Language/locallang_db.xlf @@ -21,9 +21,6 @@ <trans-unit id="tx_t3monitoring_domain_model_backend_user.email_address"> <source>Email Address</source> </trans-unit> - <trans-unit id="tx_t3monitoring_domain_model_backend_user.avatar"> - <source>Avatar</source> - </trans-unit> <trans-unit id="tx_t3monitoring_domain_model_client"> <source>Client</source> </trans-unit> diff --git a/Resources/Private/Templates/Client/Show.html b/Resources/Private/Templates/Client/Show.html index 27a519e..f95dd74 100644 --- a/Resources/Private/Templates/Client/Show.html +++ b/Resources/Private/Templates/Client/Show.html @@ -98,7 +98,6 @@ <h1> <table class="table table-striped table-hover"> <thead> <tr> - <th>Avatar</th> <th>User Name</th> <th>Real Name</th> <th>Email Address</th> @@ -109,9 +108,6 @@ <h1> <tbody> <f:for each="{client.backendUsers}" as="backendUser"> <tr> - <td><f:if condition="{backendUser.avatar}"> - <span class="avatar-image"><img src="{client.domain}{backendUser.avatar}" width="32" /></span> - </f:if></td> <td>{backendUser.userName}</td> <td>{backendUser.realName}</td> <td>{backendUser.emailAddress}</td> diff --git a/ext_tables.sql b/ext_tables.sql index 15a9f13..59cfce4 100644 --- a/ext_tables.sql +++ b/ext_tables.sql @@ -9,7 +9,6 @@ CREATE TABLE tx_t3monitoring_domain_model_backend_user ( user_name varchar(255) DEFAULT '' NOT NULL, real_name varchar(255) DEFAULT '' NOT NULL, email_address varchar(255) DEFAULT '' NOT NULL, - avatar varchar(255) DEFAULT '' NOT NULL, description text NOT NULL, last_login int(11) DEFAULT '0' NOT NULL, From 527652d676e0c5e646c5c80349909fc61c10341e Mon Sep 17 00:00:00 2001 From: Janek Ruessmann <janek.ruessmann@wmdb.de> Date: Wed, 11 Oct 2017 23:25:59 +0200 Subject: [PATCH 4/5] cleanup and merge back missing functions from master --- Classes/Domain/Model/Client.php | 181 ++++++++++++++++++++++---------- 1 file changed, 124 insertions(+), 57 deletions(-) diff --git a/Classes/Domain/Model/Client.php b/Classes/Domain/Model/Client.php index 707073a..2c4bcb4 100644 --- a/Classes/Domain/Model/Client.php +++ b/Classes/Domain/Model/Client.php @@ -8,14 +8,17 @@ * LICENSE.txt file that was distributed with this source code. */ +use T3Monitor\T3monitoring\Domain\Model\Backend\User; +use TYPO3\CMS\Extbase\DomainObject\AbstractEntity; +use TYPO3\CMS\Extbase\Persistence\ObjectStorage; + /** * Client */ -class Client extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity +class Client extends AbstractEntity { /** - * title * * @var string * @validate NotEmpty @@ -23,143 +26,133 @@ class Client extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity protected $title = ''; /** - * domain - * * @var string * @validate NotEmpty */ protected $domain = ''; /** - * secret - * + * @var string + */ + protected $basicAuthUsername = ''; + + /** + * @var string + */ + protected $basicAuthPassword = ''; + + /** * @var string * @validate NotEmpty */ protected $secret = ''; /** - * email - * * @var string */ protected $email = ''; /** - * phpVersion - * * @var string */ protected $phpVersion = ''; /** - * mysqlVersion - * * @var string */ protected $mysqlVersion = ''; /** - * insecureCore - * + * @var int + */ + protected $diskTotalSpace = 0; + + /** + * @var int + */ + protected $diskFreeSpace = 0; + + /** * @var bool */ protected $insecureCore = false; /** - * outdatedCore - * * @var bool */ protected $outdatedCore = false; /** - * insecureExtensions - * * @var int */ protected $insecureExtensions = 0; /** - * outdatedExtensions - * * @var int */ protected $outdatedExtensions = 0; /** - * errorMessage - * * @var string */ protected $errorMessage = ''; /** - * extraInfo - * * @var string */ protected $extraInfo = ''; /** - * extraWarning - * * @var string */ protected $extraWarning = ''; /** - * extraDanger - * * @var string */ protected $extraDanger = ''; /** - * lastSuccessfulImport - * * @var \DateTime */ protected $lastSuccessfulImport = null; /** - * extensions - * - * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\T3Monitor\T3monitoring\Domain\Model\Extension> + * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\T3Monitor\T3monitoring\Domain\Model\Backend\User> * @lazy */ - protected $extensions = null; + protected $backendUsers = null; /** - * backendUsers - * - * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\T3Monitor\T3monitoring\Domain\Model\Backend\User> + * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\T3Monitor\T3monitoring\Domain\Model\Extension> * @lazy */ - protected $backendUsers = null; + protected $extensions = null; /** - * core - * * @var \T3Monitor\T3monitoring\Domain\Model\Core * @lazy */ protected $core = null; /** - * sla - * * @var \T3Monitor\T3monitoring\Domain\Model\Sla * @lazy */ protected $sla = null; + /** + * @var \T3Monitor\T3monitoring\Domain\Model\Tag + * @lazy + */ + protected $tag = null; + /** * __construct */ public function __construct() { - //Do not remove the next line: It would break the functionality + // Do not remove the next line: It would break the functionality $this->initStorageObjects(); } @@ -173,14 +166,14 @@ public function __construct() */ protected function initStorageObjects() { - $this->extensions = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); - $this->backendUsers = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); + $this->extensions = new ObjectStorage(); + $this->backendUsers = new ObjectStorage(); } /** * Returns the title * - * @return string $title + * @return string */ public function getTitle() { @@ -201,7 +194,7 @@ public function setTitle($title) /** * Returns the domain * - * @return string $domain + * @return string */ public function getDomain() { @@ -219,10 +212,42 @@ public function setDomain($domain) $this->domain = $domain; } + /** + * @return string + */ + public function getBasicAuthUsername() + { + return $this->basicAuthUsername; + } + + /** + * @param string $basicAuthUsername + */ + public function setBasicAuthUsername($basicAuthUsername) + { + $this->basicAuthUsername = $basicAuthUsername; + } + + /** + * @return string + */ + public function getBasicAuthPassword() + { + return $this->basicAuthPassword; + } + + /** + * @param string $basicAuthPassword + */ + public function setBasicAuthPassword($basicAuthPassword) + { + $this->basicAuthPassword = $basicAuthPassword; + } + /** * Returns the secret * - * @return string $secret + * @return string */ public function getSecret() { @@ -243,7 +268,7 @@ public function setSecret($secret) /** * Returns the email * - * @return string $email + * @return string */ public function getEmail() { @@ -264,7 +289,7 @@ public function setEmail($email) /** * Returns the phpVersion * - * @return string $phpVersion + * @return string */ public function getPhpVersion() { @@ -285,7 +310,7 @@ public function setPhpVersion($phpVersion) /** * Returns the mysqlVersion * - * @return string $mysqlVersion + * @return string */ public function getMysqlVersion() { @@ -303,10 +328,52 @@ public function setMysqlVersion($mysqlVersion) $this->mysqlVersion = $mysqlVersion; } + /** + * Returns the diskFreeSpace + * + * @return int + */ + public function getDiskFreeSpace() + { + return $this->diskFreeSpace; + } + + /** + * Sets the diskFreeSpace + * + * @param int $diskFreeSpace + * @return void + */ + public function setDiskFreeSpace($diskFreeSpace) + { + $this->diskFreeSpace = $diskFreeSpace; + } + + /** + * Returns the diskTotalSpace + * + * @return int + */ + public function getDiskTotalSpace() + { + return $this->diskTotalSpace; + } + + /** + * Sets the diskTotalSpace + * + * @param int $diskTotalSpace + * @return void + */ + public function setDiskTotalSpace($diskTotalSpace) + { + $this->diskTotalSpace = $diskTotalSpace; + } + /** * Returns the insecureCore * - * @return bool $insecureCore + * @return bool */ public function getInsecureCore() { @@ -558,10 +625,10 @@ public function setExtensions(ObjectStorage $extensions) /** * Adds a backend user * - * @param \T3Monitor\T3monitoring\Domain\Model\Backend\User $backendUser + * @param User $backendUser * @return void */ - public function addBackendUser(\T3Monitor\T3monitoring\Domain\Model\Backend\User $backendUser) + public function addBackendUser(User $backendUser) { $this->backendUsers->attach($backendUser); } @@ -569,10 +636,10 @@ public function addBackendUser(\T3Monitor\T3monitoring\Domain\Model\Backend\User /** * Removes a backend user * - * @param \T3Monitor\T3monitoring\Domain\Model\Backend\User $backendUserToRemove The backend user to be removed + * @param User $backendUserToRemove The backend user to be removed * @return void */ - public function removeBackendUser(\T3Monitor\T3monitoring\Domain\Model\Backend\User $backendUserToRemove) + public function removeBackendUser(User $backendUserToRemove) { $this->backendUsers->detach($backendUserToRemove); } @@ -593,7 +660,7 @@ public function getBackendUsers() * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\T3Monitor\T3monitoring\Domain\Model\Backend\User> $backendUsers * @return void */ - public function setBackendUsers(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $backendUsers) + public function setBackendUsers(ObjectStorage $backendUsers) { $this->backendUsers = $backendUsers; } From 420a23b217de677c407aa90358c59c2840b48830 Mon Sep 17 00:00:00 2001 From: Janek Ruessmann <janek.ruessmann@wmdb.de> Date: Wed, 11 Oct 2017 23:56:18 +0200 Subject: [PATCH 5/5] remove $monitorIpAddress --- Classes/Controller/StatisticController.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Classes/Controller/StatisticController.php b/Classes/Controller/StatisticController.php index d7fea49..c0e6c97 100644 --- a/Classes/Controller/StatisticController.php +++ b/Classes/Controller/StatisticController.php @@ -83,9 +83,6 @@ public function indexAction(ClientFilterDemand $filter = null) $feedItems = $bulletinImport->start(); } - $monitorIpAddress = null; - - $this->view->assignMultiple([ 'filter' => $filter, 'clients' => $this->clientRepository->findByDemand($filter), @@ -104,7 +101,6 @@ public function indexAction(ClientFilterDemand $filter = null) 'slaVersions' => $this->slaRepository->findAll(), 'tagVersions' => $this->tagRepository->findAll(), 'feedItems' => $feedItems, - 'monitorIpAddress' => $monitorIpAddress, 'importTimes' => [ 'client' => $this->registry->get('t3monitoring', 'importClient'), 'core' => $this->registry->get('t3monitoring', 'importCore'),