Squiz Matrix  4.12.2
 All Data Structures Namespaces Functions Variables Pages
date_list.inc
1 <?php
18 require_once SQ_ATTRIBUTES_PATH.'/datetime/datetime.inc';
19 
34 class Asset_Attribute_Date_List extends Asset_Attribute_Datetime
35 {
36 
37 
45  function Asset_Attribute_Date_List($attributeid=0, $value=null)
46  {
47  $this->Asset_Attribute_Datetime($attributeid, $value);
48  if (is_null($value)) {
49  $this->value = '---------- --:--:--';
50  }
51 
52  }//end constructor
53 
54 
64  function paint($prefix, $read_only=false)
65  {
66  $prefix = str_replace(':','_',$prefix); // handle shadow assets
67  if (empty($this->value)) {
68  $value = Array('---------- --:--:--');
69  } else {
70  $value = explode("\r\n", $this->value);
71  }
72  $dta = new Asset_Attribute_Datetime();
73  $dta->_params = $this->_params;
74  $dta->_edit_params = $this->_edit_params;
75  $dta->_edit_params['null'] = Array('y', 'm', 'd', 'h', 'i', 's');
76  $dta->value = '---------- --:--:--';
77  ob_start();
78  $dta->paint($prefix, $read_only);
79  $dta_template = ob_get_contents();
80  ob_end_clean();
81  $dta_template = preg_replace('/value\[([^"]+)\]/', '_value[\\1][]', $dta_template);
82  if (!$read_only) {
83  ?>
84  <div id="date-list-<?php echo $prefix; ?>">
85  <?php
86  foreach ($value as $v) {
87  echo '<span>';
88  $dta->value = $v;
89  ob_start();
90  $dta->paint($prefix, $read_only);
91  $dta_output = ob_get_contents();
92  ob_end_clean();
93  echo preg_replace('/value\[([^"]+)\]/', '_value[\\1][]', $dta_output);
94  echo '</span>';
95  ?><button type="button" tabindex="99999" class="delete-button">&nbsp;</button><br />
96  <?php
97  }
98  for ($i =0; $i < 2; $i++) {
99  echo '<span>'.$dta_template.'</span>';
100  ?><button type="button" tabindex="99999" class="delete-button">&nbsp;</button><br />
101  <?php
102  }
103  ?>
104  </div>
105  <script type="text/javascript" src="<?php echo sq_web_path('lib'); ?>/js/edit.js"></script>
106  <script type="text/javascript">
107  // attach the event handlers
108  attachDateListEventHandlers(document.getElementById('date-list-<?php echo $prefix; ?>'));
109  </script>
110  <?php
111  } else {
112  echo '<ul>';
113  foreach ($value as $v) {
114  echo '<li>'.date($this->_edit_params['print_format'], iso8601_ts($v)).'</li>';
115  }
116  echo '</ul>';
117  }
118 
119  }//end paint()
120 
121 
130  function process($prefix)
131  {
132  $prefix = str_replace(':','_',$prefix); // handle shadow assets
133  if (!isset($_POST[$prefix.'show'])) return;
134  $post = $_REQUEST[$prefix.'_value'];
135  $keys = array_keys(reset($post));
136  foreach ($keys as $key) {
137  $elt = sprintf('%04d-%02d-%02d %02d:%02d:%02d', $post['y'][$key], $post['m'][$key], $post['d'][$key], $post['h'][$key], $post['i'][$key], $post['s'][$key]);
138  if ($elt != '0000-00-00 00:00:00') {
139  $value[] = $elt;
140  }
141  }
142  $this->processed = $this->setValue(implode("\r\n", $value));
143 
144  }//end process()
145 
146 
155  function validateValue(&$value)
156  {
157  foreach (explode("\r\n", $value) as $v) {
158  if (!parent::validateValue($v)) return false;
159  }
160  return true;
161 
162  }//end validateValue()
163 
164 
165 }//end class
166 
167 ?>