/**
* Returns the text statistics for an article.
*
* @param string $articleId
* @param string $template
*
* @return TextStatisticsModel
*/
public function getTextStatistics($articleId = '', $wpm = null, $readingTimeTemplate = null)
{
if (!isset($this->articlesData[$articleId])) {
return null;
}
$articleData =& $this->getArticleDataById($articleId);
$wordCount = Text::wordCount($articleData['text']);
$wpm = $wpm ?: craft()->config->get('wordsPerMinute', 'textStatistics');
// Calculate times in seconds
$textReadingTime = $wordCount / $wpm * 60;
$additionalTime = $articleData['additionalTime'];
$totalTime = ceil($textReadingTime + $additionalTime);
$readingTime = $this->getDateIntervalFromSeconds($totalTime);
$readingTimeMinutes = ceil($totalTime / 60);
// Render Twig template for the readingTimeString
$variables = ['iv' => $readingTime, 'min' => $readingTimeMinutes];
$template = $readingTimeTemplate ?: craft()->config->get('readingTimeTemplate', 'textStatistics');
$readingTimeString = craft()->templates->renderString($template, $variables);
// Populate Statistics model
$model = new TextStatisticsModel();
$model->textLength = Text::textLength($articleData['text']);
$model->letterCount = Text::letterCount($articleData['text']);
$model->syllableCount = Syllables::syllableCount($articleData['text']);
$model->wordCount = $wordCount;
$model->sentenceCount = Text::sentenceCount($articleData['text']);
$model->readingTime = $readingTime;
$model->readingTimeMinutes = $readingTimeMinutes;
$model->readingTimeString = $readingTimeString;
$textStatistics = $this->getTextStatisticsClass();
$model->gunningFog = $textStatistics->gunningFogScore($articleData['text']);
$model->fleschKincaid = $textStatistics->fleschKincaidReadingEase($articleData['text']);
if (!$model->validate()) {
throw new Exception('There was an error while generating the Text Statistics.');
}
return $model;
}