user->isLoggedIn()) {
$this->redirect('Sign:in');
}
}
public function createComponentAddForm()
{
$form = new UI\Form;
$form->addText('sentence', 'Veta:')
->setAttribute('placeholder','Sem napíšte vetu.');
$form->addText('url', 'sme.sk URL:')
->setAttribute('placeholder','http://www.sme.sk/c/7054947/vydajte-ujgurov-su-to-teroristi-odkazuje-slovensku-cina.html');
$form->addTextArea('paragraph', 'Text:')
->setAttribute('placeholder', 'Sem napíšte vety, ktoré chcete importovať do systému.');
$form->addSubmit('send', 'Parsovať/Vložiť');
// call method signInFormSucceeded() on success
$form->onSuccess[] = $this->addFormSucceeded;
return $form;
}
public function addFormSucceeded($form)
{
$values = $form->getValues();
if ($values->sentence)
{
if ($this->insertSentence($values->sentence))
$this->flashMessage("Veta '$values->sentence' bola uložená.",'alert alert-success');
}
if ($values->url)
{
$this->parseArticle($values->url);
$this->flashMessage("Článok '$values->url' bol spracovaný.",'alert alert-success');
}
if ($values->paragraph)
{
$success = TRUE;
foreach (explode('.',$values->paragraph) as $sentence)
{
if (!$this->insertSentence($sentence))
{
$success = FALSE;
}
}
if ($success)
{
$this->flashMessage('Vety z paragrafu boli spracované.','alert alert-success');
}
}
$this->redirect('this');
}
private function insertSentence($sentence)
{
$sentence = trim($sentence,' "\'„“.');
$word_count = count(explode(' ',$sentence));
$exists = $this->db->table('sentences')->where(['sentence' => $sentence])->count('*');
if ($word_count > 5 && !$exists)
{
$result = $this->db->table('sentences')->insert(['sentence' => $sentence,'word_count' => $word_count]);
if ($result)
{
$this->flashMessage("Veta '$sentence' nebola spracovaná", 'alert alert-danger');
return FALSE;
}
}
else
{
$this->flashMessage("Veta '$sentence' obsahuje nedostatočný počet slov alebo v systéme už existuje.",'alert alert-danger');
return FALSE;
}
return TRUE;
}
private function parseArticle($url)
{
$dom = HtmlDomParser::file_get_html( $url );
$text = $dom->find('#article-box #itext_content',0)->plaintext;
$sentences = preg_split('/[.?!]/',$text);
foreach ($sentences as $sentence)
{
$this->insertSentence($sentence);
}
}
}