示例#1
0
 public function after_update(\Orm\Model $obj)
 {
     if (!class_exists($this->model_to)) {
         throw new \FuelException('Class not found : ' . $this->model_to);
     }
     $this->model_to = get_real_class($this->model_to);
     if ($this->is_check_updated_at) {
         $check_property = $this->is_check_updated_at['property'];
         if ($obj->updated_at != $obj->{$check_property}) {
             return;
         }
     }
     $cache = $this->get_model_obj($obj);
     foreach ($this->properties as $key => $value) {
         $property_from = $value;
         $property_to = $value;
         if (is_string($key) && !empty($key)) {
             $property_to = $key;
         }
         $cache->{$property_to} = $obj->{$property_from};
     }
     foreach ($this->special_properties as $property => $values) {
         $value = isset($values['value']) ? $values['value'] : null;
         $cache->{$property} = $value;
     }
     $cache->save();
 }
示例#2
0
 public function __construct($from, $name, array $config)
 {
     $this->name = $name;
     $this->model_from = $from;
     $this->model_to = array_key_exists('model_to', $config) ? $config['model_to'] : \Inflector::get_namespace($from) . 'Model_' . \Inflector::classify($name);
     $this->key_from = array_key_exists('key_from', $config) ? (array) $config['key_from'] : $this->key_from;
     $this->key_to = array_key_exists('key_to', $config) ? (array) $config['key_to'] : $this->key_to;
     $this->conditions = array_key_exists('conditions', $config) ? (array) $config['conditions'] : array();
     if (!empty($config['table_through'])) {
         $this->table_through = $config['table_through'];
     } else {
         $table_name = array($this->model_from, $this->model_to);
         natcasesort($table_name);
         $table_name = array_merge($table_name);
         $this->table_through = \Inflector::tableize($table_name[0]) . '_' . \Inflector::tableize($table_name[1]);
     }
     $this->key_through_from = !empty($config['key_through_from']) ? (array) $config['key_through_from'] : (array) \Inflector::foreign_key($this->model_from);
     $this->key_through_to = !empty($config['key_through_to']) ? (array) $config['key_through_to'] : (array) \Inflector::foreign_key($this->model_to);
     $this->cascade_save = array_key_exists('cascade_save', $config) ? $config['cascade_save'] : $this->cascade_save;
     $this->cascade_delete = array_key_exists('cascade_delete', $config) ? $config['cascade_delete'] : $this->cascade_delete;
     if (!class_exists($this->model_to)) {
         throw new \FuelException('Related model not found by Many_Many relation "' . $this->name . '": ' . $this->model_to);
     }
     $this->model_to = get_real_class($this->model_to);
 }
 public function toObj()
 {
     $obj = array('status' => 'error', 'errorType' => get_real_class($this), 'message' => $this->message);
     if ($this->data != null) {
         $obj['data'] = $this->data;
     }
     return $obj;
 }
 public function after_insert(\Orm\Model $obj)
 {
     if (!class_exists($this->model_to)) {
         throw new \FuelException('Class not found : ' . $this->model_to);
     }
     $this->model_to = get_real_class($this->model_to);
     $this->save_single_record($obj, $this->properties, $this->special_properties);
     if ($this->additional_records) {
         $this->save_multiple_records($obj, $this->additional_records);
     }
 }
示例#5
0
文件: form.php 项目: ratiw/petro
 public function add_model($model)
 {
     if (is_string($model)) {
         $this->model = get_real_class($model);
     }
     if (get_parent_class($this->model) == 'Orm\\Model') {
         $this->grab_fields($this->model);
     } else {
         throw new \FuelException($model . ' does not appear to be of the correct type. Only model of type Orm\\Model is supported at the moment.');
     }
 }
示例#6
0
 public function __construct($from, $name, array $config)
 {
     $this->name = $name;
     $this->model_from = $from;
     $this->model_to = array_key_exists('model_to', $config) ? $config['model_to'] : \Inflector::get_namespace($from) . 'Model_' . \Inflector::classify($name);
     $this->key_from = array_key_exists('key_from', $config) ? (array) $config['key_from'] : (array) \Inflector::foreign_key($this->model_to);
     $this->key_to = array_key_exists('key_to', $config) ? (array) $config['key_to'] : $this->key_to;
     $this->conditions = array_key_exists('conditions', $config) ? (array) $config['conditions'] : array();
     $this->cascade_save = array_key_exists('cascade_save', $config) ? $config['cascade_save'] : $this->cascade_save;
     $this->cascade_delete = array_key_exists('cascade_delete', $config) ? $config['cascade_delete'] : $this->cascade_delete;
     if (!class_exists($this->model_to)) {
         throw new \FuelException('Related model not found by Belongs_To relation "' . $this->name . '": ' . $this->model_to);
     }
     $this->model_to = get_real_class($this->model_to);
 }
示例#7
0
 public function after_insert(\Orm\Model $obj)
 {
     if (!class_exists($this->model_to)) {
         throw new \FuelException('Class not found : ' . $this->model_to);
     }
     $model_to = get_real_class($this->model_to);
     $cache = new $this->model_to();
     foreach ($this->properties as $key => $value) {
         $property_from = $value;
         $property_to = $value;
         if (is_string($key) && !empty($key)) {
             $property_to = $key;
         }
         $cache->{$property_to} = $obj->{$property_from};
     }
     foreach ($this->special_properties as $property => $values) {
         $value = isset($values['value']) ? $values['value'] : null;
         $cache->{$property} = $value;
     }
     $cache->save();
 }
 private function get_datetime_from_relational_model($obj)
 {
     if (!($relational_model = $this->get_relational_model($obj, $this->_model_from))) {
         return false;
     }
     if (!class_exists($relational_model)) {
         return false;
     }
     $model_from = get_real_class($this->relational_model);
     $query = $model_from::query();
     foreach ($this->_conditions as $property_to => $froms) {
         foreach ($froms as $value_from => $type) {
             $value = \Site_Model::get_value_for_observer_setting($obj, $value_from, $type);
             $query->where($property_to, $value);
         }
     }
     $model = $query->get_one();
     if (empty($model->{$this->_copy_property})) {
         return false;
     }
     return $model->{$this->_copy_property};
 }
示例#9
0
文件: grid.php 项目: ratiw/petro
 public function __construct($model, $columns = null)
 {
     if ($model instanceof \Petro\Controller_App) {
         $this->petro_app = $model;
         $model = $this->petro_app->model;
     }
     if (!class_exists($model)) {
         throw new \FuelException('Petro_Grid : The given model "' . $model . '" does not exist');
     }
     $this->model = get_real_class($model);
     \Config::load('petro', true);
     \Lang::load('petro');
     static::$template = \Config::get('petro.template');
     if (isset($columns)) {
         $this->set_columns($columns);
     } else {
         $this->grab_columns();
     }
     if (empty($this->order_by) and count($this->columns) > 0) {
         $col_name = $this->columns[0]['name'];
         $this->set_order_by(implode('_', array($col_name, 'asc')));
     }
 }
示例#10
0
 /**
  * Execute the controller.
  * @param $action String Action to execute.
  * @return Response the response to send.
  */
 public function execute($action, $args = [])
 {
     $this->action = $action;
     // On récupère le nom de la classe
     $myClassName = get_real_class($this);
     if ($i = strpos($myClassName, 'Controller')) {
         $myClassName = substr($myClassName, 0, $i);
     }
     // Par défaut, le nom de la view est le même
     // que le nom de l'action et dans le répertoire
     // dont le nom correspond à celui du controller.
     $this->view = $myClassName . DS . $action;
     /**
      * On ne peut executer que les fonctions écrites dans les sous classes
      * du controller. Par exemple beforeAction n'est pas une action
      */
     if (!method_exists($this, $action) && !in_array($action, get_class_methods('MerciKI\\Body\\Controller'))) {
         throw new ActionNotExist('Action "' . $action . '" inexistante !');
     }
     $this->beforeAction();
     // No redirect is required.
     if ($this->redirect != null) {
         return new RedirectResponse($this->redirect);
     }
     $view = call_user_func_array(array($this, $action), $args);
     // No redirect is required.
     if ($this->redirect != null) {
         return new RedirectResponse($this->redirect);
     }
     if (is_array($view) || $view instanceof \JsonSerializable) {
         return new JsonResponse($view);
     }
     return new HtmlResponse($view);
 }
示例#11
0
文件: petro.php 项目: ratiw/petro
 public static function _render_filters($filters)
 {
     $param = Input::param('q', array());
     $out = '';
     foreach ($filters as $name => $prop) {
         if (isset($prop['label'])) {
             $label = $prop['label'];
         } else {
             $label = \Lang::get($name) ?: \Inflector::humanize($name);
         }
         if (isset($prop['collection']) and is_string($prop['collection'])) {
             $model = get_real_class($prop['collection']);
             $arr = $model::property($name, array());
             $prop['collection'] = isset($arr['form']['options']) ? $arr['form']['options'] : array();
         }
         $out .= '<div class="filter-' . $prop['type'] . '">' . PHP_EOL;
         switch (\Str::lower($prop['type'])) {
             case 'date':
                 $out .= static::render_filter_date($name, $label, $param);
                 break;
             case 'date_range':
                 $out .= static::render_filter_date_range($name, $label, $param);
                 break;
             case 'numeric':
                 $out .= static::render_filter_numeric($name, $label, $param);
                 break;
             case 'select':
                 $out .= static::render_filter_select($name, $label, $prop['collection'], $param);
                 break;
             case 'checkbox':
                 $out .= static::render_filter_checkbox($name, $label, $prop['collection'], $param);
                 break;
             case 'radio':
                 $out .= static::render_filter_radio($name, $label, $prop['collection'], $param);
                 break;
             default:
                 // handle as string
                 $out .= static::render_filter_string($name, $label, $param);
         }
         $out .= '</div>' . PHP_EOL;
     }
     return $out;
 }
 public function processApiKeys()
 {
     while (true) {
         $eveApis = ECP\EveApiQuery::create()->filterByStatus('not processed yet')->_or()->condition('c1', 'EveApi.lastComputed < ?', time() - 24 * 60 * 60)->condition('c2', 'EveApi.status = ?', 'success')->where(array('c1', 'c2'), 'and')->find();
         $eveApis->populateRelation('EveCharacter');
         foreach ($eveApis as $eveApi) {
             $characters = array();
             $eveApi->setStatus('');
             try {
                 $characters = $this->getCharacters($eveApi);
                 $eveApi->setStatus('success');
             } catch (\Pheal\Exceptions\PhealException $e) {
                 $eveApi->setStatus('An exception occured. ' . get_real_class($e) . ': ' . $e->getMessage());
             }
             $eveApi->setLastComputed(time());
             $connection = $this->getPropelConnection();
             try {
                 $connection->beginTransaction();
                 foreach ($characters as $character) {
                     $eveCharacter = $this->getSubentity2($eveApi, 'EveCharacter', $character, 'characterID', 'CharId');
                     $eveCharacter->setCharName($character->name);
                     $eveCharacter->setCharId($character->characterID);
                     $eveCharacter->setCorpName($this->tryGetProperty($character, 'corporationName'));
                     $eveCharacter->setCorpId($this->tryGetProperty($character, 'corporationID'));
                     $eveCharacter->setAllyName($this->tryGetProperty($character, 'allianceName'));
                     $eveCharacter->setAllyId($this->tryGetProperty($character, 'allianceID'));
                     $this->prepareSubentitySave3($connection, $eveApi, 'EveCharacter', $eveCharacter);
                 }
                 $this->cleanupOldEnties($eveApi, 'EveCharacter', $characters, 'characterID', 'CharId');
                 $eveApi->save($connection);
                 $connection->commit();
             } catch (Exception $e) {
                 $connection->rollBack();
                 throw $e;
             }
         }
         sleep(30);
     }
 }
示例#13
0
 public static function get4relation($model_to, array $conditions, \Orm\Model $model_obj_from)
 {
     if (!class_exists($model_to)) {
         throw new \FuelException('Class not found : ' . $model_to);
     }
     $model_to = get_real_class($model_to);
     $query = $model_to::query();
     foreach ($conditions as $property_to => $froms) {
         foreach ($froms as $value_from => $type) {
             $query->where($property_to, \Site_Model::get_value_for_observer_setting($model_obj_from, $value_from, $type));
         }
     }
     return $query->get();
 }