Пример #1
0
 public function isValid($partner_id, $puser_id, $type = false)
 {
     if (!$this->valid_string) {
         return self::INVALID_STR;
     }
     if (!$this->matchPartner($partner_id)) {
         return self::INVALID_PARTNER;
     }
     if (!$this->matchUser($puser_id)) {
         return self::INVALID_USER;
     }
     if ($type !== false) {
         // do not check ks type
         if (!$this->type == $type) {
             return self::INVALID_TYPE;
         }
     }
     if ($this->expired()) {
         return self::EXPIRED;
     }
     if (!$this->isUserIPAllowed()) {
         return self::EXCEEDED_RESTRICTED_IP;
     }
     if ($this->original_str && $partner_id != Partner::BATCH_PARTNER_ID && !$this->isWidgetSession() && $this->isKSInvalidated() !== false) {
         $criteria = new Criteria();
         $ksCriterion = $criteria->getNewCriterion(invalidSessionPeer::TYPE, invalidSession::INVALID_SESSION_TYPE_KS);
         $ksCriterion->addAnd($criteria->getNewCriterion(invalidSessionPeer::KS, $this->getHash()));
         $sessionId = $this->getSessionIdHash();
         if ($sessionId) {
             $invalidSession = $criteria->getNewCriterion(invalidSessionPeer::KS, $sessionId);
             $invalidSession->addAnd($criteria->getNewCriterion(invalidSessionPeer::TYPE, invalidSession::INVALID_SESSION_TYPE_SESSION_ID));
             $ksCriterion->addOr($invalidSession);
         }
         $criteria->add($ksCriterion);
         $dbKs = invalidSessionPeer::doSelectOne($criteria);
         if ($dbKs) {
             $currentActionLimit = $dbKs->getActionsLimit();
             if (is_null($currentActionLimit)) {
                 return self::LOGOUT;
             } elseif ($currentActionLimit <= 0) {
                 return self::EXCEEDED_ACTIONS_LIMIT;
             }
             $dbKs->setActionsLimit($currentActionLimit - 1);
             $dbKs->save();
         } else {
             $limit = $this->isSetLimitAction();
             if ($limit) {
                 invalidSessionPeer::actionsLimitKs($this, $limit - 1);
             }
         }
     }
     // creates the kuser
     if ($partner_id != Partner::BATCH_PARTNER_ID && PermissionPeer::isValidForPartner(PermissionName::FEATURE_END_USER_REPORTS, $partner_id)) {
         $this->kuser = kuserPeer::createKuserForPartner($partner_id, $puser_id);
         if (!$puser_id && $this->kuser->getScreenName() != 'Unknown') {
             $this->kuser->setScreenName('Unknown');
             $this->kuser->save();
         }
     }
     return self::OK;
 }
 public function isValid($partner_id, $puser_id, $type = false)
 {
     if (!$this->valid_string) {
         return self::INVALID_STR;
     }
     if (!$this->matchPartner($partner_id)) {
         return self::INVALID_PARTNER;
     }
     if (!$this->matchUser($puser_id)) {
         return self::INVALID_USER;
     }
     if ($type !== false) {
         // do not check ks type
         if (!$this->type == $type) {
             return self::INVALID_TYPE;
         }
     }
     if ($this->expired()) {
         return self::EXPIRED;
     }
     $allowedIPRestriction = $this->isSetIPRestriction();
     if ($allowedIPRestriction && $allowedIPRestriction != kCurrentContext::$user_ip) {
         KalturaLog::err("ipRestriction: EXCEEDED_RESTRICTED_IP");
         return self::EXCEEDED_RESTRICTED_IP;
     }
     if ($this->original_str && $partner_id != Partner::BATCH_PARTNER_ID && !$this->isWidgetSession() && $this->isKSInvalidated() !== false) {
         $criteria = new Criteria();
         $criteria->add(invalidSessionPeer::KS, $this->getHash());
         $dbKs = invalidSessionPeer::doSelectOne($criteria);
         if ($dbKs) {
             $currentActionLimit = $dbKs->getActionsLimit();
             if (is_null($currentActionLimit)) {
                 return self::LOGOUT;
             } elseif ($currentActionLimit <= 0) {
                 return self::EXCEEDED_ACTIONS_LIMIT;
             }
             $dbKs->setActionsLimit($currentActionLimit - 1);
             $dbKs->save();
         } else {
             $limit = $this->isSetLimitAction();
             if ($limit) {
                 invalidSessionPeer::actionsLimitKs($this, $limit - 1);
             }
         }
     }
     // creates the kuser
     if (PermissionPeer::isValidForPartner(PermissionName::FEATURE_END_USER_REPORTS, $partner_id)) {
         $kuser = kuserPeer::createKuserForPartner($partner_id, $puser_id);
         if (!$puser_id) {
             $kuser->setScreenName('Unknown');
             $kuser->save();
         }
     }
     return self::OK;
 }