Обновляем и оптимизируем функцию Gram_Record на Vii Engine 3.0 под PHP 8+

И так дорогие друзья движок Vii Engine 3.0 на PHP 8+ прошел полный рефактор кода от простых выражений до сложных функций было все переписано дописано и оптимизировано под реальные нагрузки.

О дате выхода Reliza и цены сообщу позже (СРАЗУ СКАЖУ ДВИЖОК НЕ ДЛЯ ШКОЛОТЫ).

А сейчас держите обновление бесплатное от группы PHPSocial Group!

В functions.php есть довольно длинный и коварный код

function gram_record($num,$type){
	
	global $lang;
	
	$strlen_num = strlen($num);
	
	if($num <= 21){
		$numres = $num;
	} elseif($strlen_num == 2){
		$parsnum = substr($num,1,2);
		$numres = str_replace('0','10',$parsnum);
	} elseif($strlen_num == 3){
		$parsnum = substr($num,2,3);
		$numres = str_replace('0','10',$parsnum);
	} elseif($strlen_num == 4){
		$parsnum = substr($num,3,4);
		$numres = str_replace('0','10',$parsnum);
	} elseif($strlen_num == 5){
		$parsnum = substr($num,4,5);
		$numres = str_replace('0','10',$parsnum);
	}
	
	if($type == 'rec'){
		if($numres == 1){
			$gram_num_record = $lang['lang_981'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_982'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_983'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_981'];
		}
	}
	
	if($type == 'comments'){
		if($numres == 0){
			$gram_num_record = $lang['lang_984'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_985'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_986'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_984'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_985'];
		}
	}
	
	if($type == 'albums'){
		if($numres == 0){
			$gram_num_record = $lang['lang_987'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_988'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_989'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_987'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_988'];
		}
	}
	
	if($type == 'photos'){
		if($numres == 0){
			$gram_num_record = $lang['lang_990'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_991'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_992'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_990'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_991'];
		}
	}
	
	if($type == 'friends_demands'){
		if($numres == 0){
			$gram_num_record = $lang['lang_993'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_994'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_995'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_996'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_997'];
		}
	}
	
	if($type == 'user_age'){
		if($numres == 0){
			$gram_num_record = $lang['lang_998'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_999'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1000'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_998'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_999'];
		}
	}
	
	if($type == 'friends_common'){
		if($numres == 1){
			$gram_num_record = $lang['lang_1001'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1002'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1003'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1001'];
		}
	}
	
	if($type == 'friends'){
		if($numres == 0){
			$gram_num_record = $lang['lang_1004'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_1005'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1006'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1007'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1008'];
		}
	}
	
	if($type == 'friends_online'){
		if($numres == 0){
			$gram_num_record = $lang['lang_1009'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_1010'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1011'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1012'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1010'];
		}
	}
	
	if($type == 'fave'){
		if($numres == 0){
			$gram_num_record = $lang['lang_1013'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_1014'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1015'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1014'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1014'];
		}
	}
	
	if($type == 'prev'){
		if($numres == 0){
			$gram_num_record = $lang['lang_1016'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_1017'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1018'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1018'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1017'];
		}
	}
	
	if($type == 'subscr'){
		if($numres == 0){
			$gram_num_record = $lang['lang_1019'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_1020'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1021'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1022'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1020'];
		}
	}
	
	if($type == 'videos'){
		if($numres == 0){
			$gram_num_record = $lang['lang_1023'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_1024'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1025'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1026'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1024'];
		}
	}
	
	if($type == 'notes'){
		if($numres == 0){
			$gram_num_record = $lang['lang_1027'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_1028'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1029'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1030'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1028'];
		}
	}
	
	if($type == 'like'){
		if($numres == 0){
			$gram_num_record = $lang['lang_1031'];
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_1031'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1032'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1032'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1031'];
		}
	}
	
	if($type == 'updates'){
		if($numres == 0){
			$gram_num_record = '';
		} elseif($numres == 1){
			$gram_num_record = $lang['lang_1033'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1034'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1034'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1033'];
		}
	}
	
	if($type == 'msg'){
		if($numres == 1){
			$gram_num_record = $lang['lang_1035'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1036'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1037'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1035'];
		}
	}
	
	if($type == 'questions'){
		if($numres == 1){
			$gram_num_record = $lang['lang_1038'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1039'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1040'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1038'];
		}
	}

	if($type == 'gifts'){
		if($numres == 1){
			$gram_num_record = $lang['lang_1041'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1042'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1043'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1041'];
		}
	}

	if($type == 'groups_users'){
		if($numres == 1){
			$gram_num_record = $lang['lang_1044'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1045'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1046'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1044'];
		}
	}
	
	if($type == 'groups'){
		if($numres == 1){
			$gram_num_record = $lang['lang_1047'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1048'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1048'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1047'];
		}
	}
	
	if($type == 'subscribers'){
		if($numres == 1){
			$gram_num_record = $lang['lang_1049'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1050'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1051'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1049'];
		}
	}
	
	if($type == 'subscribers2'){
		if($numres == 1){
			$gram_num_record = $lang['lang_1052'].' <span id="traf2">'.$num.'</span> '.$lang['lang_1034'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1053'].' <span id="traf2">'.$num.'</span> '.$lang['lang_1033'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1053'].' <span id="traf2">'.$num.'</span> '.$lang['lang_1034'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1052'].' <span id="traf2">'.$num.'</span> '.$lang['lang_1034'];
		}
	}
	
	if($type == 'feedback'){
		if($numres == 1){
			$gram_num_record = $lang['lang_1054'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1055'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1056'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1057'];
		}
	}

	if($type == 'se_groups'){
		if($numres == 1){
			$gram_num_record = $lang['lang_1058'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1059'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1060'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1058'];
		}
	}

	if($type == 'audio'){
		if($numres == 1){
			$gram_num_record = $lang['lang_1061'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1062'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1063'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1061'];
		}
	}

	if($type == 'video_views'){
		if($numres == 1){
			$gram_num_record = $lang['lang_1064'];
		} elseif($numres < 5){
			$gram_num_record = $lang['lang_1065'];
		} elseif($numres < 21){
			$gram_num_record = $lang['lang_1066'];
		} elseif($numres == 21){
			$gram_num_record = $lang['lang_1064'];
		}
	}
	
	return $gram_num_record;
}

Конечно в свое время он был не плохой, я же его переписал и оптимизировал

function gram_record($num, $type){
    global $lang;

    $num = abs((int)$num); // на всякий случай
    $n = $num % 100;
    $n1 = $num % 10;

    // Выбираем правильную форму
    if ($n > 10 && $n < 20) {
        $idx = 2;
    } elseif ($n1 == 1) {
        $idx = 0;
    } elseif ($n1 >= 2 && $n1 <= 4) {
        $idx = 1;
    } else {
        $idx = 2;
    }

    // Сопоставляем тип с языковыми формами
    $map = [
        'rec' => [$lang['lang_981'], $lang['lang_982'], $lang['lang_983']],
        'comments' => [$lang['lang_985'], $lang['lang_986'], $lang['lang_984']],
        'albums' => [$lang['lang_988'], $lang['lang_989'], $lang['lang_987']],
        'photos' => [$lang['lang_991'], $lang['lang_992'], $lang['lang_990']],
        'friends_demands' => [$lang['lang_994'], $lang['lang_995'], $lang['lang_996']],
        'user_age' => [$lang['lang_999'], $lang['lang_1000'], $lang['lang_998']],
        'friends_common' => [$lang['lang_1001'], $lang['lang_1002'], $lang['lang_1003']],
        'friends' => [$lang['lang_1005'], $lang['lang_1006'], $lang['lang_1007']],
        'friends_online' => [$lang['lang_1010'], $lang['lang_1011'], $lang['lang_1012']],
        'fave' => [$lang['lang_1014'], $lang['lang_1015'], $lang['lang_1014']],
        'prev' => [$lang['lang_1017'], $lang['lang_1018'], $lang['lang_1018']],
        'subscr' => [$lang['lang_1020'], $lang['lang_1021'], $lang['lang_1022']],
        'videos' => [$lang['lang_1024'], $lang['lang_1025'], $lang['lang_1026']],
        'notes' => [$lang['lang_1028'], $lang['lang_1029'], $lang['lang_1030']],
        'like' => [$lang['lang_1031'], $lang['lang_1032'], $lang['lang_1032']],
        'updates' => [$lang['lang_1033'], $lang['lang_1034'], $lang['lang_1034']],
        'msg' => [$lang['lang_1035'], $lang['lang_1036'], $lang['lang_1037']],
        'questions' => [$lang['lang_1038'], $lang['lang_1039'], $lang['lang_1040']],
        'gifts' => [$lang['lang_1041'], $lang['lang_1042'], $lang['lang_1043']],
        'groups_users' => [$lang['lang_1044'], $lang['lang_1045'], $lang['lang_1046']],
        'groups' => [$lang['lang_1047'], $lang['lang_1048'], $lang['lang_1048']],
        'subscribers' => [$lang['lang_1049'], $lang['lang_1050'], $lang['lang_1051']],
        'subscribers2' => [$lang['lang_1052'], $lang['lang_1053'], $lang['lang_1053']],
        'feedback' => [$lang['lang_1054'], $lang['lang_1055'], $lang['lang_1056']],
        'se_groups' => [$lang['lang_1058'], $lang['lang_1059'], $lang['lang_1060']],
        'audio' => [$lang['lang_1061'], $lang['lang_1062'], $lang['lang_1063']],
        'video_views' => [$lang['lang_1064'], $lang['lang_1065'], $lang['lang_1066']],
    ];

    if (!isset($map[$type])) return '';

    return $map[$type][$idx];
}

Обсуждение новости
Guests, оставишь комментарий?
Имя:*
E-Mail:


Подписаться на комментарии
Статистика
1 посетитель на сайте. Из них:
Гости1
Список пользователей
Test Был(a) в сети 5 часов назад
Комментарии
Информация
Актуальная версия Vii Engine 3.0
Реклама