Exemple #1
0
 /**
  * Sets the default identity provider to be used when no identity is provided.
  *
  * @static
  * @param Scenario_Identity_Provider $provider  New provider to set.
  */
 public static function setProvider(Scenario_Identity_Provider $provider = null)
 {
     if ($provider !== null) {
         self::$_idProvider = $provider;
     } else {
         require_once 'Scenario/Identity/Provider/Session.php';
         self::$_idProvider = new Scenario_Identity_Provider_Session();
     }
 }
Exemple #2
0
 /**
  * Creates a new Scenario_Identity object using session_id as the identifier key.
  *
  * @static
  * @deprecated
  * @return Scenario_Identity
  */
 public static function sessionIdent()
 {
     require_once 'Scenario/Identity.php';
     require_once 'Scenario/Identity/Provider/Session.php';
     $provider = Scenario_Identity::getProvider();
     if (!$provider instanceof Scenario_Identity_Provider_Session) {
         $provider = new Scenario_Identity_Provider_Session();
     }
     return $provider->getIdentity();
 }
Exemple #3
0
 /**
  * Finish an experiment for a given identity
  *
  * Mark a given experiment (be it multivar or not) as complete for a given identity.
  * If a matching treatment does not exist, the call should be ignored, rather than 
  * creating a new treatment.
  *
  * @param string|Scenario_Experiment $experiment 
  * @param Scenario_Identity $id 
  */
 public function FinishExperiment($experiment, Scenario_Identity $id)
 {
     if (is_string($experiment)) {
         $experiment = $this->GetExperimentByName($experiment);
     }
     if ($experiment->isMultiVar()) {
         $children = array();
         foreach ($experiment->getChildren() as $child) {
             $children[] = $child->getRowId();
         }
         $children = implode(',', $children);
         $result = $this->getDbAdapter()->update($this->usersTreatmentsTable, array('completed' => 1), array($this->quote('identity = ?', $id->getDbIdent()), sprintf('experiment_id IN (%s)', $children)));
     } else {
         $result = $this->getDbAdapter()->update($this->usersTreatmentsTable, array('completed' => 1), array($this->quote('identity = ?', $id->getDbIdent()), $this->quote('experiment_id = ?', $experiment->getRowId())));
     }
     return $result > 0;
 }
Exemple #4
0
 /**
  * Set configuration options.
  *
  * Merges the given options array into the configuration data.
  *
  * Usage example for Zend adapter:
  * <code>
  * Scenario_Core::getInstance()->config( array(
  *      "adapter"   => new Scenario_Data_Adapter_Zend(),
  *      "db"        => array(
  *          "uri"   => "mysqli://*****:*****@hostname/schema",
  *          "tables" => array(
  *              "experiments" => "scenario_experiments",
  *              "treatments" => "scenario_treatments",
  *              "users_treatments" => "scenario_users_treatments"
  *          )
  *      )
  * ) );
  * </code>
  *
  * Usage example for Pdo adapter:
  * <code>
  * // define the PDO DSN
  * $dsn = 'mysql:host=localhost;dbname=scenario';
  *
  * // create the adapter
  * require_once 'Scenario/Data/Adapter/Pdo.php';
  * $adapter = new Scenario_Data_Adapter_Pdo($dsn, 'username', 'pass');
  *
  * // configure the core
  * Scenario_Core::getInstance()->config( array( "adapter" => $adapter ) );
  * // Note: if [db][tables] is omitted, adapter will use default table names.
  * </code>
  *
  * @param array $options
  * @return Scenario_Core
  */
 public function config(array $options = array())
 {
     if (is_array($this->_config)) {
         $this->_config = array_merge($this->_config, $options);
     } else {
         $this->_config = $options;
     }
     if (array_key_exists('adapter', $options)) {
         $adapter = $options['adapter'];
         if ($adapter instanceof Scenario_Data_Adapter) {
             $this->setAdapter($adapter);
         }
     }
     if (array_key_exists('identityProvider', $options)) {
         if ($options['identityProvider'] instanceof Scenario_Identity_Provider) {
             /**
              * @see Scenario_Identity
              */
             require_once 'Scenario/Identity.php';
             Scenario_Identity::setProvider($options['identityProvider']);
         }
     }
     return $this;
 }
Exemple #5
0
 /**
  * Finish an experiment for a given identity
  *
  * Mark a given experiment (be it multivar or not) as complete for a given identity.
  * If a matching treatment does not exist, the call should be ignored, rather than 
  * creating a new treatment.
  *
  * @param string|Scenario_Experiment $experiment 
  * @param Scenario_Identity $id 
  */
 public function FinishExperiment($experiment, Scenario_Identity $id)
 {
     if (is_string($experiment)) {
         $experiment = $this->GetExperimentByName($experiment);
     }
     if ($experiment->isMultiVar()) {
         $children = array();
         foreach ($experiment->getChildren() as $child) {
             $children[] = $child->getRowId();
         }
         $children = implode(',', $children);
         $sql = "UPDATE {$this->usersTreatmentsTable} SET completed = ? \n                  WHERE identity = ? AND experiment_id IN ({$children})";
         $result = $this->prepare($sql, array(1, $id->getDbIdent()));
     } else {
         $sql = "UPDATE {$this->usersTreatmentsTable} SET completed = ?\n                  WHERE identity = ? AND experiment_id = ?";
         $result = $this->prepare($sql, array(1, $id->getDbIdent(), $experiment->getRowId()));
     }
     return $result->rowCount() > 0;
 }