261 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			261 lines
		
	
	
		
			7.9 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_translation WHERE id=cf.url_translation_id) AS url,
 | 
						|
//            (SELECT ".$this->_langCode." FROM core_translation WHERE id=cf.name_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 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 = $this->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 = $this->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_translation WHERE id=f.url_translation_id) AS url,
 | 
						|
//						(SELECT ".$this->_langCode." FROM core_translation WHERE id=f.name_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 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;
 | 
						|
	}
 | 
						|
	
 | 
						|
}
 |