/** * Return error message * * @param mixed $fields Form array or boolean * @param string $title Dialog title * @param boolean $session If true save message in a session var * @return void */ public function notice($fields, $title = '_form_not_valid', $session = false) { $dict = new X4Dict_model(X4Route_core::$folder, X4Route_core::$lang); $error = $dict->get_word($title, 'form'); $fields = X4Utils_helper::normalize_form($fields); foreach ($fields as $i) { if (isset($i['error'])) { foreach ($i['error'] as $ii) { // set the available label $label = is_null($i['label']) && isset($i['alabel']) || isset($i['alabel']) ? $i['alabel'] : $i['label']; // for related fields if (isset($i['related'][$i['name']])) { $src = array('XXXRELATEDXXX'); $rpl = array(); $related = $i['related'][$i['name']]; if (isset($fields[$related])) { // if is a related field $rpl[] = is_null($fields[$related]['label']) && isset($fields[$related]['alabel']) || isset($fields[$related]['alabel']) ? $fields[$related]['alabel'] : $fields[$related]['label']; } else { // if is a related value $rpl[] = $related; } if (isset($i['relatedvalue'][$i['name']])) { $src[] = 'XXXVALUEXXX'; $rpl[] = $i['relatedvalue'][$i['name']]; } $error .= '<br /><u>' . $label . '</u> ' . str_replace($src, $rpl, $dict->get_word($ii, 'form')); } else { $error .= '<br /><u>' . $label . '</u> ' . $dict->get_word($ii, 'form'); } } } } if ($session) { $_SESSION['msg'] = $error; } else { // set message $msg = AdmUtils_helper::set_msg(false, $error, $error); $this->response($msg); } }
/** * Check if a file or a directory is writable * * @static * @param string $path File or Directory path * @return null or object */ public static function chk_writable($path) { // if level lower than required redirect if (!is_writable($path)) { $dict = new X4Dict_model(X4Route_core::$folder, X4Route_core::$lang); $msg = $dict->get_word('_NOT_WRITEABLE', 'msg'); return self::set_msg(false, '', $msg . ' <b>' . $path . '</b>'); } else { return null; } }
/** * Get field's error array to use with JS validation * * @static * @param array $fields form array * @return array */ public static function get_error($fields) { $dict = new X4Dict_model(X4Route_core::$folder, X4Route_core::$lang); $fields = self::normalize_form($fields); $error = array(); foreach ($fields as $i) { if (isset($i['error'])) { foreach ($i['error'] as $ii) { // for related fields if (isset($i['related'][$i['name']])) { $related = $i['related'][$i['name']]; if (isset($fields[$related])) { // if is a related field $rpl = is_null($fields[$related]['label']) && isset($fields[$related]['alabel']) || isset($fields[$related]['alabel']) ? $fields[$related]['alabel'] : $fields[$related]['label']; } else { // if is a related value $rpl = $related; } $msg = str_replace('XXXRELATEDXXX', $rpl, $dict->get_word($ii, 'form')); } else { $msg = $dict->get_word($ii, 'form'); } $error[$i['name']] = addslashes(html_entity_decode($msg)); } } } return $error; }
/** * Get time between two datetime * * @static * @param string $start datetime * @param string $end datetime * @param string $out switcher to select output * @param boolean $absolute get an absolute value * @return string time */ public static function datetime_diff($start, $end = 0, $out = 'time', $absolute = true) { $sdate = new DateTime($start); $edate = $end != 0 ? new DateTime($end) : new DateTime(); $time = $sdate->diff($edate, $absolute); switch ($out) { case 'time': // hours - minutes - seconds $h = $time->format('%H'); $m = $time->format('%i'); $s = $time->format('%s'); return $h . ':' . $m . ':' . $s; break; case 'seconds': // only seconds $h = $time->h; $m = $time->i; $s = $time->s; return $h * 3600 + $m * 60 + $s; break; case 'days': // number of days if ($absolute) { return $time->days; } else { return $time->format('%R%a'); } break; case 'elapsed': // incremental $dict = new X4Dict_model(X4Route_core::$folder, X4Route_core::$lang); $d = $time->days; if ($d) { if ($d < 30) { // n days ago $msg = $dict->get_word('_TIME_DAYS_AGO', 'time'); return $d . ' ' . $msg; } else { // a formatted date return self::format($start, DATE_FORMAT); } } else { $th = $time->h; $h = $th % 24; if ($h) { // n hours ago $msg = $dict->get_word('_TIME_HOURS_AGO', 'time'); return $h . ' ' . $msg; } else { $tm = $time->i; $m = intval($tm % 60); if ($m) { // n minutes ago $msg = $dict->get_word('_TIME_MINUTES_AGO', 'time'); return $m . ' ' . $msg; } else { // n seconds ago $s = $time->s; $msg = $dict->get_word('_TIME_SECONDS_AGO', 'time'); return $s . ' ' . $msg; } } } break; } }