fix option default values
This commit is contained in:
348
inc/databap.php
348
inc/databap.php
@@ -238,7 +238,7 @@ class Databap extends PhpObject
|
||||
self::MSG_TABLE => array(MySqlManager::getId(self::USER_TABLE), 'nickname', MySqlManager::getId(self::CHAN_TABLE), MySqlManager::getText(self::MSG_TABLE), 'type', 'date'),
|
||||
self::CHAN_TABLE => array('safe_name', MySqlManager::getText(self::CHAN_TABLE)),
|
||||
self::CONN_TABLE => array(MySqlManager::getId(self::USER_TABLE), MySqlManager::getId(self::CHAN_TABLE)),
|
||||
self::OPT_TABLE => array(MySqlManager::getId(self::USER_TABLE), MySqlManager::getId(self::OPTNAME_TABLE), MySqlManager::getId(self::OPTVAL_TABLE), MySqlManager::getText(self::OPT_TABLE)),
|
||||
self::OPT_TABLE => array(MySqlManager::getId(self::USER_TABLE), MySqlManager::getId(self::OPTNAME_TABLE), MySqlManager::getId(self::OPTVAL_TABLE)),
|
||||
self::OPTNAME_TABLE => array(MySqlManager::getText(self::OPTNAME_TABLE), 'type', 'language'),
|
||||
self::OPTVAL_TABLE => array(MySqlManager::getId(self::OPTNAME_TABLE), MySqlManager::getText(self::OPTVAL_TABLE), 'default_value', 'language'),
|
||||
self::PROC_TABLE => array(MySqlManager::getId(self::USER_TABLE), 'title', 'description', 'refer_id'),
|
||||
@@ -271,9 +271,8 @@ class Databap extends PhpObject
|
||||
'type' => "varchar(2) NOT NULL",
|
||||
'safe_name' => "varchar(50) NOT NULL",
|
||||
MySqlManager::getText(self::CHAN_TABLE) => "varchar(50) NOT NULL",
|
||||
MySqlManager::getText(self::OPT_TABLE) => "varchar(100) NOT NULL",
|
||||
MySqlManager::getText(self::OPTNAME_TABLE) => "varchar(100) NOT NULL",
|
||||
MySqlManager::getText(self::OPTVAL_TABLE)=> "varchar(50) NOT NULL",
|
||||
MySqlManager::getText(self::OPTVAL_TABLE)=> "varchar(100) NOT NULL",
|
||||
'language' => "varchar(2) NOT NULL",
|
||||
'file_name' => "varchar(40) NOT NULL",
|
||||
'preview_name' => "varchar(40) NOT NULL",
|
||||
@@ -367,12 +366,14 @@ class Databap extends PhpObject
|
||||
|
||||
//Select and Default Option values
|
||||
$asDefaultValues = array( self::OPT_CONSOLE=>array(self::OPT_VAL_YES=>false, self::OPT_VAL_NO=>true),
|
||||
self::OPT_NICKNAME=>array('Utilisateur inconnu'=>true),
|
||||
self::OPT_BG=>array('#04357B'=>true),
|
||||
self::OPT_BG_2=>array('#88B2F0'=>true),
|
||||
self::OPT_BG_3=>array('#D9E5F2'=>true),
|
||||
self::OPT_HOVER=>array('#EFAB00'=>true),
|
||||
self::OPT_IMAGE_CHAT=>array('images/sap_gold_332.jpg'=>true),
|
||||
self::OPT_STATUS=>array('aucune mission en cours'=>true),
|
||||
self::OPT_EMAIL=>array('email inconnu'=>true),
|
||||
self::OPT_CHAT_HISTO=>array('0'=>true));
|
||||
foreach($asDefaultValues as $sOptionNameId=>$asOptionValues)
|
||||
{
|
||||
@@ -762,7 +763,6 @@ class Databap extends PhpObject
|
||||
//Checking company existency in company table
|
||||
$sCompanyTextCol = MySqlManager::getText(self::COMP_TABLE);
|
||||
$iCompanyId = $this->oMySql->selectInsert(self::COMP_TABLE, array($sCompanyTextCol=>$sCompany, 'logo'=>self::DEFAULT_COMPANY_LOGO), array($sCompanyTextCol));
|
||||
|
||||
$asInfo = array('first_name'=>$sFirstName,
|
||||
'last_name'=>$sLastName,
|
||||
'active'=>self::MEMBER_ACTIVE,
|
||||
@@ -772,13 +772,17 @@ class Databap extends PhpObject
|
||||
'led'=>'0000-00-00 00:00:00');
|
||||
$iUserId = $this->oMySql->insertRow(self::USER_TABLE, $asInfo);
|
||||
|
||||
//Admin Options
|
||||
$sOptionTable = self::OPT_TABLE;
|
||||
$sUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
||||
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
||||
$sOptionTextCol = MySqlManager::getText(self::OPT_TABLE);
|
||||
$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_NICKNAME, $sOptionTextCol=>self::getNickNameFormat($sFirstName)));
|
||||
$this->oMySql->insertRow($sOptionTable, array($sUserIdCol=>$iUserId, $sOptNameIdCol=>self::OPT_EMAIL, $sOptionTextCol=>$sEmail));
|
||||
//Options & default values
|
||||
$this->setOptions(array(self::OPT_NICKNAME=>self::getNickNameFormat($sFirstName), self::OPT_EMAIL=>$sEmail), true, $iUserId);
|
||||
|
||||
$asInfo = array('select' => array($sOptNameIdCol, $sOptValueTextCol),
|
||||
'from' => self::OPTVAL_TABLE,
|
||||
'constraint'=> array('default_value'=>true, $sOptNameIdCol => "(".implode(", ", $oOptionNameIds).")"),
|
||||
'constOpe' => array('default_value'=>"=", $sOptNameIdCol=>" IN "),
|
||||
'constVar' => true);
|
||||
|
||||
//Spread the word
|
||||
$this->addMessage('Nouvel utilisateur: '.self::getNameFormat($sFirstName, $sLastName).' !', self::MESSAGE_NEWS, self::DEFAULT_CHAN_ID);
|
||||
|
||||
return $iUserId;
|
||||
}
|
||||
@@ -1284,102 +1288,30 @@ class Databap extends PhpObject
|
||||
{
|
||||
return ($this->getUserClearance() >= $iClearance);
|
||||
}
|
||||
|
||||
public function getOptions()
|
||||
|
||||
/* Options Management */
|
||||
//TODO Create class
|
||||
|
||||
//TODO delete
|
||||
public function migrateOptionValues()
|
||||
{
|
||||
$sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
||||
$sOptionTextCol = MySqlManager::getText(self::OPT_TABLE);
|
||||
$sOptNameTextCol = MySqlManager::getText(self::OPTNAME_TABLE);
|
||||
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||
|
||||
//Available Options
|
||||
$asAvailableOptions = $this->getAvailableOptions();
|
||||
|
||||
//User options
|
||||
$asUserOptions = $this->getUserOptions();
|
||||
|
||||
//Build Options panel
|
||||
$asSelectedOptions = array();
|
||||
foreach($asAvailableOptions as $sOptNameId=>$asOption)
|
||||
$sResult = 'ok';
|
||||
$asInfo = array('select' => array('id_option', 'id_option_name', 'option'),
|
||||
'from' => self::OPT_TABLE,
|
||||
'constraint'=> array('id_option_value'=>'NULL'),
|
||||
'constOpe' => array('id_option_value'=>" IS "),
|
||||
'constVar' => true);
|
||||
$asOptions = $this->oMySql->selectRows($asInfo, true, 'id_option');
|
||||
|
||||
foreach($asOptions as $iOptionId=>$asOption)
|
||||
{
|
||||
$sOptionName = self::getDescriptionFormat($asOption[$sOptNameTextCol]);
|
||||
$asSelectedOptions[$sOptionName]['option_id'] = $sOptNameId;
|
||||
$asSelectedOptions[$sOptionName]['option_name'] = $sOptionName;
|
||||
$asSelectedOptions[$sOptionName]['user_value_id'] = array_key_exists($sOptNameId, $asUserOptions)?$asUserOptions[$sOptNameId][$sOptValueIdCol]:0;
|
||||
$asSelectedOptions[$sOptionName]['user_value'] = array_key_exists($sOptNameId, $asUserOptions)?$asUserOptions[$sOptNameId][$sOptionTextCol]:'';
|
||||
$asSelectedOptions[$sOptionName]['type'] = $asOption['type'];
|
||||
if($asOption['type']==self::OPT_SELECT)
|
||||
{
|
||||
$asOptionValuesInfo = array('select'=>array($sOptValueIdCol, $sOptValueTextCol),
|
||||
'from'=>self::OPTVAL_TABLE,
|
||||
'constraint'=>array('language'=>$this->sLanguage,
|
||||
MySqlManager::getId(self::OPTNAME_TABLE)=>$sOptNameId),
|
||||
'orderBy'=>array('led'=>'ASC'));
|
||||
$asSelectedOptions[$sOptionName]['select'] = $this->oMySql->selectRows($asOptionValuesInfo, true, $sOptValueIdCol);
|
||||
}
|
||||
$iOptionValueId = $this->oMySql->insertRow(self::OPTVAL_TABLE, array('id_option_name'=>$asOption['id_option_name'], 'option_value'=>$asOption['option'], 'language'=>self::LANG_FR));
|
||||
if($iOptionValueId>0) $this->oMySql->updateRow(self::OPT_TABLE, $iOptionId, array('id_option_value'=>$iOptionValueId));
|
||||
else $sResult = 'ko';
|
||||
}
|
||||
ksort($asSelectedOptions);
|
||||
return $this->jsonExport($asSelectedOptions);
|
||||
return $sResult;
|
||||
}
|
||||
|
||||
public function setOptions($asUserOptions, $bSilentUpdate=true)
|
||||
{
|
||||
$asAvailableOptions = $this->getAvailableOptions();
|
||||
foreach($asAvailableOptions as $sOptNameId=>$asOption)
|
||||
{
|
||||
if(array_key_exists($sOptNameId, $asUserOptions))
|
||||
{
|
||||
switch($asOption['type'])
|
||||
{
|
||||
case self::OPT_SELECT: //insert id of option value table
|
||||
$sUpdateCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
||||
break;
|
||||
case self::OPT_TEXT: //insert value
|
||||
$sUpdateCol = MySqlManager::getText(self::OPT_TABLE);
|
||||
break;
|
||||
default:
|
||||
continue 2;
|
||||
}
|
||||
$sNewValue = $asUserOptions[$sOptNameId];
|
||||
|
||||
//Check identical data
|
||||
$asKeys = array(MySqlManager::getId(self::USER_TABLE)=>$this->getUserId(), MySqlManager::getId(self::OPTNAME_TABLE)=>$sOptNameId);
|
||||
$asData = array($sUpdateCol=>$sNewValue) + $asKeys;
|
||||
$sOldValue = $this->oMySql->selectValue(self::OPT_TABLE, $sUpdateCol, $asKeys);
|
||||
|
||||
//Update value
|
||||
if($sOldValue!=$sNewValue)
|
||||
{
|
||||
//Update value
|
||||
$this->oMySql->insertUpdateRow(self::OPT_TABLE, $asData, array_keys($asKeys));
|
||||
|
||||
//Spread the word
|
||||
if(!$bSilentUpdate)
|
||||
{
|
||||
//TODO rassembler les messages similaires dans une fonction de template
|
||||
switch($sOptNameId)
|
||||
{
|
||||
case self::OPT_NICKNAME:
|
||||
$sType = self::MESSAGE_NICK;
|
||||
$sChanName = self::DEFAULT_CHAN;
|
||||
$sMessage = $sOldValue.' a changé son pseudo en '.$sNewValue;
|
||||
break;
|
||||
case self::OPT_STATUS:
|
||||
$sType = self::MESSAGE_STATUS;
|
||||
$sChanName = self::DEFAULT_CHAN;
|
||||
$sMessage = 'est sur une nouvelle mission : '.$this->getDescriptionFormat($sNewValue);
|
||||
break;
|
||||
default:
|
||||
continue 2;
|
||||
}
|
||||
$sChanId = $this->getChanId($sChanName);
|
||||
$this->addMessage($sMessage, $sType, $sChanId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private function getAvailableOptions()
|
||||
{
|
||||
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
||||
@@ -1402,7 +1334,9 @@ class Databap extends PhpObject
|
||||
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
||||
$sOptValIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
||||
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||
|
||||
if(!is_array($oOptionNameIds)) $oOptionNameIds = array($oOptionNameIds);
|
||||
elseif(empty($oOptionNameIds)) $oOptionNameIds = array_keys($this->getAvailableOptions());
|
||||
|
||||
$asInfo = array('select' => array($sOptNameIdCol, $sOptValueTextCol),
|
||||
'from' => self::OPTVAL_TABLE,
|
||||
@@ -1417,44 +1351,161 @@ class Databap extends PhpObject
|
||||
{
|
||||
$asUserOptions = $this->getUserOptions($sOptionNameId, $iUserId);
|
||||
$asOptionInfo = array_shift($asUserOptions);
|
||||
return $asOptionInfo[MySqlManager::getText(self::OPT_TABLE)];
|
||||
return $asOptionInfo[MySqlManager::getText(self::OPTVAL_TABLE)];
|
||||
}
|
||||
|
||||
|
||||
private function getUserOptions($oOptionNameIds=array(), $iUserId=0)
|
||||
{
|
||||
$iUserId = $iUserId>0?$iUserId:$this->getUserId();
|
||||
$sUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
||||
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
||||
$sOptNameIdColOptTable = MySqlManager::getFullColumnName(self::OPT_TABLE, $sOptNameIdCol);
|
||||
$sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
||||
$sOptionTextCol = MySqlManager::getText(self::OPT_TABLE);
|
||||
$sOptValueIdColOptTable = MySqlManager::getFullColumnName(self::OPT_TABLE, $sOptValueIdCol);
|
||||
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||
|
||||
$sOptIdCol = MySqlManager::getId(self::OPT_TABLE);
|
||||
|
||||
if(!is_array($oOptionNameIds)) $oOptionNameIds = array($oOptionNameIds);
|
||||
elseif(empty($oOptionNameIds)) $oOptionNameIds = array_keys($this->getAvailableOptions());
|
||||
|
||||
$asUserinfo = array('select' => array($sOptNameIdCol, $sOptValueIdCol, $sOptionTextCol),
|
||||
|
||||
$asUserinfo = array('select' => array($sOptIdCol, $sOptNameIdColOptTable, $sOptValueIdColOptTable, $sOptValueTextCol),
|
||||
'from' => self::OPT_TABLE,
|
||||
'constraint'=> array($sUserIdCol=>$iUserId, $sOptNameIdCol => "(".implode(", ", $oOptionNameIds).")"),
|
||||
'constOpe' => array($sUserIdCol=>"=", $sOptNameIdCol=>" IN "),
|
||||
'join' => array(self::OPTVAL_TABLE=>MySqlManager::getId(self::OPTVAL_TABLE)),
|
||||
'constraint'=> array($sUserIdCol=>$iUserId, $sOptNameIdColOptTable => "(".implode(", ", $oOptionNameIds).")"),
|
||||
'constOpe' => array($sUserIdCol=>"=", $sOptNameIdColOptTable => " IN "),
|
||||
'constVar' => true);
|
||||
$asOptions = $this->oMySql->selectRows($asUserinfo, true, $sOptNameIdCol);
|
||||
foreach($oOptionNameIds as $iOptionId)
|
||||
|
||||
//No user value: adding default value to user values
|
||||
$asDefaultOptions = $this->getDefaultOptionValues();
|
||||
foreach($oOptionNameIds as $iOptionNameId)
|
||||
{
|
||||
$sNewValue = '';
|
||||
//Default value
|
||||
if(!array_key_exists($iOptionId, $asOptions) || $asOptions[$iOptionId][$sOptValueIdCol]=='' && $asOptions[$iOptionId][$sOptionTextCol]=='')
|
||||
{
|
||||
$asDefaultOption = $this->getDefaultOptionValues($iOptionId);
|
||||
$asOptions[$iOptionId][$sOptValueIdCol] = $asDefaultOption[$iOptionId][$sOptValueIdCol];
|
||||
$asOptions[$iOptionId][$sOptionTextCol] = $asDefaultOption[$iOptionId][$sOptValueTextCol];
|
||||
}
|
||||
//Text value
|
||||
elseif(!$asOptions[$iOptionId][$sOptValueIdCol]) $asOptions[$iOptionId][$sOptValueIdCol] = $asOptions[$iOptionId][$sOptionTextCol];
|
||||
//Select value
|
||||
else $asOptions[$iOptionId][$sOptionTextCol] = $this->oMySql->selectValue(self::OPTVAL_TABLE, $sOptValueTextCol, $asOptions[$iOptionId][$sOptValueIdCol]);
|
||||
if(!array_key_exists($iOptionNameId, $asOptions)) $asOptions[$iOptionNameId] = $asDefaultOptions[$iOptionNameId];
|
||||
}
|
||||
|
||||
return $asOptions;
|
||||
}
|
||||
|
||||
public function getOptions()
|
||||
{
|
||||
$sOptNameTextCol = MySqlManager::getText(self::OPTNAME_TABLE);
|
||||
$sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
||||
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||
|
||||
//Available Options
|
||||
$asAvailableOptions = $this->getAvailableOptions();
|
||||
|
||||
//User options
|
||||
$asUserOptions = $this->getUserOptions();
|
||||
|
||||
//Build Options panel
|
||||
$asSelectedOptions = array();
|
||||
foreach($asAvailableOptions as $sOptNameId=>$asOption)
|
||||
{
|
||||
$sOptionName = self::getDescriptionFormat($asOption[$sOptNameTextCol]);
|
||||
$asSelectedOptions[$sOptionName]['option_id'] = $sOptNameId;
|
||||
$asSelectedOptions[$sOptionName]['option_name'] = $sOptionName;
|
||||
$asSelectedOptions[$sOptionName]['user_value_id'] = $asUserOptions[$sOptNameId][$sOptValueIdCol];
|
||||
$asSelectedOptions[$sOptionName]['user_value'] = $asUserOptions[$sOptNameId][$sOptValueTextCol];
|
||||
$asSelectedOptions[$sOptionName]['type'] = $asOption['type'];
|
||||
if($asOption['type']==self::OPT_SELECT)
|
||||
{
|
||||
$asOptionValuesInfo = array('select'=>array($sOptValueIdCol, $sOptValueTextCol),
|
||||
'from'=>self::OPTVAL_TABLE,
|
||||
'constraint'=>array('language'=>$this->sLanguage, MySqlManager::getId(self::OPTNAME_TABLE)=>$sOptNameId),
|
||||
'orderBy'=>array('led'=>'ASC'));
|
||||
$asSelectedOptions[$sOptionName]['select'] = $this->oMySql->selectRows($asOptionValuesInfo, true, $sOptValueIdCol);
|
||||
}
|
||||
}
|
||||
ksort($asSelectedOptions);
|
||||
return $this->jsonExport($asSelectedOptions);
|
||||
}
|
||||
|
||||
public function setOptions($asNewOptions, $bSilentUpdate=true, $iUserId=0)
|
||||
{
|
||||
$sOptIdCol = MySqlManager::getId(self::OPT_TABLE);
|
||||
$sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
||||
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||
$sUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
||||
$sOptNameIdCol = MySqlManager::getId(self::OPTNAME_TABLE);
|
||||
|
||||
$iUserId = ($iUserId>0)?$iUserId:$this->getUserId();
|
||||
$asAvailableOptions = $this->getAvailableOptions();
|
||||
$asUserOptions = $this->getUserOptions(array_keys($asAvailableOptions), $iUserId);
|
||||
$asDefaultOptions = $this->getDefaultOptionValues(array_keys($asAvailableOptions));
|
||||
foreach($asAvailableOptions as $sOptNameId=>$asOption)
|
||||
{
|
||||
if(array_key_exists($sOptNameId, $asNewOptions))
|
||||
{
|
||||
$sUserValue = $asUserOptions[$sOptNameId][$sOptValueTextCol];
|
||||
$sUserValueId = $asUserOptions[$sOptNameId][$sOptValueIdCol];
|
||||
$sUserOptId = array_key_exists($sOptIdCol, $asUserOptions[$sOptNameId])?$asUserOptions[$sOptNameId][$sOptIdCol]:0;
|
||||
$sDefaultValue = $asDefaultOptions[$sOptNameId][$sOptValueTextCol];
|
||||
$sDefaultValueId = $asDefaultOptions[$sOptNameId][$sOptValueIdCol];
|
||||
if(!$sDefaultValueId) $this->addError('Missing option default value for option id='.$sOptNameId);
|
||||
switch($asOption['type'])
|
||||
{
|
||||
case self::OPT_SELECT:
|
||||
$sNewValueId = $asNewOptions[$sOptNameId];
|
||||
$sNewValue = $this->oMySql->selectValue(self::OPTVAL_TABLE, $sOptValueTextCol, $sNewValueId);
|
||||
break;
|
||||
case self::OPT_TEXT:
|
||||
$sNewValue = $asNewOptions[$sOptNameId];
|
||||
break;
|
||||
}
|
||||
|
||||
//Update text
|
||||
if($sNewValue!=$sUserValue)
|
||||
{
|
||||
//Clear user values if exist (back to default)
|
||||
if(($sNewValue=='' || $sNewValue==$sDefaultValue) && $sUserOptId>0)
|
||||
{
|
||||
$this->oMySql->deleteRow(self::OPT_TABLE, $sUserOptId);
|
||||
if($asOption['type']==self::OPT_TEXT) $this->oMySql->deleteRow(self::OPTVAL_TABLE, $sUserValueId);
|
||||
}
|
||||
//New or updated value
|
||||
elseif($sNewValue!=$sDefaultValue)
|
||||
{
|
||||
//Update option values table
|
||||
if($asOption['type']==self::OPT_TEXT)
|
||||
{
|
||||
$asData = array($sOptNameIdCol=>$sOptNameId, $sOptValueTextCol=>$sNewValue, 'language'=>self::LANG_FR);
|
||||
if($sUserValueId==$sDefaultValueId) $sNewValueId = $this->oMySql->insertRow(self::OPTVAL_TABLE, $asData);
|
||||
else $sNewValueId = $this->oMySql->updateRow(self::OPTVAL_TABLE, $sUserValueId, array($sOptValueTextCol=>$sNewValue));
|
||||
}
|
||||
|
||||
//Update option table
|
||||
$asKeys = array($sUserIdCol=>$iUserId, $sOptNameIdCol=>$sOptNameId);
|
||||
$asData = array($sOptValueIdCol=>$sNewValueId) + $asKeys;
|
||||
$this->oMySql->insertUpdateRow(self::OPT_TABLE, $asData, array_keys($asKeys));
|
||||
}
|
||||
|
||||
//Spread the word
|
||||
if(!$bSilentUpdate)
|
||||
{
|
||||
//TODO rassembler les messages similaires dans une fonction de template
|
||||
switch($sOptNameId)
|
||||
{
|
||||
case self::OPT_NICKNAME:
|
||||
$sType = self::MESSAGE_NICK;
|
||||
$sChanName = self::DEFAULT_CHAN;
|
||||
$sMessage = $sUserValue.' a changé son pseudo en '.$sNewValue;
|
||||
break;
|
||||
case self::OPT_STATUS:
|
||||
$sType = self::MESSAGE_STATUS;
|
||||
$sChanName = self::DEFAULT_CHAN;
|
||||
$sMessage = 'est sur une nouvelle mission : '.$this->getDescriptionFormat($sNewValue);
|
||||
break;
|
||||
default:
|
||||
continue 2;
|
||||
}
|
||||
$sChanId = $this->getChanId($sChanName);
|
||||
$this->addMessage($sMessage, $sType, $sChanId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getProfile($oUser)
|
||||
{
|
||||
@@ -1466,10 +1517,6 @@ class Databap extends PhpObject
|
||||
case is_numeric($oUser):
|
||||
$iUserId = $oUser;
|
||||
break;
|
||||
case is_string($oUser):
|
||||
$oRes = $this->oMySql->selectValue(self::OPT_TABLE, MySqlManager::getId(self::USER_TABLE), array('option'=>mb_strtolower($oUser), MySqlManager::getId(self::OPTNAME_TABLE)=>self::OPT_NICKNAME));
|
||||
$iUserId = !$oRes?$this->getUserId():$oRes;
|
||||
break;
|
||||
default:
|
||||
$iUserId = $this->getUserId();
|
||||
break;
|
||||
@@ -2134,39 +2181,38 @@ class Databap extends PhpObject
|
||||
public function getConnectedUsers($bUserRestricted=false, $bJson=true)
|
||||
{
|
||||
$sQuery = " SELECT /* config.php 1313 */ conn2.id_channel, conn2.id_user, conn2.led, IF(DATE_SUB(NOW(), INTERVAL 1 MINUTE) < conn2.led, 0, 1) AS afk,
|
||||
users.first_name, users.last_name, companies.company, companies.logo, option_nickname.option AS nickname, option_status.option AS status
|
||||
users.first_name, users.last_name, companies.company, companies.logo
|
||||
FROM connections AS conn1
|
||||
LEFT JOIN connections AS conn2 ON conn2.id_channel = conn1.id_channel
|
||||
LEFT JOIN users ON users.id_user = conn2.id_user
|
||||
LEFT JOIN companies ON companies.id_company = users.id_company
|
||||
LEFT JOIN `options` AS option_nickname ON option_nickname.id_user = users.id_user AND option_nickname.id_option_name = ".self::OPT_NICKNAME."
|
||||
LEFT JOIN `options` AS option_status ON option_status.id_user = users.id_user AND option_status.id_option_name = ".self::OPT_STATUS."
|
||||
WHERE conn2.led > DATE_SUB(NOW(), INTERVAL ".self::KEEP_ALIVE." SECOND)".
|
||||
($bUserRestricted?"AND conn1.id_user = ".$this->getUserId():"")."
|
||||
GROUP BY conn2.id_channel, conn2.id_user
|
||||
ORDER BY option_nickname.option ASC";
|
||||
GROUP BY conn2.id_channel, conn2.id_user";
|
||||
$asUserChannels = $this->oMySql->getArrayQuery($sQuery, true);
|
||||
|
||||
//Last messages
|
||||
$iUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
||||
$asLastMsg = $this->oMySql->selectRows(array('select'=>array($iUserIdCol, 'MAX(led)'), 'from'=>self::MSG_TABLE), true, $iUserIdCol);
|
||||
|
||||
$asConnectedUsers = array();
|
||||
$asConnectedUsers = $asUserOptions = array();
|
||||
foreach($asUserChannels as $asUser)
|
||||
{
|
||||
$sChanId = $asUser[MySqlManager::getId(self::CHAN_TABLE)];
|
||||
$iUserId = $asUser[$iUserIdCol];
|
||||
$sNickName = $asUser['nickname'];
|
||||
if(!array_key_exists($iUserId, $asUserOptions)) $asUserOptions[$iUserId] = $this->getUserOptions(array(self::OPT_NICKNAME, self::OPT_STATUS));
|
||||
$sNickName = self::getNickNameFormat($asUserOptions[$iUserId][self::OPT_NICKNAME][MySqlManager::getText(self::OPTVAL_TABLE)]);
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['id_user'] = $iUserId;
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['name'] = self::getNameFormat($asUser['first_name'], $asUser['last_name']);
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['company'] = self::getCompanyFormat($asUser['company']);
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['status'] = $asUser['status'];
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['status'] = $asUserOptions[$iUserId][self::OPT_STATUS][MySqlManager::getText(self::OPTVAL_TABLE)];
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['logo'] = $asUser['logo'];
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['nickname'] = self::getNickNameFormat($sNickName==''?$asUser['first_name']:$sNickName);
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['nickname'] = $sNickName;
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['last_activity'] = array_key_exists($iUserId, $asLastMsg)?self::getDateFormat($asLastMsg[$iUserId], self::TIME_FORMAT):'';
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['ping'] = self::getDateFormat($asUser['led'], self::TIME_FORMAT);
|
||||
$asConnectedUsers[$sChanId][$sNickName.$iUserId]['afk'] = $asUser['afk'];
|
||||
}
|
||||
|
||||
return $bJson?$this->jsonExport($asConnectedUsers):$asConnectedUsers;
|
||||
}
|
||||
|
||||
@@ -2180,21 +2226,16 @@ class Databap extends PhpObject
|
||||
private function getChatNickNames($iUserId=0)
|
||||
{
|
||||
$sUserIdCol = MySqlManager::getId(self::USER_TABLE);
|
||||
$sNicknameCol = MySqlManager::getText(self::OPT_TABLE);
|
||||
$asConstraints = array(MySqlManager::getId(self::OPTNAME_TABLE)=>self::OPT_NICKNAME);
|
||||
|
||||
if($iUserId>0)
|
||||
{
|
||||
$asConstraints[MySqlManager::getId(self::USER_TABLE)] = $iUserId;
|
||||
$oResult = $this->oMySql->selectValue(self::OPT_TABLE, $sNicknameCol, $asConstraints);
|
||||
}
|
||||
else
|
||||
{
|
||||
$asInfo = array('select'=>array($sUserIdCol, $sNicknameCol),
|
||||
'from'=>self::OPT_TABLE,
|
||||
'constraint'=>$asConstraints);
|
||||
$oResult = $this->oMySql->selectRows($asInfo, true, $sUserIdCol);
|
||||
}
|
||||
$sNicknameCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||
$sOptionNameId = MySqlManager::getFullColumnName(self::OPT_TABLE, MySqlManager::getId(self::OPTNAME_TABLE));
|
||||
|
||||
$asInfo = array('select'=>array($sUserIdCol, $sNicknameCol),
|
||||
'from'=>self::OPT_TABLE,
|
||||
'join'=> array(self::OPTVAL_TABLE=>MySqlManager::getId(self::OPTVAL_TABLE)),
|
||||
'constraint'=>array($sOptionNameId=>self::OPT_NICKNAME));
|
||||
if($iUserId>0) $asInfo['constraint'][MySqlManager::getId(self::USER_TABLE)] = $iUserId;
|
||||
$oResult = $this->oMySql->selectRows($asInfo, true, $sUserIdCol);
|
||||
if(count($oResult)==1) return $oResult[$iUserId];
|
||||
return $oResult;
|
||||
}
|
||||
|
||||
@@ -2686,8 +2727,7 @@ class Databap extends PhpObject
|
||||
$asOptionvalues = $this->getUserOptions($asStyleParams);
|
||||
foreach($asColorAnchors as $iOptionNameId=>$sColorAnchor)
|
||||
{
|
||||
$sOptionValue = (array_key_exists($iOptionNameId, $asOptionvalues) && $asOptionvalues[$iOptionNameId]['option']!='')?$asOptionvalues[$iOptionNameId]['option']:$asDefaultValues[$iOptionNameId];
|
||||
$sStyle = str_replace($sColorAnchor, $sOptionValue, $sStyle);
|
||||
$sStyle = str_replace($sColorAnchor, $asOptionvalues[$iOptionNameId][MySqlManager::getText(self::OPTVAL_TABLE)], $sStyle);
|
||||
}
|
||||
|
||||
//setting header content type
|
||||
|
||||
Reference in New Issue
Block a user