Пример #1
0
    /**
     * @param array $uids
     *
     * @param array $ftrTypes
     * @return array
     */
    public function findFeatureTypesByUids(array $uids, array $ftrTypes)
    {
        $sql = '
		SELECT
			USR_ID "' . FeatureTypeModel::FIELD_UID . '",
			FTR_TP "' . FeatureTypeModel::FIELD_TYPE . '",
			UFT_TEXT "' . FeatureTypeModel::FIELD_TEXT . '",
			UFT_NUMBER "' . FeatureTypeModel::FIELD_NUMBER . '",
			UFT_START_DATE "' . FeatureTypeModel::FIELD_START_DATE . '",
			UFT_END_DATE "' . FeatureTypeModel::FIELD_END_DATE . '",
			UFT_TIMESTAMP "' . FeatureTypeModel::FIELD_TIMESTAMP . '"
        FROM videkomaster.USER_FEATURES uf
        WHERE     uf.USR_ID IN (SELECT COLUMN_VALUE FROM TABLE (:USRIDS))
              AND uf.FTR_TP IN (SELECT COLUMN_VALUE FROM TABLE (:FTRTPS))
        ';
        $query = $this->oracle->query($sql)->bindArrayInt('USRIDS', $uids)->bindArrayInt('FTRTPS', $ftrTypes);
        $result = $query->fetchTree(2);
        $result = array_map(function ($item) {
            return array_map(function ($item) {
                unset($item['USR_ID']);
                unset($item['FTR_TP']);
                return $item;
            }, $item);
        }, $result);
        return $result;
    }
Пример #2
0
    /**
     * @param $login
     * @param $password
     *
     * @param array $authScope
     * @return array
     */
    public function findUserByCredentials($login, $password)
    {
        $sql = '
            SELECT DISTINCT
                   um.USR_ID,
                   cm.CPM_NAME,
                   cm.CPM_EMAIL_TECH,
                   cm.CPM_IP_RANGES,
                   cm.CPM_FLAGS,
                   um.USR_LANGUAGE_CODE,
                   um.LCK_TP_HOST
              FROM    videkomaster.USER_MASTER um
                   LEFT JOIN
                      videkomaster.CONTPARTNER_MASTER cm
                   ON cm.USR_ID = um.USR_ID

             WHERE     cm.CPM_NAME = :LOGIN
                   AND um.USR_TYPE = 10
                   AND cm.CPM_PASSWORD IS NOT NULL
                   AND ( (cm.CPM_PASSWORD = :PASSWORD) OR (cm.CPM_PASSWORD = lower(videkomaster.F_MD5 (:PASSWORD))) )
        ';
        $query = $this->oracle->query($sql)->bindString('LOGIN', $login)->bindString('PASSWORD', $password);
        $result = $query->fetchRow();
        return $result;
    }
Пример #3
0
 /**
  * @return bool
  */
 public function getOracleIntegrationTest()
 {
     $sql = 'SELECT DISTINCT * FROM VIDEKOMASTER.USER_MASTER UMA WHERE UMA.USR_ID = :USR_ID ';
     $query = $this->oracle->query($sql)->bindString('USR_ID', CampointUidsEnum::AK);
     $result = $query->fetchRow();
     return $result['USR_LOGIN'] === 'akentner-TX';
 }
Пример #4
0
    /**
     * @param array $uids
     *
     * @return array
     */
    public function findOptionsByIds(array $uids)
    {
        $sql = '
		SELECT uo.USR_ID "uid", uo.OPT_TP "optTp", uo.UOT_STATUS "value"
        FROM videkomaster.USER_OPTIONS uo
        WHERE     UO.USR_ID IN (SELECT COLUMN_VALUE FROM TABLE (:USRIDS))
              AND UO.OPT_TP IN (SELECT COLUMN_VALUE FROM TABLE (:OPTTPS))
        ';
        $query = $this->oracle->query($sql)->bindArrayInt('USRIDS', $uids)->bindArrayInt('OPTTPS', array_keys(OptionTypeEnum::$fieldMapping));
        $result = $query->fetchTree(2);
        return $result;
    }
Пример #5
0
 /**
  * @param $login
  * @param $isMasterAccount
  * @param $remoteAddress
  * @return null|Model\Session
  */
 private function recoverSession($login, $isMasterAccount, $remoteAddress)
 {
     $sql = '
         SELECT
             ses.USR_ID as "uid",
             ses.SES_MNUMBER as "sid",
             ses.SES_FLAGS as "flags",
             um.USR_LOGIN as "login"
         FROM VIDEKOMASTER.SESSIONS ses
         INNER JOIN VIDEKOMASTER.USER_MASTER um on (um.USR_ID = ses.USR_ID)
         WHERE um.USR_LOGIN = :LOGIN
           AND ses.SES_IP = :REMOTE_ADDRESS
           AND ses.SET_TP = 200
           AND ses.SES_FLAGS = :IS_MASTER_ACCOUNT
     ';
     $query = $this->oracle->query($sql)->bindString('LOGIN', $login)->bindString('REMOTE_ADDRESS', $remoteAddress)->bindInt('IS_MASTER_ACCOUNT', (int) $isMasterAccount);
     $result = $query->fetchRow();
     if (!$result) {
         return null;
     }
     $session = new Model\Session();
     $result['uid'] = (int) $result['uid'];
     $result['flags'] = (int) $result['flags'];
     ObjectUtil::hydrateObject($session, $result);
     return $session;
 }
Пример #6
0
    /**
     * @param $login
     * @param $password
     *
     * @param array $authScope
     * @return array
     */
    public function findUserByCredentials($login, $password, array $authScope = [])
    {
        if (!$authScope) {
            $authScope = $this->defaultAuthScope;
        }
        $sql = '
		SELECT DISTINCT
			   um.USR_ID,
			   um.USR_LOGIN,
			   um.USR_PWD,
			   um.USR_MASTERPWD,
			   ua.URA_EMAIL,
			   um.USR_LANGUAGE_CODE,
			   CASE
				  WHEN um.USR_MASTERPWD = :PASSWORD THEN 1
				  WHEN um.USR_MASTERPWD = videkomaster.F_MD5 (:PASSWORD) THEN 1
				  ELSE 0
			   END IS_MASTER,
   			   CASE
				  WHEN um.USR_TYPE = 0 THEN um.LCK_TP_GUEST
				  WHEN um.USR_TYPE = 1 THEN um.LCK_TP_HOST
				  WHEN um.USR_TYPE = 13 THEN um.LCK_TP_GUEST
				  ELSE -1
			   END LOCK_TYPE,
			   um.USR_TYPE
		  FROM    videkomaster.USER_MASTER um
			   LEFT JOIN
				  videkomaster.USER_ADDRESS ua
			   ON ua.ADD_TP = 1 AND ua.USR_ID = um.USR_ID
		 WHERE     um.USR_LOGIN = :LOGIN
			   AND USR_PWD IS NOT NULL
			   AND (   (USR_PWD = :PASSWORD)
					OR (USR_MASTERPWD = :PASSWORD)
					OR (USR_PWD = videkomaster.F_MD5 (:PASSWORD))
					OR (USR_MASTERPWD = videkomaster.F_MD5 (:PASSWORD)))
        ';
        if ($authScope != [UserTypeEnum::USER]) {
            $sql .= 'AND USR_TYPE IN ( SELECT COLUMN_VALUE FROM TABLE (:USRTYPE) )';
        }
        $query = $this->oracle->query($sql)->bindString('LOGIN', $login)->bindString('PASSWORD', $password);
        if ($authScope) {
            $authScopeInt = array_map('\\VXBase\\User\\Model\\UserTypeEnum::getDbMapping', $authScope);
            $query->bindArrayInt('USRTYPE', $authScopeInt);
        }
        $result = $query->fetchRow();
        return $result;
    }
 /**
  * @param $remoteAddress
  *
  * @return null|array
  */
 private function findSessionInOracleByRemoteAddress($remoteAddress)
 {
     $sql = '
       SELECT
         SES.USR_ID "userId",
         SES.SES_MNUMBER "sid",
         UM.USR_LOGIN "userScreenname",
         SES.SES_END + ST.SET_EXPIRE_TIME/86400 "validUntil"
       FROM videkomaster.SESSIONS ses
       LEFT JOIN videkomaster.SESSION_TYPE ST ON ST.SET_TP = SES.SET_TP
       LEFT JOIN videkomaster.USER_MASTER UM ON UM.USR_ID = SES.USR_ID
       WHERE SES.SES_IP = :REMOTE_ADDRESS AND SES.SET_TP = :SID_SESSION_TYPE
     ';
     $query = $this->oracle->query($sql)->bindString('REMOTE_ADDRESS', $remoteAddress)->bindInt('SID_SESSION_TYPE', OracleSessionTypeEnum::HOST);
     $result = $query->fetchAll();
     return $result;
 }
Пример #8
0
 /**
  * @param $sid
  * @return array|null
  */
 public function findHistorySessionInOracle($sid)
 {
     $sql = '
       SELECT DISTINCT
         SES.SES_MNUMBER "sid",
         SES.USR_ID "uid",
         SES.SES_IP "remoteAddress",
         SES.SES_START "validFrom",
         SES.SES_END "validUntil",
         SES.SES_UAGENT "userAgent"
       FROM videkomaster.SESSIONS_VXTOOL ses
       WHERE SES.SES_MNUMBER = :SID
     ';
     $query = $this->oracle->query($sql)->bindString('SID', $sid);
     $result = $query->fetchRow();
     return $result;
 }
Пример #9
0
 /**
  * @param $hostUid
  * @return array|null
  */
 public function findFtpUserByHostUid($hostUid)
 {
     $sql = '
         SELECT um.USR_ID AS "hostUid",
                UM.USR_LOGIN AS "login",
                UF.UFT_TEXT AS "password",
                UF.UFT_START_DATE AS "created",
                UF.UFT_TIMESTAMP AS "modified"
           FROM    VIDEKOMASTER.USER_MASTER um
                INNER JOIN
                   VIDEKOMASTER.USER_FEATURES uf
                ON     UF.USR_ID = UM.USR_ID
                   AND UF.FTR_TP = 405
          WHERE UM.USR_ID = :USRID
     ';
     $query = $this->oracle->query($sql)->bindString('USRID', (int) $hostUid);
     $result = $query->fetchRow();
     return $result;
 }