public static function humanizeModelName($modelName, $count = 1) { if (is_object($modelName)) { $modelName = get_class($modelName); } $modelName = preg_replace('/([A-Z])/', ' $1', self::lcfirst($modelName)); // Remove garbage $modelName = trim($modelName); if (is_string($count)) { // Convert to integer when using a digit string $count = (int) $count; } // Do nothing with singular if ($count === 1) { return ucfirst($modelName); } // Cache key name $key = 'plural_' . $modelName . $count; if (isset(self::$cache[$key])) { return ucfirst(self::$cache[$key]); } if (inflector::uncountable($modelName)) { return ucfirst(self::$cache[$key] = $modelName); } if (empty(self::$irregular)) { // Cache irregular words self::$irregular = Kohana::config('inflector.irregular'); } if (isset(self::$irregular[$modelName])) { $modelName = self::$irregular[$modelName]; } elseif (preg_match('/[sxz]$/', $modelName) or preg_match('/[^aeioudgkprt]h$/', $modelName)) { $modelName .= 'es'; } elseif (preg_match('/[^aeiou]y$/', $modelName)) { // Change "y" to "ies" $modelName = substr_replace($modelName, 'ies', -1); } else { $modelName .= 's'; } // Set the cache and return return ucfirst(self::$cache[$key] = $modelName); }
/** * Makes a singular word plural. * * @param string word to pluralize * @return string */ public static function plural($str, $count = NULL) { // Remove garbage $str = strtolower(trim($str)); if (is_string($count)) { // Convert to integer when using a digit string $count = (int) $count; } // Do nothing with singular if ($count === 1) { return $str; } // Cache key name $key = 'plural_' . $str . $count; if (isset(inflector::$cache[$key])) { return inflector::$cache[$key]; } if (inflector::uncountable($str)) { return inflector::$cache[$key] = $str; } if (empty(inflector::$irregular)) { // Cache irregular words inflector::$irregular = Kohana::config('inflector.irregular'); } if (isset(inflector::$irregular[$str])) { $str = inflector::$irregular[$str]; } elseif (preg_match('/[sxz]$/', $str) or preg_match('/[^aeioudgkprt]h$/', $str)) { $str .= 'es'; } elseif (preg_match('/[^aeiou]y$/', $str)) { // Change "y" to "ies" $str = substr_replace($str, 'ies', -1); } else { $str .= 's'; } // Set the cache and return return inflector::$cache[$key] = $str; }