public function createSite(Request $request) { $this->validate($request, ['siteName' => 'required|unique:sites,title|max:100', 'slogan' => 'max:155', 'description' => 'required|max:255', 'keywords' => 'max:255', 'copyright' => 'max:100'], ['siteName.required' => 'Your site must have a name!', 'siteName.unique' => 'You already own a site by that name.', 'description.required' => 'Tell us a little about the site.']); $socialLinks = ['facebook' => insert_if_exists($request->useFacebook, $request->linkFacebook), 'twitter' => insert_if_exists($request->useTwitter, $request->linkTwitter), 'instagram' => insert_if_exists($request->useInstagram, $request->linkInstagram), 'pinterest' => insert_if_exists($request->usePinterest, $request->linkPinterest), 'youtube' => insert_if_exists($request->useYoutube, $request->linkYoutube)]; $data = ['title' => $request->siteName, 'slogan' => $request->slogan, 'description' => $request->description, 'copyright' => $request->copyright, 'favicons' => SEO::generateFavicons(), 'is_public_site' => is_null($request->hideFromSearchEngines), 'social_links' => json_encode($socialLinks), 'keywords' => $request->keywords]; Site::create($data); return redirect()->route('create.admin'); }
public function generateFavicons($dir = '') { $colors = $this->defaults['colors']; return insert_if_exists(['60x60', '72x72', '114x114', '120x120', '152x152', '180x180'], function ($insert) use($dir) { return '<link rel="apple-touch-icon" sizes="' . $insert . '" href="' . asset($dir . '/apple-touch-icon-' . $insert . '.png') . '">'; }, function ($insert) use($dir) { return File::exists(public_path($dir . '/apple-touch-icon-' . $insert . '.png')); }) . insert_if_exists(['16x16', '32x32', '96x96', '194x194'], function ($insert) use($dir) { return '<link rel="icon" type="image/png" href="' . asset($dir . '/favicon-' . $insert . '.png') . '" sizes="' . $insert . '">'; }, function ($insert) use($dir) { return File::exists(public_path($dir . '/favicon-' . $insert . '.png')); }) . insert_if_exists(['192x192'], function ($insert) use($dir) { return '<link rel="icon" type="image/png" href="' . asset($dir . '/android-chrome-' . $insert . '.png') . '" sizes="' . $insert . '">'; }, function ($insert) use($dir) { return File::exists(public_path($dir . '/android-chrome-' . $insert . '.png')); }) . insert_if_exists($dir . '/manifest.json', function ($insert) { return '<link rel="manifest" href="' . asset($insert) . '">'; }, function ($insert) { return File::exists(public_path($insert)); }) . insert_if_exists($dir . '/safari-pinned-tab.svg', function ($insert) use($colors) { return '<link rel="mask-icon" href="' . asset($insert) . '" color="' . insert_if_exists($colors['safari_pinned']) . '">'; }, function ($insert) { return File::exists(public_path($insert)); }) . insert_if_exists($dir . '/favicon.ico', function ($insert) { return '<link rel="shortcut icon" href="' . asset($insert) . '">'; }, function ($insert) { return File::exists(public_path($insert)); }) . insert_if_exists($dir . '/mstile-144x144.png', function ($insert) { return '<meta name="msapplication-TileImage" content="' . asset($insert) . '">'; }, function ($insert) { return File::exists(public_path($insert)); }) . insert_if_exists($dir . '/browserconfig.xml', function ($insert) { return '<meta name="msapplication-config" content="' . asset($insert) . '">'; }, function ($insert) { return File::exists(public_path($insert)); }) . insert_if_exists($colors['ms_tile'], function ($insert) { return '<meta name="msapplication-TileColor" content="' . $insert . '">'; }) . insert_if_exists($colors['theme'], function ($insert) { return '<meta name="theme-color" content="' . $insert . '">'; }); }
function insert_if_exists($insert, $template = null, $match = null) { if (!is_null($insert)) { // if item exists if (is_array($insert)) { // if more than one item is given $ret = ''; // total of all items to return foreach ($insert as $in) { // for each item $ret .= insert_if_exists($in, $template, $match); // get the value if it exists } return $ret; // return total } if (!is_null($match) && !$match($insert)) { // if a match function is set and item doesn't match return ''; // return nothing } if (!is_null($template)) { // if a template is set if (is_callable($template)) { // if the template is a function return $template($insert); // insert value into the function } return $template; // use the template as a replacement } return $insert; // else, return the value } return ''; // if item doesn't exist, return nothing }