fix option default values

This commit is contained in:
2014-12-14 14:33:56 +01:00
parent b098615095
commit c7aff3e347
12 changed files with 231 additions and 175 deletions

View File

@@ -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

View File

@@ -149,13 +149,16 @@ class Procedure extends PhpObject
$iDbStepId = $this->oMySql->insertRow(Databap::STEP_TABLE, $asStepData);
//Add new images
$asImgData[MySqlManager::getId(Databap::STEP_TABLE)] = $iDbStepId;
foreach($this->asImages[$iStepId] as $asImageInfo)
if(array_key_exists($iStepId, $this->asImages))
{
$asImgData['description'] = $asImageInfo['desc'];
$asImgData['file_name'] = $asImageInfo['name'];
$iDbImageId = $this->oMySql->insertRow(Databap::IMG_TABLE, $asImgData);
$this->saveImage($asImgData['file_name']);
$asImgData[MySqlManager::getId(Databap::STEP_TABLE)] = $iDbStepId;
foreach($this->asImages[$iStepId] as $asImageInfo)
{
$asImgData['description'] = $asImageInfo['desc'];
$asImgData['file_name'] = $asImageInfo['name'];
$iDbImageId = $this->oMySql->insertRow(Databap::IMG_TABLE, $asImgData);
$this->saveImage($asImgData['file_name']);
}
}
}