Commit 959bb062 authored by Sebastian Diez's avatar Sebastian Diez
Browse files

TYPO3 8 compatibility

parent dbef6fab
<?php
namespace T3o\T3oMembership\Controller;
use T3o\T3oMembership\Domain\Repository\MemberRepository;
use T3o\T3oMembership\Domain\Repository\MembershipRepository;
use TYPO3\CMS\Extbase\Utility\DebuggerUtility;
/**
* This file is part of the TYPO3 CMS project.
*
......@@ -13,34 +19,34 @@
*/
/**
* Class Tx_T3oMembership_Controller_MemberController
* Class \T3oMembership\Controller\MemberController
*
* @author Thomas Löffler <thomas.loeffler@typo3.org>
*/
class Tx_T3oMembership_Controller_MemberController extends Tx_Extbase_MVC_Controller_ActionController
class MemberController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{
/**
* memberRepository
*
* @var Tx_T3oMembership_Domain_Repository_MemberRepository
* @var MemberRepository
*/
protected $memberRepository;
/**
* membershipRepository
*
* @var Tx_T3oMembership_Domain_Repository_MembershipRepository
* @var MembershipRepository
*/
protected $membershipRepository;
/**
* injectMemberRepository
*
* @param Tx_T3oMembership_Domain_Repository_MemberRepository $memberRepository
* @param MemberRepository $memberRepository
* @return void
*/
public function injectMemberRepository(Tx_T3oMembership_Domain_Repository_MemberRepository $memberRepository)
public function injectMemberRepository(MemberRepository $memberRepository)
{
$this->memberRepository = $memberRepository;
}
......@@ -48,11 +54,11 @@ class Tx_T3oMembership_Controller_MemberController extends Tx_Extbase_MVC_Contro
/**
* injectMembershipRepository
*
* @param Tx_T3oMembership_Domain_Repository_MembershipRepository $membershipRepository
* @param MembershipRepository $membershipRepository
* @return void
*/
public function injectMembershipRepository(
Tx_T3oMembership_Domain_Repository_MembershipRepository $membershipRepository
MembershipRepository $membershipRepository
) {
$this->membershipRepository = $membershipRepository;
}
......@@ -66,7 +72,6 @@ class Tx_T3oMembership_Controller_MemberController extends Tx_Extbase_MVC_Contro
{
$filterMembership = 0;
$filterString = '';
if ($this->request->hasArgument('filter') && $this->request->getArgument('filter')) {
$filterString = htmlspecialchars($this->request->getArgument('filter'));
$this->view->assign('filter', $filterString);
......
<?php
namespace T3o\T3oMembership\Domain\Model;
use Typo3Agencies\Domain\Model\Agency;
/**
* This file is part of the TYPO3 CMS project.
*
......@@ -13,14 +17,14 @@
*/
/**
* Class Tx_T3oMembership_Domain_Model_Member
* Class \T3oMembership\Domain\Model\Member
*
* @author Thomas Löffler <thomas.loeffler@typo3.org>
*/
class Tx_T3oMembership_Domain_Model_Member extends Tx_Extbase_DomainObject_AbstractEntity
class Member extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
* @var Tx_Typo3Agencies_Domain_Model_Agency
* @var Agency
*/
protected $agency;
......@@ -117,12 +121,12 @@ class Tx_T3oMembership_Domain_Model_Member extends Tx_Extbase_DomainObject_Abstr
/**
* membership
*
* @var Tx_T3oMembership_Domain_Model_Membership
* @var \T3o\T3oMembership\Domain\Model\Membership
*/
protected $membership;
/**
* @return Tx_Typo3Agencies_Domain_Model_Agency
* @return Agency
*/
public function getAgency()
{
......@@ -370,7 +374,7 @@ class Tx_T3oMembership_Domain_Model_Member extends Tx_Extbase_DomainObject_Abstr
/**
* Returns the membership
*
* @return Tx_T3oMembership_Domain_Model_Membership $membership
* @return Membership $membership
*/
public function getMembership()
{
......@@ -380,10 +384,10 @@ class Tx_T3oMembership_Domain_Model_Member extends Tx_Extbase_DomainObject_Abstr
/**
* Sets the membership
*
* @param Tx_T3oMembership_Domain_Model_Membership $membership
* @param Membership $membership
* @return void
*/
public function setMembership(Tx_T3oMembership_Domain_Model_Membership $membership)
public function setMembership(Membership $membership)
{
$this->membership = $membership;
}
......
<?php
/**
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
namespace T3o\T3oMembership\Domain\Model;
/**
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
/**
* Class Tx_T3oMembership_Domain_Model_Membership
* Class \T3oMembership\Domain\Model\Membership
* @author Thomas Löffler <thomas.loeffler@typo3.org>
*/
class Tx_T3oMembership_Domain_Model_Membership extends Tx_Extbase_DomainObject_AbstractValueObject
class Membership extends \TYPO3\CMS\Extbase\DomainObject\AbstractValueObject
{
/**
......
<?php
namespace T3o\T3oMembership\Domain\Repository;
use TYPO3\CMS\Extbase\Persistence\QueryInterface;
use TYPO3\CMS\Extbase\Persistence\QueryResultInterface;
/**
* This file is part of the TYPO3 CMS project.
*
......@@ -13,24 +18,24 @@
*/
/**
* Class Tx_T3oMembership_Domain_Repository_MemberRepository
* Class \T3oMembership\Domain\Repository\MemberRepository
* @author Thomas Löffler <thomas.loeffler@typo3.org>
*/
class Tx_T3oMembership_Domain_Repository_MemberRepository extends Tx_Extbase_Persistence_Repository
class MemberRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
/**
* @var array
*/
protected $defaultOrderings = array(
'membership' => Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING,
'name' => Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING
'membership' => QueryInterface::ORDER_ASCENDING,
'name' => QueryInterface::ORDER_ASCENDING
);
/**
* @param string $filterString
* @param string $filterString
* @param integer $filterMembership
* @return Tx_Extbase_Persistence_QueryResultInterface
* @return QueryResultInterface
*/
public function findByStringAndMembership($filterString, $filterMembership)
{
......
<?php
namespace T3o\T3oMembership\Domain\Repository;
use TYPO3\CMS\Extbase\Persistence\QueryInterface;
/**
* This file is part of the TYPO3 CMS project.
*
......@@ -17,14 +21,13 @@
*
* @author Thomas Löffler <thomas.loeffler@typo3.org>
*/
class Tx_T3oMembership_Domain_Repository_MembershipRepository extends Tx_Extbase_Persistence_Repository
class MembershipRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
/**
* @var array
*/
protected $defaultOrderings = array(
'uid' => Tx_Extbase_Persistence_QueryInterface::ORDER_ASCENDING
'uid' => QueryInterface::ORDER_ASCENDING
);
}
\ No newline at end of file
<?php
namespace T3o\T3oMembership\Task;
use TYPO3\CMS\Extbase\Scheduler\Task;
use TYPO3\CMS\Scheduler\Controller\SchedulerModuleController;
use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
/**
* This file is part of the TYPO3 CMS project.
*
......@@ -17,37 +23,37 @@
*
* @author Thomas Löffler <thomas.loeffler@typo3.org>
*/
class Tx_T3oMembership_Task_ImportMembers_AdditionalFieldProvider implements tx_scheduler_AdditionalFieldProvider
class ImportMembersAdditionalFieldProvider implements \TYPO3\CMS\Scheduler\AdditionalFieldProviderInterface
{
/**
* Gets additional fields to render in the form to add/edit a task
*
* @param array $taskInfo
* @param tx_scheduler_Task $task
* @param tx_scheduler_Module $schedulerModule
* @param Task $task
* @param SchedulerModuleController $schedulerModule
* @return array A two dimensional array, array('Identifier' => array('fieldId' => array('code' => '',
* 'label' => '', 'cshKey' => '', 'cshLabel' => ''))
*/
public function getAdditionalFields(array &$taskInfo, $task, tx_scheduler_Module $schedulerModule)
public function getAdditionalFields(array &$taskInfo, Task $task, SchedulerModuleController $schedulerModule)
{
$additionalFields = array();
// adds field for setting file path for CSV file to import
$importFile = '';
$membershipStoragePid = 0;
if ($task instanceof tx_scheduler_Task) {
if ($task instanceof Task) {
$importFile = htmlspecialchars($task->getImportFile());
$membershipStoragePid = (int)$task->getMembershipStoragePid();
}
$additionalFields['importFile'] = array(
'code' => '<input type="text" name="tx_scheduler[importFile]" value="' . $importFile . '" />',
'label' => Tx_Extbase_Utility_Localization::translate('importFile', 't3o_membership')
'label' => LocalizationUtility::translate('importFile', 't3omembership')
);
// adds field for setting storage PID
$additionalFields['storagePid'] = array(
'code' => '<input type="text" name="tx_scheduler[storagePid]" value="' . $membershipStoragePid . '" />',
'label' => Tx_Extbase_Utility_Localization::translate('storagePid', 't3o_membership')
'label' => LocalizationUtility::translate('storagePid', 't3omembership')
);
return $additionalFields;
......@@ -57,10 +63,10 @@ class Tx_T3oMembership_Task_ImportMembers_AdditionalFieldProvider implements tx_
* Validates the additional fields' values
*
* @param array $submittedData
* @param tx_scheduler_Module $schedulerModule
* @param SchedulerModuleController $schedulerModule
* @return boolean
*/
public function validateAdditionalFields(array &$submittedData, tx_scheduler_Module $schedulerModule)
public function validateAdditionalFields(array &$submittedData, SchedulerModuleController $schedulerModule)
{
// only validation for importFile would be a file_exists, but it will be validated in the task itself
......@@ -71,10 +77,10 @@ class Tx_T3oMembership_Task_ImportMembers_AdditionalFieldProvider implements tx_
* Takes care of saving the additional fields' values in the task's object
*
* @param array $submittedData
* @param tx_scheduler_Task|Tx_T3oMembership_Task_ImportMembersTask $task
* @param Task $task
* @return void
*/
public function saveAdditionalFields(array $submittedData, tx_scheduler_Task $task)
public function saveAdditionalFields(array $submittedData, Task $task)
{
$task->setImportFile($submittedData['importFile']);
$task->setMembershipStoragePid($submittedData['storagePid']);
......
<?php
namespace T3o\T3oMembership\Task;
use \TYPO3\CMS\Core\Utility\GeneralUtility;
/**
* This file is part of the TYPO3 CMS project.
......@@ -12,7 +15,7 @@
*
* The TYPO3 project - inspiring people to share!
*/
class Tx_T3oMembership_Task_ImportMembersTask extends tx_scheduler_Task
class ImportMembersTask extends \TYPO3\CMS\Extbase\Scheduler\Task
{
/**
* @var array
......@@ -39,7 +42,10 @@ class Tx_T3oMembership_Task_ImportMembersTask extends tx_scheduler_Task
*/
public function execute()
{
t3lib_div::devLog('[tx_scheduler_ImportMember]: execute', 't3o_membership', 0);
/** @var $logger \TYPO3\CMS\Core\Log\Logger */
$logger = GeneralUtility::makeInstance('TYPO3\CMS\Core\Log\LogManager')->getLogger(__CLASS__);
$logger->debug('Execute');
$membershipRecords = $this->getDatabaseConnection()->exec_SELECTgetRows(
'uid, name',
'tx_t3omembership_domain_model_membership',
......@@ -52,16 +58,12 @@ class Tx_T3oMembership_Task_ImportMembersTask extends tx_scheduler_Task
// does the import file exist?
$importFile = $this->getImportFile();
if (!t3lib_div::isAbsPath($importFile)) {
$importFile = t3lib_div::getFileAbsFileName($importFile);
if (!GeneralUtility::isAbsPath($importFile)) {
$importFile = GeneralUtility::getFileAbsFileName($importFile);
}
if (!file_exists($importFile)) {
t3lib_div::devLog(
'[tx_scheduler_ImportMember]: no importfile - given value: ' . $importFile,
't3o_membership',
0
);
$logger->debug('No importfile', array('filename' => $importFile));
return false;
}
......@@ -72,7 +74,7 @@ class Tx_T3oMembership_Task_ImportMembersTask extends tx_scheduler_Task
foreach ($fileData as $key => $line) {
$line = iconv('ISO-8859-15', 'UTF-8', $line);
/** @noinspection PhpParamsInspection */
$fields = t3lib_div::trimExplode("\t", $line);
$fields = GeneralUtility::trimExplode("\t", $line);
$membershipUid = $this->getMembershipUid($fields[12]);
// Skip records with unknown membership types.
if (empty($membershipUid)) {
......@@ -92,31 +94,31 @@ class Tx_T3oMembership_Task_ImportMembersTask extends tx_scheduler_Task
}
$member = array(
'name' => $fields[6],
'name' => $fields[6],
'subscription_no' => $subscriptionNo,
'external_id' => (int)$fields[0],
'address' => $fields[7] !== '' ? $fields[7] : $fields[8],
'zip' => $fields[10],
'city' => $fields[11],
'country' => $fields[13],
'end_date' => $endDate,
'endtime' => $endTime,
'hidden' => $hidden,
'starttime' => 0,
'membership' => $membershipUid,
'pid' => $this->getMembershipStoragePid(),
'crdate' => time(),
'tstamp' => time(),
'invoice_email' => $fields[84],
'email' => $fields[79],
'url' => $fields[80],
'firstname' => $fields[82],
'lastname' => $fields[83]
'external_id' => (int)$fields[0],
'address' => $fields[7] !== '' ? $fields[7] : $fields[8],
'zip' => $fields[10],
'city' => $fields[11],
'country' => $fields[13],
'end_date' => $endDate,
'endtime' => $endTime,
'hidden' => $hidden,
'starttime' => 0,
'membership' => $membershipUid,
'pid' => $this->getMembershipStoragePid(),
'crdate' => time(),
'tstamp' => time(),
'invoice_email' => $fields[84],
'email' => $fields[79],
'url' => $fields[80],
'firstname' => $fields[82],
'lastname' => $fields[83]
);
$memberUid = $this->createOrUpdateMember($subscriptionNo, $member);
foreach($this->hookObjects as $hookObject) {
foreach ($this->hookObjects as $hookObject) {
if (method_exists($hookObject, 'postUpdateMemberData')) {
$hookObject->postUpdateMemberData($memberUid, $member);
}
......@@ -130,7 +132,7 @@ class Tx_T3oMembership_Task_ImportMembersTask extends tx_scheduler_Task
* Checks if the member with the given subscription number already exists in the database.
* If he exists, his data will be updated, otherwise a new record will be inserted.
*
* @param int $subscriptionNo
* @param int $subscriptionNo
* @param array $memberData
* @return int The uid of the updated / inserted member.
*/
......@@ -178,7 +180,7 @@ class Tx_T3oMembership_Task_ImportMembersTask extends tx_scheduler_Task
$endDateTime->setTime(0, 0, 0);
# $endDateTime->add(new DateInterval('P1Y'));
# $endDateTime->add(new DateInterval('P1Y'));
return $endDateTime->getTimestamp();
}
......@@ -231,14 +233,14 @@ class Tx_T3oMembership_Task_ImportMembersTask extends tx_scheduler_Task
*/
protected function initializeHookObjects()
{
if (!is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['t3o_membership']['importMemberTaksHooks'])) {
if (!is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['t3omembership']['importMemberTaksHooks'])) {
return;
}
foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['t3o_membership']['importMemberTaksHooks'] as $classData) {
$hookObject = t3lib_div::getUserObj($classData);
foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['t3omembership']['importMemberTaksHooks'] as $classData) {
$hookObject = GeneralUtility::getUserObj($classData);
if (!is_object($hookObject)) {
throw new UnexpectedValueException(
'The hook object class '. $classData . ' could not be instantiated.'
throw new UnexpectedValueException( // @TODO Namespace?
'The hook object class ' . $classData . ' could not be instantiated.'
);
}
$this->hookObjects[] = $hookObject;
......
......@@ -3,13 +3,34 @@ if (!defined('TYPO3_MODE')) {
die ('Access denied.');
}
$TCA['tx_t3omembership_domain_model_member'] = array(
'ctrl' => $TCA['tx_t3omembership_domain_model_member']['ctrl'],
$tca = array(
'ctrl' => array(
'title' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xlf:tx_t3omembership_domain_model_member',
'label' => 'name',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
'dividers2tabs' => true,
'origUid' => 't3_origuid',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'delete' => 'deleted',
'enablecolumns' => array(
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
),
'searchFields' => 'name,external_id,end_date,address,zip,city,country,email,url,membership,',
'dynamicConfigFile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('t3o_membership') . 'Configuration/TCA/tx_t3omembership_domain_model_member.php',
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('t3o_membership') . 'Resources/Public/Icons/tx_t3omembership_domain_model_member.gif'
),
'interface' => array(
'showRecordFieldList' => 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, name, firstname, lastname, external_id, end_date, address, zip, city, country, email, invoice_email, url, membership',
),
'types' => array(
'1' => array('showitem' => 'sys_language_uid;;;;1-1-1, l10n_parent, l10n_diffsource, hidden;;1, name, firstname, lastname, external_id, subscription_no, end_date, address, zip, city, country, email, invoice_email, url, membership,--div--;LLL:EXT:cms/locallang_ttc.xml:tabs.access,starttime, endtime'),
'1' => array('showitem' => 'sys_language_uid;;;;1-1-1, l10n_parent, l10n_diffsource, hidden;;1, name, firstname, lastname, external_id, subscription_no, end_date, address, zip, city, country, email, invoice_email, url, membership,--div--;LLL:EXT:cms/locallang_ttc.xlf:tabs.access,starttime, endtime'),
),
'palettes' => array(
'1' => array('showitem' => ''),
......@@ -17,21 +38,21 @@ $TCA['tx_t3omembership_domain_model_member'] = array(
'columns' => array(
'sys_language_uid' => array(
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.language',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.language',
'config' => array(
'type' => 'select',
'foreign_table' => 'sys_language',
'foreign_table_where' => 'ORDER BY sys_language.title',
'items' => array(
array('LLL:EXT:lang/locallang_general.xml:LGL.allLanguages', -1),
array('LLL:EXT:lang/locallang_general.xml:LGL.default_value', 0)
array('LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages', -1),
array('LLL:EXT:lang/locallang_general.xlf:LGL.default_value', 0)
),
),
),
'l10n_parent' => array(
'displayCond' => 'FIELD:sys_language_uid:>:0',
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.l18n_parent',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.l18n_parent',
'config' => array(
'type' => 'select',
'items' => array(
......@@ -48,7 +69,7 @@ $TCA['tx_t3omembership_domain_model_member'] = array(
),
'hidden' => array(
'exclude' => 1,
'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.hidden',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden',
'config' => array(
'type' => 'check',
),
......@@ -56,7 +77,7 @@ $TCA['tx_t3omembership_domain_model_member'] = array(
'starttime' => array(
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.starttime',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.starttime',
'config' => array(
'type' => 'input',
'size' => 13,
......@@ -72,7 +93,7 @@ $TCA['tx_t3omembership_domain_model_member'] = array(
'endtime' => array(
'exclude' => 1,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.endtime',
'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.endtime',
'config' => array(
'type' => 'input',
'size' => 13,
......@@ -87,7 +108,7 @@ $TCA['tx_t3omembership_domain_model_member'] = array(
),
'name' => array(
'exclude' => 0,
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xml:tx_t3omembership_domain_model_member.name',
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xlf:tx_t3omembership_domain_model_member.name',
'config' => array(
'type' => 'input',
'size' => 30,
......@@ -96,7 +117,7 @@ $TCA['tx_t3omembership_domain_model_member'] = array(
),
'external_id' => array(
'exclude' => 0,
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xml:tx_t3omembership_domain_model_member.external_id',
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xlf:tx_t3omembership_domain_model_member.external_id',
'config' => array(
'type' => 'input',
'size' => 4,
......@@ -105,7 +126,7 @@ $TCA['tx_t3omembership_domain_model_member'] = array(
),
'subscription_no' => array(
'exclude' => 0,
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xml:tx_t3omembership_domain_model_member.subscription_no',
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xlf:tx_t3omembership_domain_model_member.subscription_no',
'config' => array(
'type' => 'input',
'size' => 4,
......@@ -114,7 +135,7 @@ $TCA['tx_t3omembership_domain_model_member'] = array(
),
'end_date' => array(
'exclude' => 0,
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xml:tx_t3omembership_domain_model_member.end_date',
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xlf:tx_t3omembership_domain_model_member.end_date',
'config' => array(
'type' => 'input',
'size' => 10,
......@@ -125,7 +146,7 @@ $TCA['tx_t3omembership_domain_model_member'] = array(
),
'address' => array(
'exclude' => 0,
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xml:tx_t3omembership_domain_model_member.address',
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xlf:tx_t3omembership_domain_model_member.address',
'config' => array(
'type' => 'input',
'size' => 30,
......@@ -134,7 +155,7 @@ $TCA['tx_t3omembership_domain_model_member'] = array(
),
'zip' => array(
'exclude' => 0,
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xml:tx_t3omembership_domain_model_member.zip',
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xlf:tx_t3omembership_domain_model_member.zip',
'config' => array(
'type' => 'input',
'size' => 30,
......@@ -143,7 +164,7 @@ $TCA['tx_t3omembership_domain_model_member'] = array(
),
'city' => array(
'exclude' => 0,
'label' => 'LLL:EXT:t3o_membership/Resources/Private/Language/locallang_db.xml:tx_t3omembership_domain_model_memb