222 lines
6.3 KiB
PHP
222 lines
6.3 KiB
PHP
<?php
|
|
|
|
class ClassFeature extends ClassConfig {
|
|
public function __construct(){}
|
|
public function __destruct(){}
|
|
|
|
public function getFeatures($lang_code='source'){
|
|
$this->_langCode = $lang_code;
|
|
$oPDOLink = ClassConfig::databaseConnect();
|
|
$sql = "
|
|
SELECT cf.*,
|
|
(SELECT ".$this->_langCode." FROM core_feature_translation WHERE id=cf.url_feature_translation_id) AS url,
|
|
(SELECT ".$this->_langCode." FROM core_feature_translation WHERE id=cf.label_feature_translation_id) AS menu_label
|
|
FROM core_feature cf
|
|
WHERE cf.is_available_for_guest=TRUE
|
|
AND cf.is_active=TRUE
|
|
ORDER BY cf.priority ASC;
|
|
";
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
$execSQL->execute(array());
|
|
$rows = $execSQL->fetchAll(PDO::FETCH_OBJ);
|
|
return $rows;
|
|
}
|
|
|
|
public function getSubFeatures($parent_id, $lang_code='source'){
|
|
$this->_parentId = $parent_id;
|
|
$this->_langCode = $lang_code;
|
|
$oPDOLink = ClassConfig::databaseConnect();
|
|
$sql = "
|
|
SELECT cf.*,
|
|
(SELECT ".$this->_langCode." FROM core_feature_translation WHERE id=cf.url_feature_translation_id) AS url,
|
|
(SELECT ".$this->_langCode." FROM core_feature_translation WHERE id=cf.label_feature_translation_id) AS menu_label
|
|
FROM core_feature cf
|
|
WHERE cf.parent_id=:parent_id
|
|
AND cf.is_available_for_guest=TRUE
|
|
AND cf.is_active=TRUE
|
|
ORDER BY cf.priority ASC;
|
|
";
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
$execSQL->execute(array(':parent_id'=>$this->_parentId));
|
|
$rows = $execSQL->fetchAll(PDO::FETCH_OBJ);
|
|
return $rows;
|
|
}
|
|
|
|
public function getSubFeaturesForUser($parent_id, $lang_code='source'){
|
|
$this->_parentId = $parent_id;
|
|
$this->_langCode = $lang_code;
|
|
$oPDOLink = ClassConfig::databaseConnect();
|
|
$sql = "
|
|
SELECT cf.*,
|
|
(SELECT ".$this->_langCode." FROM core_feature_translation WHERE id=cf.url_feature_translation_id) AS url,
|
|
(SELECT ".$this->_langCode." FROM core_feature_translation WHERE id=cf.label_feature_translation_id) AS menu_label
|
|
FROM core_feature cf
|
|
WHERE cf.parent_id=:parent_id
|
|
AND cf.is_available_for_guest=FALSE
|
|
AND cf.is_active=TRUE
|
|
ORDER BY cf.priority ASC;
|
|
";
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
$execSQL->execute(array(':parent_id'=>$this->_parentId));
|
|
$rows = $execSQL->fetchAll(PDO::FETCH_OBJ);
|
|
return $rows;
|
|
}
|
|
|
|
public function getFeaturesOfUser($user_id, $lang_code='source'){
|
|
$this->_userId = $user_id;
|
|
$this->_langCode = $lang_code;
|
|
$oPDOLink = ClassConfig::databaseConnect();
|
|
$sql = "
|
|
SELECT f.*,
|
|
(SELECT ".$this->_langCode." FROM core_feature_translation WHERE id=f.url_feature_translation_id) AS url,
|
|
(SELECT ".$this->_langCode." FROM core_feature_translation WHERE id=f.label_feature_translation_id) AS menu_label
|
|
FROM useruser_corefeature_rel r
|
|
INNER JOIN core_feature f
|
|
ON r.core_feature_id=f.id
|
|
WHERE r.user_id=:user_id
|
|
AND f.is_active=TRUE
|
|
ORDER BY f.priority ASC;
|
|
";
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
$execSQL->execute(array(':user_id'=>$this->_userId));
|
|
$rows = $execSQL->fetchAll(PDO::FETCH_OBJ);
|
|
return $rows;
|
|
}
|
|
|
|
public function checkAccess($user_id, $menu_code){
|
|
$this->_userId = $user_id;
|
|
$this->_menuCode = $menu_code;
|
|
$oPDOLink = ClassConfig::databaseConnect();
|
|
|
|
$sql="
|
|
SELECT COUNT(core_feature_id) AS autorization
|
|
FROM useruser_corefeature_rel
|
|
WHERE user_id=:user_id
|
|
AND core_feature_id=(
|
|
SELECT id
|
|
FROM core_feature
|
|
WHERE code=:menu_code
|
|
LIMIT 1
|
|
);
|
|
";
|
|
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
$execSQL->execute(array(
|
|
':user_id'=>$this->_userId,
|
|
':menu_code'=>$this->_menuCode
|
|
));
|
|
$row = $execSQL->fetch(PDO::FETCH_ASSOC);
|
|
return $row;
|
|
}
|
|
|
|
public function listFeatures(){
|
|
$oPDOLink = ClassConfig::databaseConnect();
|
|
|
|
$sql = "
|
|
SELECT f.*
|
|
FROM core_feature f
|
|
ORDER BY is_menu_backend ASC, priority ASC;
|
|
";
|
|
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
$execSQL->execute(array());
|
|
$rows = $execSQL->fetchAll(PDO::FETCH_ASSOC);
|
|
return $rows;
|
|
}
|
|
|
|
public function setActivesFeatures($data){
|
|
$this->_data = $data;
|
|
$is_first_insertion = true;
|
|
$args_number = "?";
|
|
$args_list = array();
|
|
$message = array();
|
|
$oPDOLink = ClassConfig::databaseConnect();
|
|
|
|
$sql = "
|
|
UPDATE core_feature
|
|
SET is_active=FALSE;
|
|
";
|
|
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
if(!$execSQL->execute(array())){
|
|
return array('state'=>'failed');
|
|
}
|
|
|
|
foreach($this->_data as $k=>$v){
|
|
if($k != 'submit_active_features'){
|
|
if(!$is_first_insertion){
|
|
$args_number .= ', ?';
|
|
} else{
|
|
$is_first_insertion = false;
|
|
}
|
|
$args_list[] = $k;
|
|
}
|
|
}
|
|
|
|
$sql = "
|
|
UPDATE core_feature
|
|
SET is_active=TRUE
|
|
WHERE code IN (".$args_number.");
|
|
";
|
|
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
if($execSQL->execute($args_list)){
|
|
$message['state'] = 'success';
|
|
} else{
|
|
$message['state'] = 'failed';
|
|
}
|
|
return $message;
|
|
}
|
|
|
|
public function setUserFeatures($user_id, $data){
|
|
$this->_data = $data;
|
|
$this->_userId = $user_id;
|
|
$nb_passages = 0;
|
|
$args = "";
|
|
$args_list = array();
|
|
$message = array();
|
|
$list_of_features_ids = array();
|
|
$list_of_features = ClassFeatures::listFeatures();
|
|
$oPDOLink = ClassConfig::databaseConnect();
|
|
|
|
$sql = "DELETE FROM useruser_corefeature_rel WHERE user_id=:user_id;";
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
if(!$execSQL->execute(array(':user_id'=>$this->_userId))){
|
|
return array('state'=>'failed');
|
|
}
|
|
|
|
foreach($list_of_features as $k=>$v){
|
|
$list_of_features_ids[$list_of_features[$k]['code']] = $list_of_features[$k]['id'];
|
|
}
|
|
|
|
foreach($this->_data as $k=>$v){
|
|
if(array_key_exists($k, $list_of_features_ids)){
|
|
if($nb_passages > 0){
|
|
$args .= ',';
|
|
}
|
|
$args .= '(:user_id'.$nb_passages.', :core_feature_id'.$nb_passages.')';
|
|
$args_list[':user_id'.$nb_passages] = $this->_userId;
|
|
$args_list[':core_feature_id'.$nb_passages] = $list_of_features_ids[$k];
|
|
$nb_passages++;
|
|
}
|
|
}
|
|
|
|
if(!empty($args_list)){
|
|
$sql = "
|
|
INSERT INTO useruser_corefeature_rel(user_id, core_feature_id)
|
|
VALUES".$args.";
|
|
";
|
|
$execSQL = $oPDOLink->prepare($sql);
|
|
if($execSQL->execute($args_list)){
|
|
$message['state'] = 'success';
|
|
} else{
|
|
$message['state'] = 'failed';
|
|
}
|
|
} else {
|
|
$message['state'] = 'no_data_to_set';
|
|
}
|
|
return $message;
|
|
}
|
|
|
|
}
|