Made user controller working mostly. Not everything is tested but seems good
This commit is contained in:
@@ -48,6 +48,27 @@ abstract class AbstractCommonClubsModel
|
||||
$this->values = $values;
|
||||
}
|
||||
|
||||
public function applyAndMergeValues($values, $unpack = true)
|
||||
{
|
||||
$vals = $this->getValues();
|
||||
|
||||
if($unpack)
|
||||
$vals = $this->packExternalReferencesAsKeys($vals);
|
||||
|
||||
foreach($this->getFactory()->getAttributes() as $column)
|
||||
{
|
||||
if(array_key_exists($column->getAlias(), $values))
|
||||
{
|
||||
$vals[$column->getAlias()] = $values[$column->getAlias()];
|
||||
}
|
||||
}
|
||||
|
||||
if($unpack)
|
||||
$vals = $this->unpackExternalReferencesFromKeys($vals);
|
||||
|
||||
$this->setValues($vals, false);
|
||||
}
|
||||
|
||||
protected function setValue($key, $value)
|
||||
{
|
||||
if(is_null($this->values))
|
||||
@@ -134,6 +155,7 @@ abstract class AbstractCommonClubsModel
|
||||
$vals[$alias] = $a->packValue($vals[$alias]);
|
||||
}
|
||||
|
||||
// XXX Joins
|
||||
return $vals;
|
||||
}
|
||||
|
||||
@@ -144,7 +166,8 @@ abstract class AbstractCommonClubsModel
|
||||
foreach($factory->getAttributes() as $a)
|
||||
{
|
||||
$alias = $a->getAlias();
|
||||
$vals[$alias] = $a->unpackValue($vals[$alias]);
|
||||
if(isset($vals[$alias]))
|
||||
$vals[$alias] = $a->unpackValue($vals[$alias]);
|
||||
}
|
||||
|
||||
$joins = $factory->getJoins();
|
||||
|
||||
@@ -141,10 +141,16 @@ abstract class AbstractCommonClubsModelFactory
|
||||
* @param int $id
|
||||
* @return AbstractCommonClubsModel
|
||||
*/
|
||||
public function loadById($id) {
|
||||
public function loadById($id, $throwErr = true)
|
||||
{
|
||||
$arr = $this->loadElements("main.id = " . ((int)$id) );
|
||||
if(sizeof($arr) == 0)
|
||||
throw new ElementNotFoundException();
|
||||
{
|
||||
if($throwErr)
|
||||
throw new ElementNotFoundException();
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
return $arr[0];
|
||||
}
|
||||
|
||||
@@ -8,14 +8,14 @@ class CommonClubsModelFactoryUser extends AbstractCommonClubsModelFactory
|
||||
public function fetchAttributes()
|
||||
{
|
||||
return array(
|
||||
new CommonClubsModelColumnString('user'),
|
||||
new CommonClubsModelColumnString('name'),
|
||||
new CommonClubsModelColumnString('password'),
|
||||
new CommonClubsModelColumnString('address'),
|
||||
new CommonClubsModelColumnString('city'),
|
||||
new CommonClubsModelColumnString('mail'),
|
||||
new CommonClubsModelColumnString('phone'),
|
||||
new CommonClubsModelColumnString('mobile')
|
||||
new CommonClubsModelColumnString('user', new CommonClubsControllerMappingCmd('Benutzername')),
|
||||
new CommonClubsModelColumnString('name', new CommonClubsControllerMappingString('Bürgerlicher Name')),
|
||||
new CommonClubsModelColumnString('password', new CommonClubsControllerMappingString('Passwort', false)),
|
||||
new CommonClubsModelColumnString('address', new CommonClubsControllerMappingString('Adresse')),
|
||||
new CommonClubsModelColumnString('city', new CommonClubsControllerMappingString('Stadt')),
|
||||
new CommonClubsModelColumnString('mail', new CommonClubsControllerMappingString('E-Mail')),
|
||||
new CommonClubsModelColumnString('phone', new CommonClubsControllerMappingString('Telefonnummer', false)),
|
||||
new CommonClubsModelColumnString('mobile', new CommonClubsControllerMappingString('Handynummer', false))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -114,6 +114,12 @@ class CommonClubsModelUser extends AbstractCommonClubsModel
|
||||
$this->setValue('password', $hash);
|
||||
}
|
||||
|
||||
public function isPasswordSet()
|
||||
{
|
||||
$password = $this->getValues()['password'];
|
||||
return isset($password) && strlen($password) > 0;
|
||||
}
|
||||
|
||||
public function getPositions()
|
||||
{
|
||||
return $this->fetchAssociatedElements(new CommonClubsModelFactoryUserassoc(), 'userid');
|
||||
@@ -139,7 +145,7 @@ class CommonClubsModelUser extends AbstractCommonClubsModel
|
||||
return true;
|
||||
}
|
||||
|
||||
public function isUsernameSuitable($user)
|
||||
public function isUsernameFree($user)
|
||||
{
|
||||
$factory = new CommonClubsModelFactoryUser();
|
||||
$users = $factory->loadElements(null, null, function($q) use ($user){
|
||||
@@ -167,5 +173,33 @@ class CommonClubsModelUser extends AbstractCommonClubsModel
|
||||
$db->execute();
|
||||
}
|
||||
|
||||
public function dataIsValid()
|
||||
{
|
||||
if(! parent::dataIsValid())
|
||||
return false;
|
||||
|
||||
if(! $this->usernameIsValid())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private function usernameIsValid()
|
||||
{
|
||||
$factory = $this->getFactory();
|
||||
$medb = $factory->loadById($this->getId(), false);
|
||||
|
||||
if($medb !== null && $medb->getUserName() === $this->getUsername())
|
||||
// No change was made
|
||||
return true;
|
||||
|
||||
if(! $this->isUsernameFree($this->getUsername()) )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user