예제 #1
0
파일: Seo.php 프로젝트: agelxnash/owl-admin
 public function options()
 {
     $options = ['robots' => ['index,follow', 'noindex,follow', 'index,nofollow', 'noindex,nofollow'], 'state' => ['dynamic', 'static'], 'priority' => for_all(range(0.1, 0.9, 0.1), function ($item) {
         return str_replace(".", ",", $item);
     }), 'frequency' => ['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never']];
     $out = new Collection();
     foreach ($options as $attr => $values) {
         $out->offsetSet($attr, array_copy_key($values));
     }
     return $out;
 }
예제 #2
0
 /**
  * Применение callback функции к каждому элементу массива, который является строкой или просто строке
  * Всем переменным не являющимися массивом или строкой, будет присвоено значение null
  *
  * @param  mixed $data Строка или массив с данными
  * @param  Closure $callback callback функция
  * @return mixed
  */
 function for_all($data, Closure $callback)
 {
     switch (true) {
         case is_array($data):
             foreach ($data as &$val) {
                 $val = for_all($val, $callback);
             }
             break;
         case is_scalar($data):
             $data = $callback($data);
             break;
         default:
             $data = null;
     }
     return $data;
 }
예제 #3
0
 /**
  * Нормализация имен
  * Иванов-петров => Иванов-Петров
  *
  * @param string $name обрабатываемая строка
  * @return string
  */
 function normalize_name($name)
 {
     return for_all($name, function ($name) {
         $name = ucwords(strtolower($name));
         foreach (array('-', "'") as $delimiter) {
             if (strpos($name, $delimiter) !== false) {
                 $name = implode($delimiter, array_map('ucfirst', explode($delimiter, $name)));
             }
         }
         return $name;
     });
 }