From a91c916248f967da2d4218b575e665242b7c975b Mon Sep 17 00:00:00 2001 From: vincent-peugnet Date: Thu, 25 Oct 2018 20:25:05 +0200 Subject: phoenixreborn\'NWY --- w/class/aff.php | 1018 ++++++++++++++++++++++++++++++++++++ w/class/app.php | 657 ++++++++++++++++++++++++ w/class/application.php | 36 ++ w/class/art.php | 506 ++++++++++++++++++ w/class/art2.php | 677 ++++++++++++++++++++++++ w/class/class.w.aff.php | 1161 ------------------------------------------ w/class/class.w.app.php | 770 ---------------------------- w/class/class.w.art.php | 501 ------------------ w/class/class.w.art2.php | 585 --------------------- w/class/class.w.config.php | 188 ------- w/class/class.w.media.php | 173 ------- w/class/class.w.opt.php | 272 ---------- w/class/class.w.quickcss.php | 291 ----------- w/class/class.w.record.php | 116 ----- w/class/config.php | 188 +++++++ w/class/controller.php | 57 +++ w/class/controlleradmin.php | 23 + w/class/controllerart.php | 90 ++++ w/class/controllerdb.php | 42 ++ w/class/controllerhome.php | 57 +++ w/class/controllermedia.php | 38 ++ w/class/media.php | 173 +++++++ w/class/model.php | 17 + w/class/modelart.php | 283 ++++++++++ w/class/modelartlist.php | 159 ++++++ w/class/modelconfig.php | 39 ++ w/class/modeldb.php | 133 +++++ w/class/modelhome.php | 59 +++ w/class/modelmassedit.php | 0 w/class/modelmedia.php | 98 ++++ w/class/modeluser.php | 63 +++ w/class/opt.php | 272 ++++++++++ w/class/quickcss.php | 291 +++++++++++ w/class/record.php | 116 +++++ w/class/route.php | 84 +++ w/class/router.php | 63 +++ w/class/user.php | 37 ++ w/class/w.article.php | 32 ++ w/class/w.home.php | 85 ++++ w/class/w.menu.php | 56 ++ w/controller/w.article.php | 33 -- w/controller/w.home.php | 85 ---- w/controller/w.menu.php | 56 -- w/fn/w.fn.php | 4 - w/view/templates/base.php | 10 + w/view/templates/media.php | 4 + w/view/templates/nav.php | 42 ++ w/view/templates/read.php | 20 + w/view/templates/reader.php | 38 ++ w/w.index.php | 366 +++++++++++++ w/w.router.php | 359 ------------- 51 files changed, 5929 insertions(+), 4594 deletions(-) create mode 100644 w/class/aff.php create mode 100644 w/class/app.php create mode 100644 w/class/application.php create mode 100644 w/class/art.php create mode 100644 w/class/art2.php delete mode 100644 w/class/class.w.aff.php delete mode 100644 w/class/class.w.app.php delete mode 100644 w/class/class.w.art.php delete mode 100644 w/class/class.w.art2.php delete mode 100644 w/class/class.w.config.php delete mode 100644 w/class/class.w.media.php delete mode 100644 w/class/class.w.opt.php delete mode 100644 w/class/class.w.quickcss.php delete mode 100644 w/class/class.w.record.php create mode 100644 w/class/config.php create mode 100644 w/class/controller.php create mode 100644 w/class/controlleradmin.php create mode 100644 w/class/controllerart.php create mode 100644 w/class/controllerdb.php create mode 100644 w/class/controllerhome.php create mode 100644 w/class/controllermedia.php create mode 100644 w/class/media.php create mode 100644 w/class/model.php create mode 100644 w/class/modelart.php create mode 100644 w/class/modelartlist.php create mode 100644 w/class/modelconfig.php create mode 100644 w/class/modeldb.php create mode 100644 w/class/modelhome.php create mode 100644 w/class/modelmassedit.php create mode 100644 w/class/modelmedia.php create mode 100644 w/class/modeluser.php create mode 100644 w/class/opt.php create mode 100644 w/class/quickcss.php create mode 100644 w/class/record.php create mode 100644 w/class/route.php create mode 100644 w/class/router.php create mode 100644 w/class/user.php create mode 100644 w/class/w.article.php create mode 100644 w/class/w.home.php create mode 100644 w/class/w.menu.php delete mode 100644 w/controller/w.article.php delete mode 100644 w/controller/w.home.php delete mode 100644 w/controller/w.menu.php create mode 100644 w/view/templates/base.php create mode 100644 w/view/templates/media.php create mode 100644 w/view/templates/nav.php create mode 100644 w/view/templates/read.php create mode 100644 w/view/templates/reader.php create mode 100644 w/w.index.php delete mode 100644 w/w.router.php (limited to 'w') diff --git a/w/class/aff.php b/w/class/aff.php new file mode 100644 index 0000000..6f9f07e --- /dev/null +++ b/w/class/aff.php @@ -0,0 +1,1018 @@ + +

Config file does not exist yet, or maybe you deleted it ? Anyway, it is time to set it :

+
+ + Database settings
+
+
+
+
+ Domain name settings
+
+ W_cms settings
+
+ + + + + (You can change everything later, set at least your admin password, and don't forget it !)
+ +
+ session() >= $app::EDITOR) { + + ?> + +
+ + textarea{font-size: ' . $fontsize . '}'; + $tablist = ['section' => $art->md(), 'css' => $art->css(), 'aside' => $art->aside(), 'footer' => $art->footer()]; + + $this->tabs($tablist, 'section'); + + ?> + +
+ + + + + 👁 + + id() ?> + + + +
+ + + + + + +
+ + + '; + foreach ($tablist as $key => $value) { + echo '
'; + if ($key == $opentab) { + echo ''; + } else { + echo ''; + } + echo ''; + echo '
'; + echo ''; + echo '
'; + echo '
'; + } + + echo ''; +} + +public function editorhelp() +{ + ?> +

Help !

+

To save your article, press the HOME, UPDATE, or DISPLAY buttons. You can use the keyboard shortcuts as well.

+
ALT + W : home
+
ALT + X : update
+
ALT + C : display
+

Markdown

+

The html section use Markdown encoding. Actualy, W is using Michel Fortin's Markdown Extra.

+

Links

+
[text](=article_id)
+

where article_id is the article's id you want to point to.

+

Images

+
[altimage](/img_id.extension)
+

Where img_id is the id of your image and its extension.

+

Shortcuts

+
%TITLE%
+

Show the title of your article.

+
%DESCRIPTION%
+

Show the description of your article.

+
%SUMMARY%
+

Generate a summary, the list of all your head titles using #, ##, ###...

+
%%tag_name%%
+

Generate a menu, a list of links to all articles under this tag.

+

vv

+

vv

+

vv

+

+ + + + + + + + + <?= $title ?> + + + + + + + + + + ' : '' ?> + <?= $edit == 1 ? '✏' : '' ?> <?= $art->title() ?> + + + + + + + + + + + ❓ <?= $id ?> + + + + + '; + echo ' '; + echo ' '; +} + +public function linkfrom($getlist, $linkfrom, App $app) +{ + echo '
'; + echo ' '; + echo '
'; +} + +public function dump($getlist) +{ + echo ' '; +} + +public function header() +{ + echo '
'; + $this->search(); + echo '
'; +} + + +public function home2table(App $app, $getlist, $masslist) +{ + echo '
'; + echo '

Articles

'; + echo '
'; + + ?> +
+

Mass Edit

+ + + + + + + + + + + + +
+ + session() >= $app::EDITOR) { + echo ''; + echo ''; + foreach ($getlist as $item) { + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + echo '
xtitletagsummary↘ to↗ fromlast modificationdate of creationprivacydisplay
' . $item->title() . '' . $item->tag('sort') . '' . $item->description() . '' . $item->linkto('sort') . '' . $item->linkfrom('sort') . '' . $item->datemodif('hrdi') . '' . $item->datecreation('hrdi') . '' . $item->secure('string') . '👁
'; + echo '
'; + echo '
'; + } +} + +public function option(App $app, Opt $opt) +{ + if ($app->session() >= $app::EDITOR) { + echo '
'; + echo '

Options

'; + echo '
'; + echo ''; + echo '⬅'; + + + $this->optionsort($opt); + $this->optionprivacy($opt); + $this->optiontag($opt); + + if ($opt->invert() == 1) { + echo ''; + } else { + echo ''; + } + echo '
'; + + } + +} + +public function optiontag(Opt $opt) +{ + + echo '
Tag
'; + +} + +public function optionprivacy(Opt $opt) +{ + echo '
Privacity
'; +} + +public function optionsort(Opt $opt) +{ + echo '
Sort'; + echo ''; + echo '
'; + echo 'order() == '1' ? "checked" : "") . ' />'; + echo '
'; + echo 'order() == '-1' ? "checked" : "") . ' />'; + + echo '
'; + +} + +public function mapheader() +{ + $selectcurve = isset($_GET['curve']) ? $_GET['curve'] : 'basis'; + $selectorient = isset($_GET['orient']) ? $_GET['orient'] : 'TD'; + $curves = ['linear', 'basis', 'natural', 'step', 'stepAfter', 'stepBefore', 'monotoneX', 'monotoneY']; + $orients = ['TD', 'LR', 'BT', 'RL']; + ?> +

Map

+ +
+ + + + + +
+ + + + + + + +
+ + graph + +
+ + + session() >= $app::EDITOR) { + echo ' '; + } +} + +public function nav($app) +{ + echo ' + session() >= $app::EDITOR) { + + ?> +
+ Add Media +
+ + + + +
+
+ +
+ Media List + +
+ + + + id() . '.' . $item->extension(); + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + if ($item->type() == 'image') { + echo ''; + echo ''; + } elseif ($item->type() == 'sound') { + echo ''; + echo ''; + } else { + echo ''; + echo ''; + } + echo ''; + echo ''; + + } + + + ?> + + +
xNameextensionwidthheightsizecodethumbnail
' . $item->extension() . '' . $item->width() . '' . $item->height() . '' . readablesize($item->size()) . '👁' . $item->id() . '
+ + + + +
+ + +
+ + + '; + echo 'Media List'; + + echo '
'; + + echo '
'; + + echo '
    '; + + foreach ($app->getlisterrecord($dir) as $item) { + echo '
  • '; + + ?> + + + + + id()) . '.' . $item->extension(); + + echo '
    '; + var_dump($item->size()); + var_dump(intval($item->size())); + echo 'filesize = ' . readablesize(intval($item->size())); + echo '
    '; + echo 'extension = ' . $item->extension(); + echo '
    '; + + ?> + + + + + + '; + } + + echo '
'; + + ?> + + + +
+ + + + '; + echo ''; + + + } + + + //______________________________________________________ A D M _________________________________________________ + + + + public function admincss(Config $config, $app) + { + ?> +
+

CSS

+ +

CSS file :

+ +

+ + '; + echo 'Edit current CSS'; + echo '
'; + echo ''; + echo ''; + echo ''; + echo '
'; + echo ''; + } + + ?> + +
+ + +
+ + +

Database

+ +
+ Database credentials + +

Fill this sections with the database settings you want to connect to

+ +
+ + + + + + + + + + +
+ +
+ + +
+ + +
+ +

Passwords

+ +
+ Admin + +

Edit your own admin password. You can find it in the config.w.json file, in the root of your website folder.

+ +
+ + + + +
+ +
+
+ Others + +

Use this section to set all the others users passwords. They cant access this page, so they cant change it by themselves.

+ +
+ + + + + + + + +
+ +
+
+ + + + + + +
+ +

Table

+ + + +

Database status :

+ + +

Current Table : arttable(); ?>

+
+ Select Table +

The table is where all your articles are stored, select the one you want to use.

+ +
+ + + +
+ +
+ +
+ Add table + +

Create new table in your database. You need at least one to use W_cms

+ +
+ + + +
+ +
+ +
+ Duplicate Table +

If you want to save versions of your work.

+ +
+ + + + + + +
+ +
+ +
+ + +
+

Display

+
+ Update favicon +
+ + +
+
+
+ Change desktop background color +
+ + + + +
+
+
+ \ No newline at end of file diff --git a/w/class/app.php b/w/class/app.php new file mode 100644 index 0000000..b791846 --- /dev/null +++ b/w/class/app.php @@ -0,0 +1,657 @@ +setsession($this::FREE); + } + + public function setbdd(Config $config) + { + $caught = true; + + try { + $this->bdd = new PDO('mysql:host=' . $config->host() . ';dbname=' . $config->dbname() . ';charset=utf8', $config->user(), $config->password(), array(PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT)); + //$this->bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } catch (PDOException $e) { + $caught = false; + echo '

Error 500, database offline

'; + if ($this->session() >= self::EDITOR) { + echo '

Error : ' . $e->getMessage() . '

'; + if ($this->session() == self::ADMIN) { + echo '

Go to the Admin Panel to edit your database credentials

'; + } else { + echo '

Logout and and come back with an admin password to edit the database connexions settings.

'; + } + } else { + echo '

Homepage for admin login (connect on the top right side)

'; + } + exit; + } + + return $caught; + + } + + public function settable(Config $config) + { + if (!empty($config->arttable())) { + $this->arttable = $config->arttable(); + } else { + echo '

Table Error

'; + + if ($this->session() >= self::EDITOR) { + if ($this->session() == self::ADMIN) { + echo '

Go to the Admin Panel to select or add an Article table

'; + } else { + echo '

Logout and and come back with an admin password to edit table settings.

'; + } + } else { + echo '

Homepage for admin login (connect on the top right side)

'; + } + $caught = false; + exit; + } + } + + public function bddinit(Config $config) + { + $test = $this->setbdd($config); + if ($test) { + $this->settable($config); + } + } + + +// _________________________________________ C O N F I G ____________________________________ + + public function readconfig() + { + if (file_exists(self::CONFIG_FILE)) { + $current = file_get_contents(self::CONFIG_FILE); + $donnees = json_decode($current, true); + return new Config($donnees); + } else { + return 0; + } + + } + + public function createconfig(array $donnees) + { + return new Config($donnees); + } + + + public function savejson(string $json) + { + file_put_contents(self::CONFIG_FILE, $json); + } + + + + + + +// ___________________________________________ A R T ____________________________________ + + + public function add(Art2 $art) + { + + if ($this->exist($art->id())) { + echo 'idalreadyexist'; + } else { + + var_dump($art); + + $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); + + $request = 'INSERT INTO ' . $this->arttable . '(id, title, description, tag, date, datecreation, datemodif, daterender, css, quickcss, javascript, html, header, section, nav, aside, footer, render, secure, invitepassword, interface, linkfrom, template, affcount, editcount) + VALUES(:id, :title, :description, :tag, :date, :datecreation, :datemodif, :daterender, :css, :quickcss, :javascript, :html, :header, :section, :nav, :aside, :footer, :render, :secure, :invitepassword, :interface, :linkfrom, :template, :affcount, :editcount)'; + + $q = $this->bdd->prepare($request); + + $q->bindValue(':id', $art->id()); + $q->bindValue(':title', $art->title()); + $q->bindValue(':description', $art->description()); + $q->bindValue(':tag', $art->tag('string')); + $q->bindValue(':date', $now->format('Y-m-d H:i:s')); + $q->bindValue(':datecreation', $now->format('Y-m-d H:i:s')); + $q->bindValue(':datemodif', $now->format('Y-m-d H:i:s')); + $q->bindValue(':daterender', $now->format('Y-m-d H:i:s')); + $q->bindValue(':css', $art->css()); + $q->bindValue(':quickcss', $art->quickcss('json')); + $q->bindValue(':javascript', $art->javascript()); + $q->bindValue(':html', $art->html()); + $q->bindValue(':header', $art->header()); + $q->bindValue(':section', $art->md()); + $q->bindValue(':nav', $art->nav()); + $q->bindValue(':aside', $art->aside()); + $q->bindValue(':footer', $art->footer()); + $q->bindValue(':render', $art->render()); + $q->bindValue(':secure', $art->secure()); + $q->bindValue(':invitepassword', $art->invitepassword()); + $q->bindValue(':interface', $art->interface()); + $q->bindValue(':linkfrom', $art->linkfrom('json')); + $q->bindValue(':template', $art->template('json')); + $q->bindValue(':affcount', $art->affcount()); + $q->bindValue(':editcount', $art->editcount()); + + $q->execute(); + } + } + + public function delete(Art2 $art) + { + $req = $this->bdd->prepare('DELETE FROM ' . $this->arttable . ' WHERE id = :id '); + $req->execute(array('id' => $art->id())); + $req->closeCursor(); + } + + public function get($id) + { + $req = $this->bdd->prepare('SELECT * FROM ' . $this->arttable . ' WHERE id = :id '); + $req->execute(array('id' => $id)); + $donnees = $req->fetch(PDO::FETCH_ASSOC); + + return new Art2($donnees); + + $req->closeCursor(); + + } + + + + + + public function update(Art2 $art) + { + $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); + + //$request = 'UPDATE ' . $this->arttable . '(id, title, description, tag, date, datecreation, datemodif, daterender, css, quickcss, javascript, html, header, section, nav, aside, footer, render, secure, invitepassword, interface, linkfrom, template, affcount, editcount) VALUES(:id, :title, :description, :tag, :date, :datecreation, :datemodif, :daterender, :css, :quickcss, :javascript, :html, :header, :section, :nav, :aside, :footer, :render, :secure, :invitepassword, :interface, :linkfrom, :template, :affcount, :editcount) WHERE id = :id'; + + $request = 'UPDATE ' . $this->arttable . ' SET id = :id, title = :title, description = :description, tag = :tag, date = :date, datecreation = :datecreation, datemodif = :datemodif, daterender = :daterender, css = :css, quickcss = :quickcss, javascript = :javascript, html = :html, header = :header, section = :section, nav = :nav, aside = :aside, footer = :footer, render = :footer, secure = :secure, invitepassword = :invitepassword, interface = :interface, linkfrom = :linkfrom, template = :template, affcount = :affcount, editcount = :editcount WHERE id = :id'; + + $q = $this->bdd->prepare($request); + + $q->bindValue(':id', $art->id()); + $q->bindValue(':title', $art->title()); + $q->bindValue(':description', $art->description()); + $q->bindValue(':tag', $art->tag('string')); + $q->bindValue(':date', $now->format('Y-m-d H:i:s')); + $q->bindValue(':datecreation', $now->format('Y-m-d H:i:s')); + $q->bindValue(':datemodif', $now->format('Y-m-d H:i:s')); + $q->bindValue(':daterender', $now->format('Y-m-d H:i:s')); + $q->bindValue(':css', $art->css()); + $q->bindValue(':quickcss', $art->quickcss('json')); + $q->bindValue(':javascript', $art->javascript()); + $q->bindValue(':html', $art->html()); + $q->bindValue(':header', $art->header()); + $q->bindValue(':section', $art->md()); + $q->bindValue(':nav', $art->nav()); + $q->bindValue(':aside', $art->aside()); + $q->bindValue(':footer', $art->footer()); + $q->bindValue(':render', $art->render()); + $q->bindValue(':secure', $art->secure()); + $q->bindValue(':invitepassword', $art->invitepassword()); + $q->bindValue(':interface', $art->interface()); + $q->bindValue(':linkfrom', $art->linkfrom('json')); + $q->bindValue(':template', $art->template('json')); + $q->bindValue(':affcount', $art->affcount()); + $q->bindValue(':editcount', $art->editcount()); + + $q->execute(); + } + + public function exist($id) + { + $req = $this->bdd->prepare(' SELECT COUNT(*) FROM ' . $this->arttable . ' WHERE id = :id '); + $req->execute(array('id' => $id)); + $donnees = $req->fetch(PDO::FETCH_ASSOC); + + return (bool)$donnees['COUNT(*)']; + } + + + + + + //____________________________________________ L S T ______________________________ + + + + public function getlister(array $selection = ['id'], array $opt = []) + { + // give an array using SELECTION columns and sort and desc OPTIONS + + $default = ['tri' => 'id', 'desc' => 'DESC']; + $opt = array_update($default, $opt); + + $list = []; + $option = ['datecreation', 'title', 'id', 'description', 'datemodif', 'tag', 'secure']; + if (is_array($selection) && is_string($opt['tri']) && strlen($opt['tri']) < 16 && is_string($opt['desc']) && strlen($opt['desc']) < 5 && in_array($opt['tri'], $option)) { + + $selection = implode(", ", $selection); + + $select = 'SELECT ' . $selection . ' FROM ' . $this->arttable . ' ORDER BY ' . $opt['tri'] . ' ' . $opt['desc']; + $req = $this->bdd->query($select); + while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) { + $list[] = new Art2($donnees); + } + return $list; + } + } + + + + + + + public function getlisteropt(Opt $opt) + { + + $artlist = []; + + $select = 'SELECT ' . $opt->col('string') . ' FROM ' . $this->arttable; + $req = $this->bdd->query($select); + while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) { + $artlist[] = new Art2($donnees); + } + return $artlist; + + } + + public function listcalclinkfrom(&$artlist) + { + foreach ($artlist as $art) { + $art->calclinkto($artlist); + } + } + + public function artcompare($art1, $art2, $method = 'id', $order = 1) + { + $result = ($art1->$method('sort') <=> $art2->$method('sort')); + return $result * $order; + + } + + public function buildsorter($sortby, $order) + { + return function ($art1, $art2) use ($sortby, $order) { + $result = $this->artcompare($art1, $art2, $sortby, $order); + return $result; + }; + } + + + + public function artlistsort(&$artlist, $sortby, $order = 1) + { + return usort($artlist, $this->buildsorter($sortby, $order)); + } + + + + + + + public function filtertagfilter(array $artlist, array $tagchecked, $tagcompare = 'OR') + { + + $filteredlist = []; + foreach ($artlist as $art) { + if (empty($tagchecked)) { + $filteredlist[] = $art->id(); + } else { + $inter = (array_intersect($art->tag('array'), $tagchecked)); + if ($tagcompare == 'OR') { + if (!empty($inter)) { + $filteredlist[] = $art->id(); + } + } elseif ($tagcompare == 'AND') { + if (!array_diff($tagchecked, $art->tag('array'))) { + $filteredlist[] = $art->id(); + } + } + } + } + return $filteredlist; + } + + public function filtersecure(array $artlist, $secure) + { + $filteredlist = []; + foreach ($artlist as $art) { + if ($art->secure() == intval($secure)) { + $filteredlist[] = $art->id(); + } elseif (intval($secure) >= 4) { + $filteredlist[] = $art->id(); + } + } + return $filteredlist; + } + + + public function lister() + { + $req = $this->bdd->query(' SELECT * FROM ' . $this->arttable . ' ORDER BY id '); + $donnees = $req->fetchAll(PDO::FETCH_ASSOC); + $req->closeCursor(); + return $donnees; + + } + + public function tag(array $artlist, $tagchecked) + { + $artcheckedlist = []; + foreach ($artlist as $art) { + if (in_array($tagchecked, $art->tag('array'))) { + $artcheckedlist[] = $art; + } + } + return $artcheckedlist; + } + + public function taglist(array $artlist, array $tagcheckedlist) + { + $taglist = []; + foreach ($tagcheckedlist as $tag) { + $taglist[$tag] = $this->tag($artlist, $tag); + } + return $taglist; + } + + public function count() + { + return $this->bdd->query(' SELECT COUNT(*) FROM ' . $this->arttable . ' ')->fetchColumn(); + } + + + + // __________________________________________ T A B L E ________________________________________________________ + + + public function tableexist($dbname, $tablename) + { + + $req = $this->bdd->prepare('SELECT COUNT(*) + FROM information_schema.tables + WHERE table_schema = :dbname AND + table_name like :tablename'); + $req->execute(array( + 'dbname' => $dbname, + 'tablename' => $tablename + )); + $donnees = $req->fetch(PDO::FETCH_ASSOC); + $req->closeCursor(); + $exist = intval($donnees['COUNT(*)']); + return $exist; + + + + + } + + public function tablelist($dbname) + { + $request = 'SHOW TABLES IN ' . $dbname; + $req = $this->bdd->query($request); + $donnees = $req->fetchAll(PDO::FETCH_ASSOC); + $req->closeCursor(); + + $arttables = []; + foreach ($donnees as $table) { + $arttables[] = $table['Tables_in_' . $dbname]; + } + return $arttables; + + + } + + + + + + public function tableduplicate($dbname, $arttable, $tablename) + { + $arttable = strip_tags($arttable); + $tablename = str_clean($tablename); + if ($this->tableexist($dbname, $arttable) && !$this->tableexist($dbname, $tablename)) { + $duplicate = " CREATE TABLE `$tablename` LIKE `$arttable`;"; + $alter = "ALTER TABLE `$tablename` ADD PRIMARY KEY (`id`);"; + $insert = "INSERT `$tablename` SELECT * FROM `$arttable`;"; + + + $req = $this->bdd->query($duplicate . $alter . $insert); + + return 'tableduplicated'; + } else { + return 'tablealreadyexist'; + } + } + + + + +// __________________________________________ M E D ________________________________________________________ + + public function addmedia(array $file, $maxsize = 2 ** 24, $id) + { + $message = 'runing'; + $id = strtolower(strip_tags($id)); + $id = str_replace(' ', '_', $id); + if (isset($file) and $file['media']['error'] == 0 and $file['media']['size'] < $maxsize) { + $infosfichier = pathinfo($file['media']['name']); + $extension_upload = $infosfichier['extension']; + $extensions_autorisees = $this::MEDIA_EXTENSIONS; + if (in_array($extension_upload, $extensions_autorisees)) { + if (!file_exists($this::MEDIA_DIR . $id . '.' . $extension_upload)) { + + $extension_upload = strtolower($extension_upload); + $uploadok = move_uploaded_file($file['media']['tmp_name'], $this::MEDIA_DIR . $id . '.' . $extension_upload); + if ($uploadok) { + $message = 'uploadok'; + } else { + $message = 'uploaderror'; + } + } else { + $message = 'filealreadyexist'; + + } + } + } else { + $message = 'filetoobig'; + + } + + return $message; + } + + + public function getmedia($entry, $dir) + { + $fileinfo = pathinfo($entry); + + $filepath = $fileinfo['dirname'] . '.' . $fileinfo['extension']; + + $donnees = array( + 'id' => str_replace('.' . $fileinfo['extension'], '', $fileinfo['filename']), + 'path' => $dir, + 'extension' => $fileinfo['extension'] + ); + + + + return new Media($donnees); + + } + + public function getlistermedia($dir, $type = "all") + { + if ($handle = opendir($dir)) { + $list = []; + while (false !== ($entry = readdir($handle))) { + if ($entry != "." && $entry != "..") { + + $media = $this->getmedia($entry, $dir); + + + $media->analyse(); + + if (in_array($type, self::MEDIA_TYPES)) { + if ($media->type() == $type) { + $list[] = $media; + } + } else { + $list[] = $media; + } + + + } + } + return $list; + } + + return $list; + + } + + + + + //_________________________________________________________ R E C ________________________________________________________ + + + public function getlisterrecord($dir) + { + if ($handle = opendir($dir)) { + $list = []; + while (false !== ($entry = readdir($handle))) { + if ($entry != "." && $entry != "..") { + $fileinfo = pathinfo($entry); + + $filepath = $dir . $fileinfo['filename'] . '.' . $fileinfo['extension']; + + list($width, $height, $type, $attr) = getimagesize($filepath); + $filesize = filesize($filepath); + + $donnees = array( + 'id' => str_replace('.' . $fileinfo['extension'], '', $fileinfo['filename']), + 'path' => $fileinfo['dirname'], + 'extension' => $fileinfo['extension'], + 'size' => $filesize + ); + + $list[] = new Record($donnees); + + } + } + } + + return $list; + + + + } + + + + + // ________________________________________________________ M A P ________________________________________________________ + + + public function map(array $getlister, $lb = PHP_EOL) + { + + $map = ""; + $link = ""; + $style = ""; + foreach ($getlister as $item) { + if($item->secure() == 2) { + $style = $style . $lb . $item->id() . '{' . $item->title() . '}'; + } elseif ($item->secure() == 1) { + $style = $style . $lb . $item->id() . '(' . $item->title() . ')'; + + } else { + $style = $style . $lb . $item->id() . '((' . $item->title() . '))'; + } + foreach ($item->linkfrom('array') as $linkfrom) { + $map = $map . $lb . $item->id() . ' --> ' . $linkfrom; + $link = $link . $lb . 'click ' . $linkfrom . ' "./?id=' . $linkfrom . '"'; + + } + $link = $link . $lb . 'click ' . $item->id() . ' "./?id=' . $item->id() . '"'; + } + return $map . $link . $style; + + } + + + + + + //_________________________________________________________ S E S ________________________________________________________ + + public function login($pass, $config) + { + if (strip_tags($pass) == $config->admin()) { + return $level = self::ADMIN; + } elseif (strip_tags($pass) == $config->read()) { + return $level = self::READ; + } elseif (strip_tags($pass) == $config->editor()) { + return $level = self::EDITOR; + } elseif (strip_tags($pass) == $config->invite()) { + return $level = self::INVITE; + } + } + + public function logout() + { + return $level = 0; + } + + // ________________________________________________________ S E T ___________________________________________________ + + + public function setsession($session) + { + $this->session = $session; + } + + + + + //_________________________________________________________ G E T ________________________________________________________ + + public function session() + { + return $this->session; + } + + +} +?> \ No newline at end of file diff --git a/w/class/application.php b/w/class/application.php new file mode 100644 index 0000000..77599d5 --- /dev/null +++ b/w/class/application.php @@ -0,0 +1,36 @@ +setconfig(); + + } + + + public function setconfig() + { + $this->config = Modelconfig::readconfig(); + } + + + + +} + + + + + + + + + + +?> \ No newline at end of file diff --git a/w/class/art.php b/w/class/art.php new file mode 100644 index 0000000..a4c93eb --- /dev/null +++ b/w/class/art.php @@ -0,0 +1,506 @@ +hydrate($donnees); + } + + public function hydrate(array $donnees) + { + foreach ($donnees as $key => $value) { + $method = 'set' . $key; + + if (method_exists($this, $method)) { + $this->$method($value); + } + } + } + + public function reset() + { + $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); + + $this->settitre($this->id()); + $this->setsoustitre(''); + $this->setintro(''); + $this->settag(''); + $this->setdatecreation($now); + $this->setcss(''); + $this->sethtml(''); + $this->setsecure(2); + $this->setcouleurtext('#000000'); + $this->setcouleurbkg('#FFFFFF'); + $this->setcouleurlien('#000000'); + $this->setcouleurlienblank('#000000'); + $this->setlien(''); + $this->settemplate(''); + } + + public function updatelien() + { + $this->lien = []; + $this->lien = array_unique(search($this->md(true), self::DEBUT, self::FIN)); + + } + + public static function classvarlist() + { + $classvarlist = []; + foreach (get_class_vars(__class__) as $var => $default) { + $classvarlist[] = $var; + } + return ['artvarlist' => $classvarlist]; + } + + + + + public function calcliento($getlist) + { + $liento = []; + foreach ($getlist as $lien) { + if (in_array($this->id(), $lien->lien('array'))) { + $liento[] = $lien->id(); + } + } + $this->setliento($liento); + } + + + public function autotaglist() + { + $pattern = "/%%(\w*)%%/"; + preg_match_all($pattern, $this->md(), $out); + return $out[1]; + + } + + public function autotaglistupdate($taglist) + { + foreach ($taglist as $tag => $artlist) { + $replace = ''; + $this->html = str_replace('%%' . $tag . '%%', $replace, $this->html); + } + } + + public function autotaglistcalc($taglist) + { + foreach ($taglist as $tag => $artlist) { + foreach ($artlist as $art) { + if(!in_array($art->id(), $this->lien('array')) && $art->id() != $this->id()) { + $this->lien[] = $art->id(); + } + } + } + } + + public function templaterender() + { + + } + + + // _____________________________________________________ G E T ____________________________________________________ + + public function id($type = 'string') + { + return $this->id; + } + + public function titre($type = 'string') + { + return $this->titre; + } + + public function soustitre($type = 'string') + { + return $this->soustitre; + } + + public function intro($type = 'string') + { + return $this->intro; + } + + public function tag($option) + { + if ($option == 'string') { + return implode(", ", $this->tag); + } elseif ($option == 'array') { + return $this->tag; + } elseif ($option == 'sort') { + return count($this->tag); + } + } + + public function datecreation($option) + { + if ($option == 'string') { + return $this->datecreation->format('Y-m-d H:i:s'); + } elseif ($option == 'date' || $option == 'sort') { + return $this->datecreation; + } elseif ($option == 'hrdi') { + $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); + return hrdi($this->datecreation->diff($now)); + } + } + + + public function datemodif($option) + { + if ($option == 'string') { + return $this->datemodif->format('Y-m-d H:i:s'); + } elseif ($option == 'date' || $option == 'sort') { + return $this->datemodif; + } elseif ($option == 'hrdi') { + $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); + return hrdi($this->datemodif->diff($now)); + } + } + + public function css($type = 'string') + { + return $this->css; + } + + public function cssprint() + { + return $cssprint; + } + + public function csstemplate(App $app) + { + $data = []; + $temp = ''; + if (!empty($this->template())) { + if ($app->exist($this->template()) and !in_array($this->template(), $data)) { + $template = $app->get($this->template()); + $temp = $temp . $template->css($app); + $data[] = $template->id(); + + } + + } + $cssprint = str_replace('url(/', 'url('.$app::MEDIA_DIR , $temp . $this->css); + return $cssprint; + } + + public function md($expand = false) + { + if ($expand == true) { + $md = str_replace('](=', '](?id=', $this->html); + } else { + $md = $this->html; + } + return $md; + } + + public function html(App $app) + { + + // %%%% TITLE & DESCIPTION + $html = str_replace('%TITLE%', $this->titre(), $this->html); + $html = str_replace('%DESCRIPTION%', $this->intro(), $html); + + $parser = new MarkdownExtra; + + // id in headers + $parser->header_id_func = function ($header) { + return preg_replace('/[^\w]/', '', strtolower($header)); + }; + $html = $parser->transform($html); + + // replace = > ?id= + $html = str_replace('href="=', 'href="?id=', $html); + + + // infobulles tooltip + foreach ($this->lien('array') as $id) { + $title = "Cet article n'existe pas encore"; + foreach ($app->getlister(['id', 'intro']) as $item) { + if ($item->id() == $id) { + $title = $item->intro(); + } + } + $lien = 'href="?id=' . $id . '"'; + $titlelien = ' title="' . $title . '" ' . $lien; + $html = str_replace($lien, $titlelien, $html); + } + + if(!empty(strstr($html, '%SUMMARY%'))) { + + + + $html = str_replace('%SUMMARY%', sumparser($html), $html); + } + + + $html = str_replace('href="./media/', ' class="file" target="_blank" href="./media/', $html); + $html = str_replace('href="http', ' class="external" target="_blank" href="http', $html); + $html = str_replace('
', $html); + return $html; + + + } + + public function secure($type = 'int') + { + if ($type == 'string') { + if ($this->secure == 0) $secure = 'public'; + if ($this->secure == 1) $secure = 'private'; + if ($this->secure == 2) $secure = 'not published'; + return $secure; + } else { + return $this->secure; + } + } + + public function couleurtext() + { + return $this->couleurtext; + } + + public function couleurbkg() + { + return $this->couleurbkg; + } + + public function couleurlien() + { + return $this->couleurlien; + } + + public function couleurlienblank() + { + return $this->couleurlienblank; + } + + public function lien($option) + { + if ($option == 'string') { + $lien = implode(", ", $this->lien); + } elseif ($option == 'array') { + $lien = $this->lien; + } elseif ($option == 'sort') { + return count($this->lien); + } + return $lien; + + } + + public function liento($option) + { + if ($option == 'string') { + $liento = implode(", ", $this->liento); + } elseif ($option == 'array') { + $liento = $this->liento; + } elseif ($option == 'sort') { + return count($this->liento); + } + return $liento; + + } + + public function template($type = 'string') + { + return $this->template; + } + + + + + + // _____________________________________________________ S E T ____________________________________________________ + + public function setid($id) + { + if (strlen($id) < self::LEN and is_string($id)) { + $this->id = strip_tags(strtolower(str_replace(" ", "", $id))); + } + } + + public function settitre($titre) + { + if (strlen($titre) < self::LEN and is_string($titre)) { + $this->titre = strip_tags(trim($titre)); + } + } + + public function setsoustitre($soustitre) + { + if (strlen($soustitre) < self::LEN and is_string($soustitre)) { + $this->soustitre = strip_tags(trim($soustitre)); + } + } + + public function setintro($intro) + { + if (strlen($intro) < self::LEN and is_string($intro)) { + $this->intro = strip_tags(trim($intro)); + } + } + + public function settag($tag) + { + if (is_string($tag)) { + + if (strlen($tag) < self::LEN and is_string($tag)) { + $tag = strip_tags(trim(strtolower($tag))); + $tag = str_replace('*', '', $tag); + $tag = str_replace(' ', '', $tag); + + $taglist = explode(",", $tag); + $taglist = array_filter($taglist); + $this->tag = $taglist; + } + } elseif (is_array($tag)) { + $this->tag = $tag; + } + } + + public function setdatecreation($datecreation) + { + if ($datecreation instanceof DateTimeImmutable) { + $this->datecreation = $datecreation; + } else { + $this->datecreation = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $datecreation, new DateTimeZone('Europe/Paris')); + } + } + + public function setdatemodif($datemodif) + { + if ($datemodif instanceof DateTimeImmutable) { + $this->datemodif = $datemodif; + } else { + $this->datemodif = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $datemodif, new DateTimeZone('Europe/Paris')); + } + } + + public function setcss($css) + { + if (strlen($css) < self::LENHTML and is_string($css)) { + $this->css = strip_tags(trim(strtolower($css))); + } + } + + public function sethtml($html) + { + if (strlen($html) < self::LENHTML and is_string($html)) { + $this->html = $html; + } + } + + public function setsecure($secure) + { + if ($secure >= 0 and $secure <= self::SECUREMAX) { + $this->secure = intval($secure); + } + } + + public function setcouleurtext($couleurtext) + { + $couleurtext = strval($couleurtext); + if (strlen($couleurtext) <= self::LENCOULEUR) { + $this->couleurtext = strip_tags(trim($couleurtext)); + } + } + + public function setcouleurbkg($couleurbkg) + { + $couleurbkg = strval($couleurbkg); + if (strlen($couleurbkg) <= self::LENCOULEUR) { + $this->couleurbkg = strip_tags(trim($couleurbkg)); + } + } + + public function setcouleurlien($couleurlien) + { + $couleurlien = strval($couleurlien); + if (strlen($couleurlien) <= self::LENCOULEUR) { + $this->couleurlien = strip_tags(trim($couleurlien)); + } + } + + public function setcouleurlienblank($couleurlienblank) + { + $couleurlienblank = strval($couleurlienblank); + if (strlen($couleurlienblank) <= self::LENCOULEUR) { + $this->couleurlienblank = strip_tags(trim($couleurlienblank)); + } + } + + public function setlien($lien) + { + if (!empty($lien) && strlen($lien) < self::LEN && is_string($lien)) { + $lien = strip_tags(trim(strtolower($lien))); + $lienlist = explode(", ", $lien); + $this->lien = $lienlist; + } else { + $this->lien = []; + } + } + + public function setliento($liento) + { + if (is_array($liento)) { + $this->liento = $liento; + } + + + } + + public function settemplate($template) + { + $template = strip_tags($template); + if (strlen($template) == 0) { + $template = 'NULL'; + } + $this->template = $template; + } + + +} + + +?> \ No newline at end of file diff --git a/w/class/art2.php b/w/class/art2.php new file mode 100644 index 0000000..88c0321 --- /dev/null +++ b/w/class/art2.php @@ -0,0 +1,677 @@ +hydrate($donnees); + } + + public function hydrate(array $donnees) + { + foreach ($donnees as $key => $value) { + $method = 'set' . $key; + + if (method_exists($this, $method)) { + $this->$method($value); + } + } + } + + public function reset() + { + $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); + + $this->settitle($this->id()); + $this->setdescription(''); + $this->settag([]); + $this->setdate($now); + $this->setdatecreation($now); + $this->setdatecreation($now); + $this->setdatemodif($now); + $this->setdaterender($now); + $this->setcss(''); + $this->setquickcss([]); + $this->setjavascript(''); + $this->sethtml(''); + $this->setheader(''); + $this->setsection(''); + $this->setnav(''); + $this->setaside(''); + $this->setfooter(''); + $this->setrender(''); + $this->setsecure(2); + $this->setinvitepassword('invitepassword'); + $this->setinterface('section'); + $this->setlinkfrom([]); + $this->settemplate([]); + $this->setaffcount(0); + $this->seteditcount(0); + } + + public function updatelinkfrom() + { + $this->linkfrom = []; + $this->linkfrom = array_unique(search($this->md(true), self::DEBUT, self::FIN)); + + } + + public static function classvarlist() + { + $classvarlist = []; + foreach (get_class_vars(__class__) as $var => $default) { + $classvarlist[] = $var; + } + return ['artvarlist' => $classvarlist]; + } + + + + + public function calclinkto($getlist) + { + $linkto = []; + if(!empty($getlist)) { + foreach ($getlist as $link) { + if (in_array($this->id(), $link->linkfrom('array'))) { + $linkto[] = $link->id(); + } + } + $this->setlinkto($linkto); + } + } + + + public function autotaglist() + { + $pattern = "/%%(\w*)%%/"; + preg_match_all($pattern, $this->md(), $out); + return $out[1]; + + } + + public function autotaglistupdate($taglist) + { + foreach ($taglist as $tag => $artlist) { + $replace = ''; + $this->section = str_replace('%%' . $tag . '%%', $replace, $this->section); + } + } + + public function autotaglistcalc($taglist) + { + foreach ($taglist as $tag => $artlist) { + foreach ($artlist as $art) { + if (!in_array($art->id(), $this->linkfrom('array')) && $art->id() != $this->id()) { + $this->linkfrom[] = $art->id(); + } + } + } + } + + public function templaterender(array $vars) + { + $datas = []; + foreach($vars as $var) { + if (method_exists($this, $var)) + $datas[$var] = $this->$var(); + } + return $datas; + } + + + // _____________________________________________________ G E T ____________________________________________________ + + public function id($type = 'string') + { + return $this->id; + } + + public function title($type = 'string') + { + return $this->title; + } + + public function description($type = 'string') + { + return $this->description; + } + + public function tag($option) + { + if ($option == 'string') { + return implode(", ", $this->tag); + } elseif ($option == 'array') { + return $this->tag; + } elseif ($option == 'sort') { + return count($this->tag); + } + } + + public function date($option) + { + if ($option == 'string') { + return $this->date->format('Y-m-d H:i:s'); + } elseif ($option == 'date' || $option == 'sort') { + return $this->date; + } elseif ($option == 'hrdi') { + $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); + return hrdi($this->date->diff($now)); + } + } + + public function datecreation($option) + { + if ($option == 'string') { + return $this->datecreation->format('Y-m-d H:i:s'); + } elseif ($option == 'date' || $option == 'sort') { + return $this->datecreation; + } elseif ($option == 'hrdi') { + $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); + return hrdi($this->datecreation->diff($now)); + } + } + + + public function datemodif($option) + { + if ($option == 'string') { + return $this->datemodif->format('Y-m-d H:i:s'); + } elseif ($option == 'date' || $option == 'sort') { + return $this->datemodif; + } elseif ($option == 'hrdi') { + $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); + return hrdi($this->datemodif->diff($now)); + } + } + + public function daterender($option) + { + if ($option == 'string') { + return $this->daterender->format('Y-m-d H:i:s'); + } elseif ($option == 'date' || $option == 'sort') { + return $this->daterender; + } elseif ($option == 'hrdi') { + $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); + return hrdi($this->daterender->diff($now)); + } + } + + public function css($type = 'string') + { + return $this->css; + } + + public function quickcss($type = 'json') + { + if ($type == 'json') { + return json_encode($this->quickcss); + } elseif ($type == 'array') { + return $this->quickcss; + } + } + + + public function csstemplate(App $app) + { + $data = []; + $temp = ''; + if (!empty($this->template())) { + if ($app->exist($this->template()) and !in_array($this->template(), $data)) { + $template = $app->get($this->template()); + $temp = $temp . $template->css($app); + $data[] = $template->id(); + + } + + } + $cssprint = str_replace('url(/', 'url(' . $app::MEDIA_DIR, $temp . $this->css); + return $cssprint; + } + + + public function javascript($type = 'string') + { + return $this->javascript; + } + + public function html($type = 'string') + { + return $this->html; + } + + public function header($type = 'string') + { + return $this->header; + } + + public function md($expand = false) + { + if ($expand == true) { + $md = str_replace('](=', '](?id=', $this->section); + } else { + $md = $this->section; + } + return $md; + } + + public function section() + { + return $this->section; + } + + public function section888(App $app) + { + + // %%%% TITLE & DESCIPTION + $section = str_replace('%TITLE%', $this->title(), $this->section); + $section = str_replace('%DESCRIPTION%', $this->description(), $section); + + $parser = new MarkdownExtra; + + // id in headers + $parser->header_id_func = function ($header) { + return preg_replace('/[^\w]/', '', strtolower($header)); + }; + $section = $parser->transform($section); + + // replace = > ?id= + $section = str_replace('href="=', 'href="?id=', $section); + + + // infobulles tooltip + foreach ($this->linkfrom('array') as $id) { + $title = "Cet article n'existe pas encore"; + foreach ($app->getlister(['id', 'description']) as $item) { + if ($item->id() == $id) { + $title = $item->description(); + } + } + $linkfrom = 'href="?id=' . $id . '"'; + $titlelinkfrom = ' title="' . $title . '" ' . $linkfrom; + $section = str_replace($linkfrom, $titlelinkfrom, $section); + } + + if (!empty(strstr($section, '%SUMMARY%'))) { + + + + $section = str_replace('%SUMMARY%', sumparser($section), $section); + } + + + $section = str_replace('href="./media/', ' class="file" target="_blank" href="./media/', $section); + $section = str_replace('href="http', ' class="external" target="_blank" href="http', $section); + $section = str_replace('
', $section); + return $section; + + + } + + public function nav($type="string") + { + return $this->nav; + } + + public function aside($type="string") + { + return $this->aside; + } + + public function footer($type="string") + { + return $this->footer; + } + + public function render($type = 'string') + { + return $this->render; + } + + public function secure($type = 'int') + { + if ($type == 'string') { + if ($this->secure == 0) $secure = 'public'; + if ($this->secure == 1) $secure = 'private'; + if ($this->secure == 2) $secure = 'not published'; + return $secure; + } else { + return $this->secure; + } + } + + public function invitepassword($type = 'int') + { + return $this->invitepassword; + } + + public function interface($type = 'secton') + { + return $this->interface; + } + + public function linkfrom($option = 'json') + { + if ($option == 'json') { + $linkfrom = json_encode($this->linkfrom); + } elseif ($option == 'array') { + $linkfrom = $this->linkfrom; + } elseif ($option == 'sort') { + return count($this->linkfrom); + } + return $linkfrom; + + } + + public function linkto($option) + { + if ($option == 'string') { + $linkto = implode(", ", $this->linkto); + } elseif ($option == 'array') { + $linkto = $this->linkto; + } elseif ($option == 'sort') { + return count($this->linkto); + } + return $linkto; + + } + + public function template($type = 'json') + { + if($type == 'json') { + return json_encode($this->template); + } elseif ($type = 'array') { + return $this->template; + } + } + + public function affcount($type = 'int') + { + return $this->affcount; + } + + public function editcount($type = 'int') + { + return $this->editcount; + } + + + + + + // _____________________________________________________ S E T ____________________________________________________ + + public function setid($id) + { + if (strlen($id) < self::LEN and is_string($id)) { + $this->id = strip_tags(strtolower(str_replace(" ", "", $id))); + } + } + + public function settitle($title) + { + if (strlen($title) < self::LEN and is_string($title)) { + $this->title = strip_tags(trim($title)); + } + } + + public function setdescription($description) + { + if (strlen($description) < self::LEN and is_string($description)) { + $this->description = strip_tags(trim($description)); + } + } + + public function settag($tag) + { + if (is_string($tag)) { + + if (strlen($tag) < self::LEN and is_string($tag)) { + $tag = strip_tags(trim(strtolower($tag))); + $tag = str_replace('*', '', $tag); + $tag = str_replace(' ', '', $tag); + + $taglist = explode(",", $tag); + $taglist = array_filter($taglist); + $this->tag = $taglist; + } + } elseif (is_array($tag)) { + $this->tag = $tag; + } + } + + public function setdate($date) + { + if ($date instanceof DateTimeImmutable) { + $this->date = $date; + } else { + $this->date = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $date, new DateTimeZone('Europe/Paris')); + } + } + + public function setdatecreation($datecreation) + { + if ($datecreation instanceof DateTimeImmutable) { + $this->datecreation = $datecreation; + } else { + $this->datecreation = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $datecreation, new DateTimeZone('Europe/Paris')); + } + } + + public function setdatemodif($datemodif) + { + if ($datemodif instanceof DateTimeImmutable) { + $this->datemodif = $datemodif; + } else { + $this->datemodif = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $datemodif, new DateTimeZone('Europe/Paris')); + } + } + + public function setdaterender($daterender) + { + if ($daterender instanceof DateTimeImmutable) { + $this->daterender = $daterender; + } else { + $this->daterender = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $daterender, new DateTimeZone('Europe/Paris')); + } + } + + + public function setcss($css) + { + if (strlen($css) < self::LENTEXT and is_string($css)) { + $this->css = strip_tags(trim(strtolower($css))); + } + } + + + public function setquickcss($quickcss) + { + if(is_string($quickcss)) { + $quickcss = json_decode($quickcss, true); + } + if(is_array($quickcss)) { + $this->quickcss = $quickcss; + } + } + + public function setjavascript($javascript) + { + if(strlen($javascript < self::LENTEXT && is_string($javascript))) { + $this->javascript = $javascript; + } + } + + + public function sethtml($html) + { + if(strlen($html < self::LENTEXT && is_string($html))) { + $this->html = $html; + } + } + + public function setheader($header) + { + if(strlen($header < self::LENTEXT && is_string($header))) { + $this->header = $header; + } + } + + public function setsection($section) + { + if (strlen($section) < self::LENTEXT and is_string($section)) { + $this->section = $section; + } + } + + public function setnav($nav) + { + if (strlen($nav) < self::LENTEXT and is_string($nav)) { + $this->nav = $nav; + } + } + + public function setaside($aside) + { + if (strlen($aside) < self::LENTEXT and is_string($aside)) { + $this->aside = $aside; + } + } + + public function setfooter($footer) + { + if (strlen($footer) < self::LENTEXT and is_string($footer)) { + $this->footer = $footer; + } + } + + public function setrender($render) + { + $this->render = $render; + } + + public function setsecure($secure) + { + if ($secure >= 0 and $secure <= self::SECUREMAX) { + $this->secure = intval($secure); + } + } + + public function setinvitepassword($invitepassword) + { + if(is_string($invitepassword) && strlen($invitepassword) < self::LEN) { + $this->invitepassword = $invitepassword; + } + } + + public function setinterface($interface) + { + if(in_array($interface, self::TABS)) + { + $this->interface = $interface; + } + } + + public function setlinkfrom($linkfrom) + { + if (!empty($linkfrom) && strlen($linkfrom) < self::LEN && is_string($linkfrom)) { + $linkfrom = strip_tags(trim(strtolower($linkfrom))); + $linkfromlist = explode(", ", $linkfrom); + $this->linkfrom = $linkfromlist; + } else { + $this->linkfrom = []; + } + } + + public function setlinkto($linkto) + { + if (is_array($linkto)) { + $this->linkto = $linkto; + } + + + } + + public function settemplate($template) + { + if(is_string($template)) { + $template = json_decode($template, true); + } + if(is_array($template)) { + $this->template = $template; + } + } + + public function setaffcount($affcount) + { + if(is_int($affcount)) { + $this->affcount = $affcount; + } elseif(is_numeric($affcount)) { + $this->affcount = intval($affcount); + } + } + + public function seteditcount($editcount) + { + if(is_int($editcount)) { + $this->editcount = $editcount; + } elseif(is_numeric($editcount)) { + $this->editcount = intval($editcount); + } + } + + +} + + +?> \ No newline at end of file diff --git a/w/class/class.w.aff.php b/w/class/class.w.aff.php deleted file mode 100644 index adb8b61..0000000 --- a/w/class/class.w.aff.php +++ /dev/null @@ -1,1161 +0,0 @@ -setsession($session); - } - - - - // ____________________________________________________ C O N F I G ______________________________________________ - - - public function configform() - { - ?> -

Config file does not exist yet, or maybe you deleted it ? Anyway, it is time to set it :

-
- - Database settings
-
-
-
-
- Domain name settings
-
- W_cms settings
-
- - - - - (You can change everything later, set at least your admin password, and don't forget it !)
- -
- secure() == 1) { - echo 'This article is private'; - } - if ($art->secure() == 2) { - echo "This article is not published yet"; - } - - if ($app->session() >= $art->secure()) { - ?> - -
-

titre() ?>

-
soustitre() ?>
-
-
html($app) ?>
- session() >= self::$edit) { - - ?> - -
- - textarea{font-size: ' . $fontsize . '}'; - $tablist = ['html' => $art->md(), 'css' => $art->css(), 'aside' => 'NOT WORKING', 'footer' => 'NOT WORKING']; - - $this->tabs($tablist, 'html'); - - ?> - -
- - - - - 👁 - - id() ?> - - - -
- - - - - - -
- - - '; - foreach ($tablist as $key => $value) { - echo '
'; - if ($key == $opentab) { - echo ''; - } else { - echo ''; - } - echo ''; - echo '
'; - echo ''; - echo '
'; - echo '
'; - } - - echo ''; -} - - - -public function copy(Art $art, $list) -{ - ?> -
-
-
- - - '; - ?> - - - - - - - - - -
-
-
- - - - - - - - - <?= $title ?> - - - - - - - - - - ' : '' ?> - <?= $edit == 1 ? '✏' : '' ?> <?= $art->titre() ?> - - - - - - - - - - - ❓ <?= $id ?> - - - - - '; - echo ' '; - echo ' '; -} - -public function lien($getlist, $lien, App $app) -{ - echo '
'; - echo '
    '; - foreach ($getlist as $item) { - if (in_array($lien, $item->lien('array'))) { - echo '
  • ' . $item->titre() . ' - ' . $item->intro(); - if ($app->session() >= $app::EDITOR) { - echo ' - modifier - liens
  • '; - } else { - echo ''; - } - } - } - echo '
'; - echo '
'; -} - - - -public function dump($getlist) -{ - echo ' '; -} - -public function header() -{ - echo '
'; - $this->search(); - echo '
'; -} - - -public function home2table(App $app, $getlist, $masslist) -{ - echo '
'; - echo '

Articles

'; - echo '
'; - - ?> -
-

Mass Edit

- - - - - - - - - - - - -
- - session() >= $app::EDITOR) { - echo ''; - echo ''; - foreach ($getlist as $item) { - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - } - echo '
xtitletagsummary↘ to↗ fromlast modificationdate of creationprivacydisplay
' . $item->titre() . '' . $item->tag('sort') . '' . $item->intro() . '' . $item->liento('sort') . '' . $item->lien('sort') . '' . $item->datemodif('hrdi') . '' . $item->datecreation('hrdi') . '' . $item->secure('string') . '👁
'; - echo '
'; - echo '
'; - } -} - -public function option(App $app, Opt $opt) -{ - if ($app->session() >= $app::EDITOR) { - echo '
'; - echo '

Options

'; - echo '
'; - echo ''; - echo '⬅'; - - - $this->optionsort($opt); - $this->optionprivacy($opt); - $this->optiontag($opt); - - if ($opt->invert() == 1) { - echo ''; - } else { - echo ''; - } - echo '
'; - - } - -} - -public function optiontag(Opt $opt) -{ - - echo '
Tag
    '; - - - echo 'tagcompare() == "OR" ? "checked" : "") . ' >'; - echo 'tagcompare() == "AND" ? "checked" : "") . '>'; - - //echo ''; - - $in = false; - $out = false; - $limit = 1; - foreach ($opt->taglist() as $tagfilter => $count) { - - if ($count > $limit && $in == false) { - echo '
    >' . $limit . ''; - $in = true; - } - if ($count == $limit && $in == true && $out == false) { - echo '
    ' . $limit . ''; - $out = true; - } - - if (in_array($tagfilter, $opt->tagfilter())) { - - echo '
  • '; - } else { - echo '
  • '; - } - } - if ($in = true || $out = true) { - echo '
    '; - } - echo '
'; - -} - -public function optionprivacy(Opt $opt) -{ - echo '
Privacity
    '; - echo '
  • secure() == 4 ? "checked" : "") . ' />
  • '; - echo '
  • secure() == 2 ? "checked" : "") . ' />
  • '; - echo '
  • secure() == 1 ? "checked" : "") . ' />
  • '; - echo '
  • secure() == 0 ? "checked" : "") . ' />
  • '; - echo '
'; -} - -public function optionsort(Opt $opt) -{ - echo '
Sort'; - echo ''; - echo '
'; - echo 'order() == '1' ? "checked" : "") . ' />'; - echo '
'; - echo 'order() == '-1' ? "checked" : "") . ' />'; - - echo '
'; - -} - -public function mapheader() -{ - $selectcurve = isset($_GET['curve']) ? $_GET['curve'] : 'basis'; - $selectorient = isset($_GET['orient']) ? $_GET['orient'] : 'TD'; - $curves = ['linear', 'basis', 'natural', 'step', 'stepAfter', 'stepBefore', 'monotoneX', 'monotoneY']; - $orients = ['TD', 'LR', 'BT', 'RL']; - ?> -

Map

- -
- - - - - -
- - - - - - - -
- - graph - -
- - - session() >= $app::EDITOR) { - echo ' '; - } -} - -public function nav($app) -{ - echo ' - session() >= $app::EDITOR) { - - ?> -
- Add Media -
- - - - -
-
- -
- Media List - -
- - - - id() . '.' . $item->extension(); - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - if ($item->type() == 'image') { - echo ''; - echo ''; - } elseif ($item->type() == 'sound') { - echo ''; - echo ''; - } else { - echo ''; - echo ''; - } - echo ''; - echo ''; - - } - - - ?> - - -
xNameextensionwidthheightsizecodethumbnail
' . $item->extension() . '' . $item->width() . '' . $item->height() . '' . readablesize($item->size()) . '👁' . $item->id() . '
- - - - -
- - -
- - - '; - echo 'Media List'; - - echo '
'; - - echo '
'; - - echo '
    '; - - foreach ($app->getlisterrecord($dir) as $item) { - echo '
  • '; - - ?> - - - - - id()) . '.' . $item->extension(); - - echo '
    '; - var_dump($item->size()); - var_dump(intval($item->size())); - echo 'filesize = ' . readablesize(intval($item->size())); - echo '
    '; - echo 'extension = ' . $item->extension(); - echo '
    '; - - ?> - - - - - - '; - } - - echo '
'; - - ?> - - - -
- - - - '; - echo ''; - - - } - - - //______________________________________________________ A D M _________________________________________________ - - - - public function admincss(Config $config, $app) - { - ?> -
-

CSS

- -

CSS file :

- -

- - '; - echo 'Edit current CSS'; - echo '
'; - echo ''; - echo ''; - echo ''; - echo '
'; - echo ''; - } - - ?> - -
- - -
- - -

Database

- -
- Database credentials - -

Fill this sections with the database settings you want to connect to

- -
- - - - - - - - - - -
- -
- - -
- - -
- -

Passwords

- -
- Admin - -

Edit your own admin password. You can find it in the config.w.json file, in the root of your website folder.

- -
- - - - -
- -
-
- Others - -

Use this section to set all the others users passwords. They cant access this page, so they cant change it by themselves.

- -
- - - - - - - - -
- -
-
- - - - - - -
- -

Table

- - - -

Database status :

- - -

Current Table : arttable(); ?>

-
- Select Table -

The table is where all your articles are stored, select the one you want to use.

- -
- - - -
- -
- -
- Add table - -

Create new table in your database. You need at least one to use W_cms

- -
- - - -
- -
- -
- Duplicate Table -

If you want to save versions of your work.

- -
- - - - - - -
- -
- -
- - -
-

Display

-
- Update favicon -
- - -
-
-
- Change desktop background color -
- - - - -
-
-
- = 0) { - $session = intval($session); - $this->session = $session; - } - } - - //______________________________________________________ G E T _________________________________________________ - - public function session() - { - return $this->session; - } - - -} - - - -?> \ No newline at end of file diff --git a/w/class/class.w.app.php b/w/class/class.w.app.php deleted file mode 100644 index 922740b..0000000 --- a/w/class/class.w.app.php +++ /dev/null @@ -1,770 +0,0 @@ -setsession($this::FREE); - } - - public function setbdd(Config $config) - { - $caught = true; - - try { - $this->bdd = new PDO('mysql:host=' . $config->host() . ';dbname=' . $config->dbname() . ';charset=utf8', $config->user(), $config->password(), array(PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT)); - //$this->bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - } catch (PDOException $e) { - $caught = false; - echo '

Error 500, database offline

'; - if ($this->session() >= self::EDITOR) { - echo '

Error : ' . $e->getMessage() . '

'; - if ($this->session() == self::ADMIN) { - echo '

Go to the Admin Panel to edit your database credentials

'; - } else { - echo '

Logout and and come back with an admin password to edit the database connexions settings.

'; - } - } else { - echo '

Homepage for admin login (connect on the top right side)

'; - } - exit; - } - - return $caught; - - } - - public function settable(Config $config) - { - if (!empty($config->arttable())) { - $this->arttable = $config->arttable(); - } else { - echo '

Table Error

'; - - if ($this->session() >= self::EDITOR) { - if ($this->session() == self::ADMIN) { - echo '

Go to the Admin Panel to select or add an Article table

'; - } else { - echo '

Logout and and come back with an admin password to edit table settings.

'; - } - } else { - echo '

Homepage for admin login (connect on the top right side)

'; - } - $caught = false; - exit; - } - } - - public function bddinit(Config $config) - { - $test = $this->setbdd($config); - if ($test) { - $this->settable($config); - } - } - - -// _________________________________________ C O N F I G ____________________________________ - - public function readconfig() - { - if (file_exists(self::CONFIG_FILE)) { - $current = file_get_contents(self::CONFIG_FILE); - $donnees = json_decode($current, true); - return new Config($donnees); - } else { - return 0; - } - - } - - public function createconfig(array $donnees) - { - return new Config($donnees); - } - - - public function savejson(string $json) - { - file_put_contents(self::CONFIG_FILE, $json); - } - - - - - - -// ___________________________________________ A R T ____________________________________ - - public function add(Art $art) - { - - if ($this->exist($art->id())) { - echo '

cet id existe deja

'; - } else { - - $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - - $request = 'INSERT INTO ' . $this->arttable . '(id, titre, soustitre, intro, tag, datecreation, datemodif, css, html, secure, couleurtext, couleurbkg, couleurlien, couleurlienblank, lien, template) VALUES(:id, :titre, :soustitre, :intro, :tag, :datecreation, :datemodif, :css, :html, :secure, :couleurtext, :couleurbkg, :couleurlien, :couleurlienblank, :lien, :template)'; - - $q = $this->bdd->prepare($request); - - $q->bindValue(':id', $art->id()); - $q->bindValue(':titre', $art->titre()); - $q->bindValue(':soustitre', $art->soustitre()); - $q->bindValue(':intro', $art->intro()); - $q->bindValue(':tag', $art->tag('string')); - $q->bindValue(':datecreation', $now->format('Y-m-d H:i:s')); - $q->bindValue(':datemodif', $now->format('Y-m-d H:i:s')); - $q->bindValue(':css', $art->css()); - $q->bindValue(':html', $art->md()); - $q->bindValue(':secure', $art->secure()); - $q->bindValue(':couleurtext', $art->couleurtext()); - $q->bindValue(':couleurbkg', $art->couleurbkg()); - $q->bindValue(':couleurlien', $art->couleurlien()); - $q->bindValue(':couleurlienblank', $art->couleurlienblank()); - $q->bindValue(':lien', $art->lien('string')); - $q->bindValue(':template', $art->template()); - - $q->execute(); - } - } - - public function add2(Art2 $art) - { - - if ($this->exist($art->id())) { - echo 'idalreadyexist'; - } else { - - $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - - $request = 'INSERT INTO ' . $this->arttable . '(id, title, description, tag, date, datecreation, datemodif, daterender, css, quickcss, javascript, html, header, section, nav, aside, footer, render, secure, invitepassword, interface, linkfrom, template, affcount, editcount) - VALUES(:id, :title, :description, :tag, :date, :datecreation, :datemodif, :daterender, :css, :quickcss, :javascript, :html, :header, :section, :nav, :aside, :footer, :render, :secure, :invitepassword, :interface, :linkfrom, :template, :affcount, :editcount)'; - - $q = $this->bdd->prepare($request); - - $q->bindValue(':id', $art->id()); - $q->bindValue(':title', $art->title()); - $q->bindValue(':description', $art->description()); - $q->bindValue(':tag', $art->tag('string')); - $q->bindValue(':date', $now->format('Y-m-d H:i:s')); - $q->bindValue(':datecreation', $now->format('Y-m-d H:i:s')); - $q->bindValue(':datemodif', $now->format('Y-m-d H:i:s')); - $q->bindValue(':daterender', $now->format('Y-m-d H:i:s')); - $q->bindValue(':css', $art->css()); - $q->bindValue(':quickcss', $art->quickcss('string')); - $q->bindValue(':javascript', $art->javascript()); - $q->bindValue(':html', $art->html()); - $q->bindValue(':header', $art->header()); - $q->bindValue(':section', $art->section()); - $q->bindValue(':nav', $art->nav()); - $q->bindValue(':aside', $art->aside()); - $q->bindValue(':footer', $art->footer()); - $q->bindValue(':render', $art->render()); - $q->bindValue(':secure', $art->secure()); - $q->bindValue(':invitepassword', $art->invitepassword()); - $q->bindValue(':interface', $art->interface()); - $q->bindValue(':linkfrom', $art->linkfrom('string')); - $q->bindValue(':template', $art->template('string')); - $q->bindValue(':affcount', $art->affcount()); - $q->bindValue(':editcount', $art->editcount()); - - $q->execute(); - } - } - - public function delete(Art $art) - { - $req = $this->bdd->prepare('DELETE FROM ' . $this->arttable . ' WHERE id = :id '); - $req->execute(array('id' => $art->id())); - $req->closeCursor(); - } - - public function get($id) - { - $req = $this->bdd->prepare('SELECT * FROM ' . $this->arttable . ' WHERE id = :id '); - $req->execute(array('id' => $id)); - $donnees = $req->fetch(PDO::FETCH_ASSOC); - - return new Art($donnees); - - $req->closeCursor(); - - } - - - - public function update(Art $art) - { - $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - - $q = $this->bdd->prepare('UPDATE ' . $this->arttable . ' SET titre = :titre, soustitre = :soustitre, intro = :intro, tag = :tag, datecreation = :datecreation, datemodif = :datemodif, css = :css, html = :html, secure = :secure, couleurtext = :couleurtext, couleurbkg = :couleurbkg, couleurlien = :couleurlien, couleurlienblank = :couleurlienblank, lien = :lien, template = :template WHERE id = :id'); - - $q->bindValue(':id', $art->id()); - $q->bindValue(':titre', $art->titre()); - $q->bindValue(':soustitre', $art->soustitre()); - $q->bindValue(':intro', $art->intro()); - $q->bindValue(':tag', $art->tag('string')); - $q->bindValue(':datecreation', $art->datecreation('string')); - $q->bindValue(':datemodif', $now->format('Y-m-d H:i:s')); - $q->bindValue(':css', $art->css()); - $q->bindValue(':html', $art->md()); - $q->bindValue(':secure', $art->secure()); - $q->bindValue(':couleurtext', $art->couleurtext()); - $q->bindValue(':couleurbkg', $art->couleurbkg()); - $q->bindValue(':couleurlien', $art->couleurlien()); - $q->bindValue(':couleurlienblank', $art->couleurlienblank()); - $q->bindValue(':lien', $art->lien('string')); - $q->bindValue(':template', $art->template()); - - $q->execute(); - } - - public function update2(Art2 $art) - { - $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - - $request = 'UPDATE ' . $this->arttable . '(id, title, description, tag, date, datecreation, datemodif, daterender, css, quickcss, javascript, html, header, section, nav, aside, footer, render, secure, invitepassword, interface, linkfrom, template, affcount, editcount) - VALUES(:id, :title, :description, :tag, :date, :datecreation, :datemodif, :daterender, :css, :quickcss, :javascript, :html, :header, :section, :nav, :aside, :footer, :render, :secure, :invitepassword, :interface, :linkfrom, :template, :affcount, :editcount) WHERE id = :id'; - - $q = $this->bdd->prepare($request); - - $q->bindValue(':id', $art->id()); - $q->bindValue(':title', $art->title()); - $q->bindValue(':description', $art->description()); - $q->bindValue(':tag', $art->tag('string')); - $q->bindValue(':date', $now->format('Y-m-d H:i:s')); - $q->bindValue(':datecreation', $now->format('Y-m-d H:i:s')); - $q->bindValue(':datemodif', $now->format('Y-m-d H:i:s')); - $q->bindValue(':daterender', $now->format('Y-m-d H:i:s')); - $q->bindValue(':css', $art->css()); - $q->bindValue(':quickcss', $art->quickcss('string')); - $q->bindValue(':javascript', $art->javascript()); - $q->bindValue(':html', $art->html()); - $q->bindValue(':header', $art->header()); - $q->bindValue(':section', $art->section()); - $q->bindValue(':nav', $art->nav()); - $q->bindValue(':aside', $art->aside()); - $q->bindValue(':footer', $art->footer()); - $q->bindValue(':render', $art->render()); - $q->bindValue(':secure', $art->secure()); - $q->bindValue(':invitepassword', $art->invitepassword()); - $q->bindValue(':interface', $art->interface()); - $q->bindValue(':linkfrom', $art->linkfrom('string')); - $q->bindValue(':template', $art->template('string')); - $q->bindValue(':affcount', $art->affcount()); - $q->bindValue(':editcount', $art->editcount()); - - $q->execute(); - } - - - - - //____________________________________________ L S T ______________________________ - - - - public function getlister(array $selection = ['id'], array $opt = []) - { - // give an array using SELECTION columns and sort and desc OPTIONS - - $default = ['tri' => 'id', 'desc' => 'DESC']; - $opt = array_update($default, $opt); - - $list = []; - $option = ['datecreation', 'titre', 'id', 'intro', 'datemodif', 'tag', 'secure']; - if (is_array($selection) && is_string($opt['tri']) && strlen($opt['tri']) < 16 && is_string($opt['desc']) && strlen($opt['desc']) < 5 && in_array($opt['tri'], $option)) { - - $selection = implode(", ", $selection); - - $select = 'SELECT ' . $selection . ' FROM ' . $this->arttable . ' ORDER BY ' . $opt['tri'] . ' ' . $opt['desc']; - $req = $this->bdd->query($select); - while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) { - $list[] = new Art($donnees); - } - return $list; - } - } - - - - - - - public function getlisteropt(Opt $opt) - { - - $artlist = []; - - $select = 'SELECT ' . $opt->col('string') . ' FROM ' . $this->arttable; - $req = $this->bdd->query($select); - while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) { - $artlist[] = new Art($donnees); - } - return $artlist; - - } - - public function listcalclien(&$artlist) - { - foreach ($artlist as $art) { - $art->calcliento($artlist); - } - } - - public function artcompare($art1, $art2, $method = 'id', $order = 1) - { - $result = ($art1->$method('sort') <=> $art2->$method('sort')); - return $result * $order; - - } - - public function buildsorter($sortby, $order) - { - return function ($art1, $art2) use ($sortby, $order) { - $result = $this->artcompare($art1, $art2, $sortby, $order); - return $result; - }; - } - - - - public function artlistsort(&$artlist, $sortby, $order = 1) - { - return usort($artlist, $this->buildsorter($sortby, $order)); - } - - - - - - - public function filtertagfilter(array $artlist, array $tagchecked, $tagcompare = 'OR') - { - - $filteredlist = []; - foreach ($artlist as $art) { - if (empty($tagchecked)) { - $filteredlist[] = $art->id(); - } else { - $inter = (array_intersect($art->tag('array'), $tagchecked)); - if ($tagcompare == 'OR') { - if (!empty($inter)) { - $filteredlist[] = $art->id(); - } - } elseif ($tagcompare == 'AND') { - if (!array_diff($tagchecked, $art->tag('array'))) { - $filteredlist[] = $art->id(); - } - } - } - } - return $filteredlist; - } - - public function filtersecure(array $artlist, $secure) - { - $filteredlist = []; - foreach ($artlist as $art) { - if ($art->secure() == intval($secure)) { - $filteredlist[] = $art->id(); - } elseif (intval($secure) >= 4) { - $filteredlist[] = $art->id(); - } - } - return $filteredlist; - } - - - public function lister() - { - $req = $this->bdd->query(' SELECT * FROM ' . $this->arttable . ' ORDER BY id '); - $donnees = $req->fetchAll(PDO::FETCH_ASSOC); - $req->closeCursor(); - return $donnees; - - } - - public function tag(array $artlist, $tagchecked) - { - $artcheckedlist = []; - foreach ($artlist as $art) { - if (in_array($tagchecked, $art->tag('array'))) { - $artcheckedlist[] = $art; - } - } - return $artcheckedlist; - } - - public function taglist(array $artlist, array $tagcheckedlist) - { - $taglist = []; - foreach ($tagcheckedlist as $tag) { - $taglist[$tag] = $this->tag($artlist, $tag); - } - return $taglist; - } - - public function count() - { - return $this->bdd->query(' SELECT COUNT(*) FROM ' . $this->arttable . ' ')->fetchColumn(); - } - - public function exist($id) - { - $req = $this->bdd->prepare(' SELECT COUNT(*) FROM ' . $this->arttable . ' WHERE id = :id '); - $req->execute(array('id' => $id)); - $donnees = $req->fetch(PDO::FETCH_ASSOC); - - return (bool)$donnees['COUNT(*)']; - } - - - // __________________________________________ T A B L E ________________________________________________________ - - - public function tableexist($dbname, $tablename) - { - - $req = $this->bdd->prepare('SELECT COUNT(*) - FROM information_schema.tables - WHERE table_schema = :dbname AND - table_name like :tablename'); - $req->execute(array( - 'dbname' => $dbname, - 'tablename' => $tablename - )); - $donnees = $req->fetch(PDO::FETCH_ASSOC); - $req->closeCursor(); - $exist = intval($donnees['COUNT(*)']); - return $exist; - - - - - } - - public function tablelist($dbname) - { - $request = 'SHOW TABLES IN ' . $dbname; - $req = $this->bdd->query($request); - $donnees = $req->fetchAll(PDO::FETCH_ASSOC); - $req->closeCursor(); - - $arttables = []; - foreach ($donnees as $table) { - $arttables[] = $table['Tables_in_' . $dbname]; - } - return $arttables; - - - } - - - public function addtable($dbname, $tablename) - { - - if (!$this->tableexist($dbname, $tablename)) { - - $table = "CREATE TABLE `$tablename` ( - `id` varchar(255) NOT NULL DEFAULT 'art', - `titre` varchar(255) NOT NULL DEFAULT 'titre', - `soustitre` varchar(255) NOT NULL DEFAULT 'soustitre', - `intro` varchar(255) NOT NULL DEFAULT 'intro', - `tag` varchar(255) NOT NULL DEFAULT 'sans tag,', - `datecreation` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `datemodif` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `css` text, - `html` text, - `secure` int(1) NOT NULL DEFAULT '0', - `couleurtext` varchar(7) NOT NULL DEFAULT '#000000', - `couleurbkg` varchar(7) NOT NULL DEFAULT '#ffffff', - `couleurlien` varchar(7) NOT NULL DEFAULT '#2a3599', - `couleurlienblank` varchar(7) NOT NULL DEFAULT '#2a8e99', - `lien` varchar(255) DEFAULT NULL, - `template` varchar(255) DEFAULT NULL - )"; - - $alter = "ALTER TABLE `$tablename` - ADD PRIMARY KEY (`id`)"; - - $req = $this->bdd->query($table); - $req = $this->bdd->query($alter); - - return 'tablecreated'; - } else { - return 'tablealreadyexist'; - } - } - - - - public function tableduplicate($dbname, $arttable, $tablename) - { - $arttable = strip_tags($arttable); - $tablename = str_clean($tablename); - if ($this->tableexist($dbname, $arttable) && !$this->tableexist($dbname, $tablename)) { - $duplicate = " CREATE TABLE `$tablename` LIKE `$arttable`;"; - $alter = "ALTER TABLE `$tablename` ADD PRIMARY KEY (`id`);"; - $insert = "INSERT `$tablename` SELECT * FROM `$arttable`;"; - - - $req = $this->bdd->query($duplicate . $alter . $insert); - - return 'tableduplicated'; - } else { - return 'tablealreadyexist'; - } - } - - - - -// __________________________________________ M E D ________________________________________________________ - - public function addmedia(array $file, $maxsize = 2 ** 24, $id) - { - $message = 'runing'; - $id = strtolower(strip_tags($id)); - $id = str_replace(' ', '_', $id); - if (isset($file) and $file['media']['error'] == 0 and $file['media']['size'] < $maxsize) { - $infosfichier = pathinfo($file['media']['name']); - $extension_upload = $infosfichier['extension']; - $extensions_autorisees = $this::MEDIA_EXTENSIONS; - if (in_array($extension_upload, $extensions_autorisees)) { - if (!file_exists($this::MEDIA_DIR . $id . '.' . $extension_upload)) { - - $extension_upload = strtolower($extension_upload); - $uploadok = move_uploaded_file($file['media']['tmp_name'], $this::MEDIA_DIR . $id . '.' . $extension_upload); - if ($uploadok) { - $message = 'uploadok'; - } else { - $message = 'uploaderror'; - } - } else { - $message = 'filealreadyexist'; - - } - } - } else { - $message = 'filetoobig'; - - } - - return $message; - } - - - public function getmedia($entry, $dir) - { - $fileinfo = pathinfo($entry); - - $filepath = $fileinfo['dirname'] . '.' . $fileinfo['extension']; - - $donnees = array( - 'id' => str_replace('.' . $fileinfo['extension'], '', $fileinfo['filename']), - 'path' => $dir, - 'extension' => $fileinfo['extension'] - ); - - - - return new Media($donnees); - - } - - public function getlistermedia($dir, $type = "all") - { - if ($handle = opendir($dir)) { - $list = []; - while (false !== ($entry = readdir($handle))) { - if ($entry != "." && $entry != "..") { - - $media = $this->getmedia($entry, $dir); - - - $media->analyse(); - - if (in_array($type, self::MEDIA_TYPES)) { - if ($media->type() == $type) { - $list[] = $media; - } - } else { - $list[] = $media; - } - - - } - } - return $list; - } - - return $list; - - } - - - - - //_________________________________________________________ R E C ________________________________________________________ - - - public function getlisterrecord($dir) - { - if ($handle = opendir($dir)) { - $list = []; - while (false !== ($entry = readdir($handle))) { - if ($entry != "." && $entry != "..") { - $fileinfo = pathinfo($entry); - - $filepath = $dir . $fileinfo['filename'] . '.' . $fileinfo['extension']; - - list($width, $height, $type, $attr) = getimagesize($filepath); - $filesize = filesize($filepath); - - $donnees = array( - 'id' => str_replace('.' . $fileinfo['extension'], '', $fileinfo['filename']), - 'path' => $fileinfo['dirname'], - 'extension' => $fileinfo['extension'], - 'size' => $filesize - ); - - $list[] = new Record($donnees); - - } - } - } - - return $list; - - - - } - - - - //_________________________________________________________ A D M ________________________________________________________ - - - - public function dirlist($dir, $extension) - { - if ($handle = opendir($dir)) { - $list = []; - while (false !== ($entry = readdir($handle))) { - if ($entry != "." && $entry != ".." && pathinfo($entry)['extension'] == $extension) { - - $list[] = $entry; - - } - } - return $list; - } - } - - public function downloadtable() - { - - } - - - - - // ________________________________________________________ M A P ________________________________________________________ - - - public function map(array $getlister, $lb = PHP_EOL) - { - - $map = ""; - $link = ""; - $style = ""; - foreach ($getlister as $item) { - if($item->secure() == 2) { - $style = $style . $lb . $item->id() . '{' . $item->titre() . '}'; - } elseif ($item->secure() == 1) { - $style = $style . $lb . $item->id() . '(' . $item->titre() . ')'; - - } else { - $style = $style . $lb . $item->id() . '((' . $item->titre() . '))'; - } - foreach ($item->lien('array') as $lien) { - $map = $map . $lb . $item->id() . ' --> ' . $lien; - $link = $link . $lb . 'click ' . $lien . ' "./?id=' . $lien . '"'; - - } - $link = $link . $lb . 'click ' . $item->id() . ' "./?id=' . $item->id() . '"'; - } - return $map . $link . $style; - - } - - - - - - //_________________________________________________________ S E S ________________________________________________________ - - public function login($pass, $config) - { - if (strip_tags($pass) == $config->admin()) { - return $level = self::ADMIN; - } elseif (strip_tags($pass) == $config->read()) { - return $level = self::READ; - } elseif (strip_tags($pass) == $config->editor()) { - return $level = self::EDITOR; - } elseif (strip_tags($pass) == $config->invite()) { - return $level = self::INVITE; - } - } - - public function logout() - { - return $level = 0; - } - - // ________________________________________________________ S E T ___________________________________________________ - - - public function setsession($session) - { - $this->session = $session; - } - - - - - //_________________________________________________________ G E T ________________________________________________________ - - public function session() - { - return $this->session; - } - - -} -?> \ No newline at end of file diff --git a/w/class/class.w.art.php b/w/class/class.w.art.php deleted file mode 100644 index 001b29d..0000000 --- a/w/class/class.w.art.php +++ /dev/null @@ -1,501 +0,0 @@ -hydrate($donnees); - } - - public function hydrate(array $donnees) - { - foreach ($donnees as $key => $value) { - $method = 'set' . $key; - - if (method_exists($this, $method)) { - $this->$method($value); - } - } - } - - public function reset() - { - $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - - $this->settitre($this->id()); - $this->setsoustitre(''); - $this->setintro(''); - $this->settag(''); - $this->setdatecreation($now); - $this->setcss(''); - $this->sethtml(''); - $this->setsecure(2); - $this->setcouleurtext('#000000'); - $this->setcouleurbkg('#FFFFFF'); - $this->setcouleurlien('#000000'); - $this->setcouleurlienblank('#000000'); - $this->setlien(''); - $this->settemplate(''); - } - - public function updatelien() - { - $this->lien = []; - $this->lien = array_unique(search($this->md(true), self::DEBUT, self::FIN)); - - } - - public static function classvarlist() - { - $classvarlist = []; - foreach (get_class_vars(__class__) as $var => $default) { - $classvarlist[] = $var; - } - return ['artvarlist' => $classvarlist]; - } - - - - - public function calcliento($getlist) - { - $liento = []; - foreach ($getlist as $lien) { - if (in_array($this->id(), $lien->lien('array'))) { - $liento[] = $lien->id(); - } - } - $this->setliento($liento); - } - - - public function autotaglist() - { - $pattern = "/%%(\w*)%%/"; - preg_match_all($pattern, $this->md(), $out); - return $out[1]; - - } - - public function autotaglistupdate($taglist) - { - foreach ($taglist as $tag => $artlist) { - $replace = ''; - $this->html = str_replace('%%' . $tag . '%%', $replace, $this->html); - } - } - - public function autotaglistcalc($taglist) - { - foreach ($taglist as $tag => $artlist) { - foreach ($artlist as $art) { - if(!in_array($art->id(), $this->lien('array')) && $art->id() != $this->id()) { - $this->lien[] = $art->id(); - } - } - } - } - - - // _____________________________________________________ G E T ____________________________________________________ - - public function id($type = 'string') - { - return $this->id; - } - - public function titre($type = 'string') - { - return $this->titre; - } - - public function soustitre($type = 'string') - { - return $this->soustitre; - } - - public function intro($type = 'string') - { - return $this->intro; - } - - public function tag($option) - { - if ($option == 'string') { - return implode(", ", $this->tag); - } elseif ($option == 'array') { - return $this->tag; - } elseif ($option == 'sort') { - return count($this->tag); - } - } - - public function datecreation($option) - { - if ($option == 'string') { - return $this->datecreation->format('Y-m-d H:i:s'); - } elseif ($option == 'date' || $option == 'sort') { - return $this->datecreation; - } elseif ($option == 'hrdi') { - $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - return hrdi($this->datecreation->diff($now)); - } - } - - - public function datemodif($option) - { - if ($option == 'string') { - return $this->datemodif->format('Y-m-d H:i:s'); - } elseif ($option == 'date' || $option == 'sort') { - return $this->datemodif; - } elseif ($option == 'hrdi') { - $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - return hrdi($this->datemodif->diff($now)); - } - } - - public function css($type = 'string') - { - return $this->css; - } - - public function cssprint() - { - return $cssprint; - } - - public function csstemplate(App $app) - { - $data = []; - $temp = ''; - if (!empty($this->template())) { - if ($app->exist($this->template()) and !in_array($this->template(), $data)) { - $template = $app->get($this->template()); - $temp = $temp . $template->css($app); - $data[] = $template->id(); - - } - - } - $cssprint = str_replace('url(/', 'url('.$app::MEDIA_DIR , $temp . $this->css); - return $cssprint; - } - - public function md($expand = false) - { - if ($expand == true) { - $md = str_replace('](=', '](?id=', $this->html); - } else { - $md = $this->html; - } - return $md; - } - - public function html(App $app) - { - - // %%%% TITLE & DESCIPTION - $html = str_replace('%TITLE%', $this->titre(), $this->html); - $html = str_replace('%DESCRIPTION%', $this->intro(), $html); - - $parser = new MarkdownExtra; - - // id in headers - $parser->header_id_func = function ($header) { - return preg_replace('/[^\w]/', '', strtolower($header)); - }; - $html = $parser->transform($html); - - // replace = > ?id= - $html = str_replace('href="=', 'href="?id=', $html); - - - // infobulles tooltip - foreach ($this->lien('array') as $id) { - $title = "Cet article n'existe pas encore"; - foreach ($app->getlister(['id', 'intro']) as $item) { - if ($item->id() == $id) { - $title = $item->intro(); - } - } - $lien = 'href="?id=' . $id . '"'; - $titlelien = ' title="' . $title . '" ' . $lien; - $html = str_replace($lien, $titlelien, $html); - } - - if(!empty(strstr($html, '%SUMMARY%'))) { - - - - $html = str_replace('%SUMMARY%', sumparser($html), $html); - } - - - $html = str_replace('href="./media/', ' class="file" target="_blank" href="./media/', $html); - $html = str_replace('href="http', ' class="external" target="_blank" href="http', $html); - $html = str_replace('
', $html); - return $html; - - - } - - public function secure($type = 'int') - { - if ($type == 'string') { - if ($this->secure == 0) $secure = 'public'; - if ($this->secure == 1) $secure = 'private'; - if ($this->secure == 2) $secure = 'not published'; - return $secure; - } else { - return $this->secure; - } - } - - public function couleurtext() - { - return $this->couleurtext; - } - - public function couleurbkg() - { - return $this->couleurbkg; - } - - public function couleurlien() - { - return $this->couleurlien; - } - - public function couleurlienblank() - { - return $this->couleurlienblank; - } - - public function lien($option) - { - if ($option == 'string') { - $lien = implode(", ", $this->lien); - } elseif ($option == 'array') { - $lien = $this->lien; - } elseif ($option == 'sort') { - return count($this->lien); - } - return $lien; - - } - - public function liento($option) - { - if ($option == 'string') { - $liento = implode(", ", $this->liento); - } elseif ($option == 'array') { - $liento = $this->liento; - } elseif ($option == 'sort') { - return count($this->liento); - } - return $liento; - - } - - public function template($type = 'string') - { - return $this->template; - } - - - - - - // _____________________________________________________ S E T ____________________________________________________ - - public function setid($id) - { - if (strlen($id) < self::LEN and is_string($id)) { - $this->id = strip_tags(strtolower(str_replace(" ", "", $id))); - } - } - - public function settitre($titre) - { - if (strlen($titre) < self::LEN and is_string($titre)) { - $this->titre = strip_tags(trim($titre)); - } - } - - public function setsoustitre($soustitre) - { - if (strlen($soustitre) < self::LEN and is_string($soustitre)) { - $this->soustitre = strip_tags(trim($soustitre)); - } - } - - public function setintro($intro) - { - if (strlen($intro) < self::LEN and is_string($intro)) { - $this->intro = strip_tags(trim($intro)); - } - } - - public function settag($tag) - { - if (is_string($tag)) { - - if (strlen($tag) < self::LEN and is_string($tag)) { - $tag = strip_tags(trim(strtolower($tag))); - $tag = str_replace('*', '', $tag); - $tag = str_replace(' ', '', $tag); - - $taglist = explode(",", $tag); - $taglist = array_filter($taglist); - $this->tag = $taglist; - } - } elseif (is_array($tag)) { - $this->tag = $tag; - } - } - - public function setdatecreation($datecreation) - { - if ($datecreation instanceof DateTimeImmutable) { - $this->datecreation = $datecreation; - } else { - $this->datecreation = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $datecreation, new DateTimeZone('Europe/Paris')); - } - } - - public function setdatemodif($datemodif) - { - if ($datemodif instanceof DateTimeImmutable) { - $this->datemodif = $datemodif; - } else { - $this->datemodif = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $datemodif, new DateTimeZone('Europe/Paris')); - } - } - - public function setcss($css) - { - if (strlen($css) < self::LENHTML and is_string($css)) { - $this->css = strip_tags(trim(strtolower($css))); - } - } - - public function sethtml($html) - { - if (strlen($html) < self::LENHTML and is_string($html)) { - $this->html = $html; - } - } - - public function setsecure($secure) - { - if ($secure >= 0 and $secure <= self::SECUREMAX) { - $this->secure = intval($secure); - } - } - - public function setcouleurtext($couleurtext) - { - $couleurtext = strval($couleurtext); - if (strlen($couleurtext) <= self::LENCOULEUR) { - $this->couleurtext = strip_tags(trim($couleurtext)); - } - } - - public function setcouleurbkg($couleurbkg) - { - $couleurbkg = strval($couleurbkg); - if (strlen($couleurbkg) <= self::LENCOULEUR) { - $this->couleurbkg = strip_tags(trim($couleurbkg)); - } - } - - public function setcouleurlien($couleurlien) - { - $couleurlien = strval($couleurlien); - if (strlen($couleurlien) <= self::LENCOULEUR) { - $this->couleurlien = strip_tags(trim($couleurlien)); - } - } - - public function setcouleurlienblank($couleurlienblank) - { - $couleurlienblank = strval($couleurlienblank); - if (strlen($couleurlienblank) <= self::LENCOULEUR) { - $this->couleurlienblank = strip_tags(trim($couleurlienblank)); - } - } - - public function setlien($lien) - { - if (!empty($lien) && strlen($lien) < self::LEN && is_string($lien)) { - $lien = strip_tags(trim(strtolower($lien))); - $lienlist = explode(", ", $lien); - $this->lien = $lienlist; - } else { - $this->lien = []; - } - } - - public function setliento($liento) - { - if (is_array($liento)) { - $this->liento = $liento; - } - - - } - - public function settemplate($template) - { - $template = strip_tags($template); - if (strlen($template) == 0) { - $template = 'NULL'; - } - $this->template = $template; - } - - -} - - -?> \ No newline at end of file diff --git a/w/class/class.w.art2.php b/w/class/class.w.art2.php deleted file mode 100644 index feee0ca..0000000 --- a/w/class/class.w.art2.php +++ /dev/null @@ -1,585 +0,0 @@ -hydrate($donnees); - } - - public function hydrate(array $donnees) - { - foreach ($donnees as $key => $value) { - $method = 'set' . $key; - - if (method_exists($this, $method)) { - $this->$method($value); - } - } - } - - public function reset() - { - $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - - $this->settitle($this->id()); - $this->setdescription(''); - $this->settag([]); - $this->setdate($now); - $this->setdatecreation($now); - $this->setdatecreation($now); - $this->setdatemodif($now); - $this->setdaterender($now); - $this->setcss(''); - $this->setquickcss([]); - $this->setjavascript(''); - $this->sethtml(''); - $this->setheader(''); - $this->setsection(''); - $this->setnav(''); - $this->setaside(''); - $this->setfooter(''); - $this->setsecure(2); - $this->setinterface('section'); - $this->setlinkfrom([]); - $this->settemplate([]); - $this->setaffcount(0); - $this->seteditcount(0); - } - - public function updatelien() - { - $this->linkfrom = []; - $this->linkfrom = array_unique(search($this->md(true), self::DEBUT, self::FIN)); - - } - - public static function classvarlist() - { - $classvarlist = []; - foreach (get_class_vars(__class__) as $var => $default) { - $classvarlist[] = $var; - } - return ['artvarlist' => $classvarlist]; - } - - - - - public function calcliento($getlist) - { - $liento = []; - foreach ($getlist as $lien) { - if (in_array($this->id(), $lien->lien('array'))) { - $liento[] = $lien->id(); - } - } - $this->setliento($liento); - } - - - public function autotaglist() - { - $pattern = "/%%(\w*)%%/"; - preg_match_all($pattern, $this->md(), $out); - return $out[1]; - - } - - public function autotaglistupdate($taglist) - { - foreach ($taglist as $tag => $artlist) { - $replace = ''; - $this->html = str_replace('%%' . $tag . '%%', $replace, $this->html); - } - } - - public function autotaglistcalc($taglist) - { - foreach ($taglist as $tag => $artlist) { - foreach ($artlist as $art) { - if (!in_array($art->id(), $this->lien('array')) && $art->id() != $this->id()) { - $this->lien[] = $art->id(); - } - } - } - } - - - // _____________________________________________________ G E T ____________________________________________________ - - public function id($type = 'string') - { - return $this->id; - } - - public function title($type = 'string') - { - return $this->title; - } - - public function description($type = 'string') - { - return $this->description; - } - - public function tag($option) - { - if ($option == 'string') { - return implode(", ", $this->tag); - } elseif ($option == 'array') { - return $this->tag; - } elseif ($option == 'sort') { - return count($this->tag); - } - } - - public function date($option) - { - if ($option == 'string') { - return $this->date->format('Y-m-d H:i:s'); - } elseif ($option == 'date' || $option == 'sort') { - return $this->date; - } elseif ($option == 'hrdi') { - $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - return hrdi($this->date->diff($now)); - } - } - - public function datecreation($option) - { - if ($option == 'string') { - return $this->datecreation->format('Y-m-d H:i:s'); - } elseif ($option == 'date' || $option == 'sort') { - return $this->datecreation; - } elseif ($option == 'hrdi') { - $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - return hrdi($this->datecreation->diff($now)); - } - } - - - public function datemodif($option) - { - if ($option == 'string') { - return $this->datemodif->format('Y-m-d H:i:s'); - } elseif ($option == 'date' || $option == 'sort') { - return $this->datemodif; - } elseif ($option == 'hrdi') { - $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - return hrdi($this->datemodif->diff($now)); - } - } - - public function daterender($option) - { - if ($option == 'string') { - return $this->daterender->format('Y-m-d H:i:s'); - } elseif ($option == 'date' || $option == 'sort') { - return $this->daterender; - } elseif ($option == 'hrdi') { - $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); - return hrdi($this->daterender->diff($now)); - } - } - - public function css($type = 'string') - { - return $this->css; - } - - public function quickcss($option = 'json') - { - if ($option == 'json') { - return json_encode($this->quickcss); - } elseif ($option == 'array') { - return $this->quickcss; - } elseif ($option == 'string') { - $string = ''; - foreach ($this->quickcss as $key => $css) { - $string .= PHP_EOL . $key . ' {'; - foreach ($css as $param => $value) { - if(is_int($value)) { - $string .= PHP_EOL . ' ' . $param . ': ' . $value . 'px;'; - } else { - $string .= PHP_EOL . ' ' . $param . ': ' . $value . ';'; - } - } - $string .= PHP_EOL . '}' . PHP_EOL; - } - return $string; - } - } - - public function cssprint() - { - return $cssprint; - } - - public function csstemplate(App $app) - { - $data = []; - $temp = ''; - if (!empty($this->template())) { - if ($app->exist($this->template()) and !in_array($this->template(), $data)) { - $template = $app->get($this->template()); - $temp = $temp . $template->css($app); - $data[] = $template->id(); - - } - - } - $cssprint = str_replace('url(/', 'url(' . $app::MEDIA_DIR, $temp . $this->css); - return $cssprint; - } - - public function md($expand = false) - { - if ($expand == true) { - $md = str_replace('](=', '](?id=', $this->html); - } else { - $md = $this->html; - } - return $md; - } - - public function html(App $app) - { - - // %%%% TITLE & DESCIPTION - $html = str_replace('%TITLE%', $this->titre(), $this->html); - $html = str_replace('%DESCRIPTION%', $this->intro(), $html); - - $parser = new MarkdownExtra; - - // id in headers - $parser->header_id_func = function ($header) { - return preg_replace('/[^\w]/', '', strtolower($header)); - }; - $html = $parser->transform($html); - - // replace = > ?id= - $html = str_replace('href="=', 'href="?id=', $html); - - - // infobulles tooltip - foreach ($this->lien('array') as $id) { - $title = "Cet article n'existe pas encore"; - foreach ($app->getlister(['id', 'intro']) as $item) { - if ($item->id() == $id) { - $title = $item->intro(); - } - } - $lien = 'href="?id=' . $id . '"'; - $titlelien = ' title="' . $title . '" ' . $lien; - $html = str_replace($lien, $titlelien, $html); - } - - if (!empty(strstr($html, '%SUMMARY%'))) { - - - - $html = str_replace('%SUMMARY%', sumparser($html), $html); - } - - - $html = str_replace('href="./media/', ' class="file" target="_blank" href="./media/', $html); - $html = str_replace('href="http', ' class="external" target="_blank" href="http', $html); - $html = str_replace('
', $html); - return $html; - - - } - - public function secure($type = 'int') - { - if ($type == 'string') { - if ($this->secure == 0) $secure = 'public'; - if ($this->secure == 1) $secure = 'private'; - if ($this->secure == 2) $secure = 'not published'; - return $secure; - } else { - return $this->secure; - } - } - - public function couleurtext() - { - return $this->couleurtext; - } - - public function couleurbkg() - { - return $this->couleurbkg; - } - - public function couleurlien() - { - return $this->couleurlien; - } - - public function couleurlienblank() - { - return $this->couleurlienblank; - } - - public function lien($option) - { - if ($option == 'string') { - $lien = implode(", ", $this->lien); - } elseif ($option == 'array') { - $lien = $this->lien; - } elseif ($option == 'sort') { - return count($this->lien); - } - return $lien; - - } - - public function liento($option) - { - if ($option == 'string') { - $liento = implode(", ", $this->liento); - } elseif ($option == 'array') { - $liento = $this->liento; - } elseif ($option == 'sort') { - return count($this->liento); - } - return $liento; - - } - - public function template($type = 'string') - { - return $this->template; - } - - - - - - // _____________________________________________________ S E T ____________________________________________________ - - public function setid($id) - { - if (strlen($id) < self::LEN and is_string($id)) { - $this->id = strip_tags(strtolower(str_replace(" ", "", $id))); - } - } - - public function settitre($titre) - { - if (strlen($titre) < self::LEN and is_string($titre)) { - $this->titre = strip_tags(trim($titre)); - } - } - - public function setsoustitre($soustitre) - { - if (strlen($soustitre) < self::LEN and is_string($soustitre)) { - $this->soustitre = strip_tags(trim($soustitre)); - } - } - - public function setintro($intro) - { - if (strlen($intro) < self::LEN and is_string($intro)) { - $this->intro = strip_tags(trim($intro)); - } - } - - public function settag($tag) - { - if (is_string($tag)) { - - if (strlen($tag) < self::LEN and is_string($tag)) { - $tag = strip_tags(trim(strtolower($tag))); - $tag = str_replace('*', '', $tag); - $tag = str_replace(' ', '', $tag); - - $taglist = explode(",", $tag); - $taglist = array_filter($taglist); - $this->tag = $taglist; - } - } elseif (is_array($tag)) { - $this->tag = $tag; - } - } - - public function setdate($date) - { - if ($date instanceof DateTimeImmutable) { - $this->date = $date; - } else { - $this->date = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $date, new DateTimeZone('Europe/Paris')); - } - } - - public function setdatecreation($datecreation) - { - if ($datecreation instanceof DateTimeImmutable) { - $this->datecreation = $datecreation; - } else { - $this->datecreation = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $datecreation, new DateTimeZone('Europe/Paris')); - } - } - - public function setdatemodif($datemodif) - { - if ($datemodif instanceof DateTimeImmutable) { - $this->datemodif = $datemodif; - } else { - $this->datemodif = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $datemodif, new DateTimeZone('Europe/Paris')); - } - } - - public function setdaterender($daterender) - { - if ($daterender instanceof DateTimeImmutable) { - $this->daterender = $daterender; - } else { - $this->daterender = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $daterender, new DateTimeZone('Europe/Paris')); - } - } - - public function setquickcss($quickcss) - { - - } - - public function setcss($css) - { - if (strlen($css) < self::LENHTML and is_string($css)) { - $this->css = strip_tags(trim(strtolower($css))); - } - } - - public function sethtml($html) - { - if (strlen($html) < self::LENHTML and is_string($html)) { - $this->html = $html; - } - } - - public function setsecure($secure) - { - if ($secure >= 0 and $secure <= self::SECUREMAX) { - $this->secure = intval($secure); - } - } - - public function setcouleurtext($couleurtext) - { - $couleurtext = strval($couleurtext); - if (strlen($couleurtext) <= self::LENCOULEUR) { - $this->couleurtext = strip_tags(trim($couleurtext)); - } - } - - public function setcouleurbkg($couleurbkg) - { - $couleurbkg = strval($couleurbkg); - if (strlen($couleurbkg) <= self::LENCOULEUR) { - $this->couleurbkg = strip_tags(trim($couleurbkg)); - } - } - - public function setcouleurlien($couleurlien) - { - $couleurlien = strval($couleurlien); - if (strlen($couleurlien) <= self::LENCOULEUR) { - $this->couleurlien = strip_tags(trim($couleurlien)); - } - } - - public function setcouleurlienblank($couleurlienblank) - { - $couleurlienblank = strval($couleurlienblank); - if (strlen($couleurlienblank) <= self::LENCOULEUR) { - $this->couleurlienblank = strip_tags(trim($couleurlienblank)); - } - } - - public function setlien($lien) - { - if (!empty($lien) && strlen($lien) < self::LEN && is_string($lien)) { - $lien = strip_tags(trim(strtolower($lien))); - $lienlist = explode(", ", $lien); - $this->lien = $lienlist; - } else { - $this->lien = []; - } - } - - public function setliento($liento) - { - if (is_array($liento)) { - $this->liento = $liento; - } - - - } - - public function settemplate($template) - { - $template = strip_tags($template); - if (strlen($template) == 0) { - $template = 'NULL'; - } - $this->template = $template; - } - - -} - - -?> \ No newline at end of file diff --git a/w/class/class.w.config.php b/w/class/class.w.config.php deleted file mode 100644 index 3b4cde0..0000000 --- a/w/class/class.w.config.php +++ /dev/null @@ -1,188 +0,0 @@ -hydrate($donnees); - } - - public function hydrate(array $donnees) - { - foreach ($donnees as $key => $value) { - $method = 'set' . $key; - - if (method_exists($this, $method)) { - $this->$method($value); - } - } - } - - public function tojson() - { - $arr = get_object_vars($this); - $json = json_encode($arr, JSON_FORCE_OBJECT | JSON_PRETTY_PRINT); - return $json; - } - -// ________________________________________ G E T _______________________________________ - - public function host() - { - return $this->host; - } - - public function dbname() - { - return $this->dbname; - } - - public function user() - { - return $this->user; - } - - public function password() - { - return $this->password; - } - - public function arttable() - { - return $this->arttable; - } - - public function domain() - { - return $this->domain; - } - - public function admin() - { - return $this->admin; - } - - public function editor() - { - return $this->editor; - } - - public function invite() - { - return $this->invite; - } - - public function read() - { - return $this->read; - } - - public function color4() - { - return $this->color4; - } - - public function fontsize() - { - return $this->fontsize; - } - - - -// __________________________________________ S E T ______________________________________ - - public function sethost($host) - { - $this->host = strip_tags($host); - } - - public function setdbname($dbname) - { - $this->dbname = strip_tags($dbname); - } - - public function setuser($user) - { - $this->user = strip_tags($user); - } - - public function setpassword($password) - { - $this->password = strip_tags($password); - } - - public function setarttable($arttable) - { - $this->arttable = strip_tags($arttable); - } - - public function setdomain($domain) - { - $this->domain = strip_tags($domain); - } - - public function setadmin($admin) - { - $this->admin = strip_tags($admin); - } - - public function seteditor($editor) - { - $this->editor = strip_tags($editor); - } - - public function setinvite($invite) - { - $this->invite = strip_tags($invite); - } - - public function setread($read) - { - $this->read = strip_tags($read); - } - - public function setcolor4($color4) - { - if(strlen($color4) <= 8) { - $this->color4 = $color4; - } - } - - public function setfontsize($fontsize) - { - $fontsize = intval($fontsize); - if($fontsize > 1) { - $this->fontsize = $fontsize; - } - } - - -} - - - - - - - - - -?> \ No newline at end of file diff --git a/w/class/class.w.media.php b/w/class/class.w.media.php deleted file mode 100644 index 2d27be7..0000000 --- a/w/class/class.w.media.php +++ /dev/null @@ -1,173 +0,0 @@ -hydrate($donnees); - } - - public function hydrate(array $donnees) - { - foreach ($donnees as $key => $value) { - $method = 'set' . $key; - - if (method_exists($this, $method)) { - $this->$method($value); - } - } - } - - - public function analyse() - { - $this->settype(); - - $filepath = $this->path . $this->id . '.' . $this->extension; - - $this->size = filesize($filepath); - - if ($this->type == 'image') { - list($width, $height, $type, $attr) = getimagesize($filepath); - $this->width = $width; - $this->height = $height; - } - - - } - - - -// _________________________________________________ G E T ____________________________________________________ - - public function id() - { - return $this->id; - } - - public function path() - { - return $this->path; - } - - public function extension() - { - return $this->extension; - } - - public function type() - { - return $this->type; - } - - public function size() - { - return $this->size; - } - - public function width() - { - return $this->width; - } - - public function height() - { - return $this->height; - } - - public function length() - { - return $this->length; - } - -// ___________________________________________________ S E T __________________________________________________ - - public function setid($id) - { - if (strlen($id) < 40 and is_string($id)) { - $this->id = strip_tags(strtolower($id)); - } - } - - public function setpath($path) - { - if (strlen($path) < 40 and is_string($path)) { - $this->path = strip_tags(strtolower($path)); - } - } - - public function setextension($extension) - { - if (strlen($extension) < 7 and is_string($extension)) { - $this->extension = strip_tags(strtolower($extension)); - } - } - - public function settype() - { - if (isset($this->extension)) { - if (in_array($this->extension, $this::IMAGE)) { - $this->type = "image"; - } elseif (in_array($this->extension, $this::SOUND)) { - $this->type = "sound"; - } elseif (in_array($this->extension, $this::VIDEO)) { - $this->type = "video"; - } else { - $this->type = "other"; - } - } - } - - public function setsize($size) - { - if (40 and is_int($size)) { - $this->size = strip_tags(strtolower($size)); - } - } - - public function setwidth($width) - { - if (is_int($width)) { - $this->width = strip_tags(strtolower($width)); - } - } - - public function setheight($height) - { - if (is_int($height)) { - $this->height = strip_tags(strtolower($height)); - } - } - - public function setlength($length) - { - if ($this->type == 'sound') { - $this->length = $length; - } - } - - - - - - -} - -?> \ No newline at end of file diff --git a/w/class/class.w.opt.php b/w/class/class.w.opt.php deleted file mode 100644 index 7164cb7..0000000 --- a/w/class/class.w.opt.php +++ /dev/null @@ -1,272 +0,0 @@ - '0', 'max' => '0']; - private $lienfrom = ['min' => '0', 'max' => '0']; - private $col = ['id']; - private $taglist = []; - private $invert = 0; - - private $artvarlist; - - public function __construct(array $donnees = []) - { - $this->hydrate($donnees); - } - - public function hydrate(array $donnees) - { - foreach ($donnees as $key => $value) { - $method = 'set' . $key; - - if (method_exists($this, $method)) { - $this->$method($value); - } - } - } - - - public function resetall() - { - $varlist = get_class_vars(__class__); - - foreach ($varlist as $var => $default) { - $method = 'set' . $var; - $this->$method($default); - } - } - - public function reset($var) - { - $varlist = get_class_vars(__class__); - if(in_array($var, $varlist)) { - $this->$var = $varlist[$var]; - } - } - - public function submit() - { - if(isset($_GET['submit'])) { - if ($_GET['submit'] == 'reset') { - $_SESSION['opt'] = []; - } elseif ($_GET['submit'] == 'filter') { - $this->getall(); - } - } else { - $this->sessionall(); - } - } - - public function getall() - { - $optlist = ['sortby', 'order', 'secure', 'tagcompare', 'tagfilter', 'invert']; - - foreach ($optlist as $method) { - if (method_exists($this, $method)) { - if(isset($_GET[$method])) { - $setmethod = 'set'. $method; - $this->$setmethod($_GET[$method]); - } else { - $this->reset($method); - } - $_SESSION['opt'][$method] = $this->$method(); - } - } - } - - public function sessionall() - { - if(isset($_SESSION['opt'])) { - $this->hydrate($_SESSION['opt']); - } - } - - - - // _______________________________________________ G E T _______________________________________________ - - public function sortby() - { - return $this->sortby; - } - - public function order() - { - return $this->order; - } - - public function secure() - { - return $this->secure; - } - - public function tagfilter($type = 'array') - { - return $this->tagfilter; - } - - public function tagcompare() - { - return $this->tagcompare; - } - - public function liento($type = 'array') - { - return $this->liento; - } - - public function lienfrom($type = 'array') - { - return $this->lienfrom; - } - - public function col($type = 'array') - { - if ($type == 'string') { - return implode(', ', $this->col); - } else { - return ($this->col); - } - } - - public function taglist() - { - return $this->taglist; - } - - public function invert() - { - return $this->invert; - } - - public function artvarlist() - { - return $this->artvarlist; - } - - - // __________________________________________________ S E T _____________________________________________ - - public function setsortby($sortby) - { - if (is_string($sortby) && in_array($sortby, $this->artvarlist())) { - $this->sortby = strtolower(strip_tags($sortby)); - } - } - - public function setorder($order) - { - $order = intval($order); - if (in_array($order, [-1, 0, 1])) { - $this->order = $order; - } - } - - public function settagfilter($tagfilter) - { - if (!empty($tagfilter) && is_array($tagfilter)) { - $tagfilterverif = []; - foreach ($tagfilter as $tag) { - if(array_key_exists($tag, $this->taglist)) { - $tagfilterverif[] = $tag; - } - } - $this->tagfilter = $tagfilterverif; - } - } - - public function settagcompare($tagcompare) - { - if (in_array($tagcompare, ['OR', 'AND'])) { - $this->tagcompare = $tagcompare; - } - } - - public function setsecure($secure) - { - if ($secure >= 0 && $secure <= 5) { - $this->secure = intval($secure); - } - } - - public function setliento($range) - { - $this->liento = $range; - } - - public function setlienfrom($range) - { - $this->lienfrom = $range; - } - - public function setlientomin($min) - { - $this->liento['min'] = intval($min); - } - - public function setlientomax($max) - { - $this->liento['max'] = intval($max); - } - - public function setlienfrommin($min) - { - $this->lienfrom['min'] = intval($min); - } - - public function setlienfrommax($max) - { - $this->lienfrom['max'] = intval($max); - } - - public function setcol($col) - { - if (is_array($col)) { - $this->col = array_intersect($this->artvarlist(), $col); - } - } - - - public function settaglist(array $artlist) - { - $taglist = []; - foreach ($artlist as $art) { - foreach ($art->tag('array') as $tag) { - if (!array_key_exists($tag, $taglist)) { - $taglist[$tag] = 1; - } else { - $taglist[$tag]++; - } - } - } - $taglistsorted = arsort($taglist); - $this->taglist = $taglist; - } - - public function setinvert(int $invert) - { - if ($invert == 0 || $invert == 1) { - $this->invert = $invert; - } else { - $this->invert = 0; - } - } - - - public function setartvarlist(array $artvarlist) - { - $this->artvarlist = $artvarlist; - } - - -} - - - - -?> \ No newline at end of file diff --git a/w/class/class.w.quickcss.php b/w/class/class.w.quickcss.php deleted file mode 100644 index dc7dbac..0000000 --- a/w/class/class.w.quickcss.php +++ /dev/null @@ -1,291 +0,0 @@ - ['left', 'right', 'center', 'justify'], - 'border-style' => ['solid', 'double', 'outset', 'ridge'], - 'font-family' => ['serif', 'sans-serif', 'monospace', 'cursive', 'fantasy'], - 'text-decoration-line' => ['none', 'underline', 'overline', 'line-through', 'underline overline'], - 'display' => ['none', ] - ]; - - - private static function getselect() - { - return array_keys(self::OPTIONS); - } - - private static function getparams() - { - $params = array_merge(self::COLOR, self::SIZE, self::getselect(), self::UNIQUE); - sort($params, SORT_STRING ); - return $params; - } - - public function __construct($data) - { - $this->hydrate($data); } - - public function hydrate($data) - { - foreach ($data as $key => $value) { - $method = 'set' . $key; - - if (method_exists($this, $method)) { - $this->$method($value); - } - } - } - - public function calc() - { - $quickcss = $this->intersect($this->values,$this->active); - $quickcss = $this->merge($quickcss, $this->new); - $quickcss = $this->addunits($quickcss, $this->units); - $quickcss = $this->merge($this->jsoncss, $quickcss); - - $this->quickcss = $quickcss; - } - - - - // _________________________________________ P O S T __________________________________________________ - - public function setvalues($data) - { - if(is_array($data)) { - $this->values = $data; - } - } - - public function setunits($data) - { - if(is_array($data)) { - $this->units = $data; - } - } - - public function setactive($data) - { - if(is_array($data)) { - $this->active = $data; - } - } - - public function setnew($data) - { - if (!empty($data['element']) && !empty($data['param']) && in_array($data['param'], self::getparams())) { - $new = array($data['element'] => array($data['param'] => '')); - $this->new = $new; - } - } - - - public function setjson($jsoncss) - { - if(!empty($jsoncss) && is_string($jsoncss)) { - $jsoncss = json_decode($jsoncss); - if(is_array($jsoncss)) { - $this->jsoncss = $jsoncss; - } else { - $this->jsoncss = []; - } - } - } - - - // _______________________________________ C A L C ___________________________________________________ - - public function intersect($values, $active) - { - $intersect = array_intersect_key($values, $active); - - foreach ($intersect as $element => $css) { - $intersect[$element] = array_intersect_key($values[$element], $active[$element]); - } - return $intersect; - } - - public function merge($quickcss, $new) - { - $quickcss = array_merge_recursive($quickcss, $new); - return $quickcss; - } - - public function addunits($quickcss, $units) - { - foreach ($units as $element => $css) { - foreach ($css as $param => $unit) { - if (array_key_exists($element, $quickcss) && array_key_exists($param, $quickcss[$element])) { - $quickcss[$element][$param] = $quickcss[$element][$param] . $unit; - } - } - } - return $quickcss; - } - - - - // __________________________________________ C O M _________________________________________ - - public function tocss() - { - $string = ''; - foreach ($this->quickcss as $element => $css) { - $string .= PHP_EOL . $element . ' {'; - foreach ($css as $param => $value) { - $string .= PHP_EOL . ' ' . $param . ': ' . $value . ';'; - } - $string .= PHP_EOL . '}' . PHP_EOL; - } - return $string; - } - - public function tojson() - { - return json_encode($this->quickcss); - } - - - - - // _____________________________________________ F O R M ____________________________________________ - - public function form($action) - { - echo '
'; - echo '
'; - $this->inputs($this->quickcss); - echo '
'; - echo '
'; - - } - - public function inputs($quickcss) - { - echo '

Add element

'; - - echo ''; - echo ''; - foreach (array_keys($quickcss) as $element) { - echo ''; - - echo ''; - - foreach ($quickcss as $element => $css) { - echo '

' . $element . '

'; - foreach ($css as $param => $value) { - - echo '
'; - echo ''; - echo ''; - echo '
'; - - echo '
'; - - if (in_array($param, self::COLOR)) { - echo ''; - } - - if (in_array($param, self::SIZE)) { - $this->sizeinput($element, $param, $value); - } - - if (in_array($param, self::getselect())) { - $this->selectinput($element, $param, $value); - } - - if (in_array($param, self::UNIQUE)) { - $method = str_replace('-', '', $param) . 'input'; - if (method_exists($this, $method)) { - $this->$method($element, $param, $value); - } - } - - echo '
'; - } - } - - - } - - - - - - - // ____________________________________ I N P U T __________________________________ - - public function sizeinput($element, $param, $value) - { - echo ''; - - $unit = preg_replace('/\d/', '', $value); - ?> - - '; - - $unit = preg_replace('/\d/', '', $value); - ?> - - '; - } - - public function selectinput($element, $param, $value) - { - echo ''; - } - - -} - - - -?> \ No newline at end of file diff --git a/w/class/class.w.record.php b/w/class/class.w.record.php deleted file mode 100644 index e488383..0000000 --- a/w/class/class.w.record.php +++ /dev/null @@ -1,116 +0,0 @@ -hydrate($donnees); - } - - public function hydrate(array $donnees) - { - foreach ($donnees as $key => $value) { - $method = 'set' . $key; - - if (method_exists($this, $method)) { - $this->$method($value); - } - } - } - - - -// _________________________________________________ G E T ____________________________________________________ - - public function id() - { - return $this->id; - } - - public function path() - { - return $this->path; - } - - public function extension() - { - return $this->extension; - } - - public function size() - { - return $this->size; - } - - public function datetime() - { - return $this->datetime; - } - - public function number() - { - return $this->number; - } - -// ___________________________________________________ S E T __________________________________________________ - - public function setid($id) - { - if (strlen($id) < 100 and is_string($id)) { - $this->id = strip_tags(strtolower($id)); - } - } - - public function setpath($path) - { - if (strlen($path) < 40 and is_string($path)) { - $this->path = strip_tags(strtolower($path)); - } - } - - public function setextension($extension) - { - if (strlen($extension) < 7 and is_string($extension)) { - $this->extension = strip_tags(strtolower($extension)); - } - } - - public function setsize($size) - { - if (40 and is_int($size)) { - $this->size = strip_tags(strtolower($size)); - } - } - - public function setdatetime($datetime) - { - if (is_int($datetime)) { - $this->datetime = strip_tags(strtolower($datetime)); - } - } - - public function setnumber($number) - { - if (is_int($number)) { - $this->number = strip_tags(strtolower($number)); - } - } - - - - - -} - -?> \ No newline at end of file diff --git a/w/class/config.php b/w/class/config.php new file mode 100644 index 0000000..3b4cde0 --- /dev/null +++ b/w/class/config.php @@ -0,0 +1,188 @@ +hydrate($donnees); + } + + public function hydrate(array $donnees) + { + foreach ($donnees as $key => $value) { + $method = 'set' . $key; + + if (method_exists($this, $method)) { + $this->$method($value); + } + } + } + + public function tojson() + { + $arr = get_object_vars($this); + $json = json_encode($arr, JSON_FORCE_OBJECT | JSON_PRETTY_PRINT); + return $json; + } + +// ________________________________________ G E T _______________________________________ + + public function host() + { + return $this->host; + } + + public function dbname() + { + return $this->dbname; + } + + public function user() + { + return $this->user; + } + + public function password() + { + return $this->password; + } + + public function arttable() + { + return $this->arttable; + } + + public function domain() + { + return $this->domain; + } + + public function admin() + { + return $this->admin; + } + + public function editor() + { + return $this->editor; + } + + public function invite() + { + return $this->invite; + } + + public function read() + { + return $this->read; + } + + public function color4() + { + return $this->color4; + } + + public function fontsize() + { + return $this->fontsize; + } + + + +// __________________________________________ S E T ______________________________________ + + public function sethost($host) + { + $this->host = strip_tags($host); + } + + public function setdbname($dbname) + { + $this->dbname = strip_tags($dbname); + } + + public function setuser($user) + { + $this->user = strip_tags($user); + } + + public function setpassword($password) + { + $this->password = strip_tags($password); + } + + public function setarttable($arttable) + { + $this->arttable = strip_tags($arttable); + } + + public function setdomain($domain) + { + $this->domain = strip_tags($domain); + } + + public function setadmin($admin) + { + $this->admin = strip_tags($admin); + } + + public function seteditor($editor) + { + $this->editor = strip_tags($editor); + } + + public function setinvite($invite) + { + $this->invite = strip_tags($invite); + } + + public function setread($read) + { + $this->read = strip_tags($read); + } + + public function setcolor4($color4) + { + if(strlen($color4) <= 8) { + $this->color4 = $color4; + } + } + + public function setfontsize($fontsize) + { + $fontsize = intval($fontsize); + if($fontsize > 1) { + $this->fontsize = $fontsize; + } + } + + +} + + + + + + + + + +?> \ No newline at end of file diff --git a/w/class/controller.php b/w/class/controller.php new file mode 100644 index 0000000..6eab6e4 --- /dev/null +++ b/w/class/controller.php @@ -0,0 +1,57 @@ +setuser(); + $this->settemplate(); + } + + + + public function setuser() + { + $this->usermanager = new Modeluser; + $this->user = $this->usermanager->readsession(); + } + + public function settemplate() + { + $this->templates = new League\Plates\Engine(Model::TEMPLATES_DIR); + } + + public function useriseditor() + { + if ($this->user->level() >= $this->usermanager::EDITOR) { + echo '

Editor access

'; + return true; + } else { + echo '

Not enought rights to see more...

'; + return false; + } + } + + + + + + public function redirect($url) + { + header('Location: ' . $url); + } + + + +} + + + + + +?> \ No newline at end of file diff --git a/w/class/controlleradmin.php b/w/class/controlleradmin.php new file mode 100644 index 0000000..da7d926 --- /dev/null +++ b/w/class/controlleradmin.php @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/w/class/controllerart.php b/w/class/controllerart.php new file mode 100644 index 0000000..8754a20 --- /dev/null +++ b/w/class/controllerart.php @@ -0,0 +1,90 @@ +Article'; + //echo $id; + + $this->art = new Art2(['id' => $id]); + } + + public function importart() + { + if($this->artmanager->exist($this->art->id())) { + $this->art = $this->artmanager->get($this->art); + //var_dump($this->art); + $this->art->autotaglistupdate($this->artmanager->taglist($this->artmanager->getlister(['id', 'title', 'description', 'tag']), $this->art->autotaglist())); + + return true; + } else { + echo '

Article does not exist yet.

'; + return false; + } + } + + public function read() + { + + if($this->importart()) { + if($this->user->level() >= $this->art->secure()) { + $datas = $this->art->templaterender(['id', 'title', 'description', 'javascript', 'html', 'header', 'nav', 'aside', 'section', 'footer']); + echo $this->templates->render('reader', $datas); + } else { + echo '

Not enought right to see the article

'; + } + + } + + + } + + public function edit() + { + echo '

Edit

'; + if($this->importart()) { + // vue edit art + } + + } + + public function add() + { + echo '

Add

'; + + + $this->art->reset(); + $this->artmanager->add($this->art); + } + + public function delete() + { + echo '

Delete

'; + $this->artmanager->delete($this->art); + } + + public function update($id, $redir= "home") + { + echo '

Update

'; + + $this->art = new Art2($_POST); + $this->art->updatelinkfrom(); + $this->art->autotaglistcalc($this->artmanager->taglist($this->artmanagergetlister(['id', 'title', 'tag']), $this->art->autotaglist())); + $this->artmanager->update($this->art); + + + + } +} + + + + +?> \ No newline at end of file diff --git a/w/class/controllerdb.php b/w/class/controllerdb.php new file mode 100644 index 0000000..5d75d39 --- /dev/null +++ b/w/class/controllerdb.php @@ -0,0 +1,42 @@ +artmanager = new Modelart(); + + } + + + + // if (isset($_POST['actiondb'])) { + // $app->setbdd($config); + + // switch ($_POST['actiondb']) { + + // case 'addtable': + // if (isset($_POST['tablename'])) { + // $message = Modeldb::addtable($config->dbname(), $_POST['tablename']); + // header('Location: ./?aff=admin&message=' . $message); + // } + // break; + + // case 'duplicatetable': + // $message = Modeldb::tableduplicate($config->dbname(), $_POST['arttable'], $_POST['tablename']); + // header('Location: ./?aff=admin&message=' . $message); + // break; + + // } + // } +} + + + + +?> \ No newline at end of file diff --git a/w/class/controllerhome.php b/w/class/controllerhome.php new file mode 100644 index 0000000..ecbc3c7 --- /dev/null +++ b/w/class/controllerhome.php @@ -0,0 +1,57 @@ +modelhome = new Modelhome; + } + + + + + public function desktop() + { + echo '

Desktop

'; + + echo '

Menu Bar

'; + + $this->table2(); + } + + public function table2() + { + if ($this->useriseditor()) { + $datas = $this->modelhome->table2(); + + var_dump($datas); + + } + + } + + public function massedit() + { + echo '

Mass Edit

'; + + } + + + + + + + +} + + + + + + + + +?> \ No newline at end of file diff --git a/w/class/controllermedia.php b/w/class/controllermedia.php new file mode 100644 index 0000000..8557e74 --- /dev/null +++ b/w/class/controllermedia.php @@ -0,0 +1,38 @@ +mediamanager = new Modelmedia; + + } + + public function desktop() + { + + if($this->useriseditor()) { + + + echo $this->templates->render('media', ['interface' => 'desktop']); + + } + } + + public function addmedia() + { + echo $this->templates->render('media', ['interface' => 'addmedia']); + + //$message = $this->mediamanager->addmedia($_FILES, 2 ** 24, $_POST['id']); + + } + + +} + + +?> \ No newline at end of file diff --git a/w/class/media.php b/w/class/media.php new file mode 100644 index 0000000..2d27be7 --- /dev/null +++ b/w/class/media.php @@ -0,0 +1,173 @@ +hydrate($donnees); + } + + public function hydrate(array $donnees) + { + foreach ($donnees as $key => $value) { + $method = 'set' . $key; + + if (method_exists($this, $method)) { + $this->$method($value); + } + } + } + + + public function analyse() + { + $this->settype(); + + $filepath = $this->path . $this->id . '.' . $this->extension; + + $this->size = filesize($filepath); + + if ($this->type == 'image') { + list($width, $height, $type, $attr) = getimagesize($filepath); + $this->width = $width; + $this->height = $height; + } + + + } + + + +// _________________________________________________ G E T ____________________________________________________ + + public function id() + { + return $this->id; + } + + public function path() + { + return $this->path; + } + + public function extension() + { + return $this->extension; + } + + public function type() + { + return $this->type; + } + + public function size() + { + return $this->size; + } + + public function width() + { + return $this->width; + } + + public function height() + { + return $this->height; + } + + public function length() + { + return $this->length; + } + +// ___________________________________________________ S E T __________________________________________________ + + public function setid($id) + { + if (strlen($id) < 40 and is_string($id)) { + $this->id = strip_tags(strtolower($id)); + } + } + + public function setpath($path) + { + if (strlen($path) < 40 and is_string($path)) { + $this->path = strip_tags(strtolower($path)); + } + } + + public function setextension($extension) + { + if (strlen($extension) < 7 and is_string($extension)) { + $this->extension = strip_tags(strtolower($extension)); + } + } + + public function settype() + { + if (isset($this->extension)) { + if (in_array($this->extension, $this::IMAGE)) { + $this->type = "image"; + } elseif (in_array($this->extension, $this::SOUND)) { + $this->type = "sound"; + } elseif (in_array($this->extension, $this::VIDEO)) { + $this->type = "video"; + } else { + $this->type = "other"; + } + } + } + + public function setsize($size) + { + if (40 and is_int($size)) { + $this->size = strip_tags(strtolower($size)); + } + } + + public function setwidth($width) + { + if (is_int($width)) { + $this->width = strip_tags(strtolower($width)); + } + } + + public function setheight($height) + { + if (is_int($height)) { + $this->height = strip_tags(strtolower($height)); + } + } + + public function setlength($length) + { + if ($this->type == 'sound') { + $this->length = $length; + } + } + + + + + + +} + +?> \ No newline at end of file diff --git a/w/class/model.php b/w/class/model.php new file mode 100644 index 0000000..8ff7478 --- /dev/null +++ b/w/class/model.php @@ -0,0 +1,17 @@ +bdd->prepare(' SELECT COUNT(*) FROM ' . $this->config->arttable() . ' WHERE id = :id '); + $req->execute(array('id' => $id)); + $donnees = $req->fetch(PDO::FETCH_ASSOC); + + return (bool)$donnees['COUNT(*)']; + } + + + + + + public function add(Art2 $art) + { + + if ($this->exist($art->id())) { + echo 'idalreadyexist'; + } else { + + var_dump($art); + + $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); + + $request = 'INSERT INTO ' . $this->config->arttable() . '(id, title, description, tag, date, datecreation, datemodif, daterender, css, quickcss, javascript, html, header, section, nav, aside, footer, render, secure, invitepassword, interface, linkfrom, template, affcount, editcount) + VALUES(:id, :title, :description, :tag, :date, :datecreation, :datemodif, :daterender, :css, :quickcss, :javascript, :html, :header, :section, :nav, :aside, :footer, :render, :secure, :invitepassword, :interface, :linkfrom, :template, :affcount, :editcount)'; + + $q = $this->bdd->prepare($request); + + $q->bindValue(':id', $art->id()); + $q->bindValue(':title', $art->title()); + $q->bindValue(':description', $art->description()); + $q->bindValue(':tag', $art->tag('string')); + $q->bindValue(':date', $now->format('Y-m-d H:i:s')); + $q->bindValue(':datecreation', $now->format('Y-m-d H:i:s')); + $q->bindValue(':datemodif', $now->format('Y-m-d H:i:s')); + $q->bindValue(':daterender', $now->format('Y-m-d H:i:s')); + $q->bindValue(':css', $art->css()); + $q->bindValue(':quickcss', $art->quickcss('json')); + $q->bindValue(':javascript', $art->javascript()); + $q->bindValue(':html', $art->html()); + $q->bindValue(':header', $art->header()); + $q->bindValue(':section', $art->md()); + $q->bindValue(':nav', $art->nav()); + $q->bindValue(':aside', $art->aside()); + $q->bindValue(':footer', $art->footer()); + $q->bindValue(':render', $art->render()); + $q->bindValue(':secure', $art->secure()); + $q->bindValue(':invitepassword', $art->invitepassword()); + $q->bindValue(':interface', $art->interface()); + $q->bindValue(':linkfrom', $art->linkfrom('json')); + $q->bindValue(':template', $art->template('json')); + $q->bindValue(':affcount', $art->affcount()); + $q->bindValue(':editcount', $art->editcount()); + + $q->execute(); + } + } + + + public function delete(Art2 $art) + { + $req = $this->bdd->prepare('DELETE FROM ' . $this->config->arttable() . ' WHERE id = :id '); + $req->execute(array('id' => $art->id())); + $req->closeCursor(); + } + + public function get(Art2 $art) + { + + $req = $this->bdd->prepare('SELECT * FROM ' . $this->config->arttable() . ' WHERE id = :id '); + $req->execute(array('id' => $art->id())); + $donnees = $req->fetch(PDO::FETCH_ASSOC); + + return new Art2($donnees); + + $req->closeCursor(); + + } + + + + + + public function update(Art2 $art) + { + $now = new DateTimeImmutable(null, timezone_open("Europe/Paris")); + + //$request = 'UPDATE ' . $this->arttable . '(id, title, description, tag, date, datecreation, datemodif, daterender, css, quickcss, javascript, html, header, section, nav, aside, footer, render, secure, invitepassword, interface, linkfrom, template, affcount, editcount) VALUES(:id, :title, :description, :tag, :date, :datecreation, :datemodif, :daterender, :css, :quickcss, :javascript, :html, :header, :section, :nav, :aside, :footer, :render, :secure, :invitepassword, :interface, :linkfrom, :template, :affcount, :editcount) WHERE id = :id'; + + $request = 'UPDATE ' . $this->arttable . ' SET id = :id, title = :title, description = :description, tag = :tag, date = :date, datecreation = :datecreation, datemodif = :datemodif, daterender = :daterender, css = :css, quickcss = :quickcss, javascript = :javascript, html = :html, header = :header, section = :section, nav = :nav, aside = :aside, footer = :footer, render = :footer, secure = :secure, invitepassword = :invitepassword, interface = :interface, linkfrom = :linkfrom, template = :template, affcount = :affcount, editcount = :editcount WHERE id = :id'; + + $q = $this->bdd->prepare($request); + + $q->bindValue(':id', $art->id()); + $q->bindValue(':title', $art->title()); + $q->bindValue(':description', $art->description()); + $q->bindValue(':tag', $art->tag('string')); + $q->bindValue(':date', $now->format('Y-m-d H:i:s')); + $q->bindValue(':datecreation', $now->format('Y-m-d H:i:s')); + $q->bindValue(':datemodif', $now->format('Y-m-d H:i:s')); + $q->bindValue(':daterender', $now->format('Y-m-d H:i:s')); + $q->bindValue(':css', $art->css()); + $q->bindValue(':quickcss', $art->quickcss('json')); + $q->bindValue(':javascript', $art->javascript()); + $q->bindValue(':html', $art->html()); + $q->bindValue(':header', $art->header()); + $q->bindValue(':section', $art->md()); + $q->bindValue(':nav', $art->nav()); + $q->bindValue(':aside', $art->aside()); + $q->bindValue(':footer', $art->footer()); + $q->bindValue(':render', $art->render()); + $q->bindValue(':secure', $art->secure()); + $q->bindValue(':invitepassword', $art->invitepassword()); + $q->bindValue(':interface', $art->interface()); + $q->bindValue(':linkfrom', $art->linkfrom('json')); + $q->bindValue(':template', $art->template('json')); + $q->bindValue(':affcount', $art->affcount()); + $q->bindValue(':editcount', $art->editcount()); + + $q->execute(); + } + + + public function getlister(array $selection = ['id'], array $opt = []) + { + // give an array using SELECTION columns and sort and desc OPTIONS + + $default = ['tri' => 'id', 'desc' => 'DESC']; + $opt = array_update($default, $opt); + + $list = []; + $option = ['datecreation', 'title', 'id', 'description', 'datemodif', 'tag', 'secure']; + if (is_array($selection) && is_string($opt['tri']) && strlen($opt['tri']) < 16 && is_string($opt['desc']) && strlen($opt['desc']) < 5 && in_array($opt['tri'], $option)) { + + $selection = implode(", ", $selection); + + $select = 'SELECT ' . $selection . ' FROM ' . $this->config->arttable() . ' ORDER BY ' . $opt['tri'] . ' ' . $opt['desc']; + $req = $this->bdd->query($select); + while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) { + $list[] = new Art2($donnees); + } + return $list; + } + } + + + + + + + public function getlisteropt(Opt $opt) + { + + $artlist = []; + + $select = 'SELECT ' . $opt->col('string') . ' FROM ' . $this->config->arttable(); + $req = $this->bdd->query($select); + while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) { + $artlist[] = new Art2($donnees); + } + return $artlist; + + } + + public function listcalclinkfrom(&$artlist) + { + foreach ($artlist as $art) { + $art->calclinkto($artlist); + } + } + + public function artcompare($art1, $art2, $method = 'id', $order = 1) + { + $result = ($art1->$method('sort') <=> $art2->$method('sort')); + return $result * $order; + + } + + public function buildsorter($sortby, $order) + { + return function ($art1, $art2) use ($sortby, $order) { + $result = $this->artcompare($art1, $art2, $sortby, $order); + return $result; + }; + } + + + + public function artlistsort(&$artlist, $sortby, $order = 1) + { + return usort($artlist, $this->buildsorter($sortby, $order)); + } + + + + + + + public function filtertagfilter(array $artlist, array $tagchecked, $tagcompare = 'OR') + { + + $filteredlist = []; + foreach ($artlist as $art) { + if (empty($tagchecked)) { + $filteredlist[] = $art->id(); + } else { + $inter = (array_intersect($art->tag('array'), $tagchecked)); + if ($tagcompare == 'OR') { + if (!empty($inter)) { + $filteredlist[] = $art->id(); + } + } elseif ($tagcompare == 'AND') { + if (!array_diff($tagchecked, $art->tag('array'))) { + $filteredlist[] = $art->id(); + } + } + } + } + return $filteredlist; + } + + public function filtersecure(array $artlist, $secure) + { + $filteredlist = []; + foreach ($artlist as $art) { + if ($art->secure() == intval($secure)) { + $filteredlist[] = $art->id(); + } elseif (intval($secure) >= 4) { + $filteredlist[] = $art->id(); + } + } + return $filteredlist; + } + + + public function lister() + { + $req = $this->bdd->query(' SELECT * FROM ' . $this->arttable . ' ORDER BY id '); + $donnees = $req->fetchAll(PDO::FETCH_ASSOC); + $req->closeCursor(); + return $donnees; + + } + + public function tag(array $artlist, $tagchecked) + { + $artcheckedlist = []; + foreach ($artlist as $art) { + if (in_array($tagchecked, $art->tag('array'))) { + $artcheckedlist[] = $art; + } + } + return $artcheckedlist; + } + + public function taglist(array $artlist, array $tagcheckedlist) + { + $taglist = []; + foreach ($tagcheckedlist as $tag) { + $taglist[$tag] = $this->tag($artlist, $tag); + } + return $taglist; + } + + public function count() + { + return $this->bdd->query(' SELECT COUNT(*) FROM ' . $this->arttable . ' ')->fetchColumn(); + } + +} diff --git a/w/class/modelartlist.php b/w/class/modelartlist.php new file mode 100644 index 0000000..acbdce5 --- /dev/null +++ b/w/class/modelartlist.php @@ -0,0 +1,159 @@ + 'id', 'desc' => 'DESC']; + $opt = array_update($default, $opt); + + $list = []; + $option = ['datecreation', 'title', 'id', 'description', 'datemodif', 'tag', 'secure']; + if (is_array($selection) && is_string($opt['tri']) && strlen($opt['tri']) < 16 && is_string($opt['desc']) && strlen($opt['desc']) < 5 && in_array($opt['tri'], $option)) { + + $selection = implode(", ", $selection); + + $select = 'SELECT ' . $selection . ' FROM ' . $this->arttable . ' ORDER BY ' . $opt['tri'] . ' ' . $opt['desc']; + $req = $this->bdd->query($select); + while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) { + $list[] = new Art2($donnees); + } + return $list; + } + } + + + + + + + public function getlisteropt(Opt $opt) + { + + $artlist = []; + + $select = 'SELECT ' . $opt->col('string') . ' FROM ' . $this->arttable; + $req = $this->bdd->query($select); + while ($donnees = $req->fetch(PDO::FETCH_ASSOC)) { + $artlist[] = new Art2($donnees); + } + return $artlist; + + } + + public function listcalclinkfrom(&$artlist) + { + foreach ($artlist as $art) { + $art->calclinkto($artlist); + } + } + + public function artcompare($art1, $art2, $method = 'id', $order = 1) + { + $result = ($art1->$method('sort') <=> $art2->$method('sort')); + return $result * $order; + + } + + public function buildsorter($sortby, $order) + { + return function ($art1, $art2) use ($sortby, $order) { + $result = $this->artcompare($art1, $art2, $sortby, $order); + return $result; + }; + } + + + + public function artlistsort(&$artlist, $sortby, $order = 1) + { + return usort($artlist, $this->buildsorter($sortby, $order)); + } + + + + + + + public function filtertagfilter(array $artlist, array $tagchecked, $tagcompare = 'OR') + { + + $filteredlist = []; + foreach ($artlist as $art) { + if (empty($tagchecked)) { + $filteredlist[] = $art->id(); + } else { + $inter = (array_intersect($art->tag('array'), $tagchecked)); + if ($tagcompare == 'OR') { + if (!empty($inter)) { + $filteredlist[] = $art->id(); + } + } elseif ($tagcompare == 'AND') { + if (!array_diff($tagchecked, $art->tag('array'))) { + $filteredlist[] = $art->id(); + } + } + } + } + return $filteredlist; + } + + public function filtersecure(array $artlist, $secure) + { + $filteredlist = []; + foreach ($artlist as $art) { + if ($art->secure() == intval($secure)) { + $filteredlist[] = $art->id(); + } elseif (intval($secure) >= 4) { + $filteredlist[] = $art->id(); + } + } + return $filteredlist; + } + + + public function lister() + { + $req = $this->bdd->query(' SELECT * FROM ' . $this->arttable . ' ORDER BY id '); + $donnees = $req->fetchAll(PDO::FETCH_ASSOC); + $req->closeCursor(); + return $donnees; + + } + + public function tag(array $artlist, $tagchecked) + { + $artcheckedlist = []; + foreach ($artlist as $art) { + if (in_array($tagchecked, $art->tag('array'))) { + $artcheckedlist[] = $art; + } + } + return $artcheckedlist; + } + + public function taglist(array $artlist, array $tagcheckedlist) + { + $taglist = []; + foreach ($tagcheckedlist as $tag) { + $taglist[$tag] = $this->tag($artlist, $tag); + } + return $taglist; + } + + public function count() + { + return $this->bdd->query(' SELECT COUNT(*) FROM ' . $this->arttable . ' ')->fetchColumn(); + } + +} + + + + + +?> \ No newline at end of file diff --git a/w/class/modelconfig.php b/w/class/modelconfig.php new file mode 100644 index 0000000..748edb1 --- /dev/null +++ b/w/class/modelconfig.php @@ -0,0 +1,39 @@ + \ No newline at end of file diff --git a/w/class/modeldb.php b/w/class/modeldb.php new file mode 100644 index 0000000..7814acd --- /dev/null +++ b/w/class/modeldb.php @@ -0,0 +1,133 @@ +setbdd(); + } + + + + public function setbdd() + { + $caught = true; + + try { + $this->bdd = new PDO('mysql:host=' . $this->config->host() . ';dbname=' . $this->config->dbname() . ';charset=utf8', $this->config->user(), $this->config->password(), array(PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT)); + //$this->bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } catch (PDOException $e) { + $caught = false; + echo '

Error 500, database offline

'; + if ($this->session() >= self::EDITOR) { + echo '

Error : ' . $e->getMessage() . '

'; + if ($this->session() == self::ADMIN) { + echo '

Go to the Admin Panel to edit your database credentials

'; + } else { + echo '

Logout and and come back with an admin password to edit the database connexions settings.

'; + } + } else { + echo '

Homepage for admin login (connect on the top right side)

'; + } + exit; + } + + return $caught; + + } + + public function settable(Config $config) + { + if (!empty($config->arttable())) { + $this->arttable = $config->arttable(); + } else { + echo '

Table Error

'; + + if ($this->session() >= self::EDITOR) { + if ($this->session() == self::ADMIN) { + echo '

Go to the Admin Panel to select or add an Article table

'; + } else { + echo '

Logout and and come back with an admin password to edit table settings.

'; + } + } else { + echo '

Homepage for admin login (connect on the top right side)

'; + } + $caught = false; + exit; + } + } + + public function bddinit(Config $config) + { + $test = $this->setbdd($config); + if ($test) { + $this->settable($config); + } + } + + + + public function tableexist($dbname, $tablename) + { + + $req = $this->bdd->prepare('SELECT COUNT(*) + FROM information_schema.tables + WHERE table_schema = :dbname AND + table_name like :tablename'); + $req->execute(array( + 'dbname' => $dbname, + 'tablename' => $tablename + )); + $donnees = $req->fetch(PDO::FETCH_ASSOC); + $req->closeCursor(); + $exist = intval($donnees['COUNT(*)']); + return $exist; + + + + + } + + public function tablelist($dbname) + { + $request = 'SHOW TABLES IN ' . $dbname; + $req = $this->bdd->query($request); + $donnees = $req->fetchAll(PDO::FETCH_ASSOC); + $req->closeCursor(); + + $arttables = []; + foreach ($donnees as $table) { + $arttables[] = $table['Tables_in_' . $dbname]; + } + return $arttables; + + + } + + + + + + public function tableduplicate($dbname, $arttable, $tablename) + { + $arttable = strip_tags($arttable); + $tablename = str_clean($tablename); + if ($this->tableexist($dbname, $arttable) && !$this->tableexist($dbname, $tablename)) { + $duplicate = " CREATE TABLE `$tablename` LIKE `$arttable`;"; + $alter = "ALTER TABLE `$tablename` ADD PRIMARY KEY (`id`);"; + $insert = "INSERT `$tablename` SELECT * FROM `$arttable`;"; + + + $req = $this->bdd->query($duplicate . $alter . $insert); + + return 'tableduplicated'; + } else { + return 'tablealreadyexist'; + } + } + + + +} diff --git a/w/class/modelhome.php b/w/class/modelhome.php new file mode 100644 index 0000000..660352f --- /dev/null +++ b/w/class/modelhome.php @@ -0,0 +1,59 @@ +setcol(['id', 'tag', 'linkfrom', 'contenu', 'description', 'title', 'datemodif', 'datecreation', 'secure']); + $table = $artmanager->getlisteropt($opt); + $artmanager->listcalclinkfrom($table); + $opt->settaglist($table); + $opt->submit(); + + + $opt->setcol(['id', 'tag', 'linkfrom', 'contenu', 'description', 'title', 'datemodif', 'datecreation', 'secure', 'linkto']); + + + //$aff->option($app, $opt); + + echo '

Options

'; + + + $filtertagfilter = $artmanager->filtertagfilter($table, $opt->tagfilter(), $opt->tagcompare()); + $filtersecure = $artmanager->filtersecure($table, $opt->secure()); + + $filter = array_intersect($filtertagfilter, $filtersecure); + $table2 = []; + $table2invert = []; + foreach ($table as $art) { + if (in_array($art->id(), $filter)) { + $table2[] = $art; + } else { + $table2invert[] = $art; + } + + + } + + if (!empty($opt->invert())) { + $table2 = $table2invert; + } + + $artmanager->artlistsort($table2, $opt->sortby(), $opt->order()); + + + return $table2; + } +} + + + + + + + + +?> \ No newline at end of file diff --git a/w/class/modelmassedit.php b/w/class/modelmassedit.php new file mode 100644 index 0000000..e69de29 diff --git a/w/class/modelmedia.php b/w/class/modelmedia.php new file mode 100644 index 0000000..9f61609 --- /dev/null +++ b/w/class/modelmedia.php @@ -0,0 +1,98 @@ + str_replace('.' . $fileinfo['extension'], '', $fileinfo['filename']), + 'path' => $dir, + 'extension' => $fileinfo['extension'] + ); + + + + return new Media($donnees); + + } + + public function getlistermedia($dir, $type = "all") + { + if ($handle = opendir($dir)) { + $list = []; + while (false !== ($entry = readdir($handle))) { + if ($entry != "." && $entry != "..") { + + $media = $this->getmedia($entry, $dir); + + + $media->analyse(); + + if (in_array($type, self::MEDIA_TYPES)) { + if ($media->type() == $type) { + $list[] = $media; + } + } else { + $list[] = $media; + } + + + } + } + return $list; + } + + return $list; + + } + + + + +} + + + + +?> \ No newline at end of file diff --git a/w/class/modeluser.php b/w/class/modeluser.php new file mode 100644 index 0000000..adce383 --- /dev/null +++ b/w/class/modeluser.php @@ -0,0 +1,63 @@ + $this->passlevel($pass)]); + return $user; + } + + public function passlevel($pass) + { + if (strip_tags($pass) == $this->config->admin()) { + return $level = self::ADMIN; + } elseif (strip_tags($pass) == $this->config->read()) { + return $level = self::READ; + } elseif (strip_tags($pass) == $this->config->editor()) { + return $level = self::EDITOR; + } elseif (strip_tags($pass) == $this->config->invite()) { + return $level = self::INVITE; + } + } + + public function logout() + { + $user = new User(['level' => 0]); + return $user; + } +} + + + + + + +?> \ No newline at end of file diff --git a/w/class/opt.php b/w/class/opt.php new file mode 100644 index 0000000..f1cb4df --- /dev/null +++ b/w/class/opt.php @@ -0,0 +1,272 @@ + '0', 'max' => '0']; + private $linkfrom = ['min' => '0', 'max' => '0']; + private $col = ['id']; + private $taglist = []; + private $invert = 0; + + private $artvarlist; + + public function __construct(array $donnees = []) + { + $this->hydrate($donnees); + } + + public function hydrate(array $donnees) + { + foreach ($donnees as $key => $value) { + $method = 'set' . $key; + + if (method_exists($this, $method)) { + $this->$method($value); + } + } + } + + + public function resetall() + { + $varlist = get_class_vars(__class__); + + foreach ($varlist as $var => $default) { + $method = 'set' . $var; + $this->$method($default); + } + } + + public function reset($var) + { + $varlist = get_class_vars(__class__); + if(in_array($var, $varlist)) { + $this->$var = $varlist[$var]; + } + } + + public function submit() + { + if(isset($_GET['submit'])) { + if ($_GET['submit'] == 'reset') { + $_SESSION['opt'] = []; + } elseif ($_GET['submit'] == 'filter') { + $this->getall(); + } + } else { + $this->sessionall(); + } + } + + public function getall() + { + $optlist = ['sortby', 'order', 'secure', 'tagcompare', 'tagfilter', 'invert']; + + foreach ($optlist as $method) { + if (method_exists($this, $method)) { + if(isset($_GET[$method])) { + $setmethod = 'set'. $method; + $this->$setmethod($_GET[$method]); + } else { + $this->reset($method); + } + $_SESSION['opt'][$method] = $this->$method(); + } + } + } + + public function sessionall() + { + if(isset($_SESSION['opt'])) { + $this->hydrate($_SESSION['opt']); + } + } + + + + // _______________________________________________ G E T _______________________________________________ + + public function sortby() + { + return $this->sortby; + } + + public function order() + { + return $this->order; + } + + public function secure() + { + return $this->secure; + } + + public function tagfilter($type = 'array') + { + return $this->tagfilter; + } + + public function tagcompare() + { + return $this->tagcompare; + } + + public function linkto($type = 'array') + { + return $this->linkto; + } + + public function linkfrom($type = 'array') + { + return $this->linkfrom; + } + + public function col($type = 'array') + { + if ($type == 'string') { + return implode(', ', $this->col); + } else { + return ($this->col); + } + } + + public function taglist() + { + return $this->taglist; + } + + public function invert() + { + return $this->invert; + } + + public function artvarlist() + { + return $this->artvarlist; + } + + + // __________________________________________________ S E T _____________________________________________ + + public function setsortby($sortby) + { + if (is_string($sortby) && in_array($sortby, $this->artvarlist())) { + $this->sortby = strtolower(strip_tags($sortby)); + } + } + + public function setorder($order) + { + $order = intval($order); + if (in_array($order, [-1, 0, 1])) { + $this->order = $order; + } + } + + public function settagfilter($tagfilter) + { + if (!empty($tagfilter) && is_array($tagfilter)) { + $tagfilterverif = []; + foreach ($tagfilter as $tag) { + if(array_key_exists($tag, $this->taglist)) { + $tagfilterverif[] = $tag; + } + } + $this->tagfilter = $tagfilterverif; + } + } + + public function settagcompare($tagcompare) + { + if (in_array($tagcompare, ['OR', 'AND'])) { + $this->tagcompare = $tagcompare; + } + } + + public function setsecure($secure) + { + if ($secure >= 0 && $secure <= 5) { + $this->secure = intval($secure); + } + } + + public function setlinkto($range) + { + $this->linkto = $range; + } + + public function setlinkfrom($range) + { + $this->linkfrom = $range; + } + + public function setlinktomin($min) + { + $this->linkto['min'] = intval($min); + } + + public function setlinktomax($max) + { + $this->linkto['max'] = intval($max); + } + + public function setlinkfrommin($min) + { + $this->linkfrom['min'] = intval($min); + } + + public function setlinkfrommax($max) + { + $this->linkfrom['max'] = intval($max); + } + + public function setcol($col) + { + if (is_array($col)) { + $this->col = array_intersect($this->artvarlist(), $col); + } + } + + + public function settaglist(array $artlist) + { + $taglist = []; + foreach ($artlist as $art) { + foreach ($art->tag('array') as $tag) { + if (!array_key_exists($tag, $taglist)) { + $taglist[$tag] = 1; + } else { + $taglist[$tag]++; + } + } + } + $taglistsorted = arsort($taglist); + $this->taglist = $taglist; + } + + public function setinvert(int $invert) + { + if ($invert == 0 || $invert == 1) { + $this->invert = $invert; + } else { + $this->invert = 0; + } + } + + + public function setartvarlist(array $artvarlist) + { + $this->artvarlist = $artvarlist; + } + + +} + + + + +?> \ No newline at end of file diff --git a/w/class/quickcss.php b/w/class/quickcss.php new file mode 100644 index 0000000..dc7dbac --- /dev/null +++ b/w/class/quickcss.php @@ -0,0 +1,291 @@ + ['left', 'right', 'center', 'justify'], + 'border-style' => ['solid', 'double', 'outset', 'ridge'], + 'font-family' => ['serif', 'sans-serif', 'monospace', 'cursive', 'fantasy'], + 'text-decoration-line' => ['none', 'underline', 'overline', 'line-through', 'underline overline'], + 'display' => ['none', ] + ]; + + + private static function getselect() + { + return array_keys(self::OPTIONS); + } + + private static function getparams() + { + $params = array_merge(self::COLOR, self::SIZE, self::getselect(), self::UNIQUE); + sort($params, SORT_STRING ); + return $params; + } + + public function __construct($data) + { + $this->hydrate($data); } + + public function hydrate($data) + { + foreach ($data as $key => $value) { + $method = 'set' . $key; + + if (method_exists($this, $method)) { + $this->$method($value); + } + } + } + + public function calc() + { + $quickcss = $this->intersect($this->values,$this->active); + $quickcss = $this->merge($quickcss, $this->new); + $quickcss = $this->addunits($quickcss, $this->units); + $quickcss = $this->merge($this->jsoncss, $quickcss); + + $this->quickcss = $quickcss; + } + + + + // _________________________________________ P O S T __________________________________________________ + + public function setvalues($data) + { + if(is_array($data)) { + $this->values = $data; + } + } + + public function setunits($data) + { + if(is_array($data)) { + $this->units = $data; + } + } + + public function setactive($data) + { + if(is_array($data)) { + $this->active = $data; + } + } + + public function setnew($data) + { + if (!empty($data['element']) && !empty($data['param']) && in_array($data['param'], self::getparams())) { + $new = array($data['element'] => array($data['param'] => '')); + $this->new = $new; + } + } + + + public function setjson($jsoncss) + { + if(!empty($jsoncss) && is_string($jsoncss)) { + $jsoncss = json_decode($jsoncss); + if(is_array($jsoncss)) { + $this->jsoncss = $jsoncss; + } else { + $this->jsoncss = []; + } + } + } + + + // _______________________________________ C A L C ___________________________________________________ + + public function intersect($values, $active) + { + $intersect = array_intersect_key($values, $active); + + foreach ($intersect as $element => $css) { + $intersect[$element] = array_intersect_key($values[$element], $active[$element]); + } + return $intersect; + } + + public function merge($quickcss, $new) + { + $quickcss = array_merge_recursive($quickcss, $new); + return $quickcss; + } + + public function addunits($quickcss, $units) + { + foreach ($units as $element => $css) { + foreach ($css as $param => $unit) { + if (array_key_exists($element, $quickcss) && array_key_exists($param, $quickcss[$element])) { + $quickcss[$element][$param] = $quickcss[$element][$param] . $unit; + } + } + } + return $quickcss; + } + + + + // __________________________________________ C O M _________________________________________ + + public function tocss() + { + $string = ''; + foreach ($this->quickcss as $element => $css) { + $string .= PHP_EOL . $element . ' {'; + foreach ($css as $param => $value) { + $string .= PHP_EOL . ' ' . $param . ': ' . $value . ';'; + } + $string .= PHP_EOL . '}' . PHP_EOL; + } + return $string; + } + + public function tojson() + { + return json_encode($this->quickcss); + } + + + + + // _____________________________________________ F O R M ____________________________________________ + + public function form($action) + { + echo '
'; + echo '
'; + $this->inputs($this->quickcss); + echo '
'; + echo '
'; + + } + + public function inputs($quickcss) + { + echo '

Add element

'; + + echo ''; + echo ''; + foreach (array_keys($quickcss) as $element) { + echo ''; + + echo ''; + + foreach ($quickcss as $element => $css) { + echo '

' . $element . '

'; + foreach ($css as $param => $value) { + + echo '
'; + echo ''; + echo ''; + echo '
'; + + echo '
'; + + if (in_array($param, self::COLOR)) { + echo ''; + } + + if (in_array($param, self::SIZE)) { + $this->sizeinput($element, $param, $value); + } + + if (in_array($param, self::getselect())) { + $this->selectinput($element, $param, $value); + } + + if (in_array($param, self::UNIQUE)) { + $method = str_replace('-', '', $param) . 'input'; + if (method_exists($this, $method)) { + $this->$method($element, $param, $value); + } + } + + echo '
'; + } + } + + + } + + + + + + + // ____________________________________ I N P U T __________________________________ + + public function sizeinput($element, $param, $value) + { + echo ''; + + $unit = preg_replace('/\d/', '', $value); + ?> + + '; + + $unit = preg_replace('/\d/', '', $value); + ?> + + '; + } + + public function selectinput($element, $param, $value) + { + echo ''; + } + + +} + + + +?> \ No newline at end of file diff --git a/w/class/record.php b/w/class/record.php new file mode 100644 index 0000000..e488383 --- /dev/null +++ b/w/class/record.php @@ -0,0 +1,116 @@ +hydrate($donnees); + } + + public function hydrate(array $donnees) + { + foreach ($donnees as $key => $value) { + $method = 'set' . $key; + + if (method_exists($this, $method)) { + $this->$method($value); + } + } + } + + + +// _________________________________________________ G E T ____________________________________________________ + + public function id() + { + return $this->id; + } + + public function path() + { + return $this->path; + } + + public function extension() + { + return $this->extension; + } + + public function size() + { + return $this->size; + } + + public function datetime() + { + return $this->datetime; + } + + public function number() + { + return $this->number; + } + +// ___________________________________________________ S E T __________________________________________________ + + public function setid($id) + { + if (strlen($id) < 100 and is_string($id)) { + $this->id = strip_tags(strtolower($id)); + } + } + + public function setpath($path) + { + if (strlen($path) < 40 and is_string($path)) { + $this->path = strip_tags(strtolower($path)); + } + } + + public function setextension($extension) + { + if (strlen($extension) < 7 and is_string($extension)) { + $this->extension = strip_tags(strtolower($extension)); + } + } + + public function setsize($size) + { + if (40 and is_int($size)) { + $this->size = strip_tags(strtolower($size)); + } + } + + public function setdatetime($datetime) + { + if (is_int($datetime)) { + $this->datetime = strip_tags(strtolower($datetime)); + } + } + + public function setnumber($number) + { + if (is_int($number)) { + $this->number = strip_tags(strtolower($number)); + } + } + + + + + +} + +?> \ No newline at end of file diff --git a/w/class/route.php b/w/class/route.php new file mode 100644 index 0000000..cc2fe59 --- /dev/null +++ b/w/class/route.php @@ -0,0 +1,84 @@ +hydrate($vars); + } + + public function hydrate($vars) + { + foreach ($vars as $var => $value) { + $method = 'set' . $var; + if (method_exists($this, $method)) { + $this->$method($value); + } + } + } + + public function toarray() + { + $array = []; + if (!empty($this->id)) { + $array[] = 'art'; + } + if (!empty($this->aff)) { + $array[] = 'aff='.$this->aff; + } + if (!empty($this->action)) { + $array[] = 'action=' . $this->action; + } + if (!empty($this->redirect)) { + $array[] = $this->redirect; + } + + + return $array; + } + + function tostring() + { + return implode(' ', $this->toarray()); + } + + + + public function setid($id) + { + $this->id = $id; + } + + public function setaff($aff) + { + $this->aff = $aff; + + } + + public function setaction($action) + { + $this->action = $action; + } + + public function setredirect($redirect) + { + $this->redirect = $redirect; + } + + public function id() + { + return $this->id; + } +} + + + + +?> \ No newline at end of file diff --git a/w/class/router.php b/w/class/router.php new file mode 100644 index 0000000..4d9d718 --- /dev/null +++ b/w/class/router.php @@ -0,0 +1,63 @@ + ['art', 'read'], + 'art aff=read' => ['art', 'read'], + 'art aff=edit' => ['art', 'edit'], + 'art action=update home' => ['art', 'update', 'home'], + 'art action=add' => ['art', 'add'], + 'art action=delete' => ['art', 'delete'], + 'aff=home action=massedit', + 'aff=home' => ['home', 'desktop'], + '' => ['home', 'desktop'], + 'aff=home action=massedit' => ['home', 'massedit'], + 'action=massedit' => ['home', 'massedit'], + 'art action=login' => ['art', 'login'], + 'home action=login' => ['home', 'login'], + 'action=login' => ['home', 'login'], + 'aff=media' => ['media', 'desktop'], + 'aff=media action=addmedia' => ['media', 'addmedia'], + ]; + + public function __construct() { + if($this->matchroute()) { + $this->callmethod(); + } else { + echo '

404 Error

'; + } + } + + public function matchroute() + { + $this->route = new route($_GET); + $match = array_key_exists($this->route->tostring(), self::ROUTES); + return $match; + + } + + public function callmethod() + { + $method = self::ROUTES[$this->route->tostring()]; + + $class = 'controller' . $method[0]; + $function = $method[1]; + $controller = new $class($this->route->artid()); + $params = array_slice($method, 2); + $controller->$function(...$params); + } + + + +} + + + + + + +?> \ No newline at end of file diff --git a/w/class/user.php b/w/class/user.php new file mode 100644 index 0000000..3ed831d --- /dev/null +++ b/w/class/user.php @@ -0,0 +1,37 @@ +hydrate($datas); + } + } + + public function hydrate(array $datas = []) + { + foreach ($datas as $key => $value) { + $method = 'set' . $key; + + if (method_exists($this, $method)) { + $this->$method($value); + } + } + } + + public function setlevel($level) + { + $this->level = $level; + } + + public function level() + { + return $this->level; + } +} + + + +?> \ No newline at end of file diff --git a/w/class/w.article.php b/w/class/w.article.php new file mode 100644 index 0000000..2476353 --- /dev/null +++ b/w/class/w.article.php @@ -0,0 +1,32 @@ +exist($_GET['id'])) { + + $art = $app->get($_GET['id']); + + if (isset($_GET['edit']) and $_GET['edit'] == 1 and $app->session() >= $app::EDITOR) { + echo '
'; + $aff->edit($art, $app, $app->getlister(['id', 'title']), $config->fontsize(), $app->getlistermedia($app::MEDIA_DIR, 'image')); + $aff->aside($app); + echo '
'; + } else { + echo '
'; + + + $art->autotaglistupdate($app->taglist($app->getlister(['id', 'title', 'description', 'tag']), $art->autotaglist())); + + + $aff->lecture($art, $app); + echo '
'; + + } +} else { + echo 'This article does not exist yet'; + + if ($app->session() >= $app::EDITOR) { + echo '
'; + } + +} + +?> \ No newline at end of file diff --git a/w/class/w.home.php b/w/class/w.home.php new file mode 100644 index 0000000..8ba8b44 --- /dev/null +++ b/w/class/w.home.php @@ -0,0 +1,85 @@ +header(); + +echo '
'; + + +if ($app->session() >= $app::EDITOR) { + + $app->bddinit($config); + + $opt = new Opt(Art2::classvarlist()); + $opt->setcol(['id', 'tag', 'linkfrom', 'contenu', 'description', 'title', 'datemodif', 'datecreation', 'secure']); + $table = $app->getlisteropt($opt); + $app->listcalclinkfrom($table); + $opt->settaglist($table); + $opt->submit(); + + + + + + + + + + + + $opt->setcol(['id', 'tag', 'linkfrom', 'contenu', 'description', 'title', 'datemodif', 'datecreation', 'secure', 'linkto']); + + + $aff->option($app, $opt); + + $filtertagfilter = $app->filtertagfilter($table, $opt->tagfilter(), $opt->tagcompare()); + $filtersecure = $app->filtersecure($table, $opt->secure()); + + $filter = array_intersect($filtertagfilter, $filtersecure); + $table2 = []; + $table2invert = []; + foreach ($table as $art) { + if (in_array($art->id(), $filter)) { + $table2[] = $art; + } else { + $table2invert[] = $art; + } + + + } + + if(!empty($opt->invert())) { + $table2 = $table2invert; + } + + $app->artlistsort($table2, $opt->sortby(), $opt->order()); + + + echo '
'; + + + $aff->home2table($app, $table2, $app->getlister()); + + + + + echo '
'; + $aff->mapheader(); + if(isset($_GET['map'])) { + $aff->mermaid($app->map($table2)); + } + echo '
'; + + + + + + echo '
'; + +} + + + +echo '
'; + +?> \ No newline at end of file diff --git a/w/class/w.menu.php b/w/class/w.menu.php new file mode 100644 index 0000000..8e89ed1 --- /dev/null +++ b/w/class/w.menu.php @@ -0,0 +1,56 @@ +session() >= $app::EDITOR) { + + if ($_GET['aff'] == 'admin' && $app->session() >= $app::ADMIN) { + echo '
'; + echo '

Admin

'; + + $aff->admincss($config, $app); + $aff->adminpassword($config); + $aff->admindb($config); + if ($app->setbdd($config)) { + $status = "OK"; + } else { + $status = "Not Connected"; + } + $aff->admintable($config, $status, $app->tablelist($config->dbname())); + $aff->admindisplay($config->color4()); + + echo '
'; + } elseif ($_GET['aff'] == 'media') { + echo '

Media

'; + echo '
'; + echo '
'; + + $aff->addmedia($app); + $aff->medialist($app->getlistermedia($app::MEDIA_DIR), $app::MEDIA_DIR); + + echo '
'; + echo '
'; + + } elseif ($_GET['aff'] == 'record') { + echo '

Record

'; + echo '
'; + + $aff->recordlist($app); + + echo '
'; + + } elseif ($_GET['aff'] == 'info') { + + + + } else { + + echo '

Private

You dont have the permission to access this page.

'; + + } + + +} else { + echo '

Private

You should be connected to access this page.

'; +} + +?> \ No newline at end of file diff --git a/w/controller/w.article.php b/w/controller/w.article.php deleted file mode 100644 index 307caa4..0000000 --- a/w/controller/w.article.php +++ /dev/null @@ -1,33 +0,0 @@ -exist($_GET['id'])) { - - $art = $app->get($_GET['id']); - - if (isset($_GET['edit']) and $_GET['edit'] == 1 and $app->session() >= $app::EDITOR) { - echo '
'; - $aff->edit($art, $app, $app->getlister(['id', 'titre']), $config->fontsize(), $app->getlistermedia($app::MEDIA_DIR, 'image')); - //$aff->copy($art, $app->getlister(['id', 'titre'])); - $aff->aside($app); - echo '
'; - } else { - echo '
'; - - - $art->autotaglistupdate($app->taglist($app->getlister(['id', 'titre', 'intro', 'tag']), $art->autotaglist())); - - - $aff->lecture($art, $app); - echo '
'; - - } -} else { - echo 'This article does not exist yet'; - - if ($app->session() >= $app::EDITOR) { - echo '
'; - } - -} - -?> \ No newline at end of file diff --git a/w/controller/w.home.php b/w/controller/w.home.php deleted file mode 100644 index 3094d03..0000000 --- a/w/controller/w.home.php +++ /dev/null @@ -1,85 +0,0 @@ -header(); - -echo '
'; - - -if ($app->session() >= $app::EDITOR) { - - $app->bddinit($config); - - $opt = new Opt(Art::classvarlist()); - $opt->setcol(['id', 'tag', 'lien', 'contenu', 'intro', 'titre', 'datemodif', 'datecreation', 'secure']); - $table = $app->getlisteropt($opt); - $app->listcalclien($table); - $opt->settaglist($table); - $opt->submit(); - - - - - - - - - - - - $opt->setcol(['id', 'tag', 'lien', 'contenu', 'intro', 'titre', 'datemodif', 'datecreation', 'secure', 'liento']); - - - $aff->option($app, $opt); - - $filtertagfilter = $app->filtertagfilter($table, $opt->tagfilter(), $opt->tagcompare()); - $filtersecure = $app->filtersecure($table, $opt->secure()); - - $filter = array_intersect($filtertagfilter, $filtersecure); - $table2 = []; - $table2invert = []; - foreach ($table as $art) { - if (in_array($art->id(), $filter)) { - $table2[] = $art; - } else { - $table2invert[] = $art; - } - - - } - - if(!empty($opt->invert())) { - $table2 = $table2invert; - } - - $app->artlistsort($table2, $opt->sortby(), $opt->order()); - - - echo '
'; - - - $aff->home2table($app, $table2, $app->getlister()); - - - - - echo '
'; - $aff->mapheader(); - if(isset($_GET['map'])) { - $aff->mermaid($app->map($table2)); - } - echo '
'; - - - - - - echo '
'; - -} - - - -echo '
'; - -?> \ No newline at end of file diff --git a/w/controller/w.menu.php b/w/controller/w.menu.php deleted file mode 100644 index 8e89ed1..0000000 --- a/w/controller/w.menu.php +++ /dev/null @@ -1,56 +0,0 @@ -session() >= $app::EDITOR) { - - if ($_GET['aff'] == 'admin' && $app->session() >= $app::ADMIN) { - echo '
'; - echo '

Admin

'; - - $aff->admincss($config, $app); - $aff->adminpassword($config); - $aff->admindb($config); - if ($app->setbdd($config)) { - $status = "OK"; - } else { - $status = "Not Connected"; - } - $aff->admintable($config, $status, $app->tablelist($config->dbname())); - $aff->admindisplay($config->color4()); - - echo '
'; - } elseif ($_GET['aff'] == 'media') { - echo '

Media

'; - echo '
'; - echo '
'; - - $aff->addmedia($app); - $aff->medialist($app->getlistermedia($app::MEDIA_DIR), $app::MEDIA_DIR); - - echo '
'; - echo '
'; - - } elseif ($_GET['aff'] == 'record') { - echo '

Record

'; - echo '
'; - - $aff->recordlist($app); - - echo '
'; - - } elseif ($_GET['aff'] == 'info') { - - - - } else { - - echo '

Private

You dont have the permission to access this page.

'; - - } - - -} else { - echo '

Private

You should be connected to access this page.

'; -} - -?> \ No newline at end of file diff --git a/w/fn/w.fn.php b/w/fn/w.fn.php index 72c98c1..fe3ea48 100644 --- a/w/fn/w.fn.php +++ b/w/fn/w.fn.php @@ -9,10 +9,6 @@ function bddconnect($host, $bdname, $user, $password) return $bdd; } -function my_autoloader($class) -{ - require(__DIR__.'/../class/class.w.' . strtolower($class) . '.php'); -} function secure() { diff --git a/w/view/templates/base.php b/w/view/templates/base.php new file mode 100644 index 0000000..aaca8e1 --- /dev/null +++ b/w/view/templates/base.php @@ -0,0 +1,10 @@ + + + <?=$this->e($title)?> + + + +section('content')?> + + + \ No newline at end of file diff --git a/w/view/templates/media.php b/w/view/templates/media.php new file mode 100644 index 0000000..8b189d5 --- /dev/null +++ b/w/view/templates/media.php @@ -0,0 +1,4 @@ +layout('base', ['title' => 'Media']) ?> + +

Media

+

Hello, e($interface)?>

\ No newline at end of file diff --git a/w/view/templates/nav.php b/w/view/templates/nav.php new file mode 100644 index 0000000..e731673 --- /dev/null +++ b/w/view/templates/nav.php @@ -0,0 +1,42 @@ +