/** * Initiate WhoDidIt Behavior * * @param object $model * @param array $config behavior settings you would like to override * @return void * @access public */ function setup(&$model, $config = array()) { // Can't call Configure::read in the initialization above, but this is this // real default value, unlikely ever to be overridden in this application. $this->_defaults['user_model'] = Configure::read('security.auth_model'); //assign default settings $this->settings[$model->alias] = $this->_defaults; //merge custom config with default settings $this->settings[$model->alias] = array_merge($this->settings[$model->alias], (array) $config); $hasFieldCreatedBy = $model->hasField($this->settings[$model->alias]['created_by_field']); $hasFieldModifiedBy = $model->hasField($this->settings[$model->alias]['modified_by_field']); $this->settings[$model->alias]['has_created_by'] = $hasFieldCreatedBy; $this->settings[$model->alias]['has_modified_by'] = $hasFieldModifiedBy; //handles model binding to the User model //according to the auto_bind settings (default true) if ($this->settings[$model->alias]['auto_bind']) { if ($hasFieldCreatedBy) { $commonBelongsTo = array('CreatedBy' => array('className' => $this->settings[$model->alias]['user_model'], 'foreignKey' => $this->settings[$model->alias]['created_by_field'])); $model->bindModel(array('belongsTo' => $commonBelongsTo), false); } if ($hasFieldModifiedBy) { $commonBelongsTo = array('ModifiedBy' => array('className' => $this->settings[$model->alias]['user_model'], 'foreignKey' => $this->settings[$model->alias]['modified_by_field'])); $model->bindModel(array('belongsTo' => $commonBelongsTo), false); } } }
/** * Initiate WhoMadeIt Behavior * * @param object $model * @param array $config behavior settings you would like to override * @return void * @access public */ function setup(&$model, $config = array()) { if (false !== strpos($_GET['url'], '/export_excel:1')) { return; } //assigne default settings $this->settings[$model->alias] = $this->_defaults; //merge custom config with default settings $this->settings[$model->alias] = array_merge($this->settings[$model->alias], (array) $config); $hasFieldCreatedBy = $model->hasField($this->settings[$model->alias]['created_by_field']); $hasFieldModifiedBy = $model->hasField($this->settings[$model->alias]['modified_by_field']); $this->settings[$model->alias]['has_created_by'] = $hasFieldCreatedBy; $this->settings[$model->alias]['has_modified_by'] = $hasFieldModifiedBy; //handles model binding to the User model //according to the auto_bind settings (default true) if ($this->settings[$model->alias]['auto_bind']) { if ($hasFieldCreatedBy) { $commonBelongsTo = array('CreatedBy' => array('className' => $this->settings[$model->alias]['user_model'], 'foreignKey' => $this->settings[$model->alias]['created_by_field'])); $model->bindModel(array('belongsTo' => $commonBelongsTo), false); } if ($hasFieldModifiedBy) { $commonBelongsTo = array('ModifiedBy' => array('className' => $this->settings[$model->alias]['user_model'], 'foreignKey' => $this->settings[$model->alias]['modified_by_field'])); $model->bindModel(array('belongsTo' => $commonBelongsTo), false); } } }
/** * Initiate behavior for the model using specified settings. * Available settings: * * - view_counter: string :: the field in the table that has the count * - session_tracking false to disable, int for number of views to keep track of * views are tracked by displayField and will do funny things if displayField is not a string. * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ public function setup($Model, $settings = array()) { $default = array('view_counter' => 'views', 'session_tracking' => 20); if (!isset($this->__settings[$Model->alias])) { $this->__settings[$Model->alias] = $default; } $this->__settings[$Model->alias] = array_merge($this->__settings[$Model->alias], $settings); $Model->bindModel(array('hasMany' => array('ViewCount' => array('className' => 'ViewCounter.ViewCounterView', 'foreignKey' => 'foreign_key', 'conditions' => array('model' => $Model->plugin . '.' . $Model->alias), 'limit' => 0)))); $Model->ViewCount->bindModel(array('belongsTo' => array($Model->alias => array('className' => $Model->plugin . '.' . $Model->alias, 'foreignKey' => 'foreign_key', 'counterCache' => 'views')))); }
/** * Initiate behavior for the model using settings. * * @param object $model Model using the behavior * @param array $settings Settings to override for model. * @access public */ function setup(&$model, $config = array()) { $this->settings[$model->alias] = array_merge($this->_defaults, (array) $config); $hasFieldCreatedBy = $model->hasField($this->settings[$model->alias]['created_by_field']); $hasFieldModifiedBy = $model->hasField($this->settings[$model->alias]['modified_by_field']); $this->settings[$model->alias]['has_created_by'] = $hasFieldCreatedBy; $this->settings[$model->alias]['has_modified_by'] = $hasFieldModifiedBy; //handles model binding to the User model //according to the auto_bind settings (default true) if ($this->settings[$model->alias]['auto_bind']) { if ($hasFieldCreatedBy) { $commonBelongsTo = array(Inflector::classify($this->settings[$model->alias]['created_by_field']) => array('counterCache' => strtolower($model->alias) . "_count", 'className' => $this->settings[$model->alias]['user_model'], 'foreignKey' => $this->settings[$model->alias]['created_by_field'])); $model->bindModel(array('belongsTo' => $commonBelongsTo), false); } if ($hasFieldModifiedBy) { $commonBelongsTo = array(Inflector::classify($this->settings[$model->alias]['modified_by_field']) => array('className' => $this->settings[$model->alias]['user_model'], 'foreignKey' => $this->settings[$model->alias]['modified_by_field'])); $model->bindModel(array('belongsTo' => $commonBelongsTo), false); } } }
/** * Initiate behaviour for the model using settings. * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ public function setup($Model, $settings = array()) { $default = $this->defaults; if (!isset($this->__settings[$Model->alias])) { $this->__settings[$Model->alias] = $default; } $this->__settings[$Model->alias] = array_merge($this->__settings[$Model->alias], (array) $settings); $Model->bindModel(array('hasOne' => array('GlobalContent' => array('className' => 'Contents.GlobalContent', 'foreignKey' => 'foreign_key', 'conditions' => array('or' => array('GlobalContent.model' => $Model->plugin . '.' . $Model->alias)), 'dependent' => true))), false); $Model->virtualFields['content_image_path_full'] = 'IF((GlobalContent.image = \'\' OR GlobalContent.image IS NULL), "/contents/img/no-image.png", CONCAT("/files/global_content/image/", GlobalContent.dir, "/", GlobalContent.image))'; foreach ($Model->GlobalContent->actsAs['Filemanager.Upload']['image']['thumbnailSizes'] as $name => $size) { $Model->virtualFields['content_image_path_' . $name] = 'IF((GlobalContent.image = "" OR GlobalContent.image IS NULL), "/contents/img/no-image.png", CONCAT("/files/global_content/image/", GlobalContent.dir, "/", "' . $name . '_", GlobalContent.image))'; } }
/** * * @param object $Model Model using the behavior * @param array $settings Settings to override for model. * @access public * @return void */ public function setup($Model, $config = null) { if ($Model->alias == 'Lock' || !$Model->Behaviors->enabled('Locks.Lockable')) { return; } $Model->bindModel(array('hasOne' => array('Lock' => array('className' => 'Locks.Lock', 'foreignKey' => 'foreign_key', 'conditions' => array('Lock.class' => $Model->plugin . '.' . $Model->alias), 'fields' => array('Lock.id', 'Lock.created', 'Lock.user_id'), 'dependent' => true))), false); if (rand(0, 50) == 0) { $this->__gc($Model); } if (is_array($config)) { $this->settings[$Model->alias] = array_merge($this->_defaults, $config); } else { $this->settings[$Model->alias] = $this->_defaults; } }
/** * Gets the user associated to the current access token. * * Will return array of all user fields by default * You can specify specific fields like so: * * $id = $this->OAuth->user('id'); * * @param type $field * @return mixed array of user fields if $field is blank, string value if $field is set and $fields is avaliable, false on failure */ public function user($field = null, $token = null) { if (!$this->_user) { $this->AccessToken->bindModel(array('belongsTo' => array('User' => array('className' => $this->authenticate['userModel'], 'foreignKey' => 'user_id')))); $token = empty($token) ? $this->getBearerToken() : $token; $data = $this->AccessToken->find('first', array('conditions' => array('oauth_token' => $token), 'recursive' => 1)); if (!$data) { return false; } $this->_user = $data['User']; } if (empty($field)) { return $this->_user; } elseif (isset($this->_user[$field])) { return $this->_user[$field]; } return false; }
/** * Initiate behavior for the model using specified settings. * Available settings: * * - view_counter: string :: the field in the table that has the count * - session_tracking false to disable, int for number of views to keep track of * views are tracked by displayField and will do funny things if displayField is not a string. * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ public function setup($Model, $settings = array()) { $Model->bindModel(array('hasMany' => array('ViewCount' => array('className' => 'ViewCounter.ViewCounterView', 'foreignKey' => 'foreign_key', 'conditions' => array('model' => $Model->plugin . '.' . $Model->alias), 'limit' => 0)))); $Model->ViewCount->bindModel(array('belongsTo' => array($Model->alias => array('className' => $Model->alias, 'foreignKey' => 'foreign_key', 'counterCache' => 'views')))); }
/** * Initiate behavior for the model using settings. * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ function setup(&$Model, $settings = array()) { $Model->bindModel(array('hasOne' => array('Favorite' => array('dependent' => true, 'foreignKey' => 'foreign_id', 'conditions' => array('user_id' => User::get('id'))))), false); }
/** * beforeFind * * @param object $model * @param array $query * @return array */ public function beforeFind(&$model, $query) { foreach ($this->settings[$model->alias] as $modelName => $settings) { $fk = $settings['foreignKey']; if (isset($query['foreignKey'])) { if (isset($query['foreignKey'][$modelName])) { $fk = $query['foreignKey'][$modelName]; } elseif ($query['foreignKey'] === false) { $fk = false; } } if ($fk && $model->alias === $modelName) { $id = $model->{$settings['callback']}(); if ($id) { $conditions = array($model->alias . '.id' => $id); $query['conditions'] = Set::merge($query['conditions'], $conditions); } } elseif ($fk && $model->hasField($fk)) { $fkValue = $model->{$settings['callback']}(); if ($fkValue) { $conditions = array($model->alias . '.' . $fk => $fkValue); $query['conditions'] = Set::merge($query['conditions'], $conditions); } } if ($fk) { $assocs['hasMany'] = $model->hasMany; $assocs['hasOne'] = $model->hasOne; $assocs['hasAndBelongsToMany'] = $model->hasAndBelongsToMany; foreach ($assocs as $type => $assoc) { if (!empty($assoc)) { foreach ($assoc as $key => $alias) { $_model = $alias; $assocParams = array(); if (is_array($alias)) { $_model = $key; $assocParams = $alias; } $fk = $this->settings[$_model][$modelName]['foreignKey']; if (isset($query['contain'][$_model]['foreignKey'])) { if (isset($query['contain'][$_model]['foreignKey'][$modelName])) { $fk = $query['contain'][$_model]['foreignKey'][$modelName]; } elseif ($query['contain'][$_model]['foreignKey'] === false) { $fk = false; } } if ($fk && $model->{$_model}->hasField($fk)) { $fkValue = $model->{$_model}->{$this->settings[$_model][$modelName]['callback']}(); if ($fkValue) { $conditions = array($_model . '.' . $fk => $fkValue); $assocParams = Set::merge($assocParams, compact('conditions')); $model->bindModel(array($type => array($_model => $assocParams))); } } } } } } } return $query; }
/** * Initiate behaviour for the model using settings. * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public * * @return void */ public function setup($Model, $settings = array()) { $this->settings[$Model->alias] = array_merge($this->_defaults, $settings); $Model->bindModel(array('belongsTo' => array($this->settings[$Model->alias]['categoryAlias'] => array('className' => $this->settings[$Model->alias]['categoryClass'], 'foreignKey' => $this->settings[$Model->alias]['foreignKey'], 'fields' => array($this->settings[$Model->alias]['categoryAlias'] . '.id', $this->settings[$Model->alias]['categoryAlias'] . '.title', $this->settings[$Model->alias]['categoryAlias'] . '.slug', $this->settings[$Model->alias]['categoryAlias'] . '.active', $this->settings[$Model->alias]['categoryAlias'] . '.group_id', $this->settings[$Model->alias]['categoryAlias'] . '.parent_id')))), $this->settings[$Model->alias]['resetBinding']); }
/** * Initiate behaviour for the model using settings. * * @param object $Model Model using the behaviour * @param array $settings Settings to override for model. * @access public */ public function setup(&$Model, $settings = array()) { $this->settings[$Model->alias] = array_merge($this->_defaults, $settings); $Model->bindModel(array('belongsTo' => array($this->settings[$Model->alias]['categoryAlias'] => array('className' => $this->settings[$Model->alias]['categoryClass'], 'foreignKey' => $this->settings[$Model->alias]['foreignKey'], 'counterCache' => $this->settings[$Model->alias]['counterCache']))), $this->settings[$Model->alias]['resetBinding']); }
/** * Before find callback, * bind Nodeattachment with hasMany relation * * @param object $model * @param array $query * @return array $query */ public function beforeFind(&$model, $query) { $model->bindModel(array('hasMany' => array('Nodeattachment' => array('order' => array('Nodeattachment.priority ASC', 'Nodeattachment.created ASC'))))); return $query; }