Beispiel #1
0
 /**
  * Updates a gateway.
  *
  * @param Model_Gateway	$gateway	The gateway to update.
  * @param array			$data		The data to use to update the gateway.
  *
  * @return Model_Gateway
  */
 public static function update(Model_Gateway $gateway, array $data = array())
 {
     $gateway->populate($data);
     if (!empty($data['meta'])) {
         $meta_names = array_keys($data['meta']);
         $gateway_metas = $gateway->meta($meta_names);
         $enc_key = Config::get('security.db_enc_key');
         foreach ($meta_names as $name) {
             $value = Crypt::encode($data['meta'][$name], $enc_key);
             if (!isset($gateway_metas[$name])) {
                 $name_meta = Model_Gateway_Meta::name($name, $value);
                 $gateway->metas[] = $name_meta;
             } else {
                 $name_meta = $gateway_metas[$name];
                 $name_meta->value = $value;
                 try {
                     $name_meta->save();
                 } catch (FuelException $e) {
                     Log::error($e);
                     return false;
                 }
             }
         }
     }
     try {
         $gateway->save();
     } catch (FuelException $e) {
         Log::error($e);
         return false;
     }
     return $gateway;
 }
Beispiel #2
0
 /**
  * Returns meta data for this gateway instance.
  *
  * @param string $name The meta name to get.
  *
  * @return array|mixed
  */
 public function meta($name = null)
 {
     if (!$name) {
         return Model_Gateway_Meta::query()->where('gateway_id', $this->id)->get();
     } elseif (is_array($name)) {
         $meta_array = array();
         $metas = Model_Gateway_Meta::query()->where('gateway_id', $this->id)->where('name', 'in', $name)->get();
         foreach ($metas as $meta) {
             $meta_array[$meta->name] = $meta;
         }
         return $meta_array;
     }
     return Model_Gateway_Meta::find_by_gateway_id_and_name($this->id, $name);
 }