Completed
Push — master ( 9ec840...6f4c0e )
by Haralan
03:06
created

Kohana_Jam_Attribute::initialize()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 19
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 3

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 19
ccs 12
cts 12
cp 1
rs 9.4285
cc 3
eloc 7
nc 4
nop 2
crap 3
1
<?php defined('SYSPATH') OR die('No direct script access.');
2
/**
3
 * Core class that all fields must extend
4
 *
5
 * @package    Jam
6
 * @category   Attribute
7
 * @author     Ivan Kerin
8
 * @copyright  (c) 2012 Despark Ltd.
9
 * @license    http://www.opensource.org/licenses/isc-license.txt
10
 */
11
abstract class Kohana_Jam_Attribute {
12
13
	/**
14
	 * @var  string  the model's name
15
	 */
16
	public $model;
17
18
	/**
19
	 * @var  string  a pretty name for the field
20
	 */
21
	public $label;
22
23
	/**
24
	 * @var  string  the field's name in the form
25
	 */
26
	public $name;
27
28
	/**
29
	 * Callbacks to be executed after events
30
	 * @var Jam_Event
31
	 */
32
	protected $_events;
33
34
	/**
35
	 * Sets all options.
36
	 *
37
	 * @param  array  $options
38
	 */
39 145
	public function __construct($options = array())
40
	{
41 145
		if (is_array($options))
42 145
		{
43
			// Just throw them into the class as public variables
44 144
			foreach ($options as $name => $value)
45
			{
46 100
				$this->$name = $value;
47 144
			}
48 144
		}
49 1
		elseif ($options !== NULL)
50
		{
51
			throw new Kohana_Exception("Jam_Attribute options must be an array of options");
52
		}
53 145
	}
54
55
	/**
56
	 * This is called after construction so that fields can finish
57
	 * constructing themselves with a copy of the column it represents.
58
	 *
59
	 * @param   string  $model
0 ignored issues
show
Bug introduced by
There is no parameter named $model. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
60
	 * @param   string  $column
0 ignored issues
show
Bug introduced by
There is no parameter named $column. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
61
	 * @return  void
62
	 **/
63 146
	public function initialize(Jam_Meta $meta, $name)
64
	{
65
		// This will come in handy for setting complex relationships
66 146
		if ( ! $this->model)
67 146
		{
68 146
			$this->model = $meta->model();
69 146
		}
70
71
		// This is for naming form fields
72 146
		$this->name = $name;
73
74
		// Check for a name, because we can easily provide a default
75 146
		if ( ! $this->label)
76 146
		{
77 146
			$this->label = Inflector::humanize($name);
78 146
		}
79
80 146
		$meta->events()->discover_events($this, Jam_Event::ATTRIBUTE_PRIORITY);
81 146
	}
82
83
	abstract public function get(Jam_Validated $model, $value, $is_changed);
84
85
	abstract public function set(Jam_Validated $model, $value, $is_changed);
86
87
}
88