multiple fixes on install()

This commit is contained in:
lutranf
2014-12-19 17:44:45 +01:00
parent ef1fc9c02d
commit cb9ba5e6d9
2 changed files with 40 additions and 33 deletions

View File

@@ -22,6 +22,7 @@ class Databap extends PhpObject
public static $UPLOAD_IMG_EXTS = array('jpg', 'jpeg', 'gif', 'png');
public static $UPLOAD_DOC_EXTS = array('jpg', 'jpeg', 'gif', 'png', 'doc', 'ppt', 'pdf', 'xls', 'docx', 'pptx', 'xlsx');
const ID_SEPARATOR = '_';
const SYSTEM_USER_ID = 1;
//Database constant
const USER_TABLE = 'users';
@@ -193,7 +194,7 @@ class Databap extends PhpObject
* Constructor
* @param ClassManagement $oClassManagement
*/
function __construct($oClassManagement)
function __construct($oClassManagement, $sLanguage=self::LANG_FR)
{
parent::__construct(__CLASS__, Settings::DEBUG);
$this->oClassManagement = $oClassManagement;
@@ -215,14 +216,16 @@ class Databap extends PhpObject
mb_http_input(Settings::TEXT_ENC);
mb_language('uni');
mb_regex_encoding(Settings::TEXT_ENC);
//Databap Settings
$this->setUserId(0);
$this->sLanguage = $sLanguage;
//Passing settings down to mySQL
$this->oMySql = new MySqlManager(Settings::DB_SERVER, Settings::DB_LOGIN, Settings::DB_PASS, Settings::DB_NAME, self::getSqlOptions(), Settings::DB_ENC);
if($this->oMySql->sDbState == MySqlManager::DB_NO_DATA && Settings::DEBUG==true) $this->install();
//Init other variables
$this->setUserId(0);
$this->sLanguage = self::LANG_FR;
//Init Search Engine
$this->oSearchEngine = new SearchEngine($this->oMySql);
}
@@ -355,7 +358,7 @@ class Databap extends PhpObject
$sOptionValueIdCol = MySqlManager::getId(self::OPTVAL_TABLE);
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_NICKNAME, $sOptionNameCol=>'pseudo du chat', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_BG, $sOptionNameCol=>'couleur de fond', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::POT_BG_2, $sOptionNameCol=>'couleur de fond 2', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_BG_2, $sOptionNameCol=>'couleur de fond 2', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_BG_3, $sOptionNameCol=>'couleur de fond 3', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_HOVER, $sOptionNameCol=>'couleur de survol', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_IMAGE_CHAT, $sOptionNameCol=>'image du chat', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
@@ -387,12 +390,14 @@ class Databap extends PhpObject
$this->oMySql->insertRow(self::CHAN_TABLE, array('safe_name'=>self::getChanSafeName(self::ALL_CHAN_TEXT), MySqlManager::getText(self::CHAN_TABLE)=>self::ALL_CHAN_TEXT));
$this->oMySql->insertRow(self::CHAN_TABLE, array('safe_name'=>self::getChanSafeName(self::DEFAULT_CHAN), MySqlManager::getText(self::CHAN_TABLE)=>self::DEFAULT_CHAN));
//Install default users : admin and test
$iAdminId = $this->addUser('françois', 'lutran', 'planeum', 'francois@lutran.fr', self::CLEARANCE_ADMIN);
//Install default users : system, admin and test
$iSystemId = $this->addUser('databap', 'bot', 'ovh', 'databap@botnet.com', self::CLEARANCE_ADMIN, self::SYSTEM_USER_ID);
$this->setOptions(array(self::OPT_NICKNAME=>'Databot'), true, $iSystemId);
$this->addUser('françois', 'lutran', 'planeum', 'francois@lutran.fr', self::CLEARANCE_ADMIN);
$this->addUser('test', 'test', 'test', 'test@test.com');
//Write the SAP blog parser bash script to main folder
@file_put_contents('sap_website_parser.sh', "#!/bin/bash\n\n/usr/bin/php -f index.php a=external_access p=blogs auth_token=".$iAdminId.'_'.str_replace('$', '\$', $this->generateExternalAccessToken($iAdminId)));
@file_put_contents('sap_website_parser.sh', "#!/bin/bash\n\n/usr/bin/php -f index.php a=external_access p=blogs auth_token=".$iSystemId.'_'.str_replace('$', '\$', $this->generateExternalAccessToken($iSystemId)));
}
private function setUserId($iUserId)
@@ -579,8 +584,7 @@ class Databap extends PhpObject
foreach($asArticles as $asArticle)
{
$iArticleId = $this->oMySql->selectValue(self::ART_TABLE, MySqlManager::getId(self::ART_TABLE), array('title'=>$asArticle['title']));
if($iArticleId==0)
if(!$iArticleId)
{
$iArticleId = $this->oMySql->insertRow(self::ART_TABLE, $asArticle);
$this->addMessage($iArticleId, self::MESSAGE_ARTICLE, self::DEFAULT_CHAN_ID);
@@ -753,7 +757,7 @@ class Databap extends PhpObject
return $oNote->getNote();
}
public function addUser($sFirstName, $sLastName, $sCompany, $sEmail='', $iClearance=self::CLEARANCE_MEMBER)
public function addUser($sFirstName, $sLastName, $sCompany, $sEmail='', $iClearance=self::CLEARANCE_MEMBER, $iUserId=0)
{
$sFirstName = mb_strtolower($sFirstName);
$sLastName = mb_strtolower($sLastName);
@@ -770,19 +774,15 @@ class Databap extends PhpObject
'pass'=>$this->oAuth->HashPassword(self::getLoginToken($sCompany)),
'clearance'=>$iClearance,
'led'=>'0000-00-00 00:00:00');
if($iUserId>0) $asInfo[MySqlManager::getId(self::USER_TABLE)] = $iUserId;
$iUserId = $this->oMySql->insertRow(self::USER_TABLE, $asInfo);
//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);
$sNickName = self::getNickNameFormat($sFirstName);
$this->setOptions(array(self::OPT_NICKNAME=>$sNickName, self::OPT_EMAIL=>$sEmail), true, $iUserId);
//Spread the word
$this->addMessage('Nouvel utilisateur: '.self::getNameFormat($sFirstName, $sLastName).' !', self::MESSAGE_NEWS, self::DEFAULT_CHAN_ID);
if($iUserId!=self::SYSTEM_USER_ID) $this->addMessage('Nouvel utilisateur: '.self::getNameFormat($sFirstName, $sLastName).' ! Son petit nom sur le chat est '.$sNickName, self::MESSAGE_NEWS, self::DEFAULT_CHAN_ID, self::SYSTEM_USER_ID);
return $iUserId;
}
@@ -1317,7 +1317,7 @@ class Databap extends PhpObject
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,
'constraint'=> array('default_value'=>true, $sOptNameIdCol => "(".implode(", ", $oOptionNameIds).")"),
@@ -1347,7 +1347,7 @@ class Databap extends PhpObject
if(!is_array($oOptionNameIds)) $oOptionNameIds = array($oOptionNameIds);
elseif(empty($oOptionNameIds)) $oOptionNameIds = array_keys($this->getAvailableOptions());
$asUserinfo = array('select' => array($sOptIdCol, $sOptNameIdColOptTable, $sOptValueIdColOptTable, $sOptValueTextCol),
'from' => self::OPT_TABLE,
'join' => array(self::OPTVAL_TABLE=>MySqlManager::getId(self::OPTVAL_TABLE)),
@@ -1449,7 +1449,7 @@ class Databap extends PhpObject
//Update option values table
if($asOption['type']==self::OPT_TEXT)
{
$asData = array($sOptNameIdCol=>$sOptNameId, $sOptValueTextCol=>$sNewValue, 'language'=>self::LANG_FR);
$asData = array($sOptNameIdCol=>$sOptNameId, $sOptValueTextCol=>$sNewValue, 'language'=>$this->sLanguage);
if($sUserValueId==$sDefaultValueId) $sNewValueId = $this->oMySql->insertRow(self::OPTVAL_TABLE, $asData);
else $sNewValueId = $this->oMySql->updateRow(self::OPTVAL_TABLE, $sUserValueId, array($sOptValueTextCol=>$sNewValue));
}
@@ -1530,8 +1530,8 @@ class Databap extends PhpObject
$asProfile['history'][$sKey]['title'] = $asInfo['title'];
}
}
krsort($asProfile['history']);
if(array_key_exists('history', $asProfile)) krsort($asProfile['history']);
return $this->jsonExport($asProfile);
}
@@ -1953,13 +1953,14 @@ class Databap extends PhpObject
return $bSuccess;
}
private function addMessage($sMessage, $sType, $iChanId)
private function addMessage($sMessage, $sType, $iChanId, $iUserId=0)
{
$bResult = false;
$iUserId = ($iUserId>0)?$iUserId:$this->getUserId();
if($iChanId>0)
{
$asInsert = array( MySqlManager::getId(self::USER_TABLE) => $this->getUserId(),
'nickname' => $this->getChatNickNames($this->getUserId()),
$asInsert = array( MySqlManager::getId(self::USER_TABLE) => $iUserId,
'nickname' => $this->getChatNickNames($iUserId),
MySqlManager::getId(self::CHAN_TABLE) => $iChanId,
MySqlManager::getText(self::MSG_TABLE) => $sMessage,
'type' => $sType,
@@ -2205,6 +2206,7 @@ class Databap extends PhpObject
private function getChatNickNames($iUserId=0)
{
//TODO use $this->getUserOptionValue();
$sUserIdCol = MySqlManager::getId(self::USER_TABLE);
$sNicknameCol = MySqlManager::getText(self::OPTVAL_TABLE);
$sOptionNameId = MySqlManager::getFullColumnName(self::OPT_TABLE, MySqlManager::getId(self::OPTNAME_TABLE));
@@ -2439,20 +2441,23 @@ class Databap extends PhpObject
if(!$iUserId) $iUserId = $this->oMySql->selectValue(self::USER_TABLE, $sUserTableId, $asInvConsts);
//Check Pass
if(!$this->oAuth->CheckPassword($sPassToken, $this->oMySql->selectValue(self::USER_TABLE, 'pass', $iUserId))) $iUserId = 0;
if($iUserId==self::SYSTEM_USER_ID || !$this->oAuth->CheckPassword($sPassToken, $this->oMySql->selectValue(self::USER_TABLE, 'pass', $iUserId))) $iUserId = 0;
}
//auto login by cookie
elseif(isset($_COOKIE[self::USER_COOKIE_ID]))
elseif(isset($_COOKIE[self::USER_COOKIE_ID]) && $_COOKIE[self::USER_COOKIE_ID]!=self::SYSTEM_USER_ID)
{
$asConstraints = array( $sUserTableId=>$_COOKIE[self::USER_COOKIE_ID],
'auth_cookie'=>$_COOKIE[self::USER_COOKIE_PASS],
'active'=>self::MEMBER_ACTIVE);
$asUserInfo = $this->oMySql->selectRow(self::USER_TABLE, $asConstraints, array($sUserTableId, 'led'));
$iUserId = $asUserInfo[$sUserTableId];
//Reset pass once a day
$bResetPass = (mb_substr($asUserInfo['led'], 0, 10) != date(Databap::DATE_SQL_FORMAT));
if(!empty($asUserInfo))
{
$iUserId = $asUserInfo[$sUserTableId];
//Reset pass once a day
$bResetPass = (mb_substr($asUserInfo['led'], 0, 10) != date(Databap::DATE_SQL_FORMAT));
}
}
}
//Login using Token (limited access)

2
todo
View File

@@ -2,6 +2,8 @@ Todo
----
Internal:
- put old messages back into new ones
- modify sap_website_parser.sh avec données de databot
- independant code/procedure/article/table/document php classes ?
- Admin param page
- Independant Option Class + delete 'option' column in options table