fix option default values
This commit is contained in:
328
inc/databap.php
328
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;
|
||||
}
|
||||
@@ -1285,99 +1289,27 @@ class Databap extends PhpObject
|
||||
return ($this->getUserClearance() >= $iClearance);
|
||||
}
|
||||
|
||||
public function getOptions()
|
||||
{
|
||||
$sOptValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
|
||||
$sOptionTextCol = MySqlManager::getText(self::OPT_TABLE);
|
||||
$sOptNameTextCol = MySqlManager::getText(self::OPTNAME_TABLE);
|
||||
$sOptValueTextCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||
/* Options Management */
|
||||
//TODO Create class
|
||||
|
||||
//Available Options
|
||||
$asAvailableOptions = $this->getAvailableOptions();
|
||||
//TODO delete
|
||||
public function migrateOptionValues()
|
||||
{
|
||||
$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');
|
||||
|
||||
//User options
|
||||
$asUserOptions = $this->getUserOptions();
|
||||
|
||||
//Build Options panel
|
||||
$asSelectedOptions = array();
|
||||
foreach($asAvailableOptions as $sOptNameId=>$asOption)
|
||||
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);
|
||||
}
|
||||
}
|
||||
ksort($asSelectedOptions);
|
||||
return $this->jsonExport($asSelectedOptions);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
$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';
|
||||
}
|
||||
return $sResult;
|
||||
}
|
||||
|
||||
private function getAvailableOptions()
|
||||
@@ -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,7 +1351,7 @@ 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)
|
||||
@@ -1425,37 +1359,154 @@ class Databap extends PhpObject
|
||||
$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)
|
||||
{
|
||||
switch($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);
|
||||
$sNicknameCol = MySqlManager::getText(self::OPTVAL_TABLE);
|
||||
$sOptionNameId = MySqlManager::getFullColumnName(self::OPT_TABLE, MySqlManager::getId(self::OPTNAME_TABLE));
|
||||
|
||||
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);
|
||||
'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
|
||||
|
||||
@@ -149,6 +149,8 @@ class Procedure extends PhpObject
|
||||
$iDbStepId = $this->oMySql->insertRow(Databap::STEP_TABLE, $asStepData);
|
||||
|
||||
//Add new images
|
||||
if(array_key_exists($iStepId, $this->asImages))
|
||||
{
|
||||
$asImgData[MySqlManager::getId(Databap::STEP_TABLE)] = $iDbStepId;
|
||||
foreach($this->asImages[$iStepId] as $asImageInfo)
|
||||
{
|
||||
@@ -158,6 +160,7 @@ class Procedure extends PhpObject
|
||||
$this->saveImage($asImgData['file_name']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Add this procedure to the group
|
||||
$bCreation = ($iPrevProcId==0);
|
||||
|
||||
@@ -206,6 +206,9 @@ if($bUserOk && $sAction!=Databap::EXT_ACCESS)
|
||||
case 'reset_chan_safe_names':
|
||||
$sResult = $oDatabap->resetChanSafeNames();
|
||||
break;
|
||||
case 'migrate':
|
||||
$sResult = $oDatabap->migrateOptionValues();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -260,5 +263,4 @@ $sDebug = ob_get_clean();
|
||||
if(Settings::DEBUG && $sDebug!='') $oDatabap->addUncaughtError($sDebug);
|
||||
|
||||
echo $sResult;
|
||||
//echo json_encode($sDebug);
|
||||
?>
|
||||
2
jquery/databap.js
vendored
2
jquery/databap.js
vendored
@@ -347,7 +347,7 @@ function Databap()
|
||||
{
|
||||
iDelta = $Elem.getEmptyHeight();
|
||||
if(iDelta > 0) $Elem.height('-='+iDelta);
|
||||
debug('Removing useless '+iDelta+'px from #'+$Elem.attr('id'));
|
||||
//debug('Removing useless '+iDelta+'px from #'+$Elem.attr('id'));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ databap.pageInit = function()
|
||||
sp_fixes: [ ],
|
||||
ehp_improvements: [ 'Possibilité d\'accéder à tous les messags non lus, mêmes plus anciens qu\'une journée. cf. <a href="#options">#options</a>',
|
||||
'Nouveau design',
|
||||
'Ajout des notes sans authentification : #note-<num>',
|
||||
'Lecture de notes SAP (sans authentification) : #note-<num>',
|
||||
'Annonceurs: Commande /news X : Vous annoncez le message X (votre message est ajouté à la liste des news automatiquement)',
|
||||
'Les valeurs par default des options sont maintenant écrites',
|
||||
'Le blog <a href="http://scn.sap.com/community/bw-hana/blog" target="_blank">SAP BW on HANA</a> a été ajouté à la liste des blogs parsés',
|
||||
|
||||
@@ -249,7 +249,7 @@ a.button {
|
||||
padding:7px;
|
||||
margin-right:5px;
|
||||
background:$col_main_3;
|
||||
font-size:$size_big;
|
||||
font-size:$size_vbig;
|
||||
cursor:pointer;
|
||||
/*position:relative;*/
|
||||
display:inline-block;
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -99,16 +99,17 @@
|
||||
table {
|
||||
margin-left:68px;
|
||||
padding:10px;
|
||||
background:$col_main_3;
|
||||
|
||||
td {
|
||||
padding:0;
|
||||
text-align:left;
|
||||
font-size:18px;
|
||||
color:$col_main_1;
|
||||
}
|
||||
|
||||
td.desc {
|
||||
width:160px;
|
||||
font-size:$size_subtitle;
|
||||
line-height:20px;
|
||||
padding:10px 0;
|
||||
}
|
||||
@@ -119,21 +120,24 @@
|
||||
}
|
||||
.feedback {
|
||||
float:left;
|
||||
font-size:14px;
|
||||
font-size:$size_vbig;
|
||||
margin-top:5px;
|
||||
font-style:italic;
|
||||
color:red;
|
||||
}
|
||||
input {
|
||||
border:1px solid $col_main_1;
|
||||
color:$col_main_1;
|
||||
font-size:18px;
|
||||
font-size:$size_vbig;
|
||||
line-height:20px;
|
||||
padding:2px 5px;
|
||||
width:200px;
|
||||
}
|
||||
a.button {
|
||||
margin-right:0;
|
||||
background: $col_none;
|
||||
}
|
||||
a.button:hover {
|
||||
background: $col_hover_1;
|
||||
}
|
||||
a.button .fa {
|
||||
margin:1px;
|
||||
|
||||
13
todo
13
todo
@@ -4,7 +4,7 @@ Todo
|
||||
Internal:
|
||||
- independant code/procedure/article/table/document php classes ?
|
||||
- Admin param page
|
||||
- Independant Option Class
|
||||
- Independant Option Class + delete 'option' column in options table
|
||||
- put feedback box in title
|
||||
- Créer un fichier de testing
|
||||
- harmonize local file access: table "files" ? No file name / extension on server
|
||||
@@ -19,8 +19,9 @@ Bug fix:
|
||||
- Trouver une meilleure place pour le menu
|
||||
|
||||
New features:
|
||||
- aide à la saisie dans les options
|
||||
- [1.2.0] Chat: New "Connected Users" Panel: On click, opening a sub panl with icons: profil link, status, PM.
|
||||
- [1.2.0] Unread messages par user (dedicated table). No more daily cut
|
||||
- [1.2.0] Unread messages par user (dedicated table).
|
||||
- [1.2.0] Refiltre par type dans le search
|
||||
- [1.2.0] Remplacer dans les options : oui / non par [-0] (f205) [O-] (f204)
|
||||
- [1.2.0] Son pour les nouveaux messages
|
||||
@@ -57,4 +58,10 @@ Testing
|
||||
MEP 1.2
|
||||
-------
|
||||
|
||||
-
|
||||
- ALTER TABLE option_values MODIFY option_value varchar(100) NOT NULL;
|
||||
- insert into option_values (id_option_name, option_value, default_value, language) values (1, 'utilisateur inconnu', 1, 'FR');
|
||||
- insert into option_values (id_option_name, option_value, default_value, language) values (9, 'email inconnu', 1, 'FR');
|
||||
- Commit & push git
|
||||
- ALTER TABLE `options` DROP `option`;
|
||||
- delete migrateOptionValues(); (databap.php)
|
||||
- delete case 'migrate' (index.php)
|
||||
Reference in New Issue
Block a user