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

Kohana_Jam_Attribute   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 95.45%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
lcom 1
cbo 3
dl 0
loc 77
c 1
b 0
f 0
ccs 21
cts 22
cp 0.9545
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A initialize() 0 19 3
get() 0 1 ?
set() 0 1 ?
A __construct() 0 15 4
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