Cron písaný v php do nette

Tomas8698
Člen | 109
+
0
-

Zdravím mam cron, ktory bol písaný v čistom php, podla návodu co som našiel na Google tak som si pripravi presenter aby fungoval. Chcel by som sa opytat ako upraviť kod cronu aby fungoval v nette.
Cron ktorý chcem použiť ma zo stránky vyberať aktuálne recenzie a vkladať na moju stránku. Chcem sa spýtať ako kod treba upraviť aby bol funkčný.
Za pomoc dakujem

Stranka na githube: https://github.com/…ron/cron.php

Moj cron zatial vyzera takto:

<?php
<?php

namespace App\Cron;
use DOMDocument;
use XMLReader;

include "CronBase.php";


class NavolneNoze extends CronBase
{
$file = fopen($_SERVER['DOCUMENT_ROOT'] . "/temp/navolnenoze-rss.html", "w");

$rss = simplexml_load_file('https://navolnenoze.cz/prezentace/josef-jebavy/doporuceni/rss/');

//$str= '<h2>'. $rss->channel->title . '</h2>';
$str = '<div id="doporuceni1" class="text" style="display: none">';

$str .= '<p>Výpis doporučení z portálu <a href="https://navolnenoze.cz/prezentace/josef-jebavy/doporuceni/"
                                              target="_blank">Na volné noze</a>';

foreach ($rss->channel->item as $item)
{

if (empty($item->link))
{
$link = "https://navolnenoze.cz/prezentace/josef-jebavy/doporuceni/";
}
else
{
$link = $item->link;
}

$str .= '<div class="about">';
$str .= '<h3><a href="' . $link . '">' . $item->title . "</a></h3>";
//  $str.= "<p>" . $item->pubDate . "</p>";
$str .= "<p>" . $item->description . "</p>";
$str .= '</div>';
}

$str .= '</div>';
echo $str;

fwrite($file, $str);


//-----------
fclose($file);
}

?>
neznamy_uzivatel
Člen | 115
+
0
-

Používám cca tohle:

namespace App\Cron;

use Nette\Database\Context;

$container = require __DIR__ . '/../bootstrap.php';

/** @var Context $database  */
$database = $container->getByType('\Nette\Database\Context');



$file = fopen($_SERVER['DOCUMENT_ROOT'] . "/temp/navolnenoze-rss.html", "w");

$rss = simplexml_load_file('https://navolnenoze.cz/prezentace/josef-jebavy/doporuceni/rss/');

...

Editoval neznamy_uzivatel (11. 3. 2021 8:02)

neznamy_uzivatel
Člen | 115
+
+1
-

Dále doporučuju tento článek https://blog.nette.org/…tte-aplikaci (a nevynechat komentář pod ním…)

Tomas8698
Člen | 109
+
0
-

Ďakujem prečítam si a chcem sa spýtať ešte, ja v tomto databazu nepoužívam môžem ten riadok:

<?php
/** @var Context $database  */
$database = $container->getByType('\Nette\Database\Context');
?>

Zmazať to alebo to robi nieco ine? Tam nižšie ako mam tak tam si pýtam Mena a komentáre od užívateľov, ktorý komentovali na stránke navolnenoze.cz
A ešte som sa chcel spýtať ci tu časť nechať alebo ju upraviť aby bola správna v nette.

<?php

//$str= '<h2>'. $rss->channel->title . '</h2>';
$str = '<div id="doporuceni1" class="text" style="display: none">';

$str .= '<p>Výpis doporučení z portálu <a href="https://navolnenoze.cz/prezentace/josef-jebavy/doporuceni/"
                                              target="_blank">Na volné noze</a>';

foreach ($rss->channel->item as $item)
{

if (empty($item->link))
{
$link = "https://navolnenoze.cz/prezentace/josef-jebavy/doporuceni/";
}
else
{
$link = $item->link;
}

$str .= '<div class="about">';
$str .= '<h3><a href="' . $link . '">' . $item->title . "</a></h3>";
//  $str.= "<p>" . $item->pubDate . "</p>";
$str .= "<p>" . $item->description . "</p>";
$str .= '</div>';
}

$str .= '</div>';
echo $str;

fwrite($file, $str);


//-----------
fclose($file);
}

?>
neznamy_uzivatel
Člen | 115
+
0
-

Databáze je jen ukázka, jak si můžeš z di kontejneru vytáhnout služby, které potřebuješ.
Jinak ten zbytek je takový kus legacy oldschool kódu, tam nevím co k tomu říct jiného, než: začni základy OOP a pokračuj přečtením dokumentace k nette – umí to docela naučit i obecné principy..

Tomas8698
Člen | 109
+
0
-

Okej super, ďakujem pekne za nasmerovanie a pomoc @neznamy_uzivatel 🙂

dakur
Člen | 493
+
0
-

@neznamy_uzivatel To je přece hloupost, kód nepíšeš v OOP proto, že je legacy a old-school, ale proto, že to má nějaký význam. Co bys na tom chtěl přepisovat do OOP?

@Tomas8698

Chcem sa spýtať ako kod treba upraviť aby bol funkčný.

Ten kód nefunguje? Pokud ne, co píše/dělá/nedělá? První krok je ho opravit, protože i když ho „přepíšeš do Nette“, tak ti pořád fungovat nebude.

Chcel by som sa opytat ako upraviť kod cronu aby fungoval v nette

CRON je program v operačním systému, který permanentně běží a má jediný a jednoduchý úkol – jednou za definovanou dobu (to je ten těžko čitelný zápis např. */4 2 * * *) spustí nějaký skript, to je celé. Skript může být psaný v PHP, ale taky v čemkoliv jiném, může to být úplně cokoliv v systému.

Takže jestli v CRONu nastavíš spouštění php /cesta/k/nejakemu/souboru/cron.php nebo php /cesta/k/nette/magic.php, to je jedno – pokaždé ti to spustí nějaký skript.

Na tom tvém skriptu samo o sobě nic špatného není – hodně mixuje PHP a HTML, což není úplně ono, ale v zásadě to nevadí. Pokud tedy nemáš potřebu ničeho jiného, nemá smysl to takzvaně přepisovat do Nette.

„Přepis do Nette“ spočívá typicky v úplně jiné potřebě – moct z příkazové řádky spouštět různé funkcionality. Potom se hodí mít jeden vstupní soubor např. bin/console.php (místo dvaceti souborů) a tomu předávat parametry, přičemž první z nich je takzvaný command. A jeden takový command může být třeba zpracujHodnoceniZVolneNohy, který provede to, co máš nahoře. Aby se člověk nemusel pořád dokola drbat s nastavováním té infrastruktury a mohl rovnou psát commandy, vznikl balíček contributte/console.

Znovu ale říkám, že pokud nemáš potřebu mít více funkcionalit z příkazové řádky, není vůbec třeba to dělat. Klidně si to nech ve svém souboru a třeba jen ten mix PHP+HTML změň tak, že HTML převedeš do Latte a to zparsuješ. Tím si tam trochu uklidíš. 👍

Tomas8698
Člen | 109
+
0
-

To by malo byt funkčne ako kód funguje, ja som sa chcel spýtať ci sa to neupravuje keď sa to prerába do nette alebo že ci to môže byt tak ako mam. A ďakujem @dakur a upravím si to html do latte. Tak ono by to malo po kliknutí na odkaz: Zobraziť doporučení z portálu Navolnenoze.cz , spraviť to že sa zobrazia aktuálne komentáre čo sú na stránke navolnenoze.cz. Tu sú obrázky : https://github.com/…ette%20forum

stránka ktorá bola v php vyzerala predtým takto:

<?php
 <h3>Na volné noze</h3>

    <a id="doporuceni1BT" onclick="showDoporuceni(1)">Zobrazit doporučení z portálu Navolnenoze.cz</a>

    <?php
    // doporuceni insluduji, protoye je chci zobrazovať zde a nechci, aby lidi odchazeli na jiny web
    require $_SERVER['DOCUMENT_ROOT']."/temp/navolnenoze-rss.html";
    ?>
?>

Len neviem si rady stým require ako to zapísať do latte, aby to bolo funkčne (aby tam neboli tie <?php tagy). Aby som to mohol použiť v mojom webe. Lebo keď dám require do zátvoriek: {require …} tak mi to hádže chybu

Editoval Tomas8698 (11. 3. 2021 21:38)

dakur
Člen | 493
+
0
-

@Tomas8698 {include} nefunguje? viz dokumentace latte

Editoval dakur (12. 3. 2021 9:59)

Tomas8698
Člen | 109
+
0
-

@dakur Ano {include} funguje, dakujem pekne :)