From cb9ba5e6d985eec89c15686c3694de18859040d1 Mon Sep 17 00:00:00 2001 From: lutranf Date: Fri, 19 Dec 2014 17:44:45 +0100 Subject: [PATCH] multiple fixes on install() --- inc/databap.php | 71 ++++++++++++++++++++++++++----------------------- todo | 2 ++ 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/inc/databap.php b/inc/databap.php index a523592..386edb9 100755 --- a/inc/databap.php +++ b/inc/databap.php @@ -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) diff --git a/todo b/todo index 83d06b5..97bf10c 100644 --- a/todo +++ b/todo @@ -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