Squiz Matrix  4.12.2
 All Data Structures Namespaces Functions Variables Pages
metadata_field_date.inc
1 <?php
17 require_once SQ_FUDGE_PATH.'/datetime_field/datetime_field.inc';
18 require_once dirname(__FILE__).'/../../metadata_field/metadata_field.inc';
19 
32 {
33 
34 
41  function __construct($assetid=0)
42  {
43  parent::__construct($assetid);
44 
45  }//end constructor
46 
47 
58  public function getMetadataValue(Asset $asset, $value_str)
59  {
60  $mm = $GLOBALS['SQ_SYSTEM']->getMetadataManager();
61 
62  if (is_null($value_str)) {
63  $value = $this->attr('default');
64  $value_components = $this->attr('value_components');
65  } else {
66  $value='';
67  $value_components = $this->attr('value_components');
68  Metadata_Field::decodeValueString($value_str, $value, $value_components);
69  }
70 
71  if (substr($value, 0, 1) == '%') {
72 
73  // strip off the last % sign from the end of $key string
74  $key = substr($value, 1, -1);
75 
76  // prepare date format for merging - we will replace all spaces with underscores
77  $format = str_replace(' ', '~', $this->attr('format'));
78 
79  // merge the values with '_', add closing % sign and proceed...
80  $keyword = $key.'_'.$format;
81  $offset = $this->attr('offset');
82  if (!empty($offset)) {
83  $offset = str_replace(' ', '', $offset);
84  $keyword .= '_'.$offset;
85  }
86 
87  $metadata_values = $mm->generateKeywordReplacements($asset, Array($keyword), FALSE);
88  $value = $metadata_values[$keyword];
89 
90  } else {
91  $datetime_field = $this->_getDateTimeField('', $value);
92  $value = $datetime_field->format();
93  }
94 
95  return Metadata_Field::encodeValueString($value, $value_components);
96 
97  }//end getMetadataValue()
98 
99 
109  public function _getDateTimeField($prefix, $value=NULL)
110  {
111  // parameters
112  $parameters = $this->attr('setup_params');
113  if (empty($parameters)) {
114  $date = getdate();
115  $parameters = Array(
116  'min' => '2003-01-01 00:00:00',
117  'max' => ($date['year'] + 1).'-12-31 23:59:59',
118  'allow_circa' => '0',
119  'show' => Array('y', 'm', 'd', 'h', 'i', 's'),
120  'null' => Array(),
121  'style' => Array(
122  'y' => 's',
123  'm' => 's',
124  'd' => 's',
125  'h' => 's',
126  'i' => 's',
127  's' => 's',
128  ),
129  );
130  }
131  $parameters['print_format'] = $this->attr('format');
132 
133  // only if we are printing the default value
134  if (is_null($value)) {
135  if ((boolean)$this->attr('is_contextable') === TRUE) {
136  $value = $this->attr('default');
137  } else {
138  $value = $GLOBALS['SQ_SYSTEM']->am->getAttributeValuesByName('default', 'metadata_field', Array($this->id), 0);
139  $value = $value[$this->id];
140  }
141 
142  if (!empty($value) && $value{0} == '%') {
143  $value = ts_iso8601(time());
144  } else {
145  $value = $parameters['min'];
146  }
147  }
148 
149  $field = new DateTime_Field($prefix.'_datetime', $value, $parameters);
150 
151  return $field;
152 
153  }//end _getDateTimeField()
154 
155 
156 }//end class
157 ?>