diff options
Diffstat (limited to 'class')
-rw-r--r-- | class/class.w.aff.php | 65 | ||||
-rw-r--r-- | class/class.w.app.php | 62 | ||||
-rw-r--r-- | class/class.w.art.php | 12 | ||||
-rw-r--r-- | class/class.w.config.php | 3 | ||||
-rw-r--r-- | class/class.w.opt.php | 45 |
5 files changed, 140 insertions, 47 deletions
diff --git a/class/class.w.aff.php b/class/class.w.aff.php index 9f1177a..198f61e 100644 --- a/class/class.w.aff.php +++ b/class/class.w.aff.php @@ -162,7 +162,7 @@ class Aff </form> <div id="submit"> <input type="submit" name="action" value="update" accesskey="s" onclick="document.getElementById('artedit').submit();" form="artedit"> - <input type="submit" name="action" value="delete" onclick="confirmSubmit(event, 'Suppression de cet article', 'artedit')" form="artedit"> + <input type="submit" name="action" value="delete" onclick="confirmSubmit(event, 'Delete this article', 'artedit')" form="artedit"> </div> @@ -197,7 +197,7 @@ public function copy(Art $art, $list) <input type="checkbox" id="checkhtml" name="html" value="true"> <label for="checktemplate">template</label> <input type="checkbox" id="checktemplate" name="template" value="true"> - <input type="submit" value="copy" onclick="confirmSubmit(event, 'Ecraser ces valeurs')"> + <input type="submit" value="copy" onclick="confirmSubmit(event, 'Erase values')"> </fieldset> </form> </div> @@ -313,13 +313,27 @@ public function header() public function home2table(App $app, $getlist) { + echo '<form action="./" method="post">'; + ?> + <div id="massedit"> + <select name="massedit" required> + <option value="delete">delete</option> + <option value="0">set as public</option> + <option value="1">set as private</option> + <option value="2">set as not published</option> + </select> + <input type="submit" value="submit" onclick="confirmSubmit(event, 'Are you sure')" > + <input type="hidden" name="action" value="massedit"> + </div> + <?php if ($app->session() >= $app::EDITOR) { echo '<table id="home2table">'; - echo '<tr><th>title</th><th>tag</th><th>summary</th><th>↘ to</th><th>↗ from</th><th>last modification</th><th>date of creation</th><th>privacy</th><th>⚙ edit</th></tr>'; + echo '<tr><th>x</th><th>title</th><th>tag</th><th>summary</th><th>↘ to</th><th>↗ from</th><th>last modification</th><th>date of creation</th><th>privacy</th><th>⚙ edit</th></tr>'; foreach ($getlist as $item) { echo '<tr>'; + echo '<td><input type="checkbox" name="id[]" value='.$item->id().'></td>'; echo '<td><a href="?id=' . $item->id() . '">' . $item->titre() . '</a></td>'; echo '<td>' . $item->tag('sort') . '</td>'; echo '<td>' . $item->intro() . '</td>'; @@ -332,6 +346,7 @@ public function home2table(App $app, $getlist) echo '</tr>'; } echo ' </table> '; + echo ' </form> '; } } @@ -340,15 +355,19 @@ public function option(App $app, Opt $opt) if ($app->session() >= $app::EDITOR) { echo '<div id="options"><form action="./" method="get" >'; + echo '<input type="submit" name="submit" value="filter">'; + echo '⬅<input type="submit" name="submit" value="reset">'; + - $this->optiontag($opt); - $this->optionprivacy($opt); $this->optionsort($opt); + $this->optionprivacy($opt); + $this->optiontag($opt); - echo '<input type=submit value="show">'; + echo '<input type="submit" name="submit" value="filter">'; + echo '⬅<input type="submit" name="submit" value="reset">'; echo '</form></div>'; @@ -360,13 +379,34 @@ public function optiontag(Opt $opt) { echo '<fieldset><legend>Tag</legend><ul>'; - foreach ($opt->taglist() as $tagor => $count) { - if (in_array($tagor, $opt->tagor())) { - echo '<li><input type="checkbox" name="tagor[]" id="' . $tagor . '" value="' . $tagor . '" checked /><label for="' . $tagor . '">' . $tagor . ' (' . $count . ')</label></li>'; + + echo '<input type="radio" id="OR" name="tagcompare" value="OR" ' . ($opt->tagcompare() == "OR" ? "checked" : "") . ' ><label for="OR">OR</label>'; + echo '<input type="radio" id="AND" name="tagcompare" value="AND" ' . ($opt->tagcompare() == "AND" ? "checked" : "") . '><label for="AND">AND</label>'; + + $in = false; + $out = false; + $limit = 1; + foreach ($opt->taglist() as $tagfilter => $count) { + + if ($count > $limit && $in == false) { + echo '<details open><summary>>'.$limit.'</summary>'; + $in = true; + } + if ($count == $limit && $in == true && $out == false) { + echo '</details><details><summary>'.$limit.'</summary>'; + $out = true; + } + + if (in_array($tagfilter, $opt->tagfilter())) { + + echo '<li><input type="checkbox" name="tagfilter[]" id="' . $tagfilter . '" value="' . $tagfilter . '" checked /><label for="' . $tagfilter . '">' . $tagfilter . ' (' . $count . ')</label></li>'; } else { - echo '<li><input type="checkbox" name="tagor[]" id="' . $tagor . '" value="' . $tagor . '" /><label for="' . $tagor . '">' . $tagor . ' (' . $count . ')</label></li>'; + echo '<li><input type="checkbox" name="tagfilter[]" id="' . $tagfilter . '" value="' . $tagfilter . '" /><label for="' . $tagfilter . '">' . $tagfilter . ' (' . $count . ')</label></li>'; } } + if($in = true || $out = true) { + echo '</details>'; + } echo '</ul></fieldset>'; } @@ -389,7 +429,9 @@ public function optionsort(Opt $opt) echo '<option value="' . $col . '" ' . ($opt->sortby() == $col ? "selected" : "") . '>' . $col . '</option>'; } echo '</select>'; + echo '</br>'; echo '<input type="radio" id="asc" name="order" value="1" ' . ($opt->order() == '1' ? "checked" : "") . ' /><label for="asc">ascending</label>'; + echo '</br>'; echo '<input type="radio" id="desc" name="order" value="-1" ' . ($opt->order() == '-1' ? "checked" : "") . ' /><label for="desc">descending</label>'; echo '</fieldset>'; @@ -469,7 +511,7 @@ public function nav($app) echo '<a class="button" href="?id=' . $_GET['id'] . '&edit=1" >edit</a>'; } } - if ($app->session() >= $app::EDITOR && !isset($_GET['id'])) { + if ($app->session() >= $app::EDITOR) { echo '<a class="button" href="?aff=media" >Media</a>'; echo '<a class="button" href="?aff=record" >Record</a>'; if ($app->session() >= $app::ADMIN) { @@ -827,6 +869,7 @@ public function nav($app) + //______________________________________________________ S E T _________________________________________________ public function setsession($session) diff --git a/class/class.w.app.php b/class/class.w.app.php index efb8986..5e1ddb0 100644 --- a/class/class.w.app.php +++ b/class/class.w.app.php @@ -37,25 +37,52 @@ class App } catch (PDOException $e) { $caught = false; echo '<h1>Error 500, database offline</h1>'; - echo '<p><a href=".">Homepage for admin login</a> (connect on the top right side)</p>'; - if ($this->session() >= 3) { + if ($this->session() >= self::EDITOR) { echo '<p>Error : ' . $e->getMessage() . '</p>'; - if ($this->session() == 10) { + if ($this->session() == self::ADMIN) { echo '<p>Go to the <a href="?aff=admin">Admin Panel</a> to edit your database credentials</p>'; } else { echo '<p>Logout and and come back with an <strong>admin password</strong> to edit the database connexions settings.</p>'; } + } else { + echo '<p><a href=".">Homepage for admin login</a> (connect on the top right side)</p>'; } exit; } - if ($caught) { - $this->arttable = $config->arttable(); - } return $caught; } + public function settable(Config $config) + { + if (!empty($config->arttable())) { + $this->arttable = $config->arttable(); + } else { + echo '<h1>Table Error</h1>'; + + if ($this->session() >= self::EDITOR) { + if ($this->session() == self::ADMIN) { + echo '<p>Go to the <a href="?aff=admin">Admin Panel</a> to select or add an Article table</p>'; + } else { + echo '<p>Logout and and come back with an <strong>admin password</strong> to edit table settings.</p>'; + } + } else { + echo '<p><a href=".">Homepage for admin login</a> (connect on the top right side)</p>'; + } + $caught = false; + exit; + } + } + + public function bddinit(Config $config) + { + $test = $this->setbdd($config); + if ($test) { + $this->settable($config); + } + } + // _________________________________________ C O N F I G ____________________________________ @@ -206,7 +233,6 @@ class App public function getlisteropt(Opt $opt) { - $artlist = []; $select = 'SELECT ' . $opt->col('string') . ' FROM ' . $this->arttable; @@ -252,15 +278,24 @@ class App - public function filtertagor(array $artlist, array $tagchecked) + public function filtertagfilter(array $artlist, array $tagchecked, $tagcompare = 'OR') { $filteredlist = []; foreach ($artlist as $art) { - if (!empty(array_intersect($art->tag('array'), $tagchecked))) { - $filteredlist[] = $art->id(); - } elseif (empty($tagchecked)) { + 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; @@ -311,9 +346,6 @@ class App public function tableexist($dbname, $tablename) { - var_dump($dbname); - var_dump($tablename); - $req = $this->bdd->prepare('SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = :dbname AND @@ -341,7 +373,7 @@ class App $arttables = []; foreach ($donnees as $table) { - $arttables[] = $table['Tables_in_wcms']; + $arttables[] = $table['Tables_in_' . $dbname]; } return $arttables; diff --git a/class/class.w.art.php b/class/class.w.art.php index d757e0d..ffdb670 100644 --- a/class/class.w.art.php +++ b/class/class.w.art.php @@ -73,7 +73,7 @@ class Art public function updatelien() { - $this->lien = search($this->md(), self::DEBUT, self::FIN); + $this->lien = search($this->md(true), self::DEBUT, self::FIN); } public static function classvarlist() @@ -179,9 +179,14 @@ class Art return $temp . $this->css; } - public function md() + public function md($expand = false) { - return $this->html; + if($expand == true) { + $md = str_replace('](=', '](?id=', $this->html); + } else { + $md = $this->html; + } + return $md; } public function html(App $app) @@ -200,6 +205,7 @@ class Art $html = str_replace($lien, $titlelien, $html); } + $html = str_replace('href="=', 'href="?id=', $html); $html = str_replace('href="http', ' class="external" target="_blank" href="http', $html); $html = str_replace('<img src="/', '<img src="../media/', $html); $html = str_replace('<iframe', '<div class="iframe"><div class="container"><iframe class="video" ', $html); diff --git a/class/class.w.config.php b/class/class.w.config.php index 4a63f86..839bf77 100644 --- a/class/class.w.config.php +++ b/class/class.w.config.php @@ -99,6 +99,8 @@ class Config return $this->cssread; } + + // __________________________________________ S E T ______________________________________ public function sethost($host) @@ -156,6 +158,7 @@ class Config $this->cssread = strip_tags($cssread); } + } diff --git a/class/class.w.opt.php b/class/class.w.opt.php index 76b3905..fc71312 100644 --- a/class/class.w.opt.php +++ b/class/class.w.opt.php @@ -2,8 +2,9 @@ class Opt { private $sortby = 'id'; - private $order = '1'; - private $tagor = []; + private $order = 1; + private $tagfilter = []; + private $tagcompare = 'OR'; private $secure = 4; private $liento = ['min' => '0', 'max' => '0']; private $lienfrom = ['min' => '0', 'max' => '0']; @@ -65,9 +66,14 @@ class Opt return $this->secure; } - public function tagor($type = 'array') + public function tagfilter($type = 'array') { - return $this->tagor; + return $this->tagfilter; + } + + public function tagcompare() + { + return $this->tagcompare; } public function liento($type = 'array') @@ -117,16 +123,23 @@ class Opt } } - public function settagor($tagor) + public function settagfilter($tagfilter) { - if (is_array($tagor)) { - // $tagorlist = []; - // foreach ($tagor as $tag) { + if (is_array($tagfilter)) { + // $tagfilterlist = []; + // foreach ($tagfilter as $tag) { // if (array_key_exists($tag, $this->taglist())) { - // $tagorlist[] = $tag; + // $tagfilterlist[] = $tag; // } // } - $this->tagor = $tagor; + $this->tagfilter = $tagfilter; + } + } + + public function settagcompare($tagcompare) + { + if(in_array($tagcompare, ['OR', 'AND'])) { + $this->tagcompare = $tagcompare; } } @@ -137,18 +150,14 @@ class Opt } } - public function setliento($n0, $n1) + public function setliento($range) { - $stock = [intval($n1), intval($n2)]; - $sorted = asort($stock); - $this->liento = ['min' => $stock[0], 'max' => $stock[1]]; + $this->liento = $range; } - public function setlienfrom($n0, $n1) + public function setlienfrom($range) { - $stock = [intval($n1), intval($n2)]; - $sorted = asort($stock); - $this->lienfrom = ['min' => $stock[0], 'max' => $stock[1]]; + $this->lienfrom = $range; } public function setlientomin($min) |