foreach($request->all() as $name => $value) {
if(strpos($name, 'setting-') !== 0) continue;
$key = str_replace('setting-', '', trim($name));
+ if($key == 'app-color') {
+ Setting::put('app-color-rgba', $this->hex2rgba($value, 0.15));
+ }
Setting::put($key, $value);
}
return redirect('/settings');
}
+ /**
+ * Adapted from http://mekshq.com/how-to-convert-hexadecimal-color-code-to-rgb-or-rgba-using-php/
+ * Converts a hex color code in to an RGBA string.
+ *
+ * @param string $color
+ * @param float|boolean $opacity
+ * @return boolean|string
+ */
+ protected function hex2rgba($color, $opacity = false)
+ {
+ // Return false if no color provided
+ if(empty($color)) {
+ return false;
+ }
+ // Trim any whitespace
+ $color = trim($color);
+
+ // Sanitize $color if "#" is provided
+ if($color[0] == '#' ) {
+ $color = substr($color, 1);
+ }
+
+ // Check if color has 6 or 3 characters and get values
+ if(strlen($color) == 6) {
+ $hex = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] );
+ } elseif( strlen( $color ) == 3 ) {
+ $hex = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] );
+ } else {
+ return false;
+ }
+
+ // Convert hexadec to rgb
+ $rgb = array_map('hexdec', $hex);
+
+ // Check if opacity is set(rgba or rgb)
+ if($opacity) {
+ if(abs($opacity) > 1)
+ $opacity = 1.0;
+ $output = 'rgba('.implode(",",$rgb).','.$opacity.')';
+ } else {
+ $output = 'rgb('.implode(",",$rgb).')';
+ }
+
+ // Return rgb(a) color string
+ return $output;
+ }
+
}