Comment: | Passage à PSR-0 + Dépendances simplifiées avec KD2fw |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
c39efc2c38bd55ba88e6abe82de604b1 |
User & Date: | bohwaz on 2014-12-18 19:41:50 |
Other Links: | manifest | tags |
2015-01-02
| ||
23:40 | PSR-0 progress: move countries list in KD2fw check-in: 82870b9ec8 user: bohwaz tags: trunk | |
2014-12-18
| ||
19:41 | Passage à PSR-0 + Dépendances simplifiées avec KD2fw check-in: c39efc2c38 user: bohwaz tags: trunk | |
18:41 | Déplacement des objets pour adopter PSR-0 check-in: e1d5bc8368 user: bohwaz tags: trunk | |
Modified src/include/init.php from [d4a4d882d6] to [4c2c1512df].
︙ | ︙ | |||
173 174 175 176 177 178 179 | // For @ ignored errors if (error_reporting() === 0) return; throw new \ErrorException($errstr, 0, $errno, $errfile, $errline); } function exception_handler($e) { | | | 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | // For @ ignored errors if (error_reporting() === 0) return; throw new \ErrorException($errstr, 0, $errno, $errfile, $errline); } function exception_handler($e) { if ($e instanceOf UserException || $e instanceOf \KD2\MiniSkelMarkupException) { try { if (PHP_SAPI == 'cli') { echo $e->getMessage(); } else |
︙ | ︙ | |||
319 320 321 322 323 324 325 | * Inclusion des fichiers de base */ if (!defined('Garradin\INSTALL_PROCESS') && !defined('Garradin\UPGRADE_PROCESS')) { if (!file_exists(DB_FILE)) { | | | < < | 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 | * Inclusion des fichiers de base */ if (!defined('Garradin\INSTALL_PROCESS') && !defined('Garradin\UPGRADE_PROCESS')) { if (!file_exists(DB_FILE)) { Utils::redirect('/admin/install.php'); } $config = Config::getInstance(); if (version_compare($config->getVersion(), garradin_version(), '<')) { Utils::redirect('/admin/upgrade.php'); } } |
Modified src/include/lib/Garradin/Compta/Categories.php from [504dbd9b0c] to [a1074d89b7].
1 2 | <?php | | > > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php namespace Garradin\Compta; use \Garradin\DB; use \Garradin\Utils; use \Garradin\UserException; class Categories { const DEPENSES = -1; const RECETTES = 1; const AUTRES = 0; public function importCategories() { |
︙ | ︙ | |||
118 119 120 121 122 123 124 | $data['intitule'] = trim($data['intitule']); $data['description'] = isset($data['description']) ? trim($data['description']) : ''; return true; } } | < < | 122 123 124 125 126 127 128 | $data['intitule'] = trim($data['intitule']); $data['description'] = isset($data['description']) ? trim($data['description']) : ''; return true; } } |
Modified src/include/lib/Garradin/Compta/Comptes.php from [666a1a41ca] to [09fade04d2].
1 2 | <?php | | > > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php namespace Garradin\Compta; use \Garradin\DB; use \Garradin\Utils; use \Garradin\UserException; class Comptes { const CAISSE = 530; const PASSIF = 0x01; const ACTIF = 0x02; const PRODUIT = 0x04; const CHARGE = 0x08; |
︙ | ︙ | |||
317 318 319 320 321 322 323 | self::ACTIF | self::PASSIF => 'Actif ou passif (déterminé automatiquement au bilan selon le solde du compte)', self::CHARGE => 'Charge', self::PRODUIT => 'Produit', self::CHARGE | self::PRODUIT => 'Charge et produit', ]; } } | < < | 321 322 323 324 325 326 327 | self::ACTIF | self::PASSIF => 'Actif ou passif (déterminé automatiquement au bilan selon le solde du compte)', self::CHARGE => 'Charge', self::PRODUIT => 'Produit', self::CHARGE | self::PRODUIT => 'Charge et produit', ]; } } |
Modified src/include/lib/Garradin/Compta/Comptes_Bancaires.php from [eb158efea8] to [981d7813a1].
1 2 | <?php | | > > > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php namespace Garradin\Compta; use \Garradin\DB; use \Garradin\Utils; use \Garradin\UserException; class Comptes_Bancaires extends Comptes { const NUMERO_PARENT_COMPTES = 512; public function add($data) { $db = DB::getInstance(); |
︙ | ︙ | |||
132 133 134 135 136 137 138 | $data['bic'] = ''; } else { $data['bic'] = trim(strtoupper($data['bic'])); $data['bic'] = preg_replace('![^\dA-Z]!', '', $data['bic']); | | | < < | 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | $data['bic'] = ''; } else { $data['bic'] = trim(strtoupper($data['bic'])); $data['bic'] = preg_replace('![^\dA-Z]!', '', $data['bic']); if (!Utils::checkBIC($data['bic'])) { throw new UserException('Code BIC/SWIFT invalide.'); } } if (empty($data['iban'])) { $data['iban'] = ''; } else { $data['iban'] = trim(strtoupper($data['iban'])); $data['iban'] = preg_replace('![^\dA-Z]!', '', $data['iban']); if (!Utils::checkIBAN($data['iban'])) { throw new UserException('Code IBAN invalide.'); } } return true; } } |
Modified src/include/lib/Garradin/Compta/Exercices.php from [0b1ea1bb50] to [1622437e4a].
1 2 | <?php | | > > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php namespace Garradin\Compta; use \Garradin\DB; use \Garradin\Utils; use \Garradin\UserException; class Exercices { public function add($data) { $this->_checkFields($data); $db = DB::getInstance(); |
︙ | ︙ | |||
74 75 76 77 78 79 80 | * @param string $end Date de clôture de l'exercice au format Y-m-d * @return integer L'ID du nouvel exercice créé */ public function close($id, $end) { $db = DB::getInstance(); | | | | | 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | * @param string $end Date de clôture de l'exercice au format Y-m-d * @return integer L'ID du nouvel exercice créé */ public function close($id, $end) { $db = DB::getInstance(); if (!Utils::checkDate($end)) { throw new UserException('Date de fin vide ou invalide.'); } $db->exec('BEGIN;'); // Clôture de l'exercice $db->simpleUpdate('compta_exercices', [ 'cloture' => 1, 'fin' => $end, ], 'id = \''.(int)$id.'\''); // Date de début du nouvel exercice : lendemain de la clôture du précédent exercice $new_begin = Utils::modifyDate($end, '+1 day'); // Date de fin du nouvel exercice : un an moins un jour après l'ouverture $new_end = Utils::modifyDate($new_begin, '+1 year -1 day'); // Enfin sauf s'il existe déjà des opérations après cette date, auquel cas la date de fin // est fixée à la date de la dernière opération, ceci pour ne pas avoir d'opération // orpheline d'exercice $last = $db->simpleQuerySingle('SELECT date FROM compta_journal WHERE id_exercice = ? AND date >= ? ORDER BY date DESC LIMIT 1;', false, $id, $new_end); $new_end = $last ?: $new_end; |
︙ | ︙ | |||
145 146 147 148 149 150 151 | FROM compta_comptes INNER JOIN compta_journal ON compta_comptes.id = compta_journal.compte_debit OR compta_comptes.id = compta_journal.compte_credit WHERE id_exercice = :id AND solde != 0 AND CAST(substr(compta_comptes.id, 1, 1) AS INTEGER) <= 5 GROUP BY compta_comptes.id;', ['id' => $old_id]); $diff = 0; | | | 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | FROM compta_comptes INNER JOIN compta_journal ON compta_comptes.id = compta_journal.compte_debit OR compta_comptes.id = compta_journal.compte_credit WHERE id_exercice = :id AND solde != 0 AND CAST(substr(compta_comptes.id, 1, 1) AS INTEGER) <= 5 GROUP BY compta_comptes.id;', ['id' => $old_id]); $diff = 0; $journal = new Journal; while ($row = $statement->fetchArray(SQLITE3_ASSOC)) { $solde = abs($row['solde']); $solde = round($solde, 2); $diff += $solde; |
︙ | ︙ | |||
196 197 198 199 200 201 202 | $resultat_debiteur = 129; $resultat = $this->getCompteResultat($exercice); $resultat = $resultat['resultat']; if ($resultat != 0) { | | | 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 | $resultat_debiteur = 129; $resultat = $this->getCompteResultat($exercice); $resultat = $resultat['resultat']; if ($resultat != 0) { $journal = new Journal; $journal->add([ 'libelle' => 'Résultat de l\'exercice précédent', 'date' => $date, 'montant' => abs($resultat), 'compte_debit' => $resultat < 0 ? 129 : NULL, 'compte_credit' => $resultat > 0 ? 120 : NULL, ]); |
︙ | ︙ | |||
446 447 448 449 450 451 452 | * @param boolean $resultat true s'il faut calculer le résultat de l'exercice (utile pour un exercice en cours) * @return array Un tableau multi-dimensionnel avec deux clés : actif et passif */ public function getBilan($exercice) { $db = DB::getInstance(); | | | | 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 | * @param boolean $resultat true s'il faut calculer le résultat de l'exercice (utile pour un exercice en cours) * @return array Un tableau multi-dimensionnel avec deux clés : actif et passif */ public function getBilan($exercice) { $db = DB::getInstance(); $include = [Comptes::ACTIF, Comptes::PASSIF, Comptes::PASSIF | Comptes::ACTIF]; $actif = ['comptes' => [], 'total' => 0.0]; $passif = ['comptes' => [], 'total' => 0.0]; $actif_ou_passif = ['comptes' => [], 'total' => 0.0]; $resultat = $this->getCompteResultat($exercice); |
︙ | ︙ | |||
493 494 495 496 497 498 499 | while ($row = $res->fetchArray(SQLITE3_NUM)) { list($compte, $debit, $credit, $position) = $row; $parent = substr($compte, 0, 2); $classe = $compte[0]; | | | | | 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 | while ($row = $res->fetchArray(SQLITE3_NUM)) { list($compte, $debit, $credit, $position) = $row; $parent = substr($compte, 0, 2); $classe = $compte[0]; if (($position & Comptes::ACTIF) && ($position & Comptes::PASSIF)) { $position = 'actif_ou_passif'; $solde = $debit - $credit; } else if ($position & Comptes::ACTIF) { $position = 'actif'; $solde = $debit - $credit; } else if ($position & Comptes::PASSIF) { $position = 'passif'; $solde = $credit - $debit; } else { continue; |
︙ | ︙ | |||
603 604 605 606 607 608 609 | } } } return ['actif' => $actif, 'passif' => $passif]; } } | < < | 607 608 609 610 611 612 613 | } } } return ['actif' => $actif, 'passif' => $passif]; } } |
Modified src/include/lib/Garradin/Compta/Import.php from [028dad2163] to [a96dfe987a].
1 2 | <?php | | > > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php namespace Garradin\Compta; use \Garradin\DB; use \Garradin\Utils; use \Garradin\UserException; class Import { protected $csv_header = [ 'Numéro mouvement', 'Date', 'Type de mouvement', 'Catégorie', 'Libellé', |
︙ | ︙ | |||
75 76 77 78 79 80 81 | if (!$fp) { return false; } $db = DB::getInstance(); $db->exec('BEGIN;'); | | | | | | | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | if (!$fp) { return false; } $db = DB::getInstance(); $db->exec('BEGIN;'); $comptes = new Comptes; $banques = new Comptes_Bancaires; $cats = new Categories; $journal = new Journal; $columns = array_flip($this->csv_header); $liste_comptes = $db->simpleStatementFetchAssoc('SELECT id, id FROM compta_comptes;'); $liste_cats = $db->simpleStatementFetchAssoc('SELECT intitule, id FROM compta_categories;'); $liste_moyens = $cats->listMoyensPaiement(); $col = function($column) use (&$row, &$columns) { if (!isset($columns[$column])) return null; if (!isset($row[$columns[$column]])) return null; return $row[$columns[$column]]; }; $line = 0; $delim = Utils::find_csv_delim($fp); while (!feof($fp)) { $row = fgetcsv($fp, 4096, $delim); $line++; if (empty($row)) |
︙ | ︙ | |||
225 226 227 228 229 230 231 | if (!$fp) { return false; } $db = DB::getInstance(); $db->exec('BEGIN;'); | | | | | | 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 | if (!$fp) { return false; } $db = DB::getInstance(); $db->exec('BEGIN;'); $comptes = new Comptes; $banques = new Comptes_Bancaires; $cats = new Categories; $journal = new Journal; $columns = []; $liste_comptes = $db->simpleStatementFetchAssoc('SELECT id, id FROM compta_comptes;'); $liste_cats = $db->simpleStatementFetchAssoc('SELECT intitule, id FROM compta_categories;'); $liste_moyens = $cats->listMoyensPaiement(); $get_compte = function ($compte, $intitule) use (&$liste_comptes, &$comptes, &$banques) |
︙ | ︙ | |||
277 278 279 280 281 282 283 | if (!isset($row[$columns[$column]])) return null; return $row[$columns[$column]]; }; $line = 0; | | | 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 | if (!isset($row[$columns[$column]])) return null; return $row[$columns[$column]]; }; $line = 0; $delim = Utils::find_csv_delim($fp); while (!feof($fp)) { $row = fgetcsv($fp, 4096, $delim); $line++; if (empty($row)) |
︙ | ︙ | |||
379 380 381 382 383 384 385 | $db->exec('END;'); fclose($fp); return true; } } | < < | 383 384 385 386 387 388 389 | $db->exec('END;'); fclose($fp); return true; } } |
Modified src/include/lib/Garradin/Compta/Journal.php from [04ec1a0048] to [64a209ea3e].
1 2 | <?php | | > > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php namespace Garradin\Compta; use \Garradin\DB; use \Garradin\Utils; use \Garradin\UserException; class Journal { protected function _getCurrentExercice() { $db = DB::getInstance(); $id = $db->querySingle('SELECT id FROM compta_exercices WHERE cloture = 0 LIMIT 1;'); if (!$id) |
︙ | ︙ | |||
47 48 49 50 51 52 53 | $debit = 'COALESCE((SELECT SUM(montant) FROM compta_journal WHERE compte_debit '.$compte.' AND id_exercice = '.(int)$exercice.'), 0)'; $credit = 'COALESCE((SELECT SUM(montant) FROM compta_journal WHERE compte_credit '.$compte.' AND id_exercice = '.(int)$exercice.'), 0)'; // L'actif augmente au débit, le passif au crédit $position = $db->simpleQuerySingle('SELECT position FROM compta_comptes WHERE id = ?;', false, $id_compte); | | | 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | $debit = 'COALESCE((SELECT SUM(montant) FROM compta_journal WHERE compte_debit '.$compte.' AND id_exercice = '.(int)$exercice.'), 0)'; $credit = 'COALESCE((SELECT SUM(montant) FROM compta_journal WHERE compte_credit '.$compte.' AND id_exercice = '.(int)$exercice.'), 0)'; // L'actif augmente au débit, le passif au crédit $position = $db->simpleQuerySingle('SELECT position FROM compta_comptes WHERE id = ?;', false, $id_compte); if (($position & Comptes::ACTIF) || ($position & Comptes::CHARGE)) { $query = $debit . ' - ' . $credit; } else { $query = $credit . ' - ' . $debit; } |
︙ | ︙ | |||
71 72 73 74 75 76 77 | $exercice = $this->_getCurrentExercice(); $compte = $inclure_sous_comptes ? 'LIKE \'' . $db->escapeString(trim($compte)) . '%\'' : '= \'' . $db->escapeString(trim($compte)) . '\''; // L'actif et les charges augmentent au débit, le passif et les produits au crédit | | | 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | $exercice = $this->_getCurrentExercice(); $compte = $inclure_sous_comptes ? 'LIKE \'' . $db->escapeString(trim($compte)) . '%\'' : '= \'' . $db->escapeString(trim($compte)) . '\''; // L'actif et les charges augmentent au débit, le passif et les produits au crédit if (($position & Comptes::ACTIF) || ($position & Comptes::CHARGE)) { $d = ''; $c = '-'; } else { $d = '-'; |
︙ | ︙ | |||
185 186 187 188 189 190 191 | if (!empty($data['moyen_paiement']) && !$db->simpleQuerySingle('SELECT 1 FROM compta_moyens_paiement WHERE code = ?;', false, $data['moyen_paiement'])) { throw new UserException('Moyen de paiement invalide.'); } | | | 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 | if (!empty($data['moyen_paiement']) && !$db->simpleQuerySingle('SELECT 1 FROM compta_moyens_paiement WHERE code = ?;', false, $data['moyen_paiement'])) { throw new UserException('Moyen de paiement invalide.'); } if (empty($data['date']) || !Utils::checkDate($data['date'])) { throw new UserException('Date vide ou invalide.'); } if (!$db->simpleQuerySingle('SELECT 1 FROM compta_exercices WHERE cloture = 0 AND debut <= :date AND fin >= :date;', false, ['date' => $data['date']])) { |
︙ | ︙ | |||
364 365 366 367 368 369 370 | $tables = [ 'journal' => $db->querySingle('SELECT sql FROM sqlite_master WHERE type = \'table\' AND name = \'compta_journal\';'), ]; return $tables; } } | < < | 368 369 370 371 372 373 374 | $tables = [ 'journal' => $db->querySingle('SELECT sql FROM sqlite_master WHERE type = \'table\' AND name = \'compta_journal\';'), ]; return $tables; } } |
Modified src/include/lib/Garradin/Compta/Stats.php from [850b5ff26a] to [13cd555739].
1 2 | <?php | | > > > > | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <?php namespace Garradin\Compta; use \Garradin\DB; use \Garradin\Utils; use \Garradin\UserException; class Stats { protected function _parRepartitionCategorie($type) { $db = DB::getInstance(); return $db->simpleStatementFetch('SELECT COUNT(*) AS nb, id_categorie FROM compta_journal WHERE id_categorie IN (SELECT id FROM compta_categories WHERE type = ?) AND id_exercice = (SELECT id FROM compta_exercices WHERE cloture = 0) GROUP BY id_categorie ORDER BY nb DESC;', SQLITE3_ASSOC, $type); } public function repartitionRecettes() { return $this->_parRepartitionCategorie(Categories::RECETTES); } public function repartitionDepenses() { return $this->_parRepartitionCategorie(Categories::DEPENSES); } protected function _parType($type) { return $this->getStats('SELECT strftime(\'%Y%m\', date) AS date, SUM(montant) FROM compta_journal WHERE id_categorie IN (SELECT id FROM compta_categories WHERE type = '.$type.') AND id_exercice = (SELECT id FROM compta_exercices WHERE cloture = 0) GROUP BY strftime(\'%Y-%m\', date) ORDER BY date;'); } public function recettes() { return $this->_parType(Categories::RECETTES); } public function depenses() { return $this->_parType(Categories::DEPENSES); } public function soldeCompte($compte, $augmente = 'debit', $diminue = 'credit') { $db = DB::getInstance(); if (strpos($compte, '%') !== false) |
︙ | ︙ | |||
114 115 116 117 118 119 120 | } ksort($data); return $data; } } | < < | 118 119 120 121 122 123 124 | } ksort($data); return $data; } } |
Modified src/include/lib/Garradin/Config.php from [78ccf5c62f] to [c35055d218].
︙ | ︙ | |||
73 74 75 76 77 78 79 | if (is_array($this->fields_types[$key])) { $value = explode(',', $value); } elseif ($key == 'champs_membres') { | | | 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | if (is_array($this->fields_types[$key])) { $value = explode(',', $value); } elseif ($key == 'champs_membres') { $value = new Membres\Champs((string)$value); } else { settype($value, gettype($this->fields_types[$key])); } } } |
︙ | ︙ | |||
230 231 232 233 234 235 236 | { throw new UserException('Adresse e-mail invalide.'); } break; } case 'champs_membres': { | | | | 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 | { throw new UserException('Adresse e-mail invalide.'); } break; } case 'champs_membres': { if (!($value instanceOf Membres\Champs)) { throw new \UnexpectedValueException('$value doit être de type Membres\Champs'); } break; } case 'champ_identite': case 'champ_identifiant': { $champs = $this->get('champs_membres'); |
︙ | ︙ | |||
288 289 290 291 292 293 294 | throw new UserException('La monnaie doit être renseignée.'); } break; } case 'pays': { | | | 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 | throw new UserException('La monnaie doit être renseignée.'); } break; } case 'pays': { if (!trim($value) || !Utils::getCountryName($value)) { throw new UserException('Le pays renseigné est invalide.'); } break; } default: |
︙ | ︙ |
Modified src/include/lib/Garradin/Cotisations.php from [856480ae44] to [aa5c86a894].
︙ | ︙ | |||
50 51 52 53 54 55 56 | } if (!isset($data['fin']) || trim($data['fin']) == '') { throw new UserException('Une date de fin est obligatoire avec la date de début de validité.'); } | | | | 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | } if (!isset($data['fin']) || trim($data['fin']) == '') { throw new UserException('Une date de fin est obligatoire avec la date de début de validité.'); } if (!Utils::checkDate($data['debut'])) { throw new UserException('La date de début est invalide.'); } if (!Utils::checkDate($data['fin'])) { throw new UserException('La date de fin est invalide.'); } } if (isset($data['id_categorie_compta'])) { |
︙ | ︙ |
Modified src/include/lib/Garradin/DB.php from [d57aaad273] to [0b1250347f].
︙ | ︙ | |||
45 46 47 48 49 50 51 | parent::__construct(DB_FILE, $flags); $this->enableExceptions(true); // Activer les contraintes des foreign keys $this->exec('PRAGMA foreign_keys = ON;'); | | | 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | parent::__construct(DB_FILE, $flags); $this->enableExceptions(true); // Activer les contraintes des foreign keys $this->exec('PRAGMA foreign_keys = ON;'); $this->createFunction('transliterate_to_ascii', ['Garradin\Utils', 'transliterateToAscii']); $this->createFunction('base64', 'base64_encode'); $this->createFunction('rank', [$this, 'sql_rank']); } public function sql_rank($aMatchInfo) { $iSize = 4; // byte size |
︙ | ︙ |
Modified src/include/lib/Garradin/Membres.php from [2d54d77de9] to [7376ad31d8].
︙ | ︙ | |||
96 97 98 99 100 101 102 | ]; $message = "Bonjour,\n\nVous avez oublié votre mot de passe ? Pas de panique !\n\n"; $message.= "Il vous suffit de cliquer sur le lien ci-dessous pour recevoir un nouveau mot de passe.\n\n"; $message.= WWW_URL . 'admin/password.php?c=' . substr($hash, -10); $message.= "\n\nSi vous n'avez pas demandé à recevoir ce message, ignorez-le, votre mot de passe restera inchangé."; | | | | | 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | ]; $message = "Bonjour,\n\nVous avez oublié votre mot de passe ? Pas de panique !\n\n"; $message.= "Il vous suffit de cliquer sur le lien ci-dessous pour recevoir un nouveau mot de passe.\n\n"; $message.= WWW_URL . 'admin/password.php?c=' . substr($hash, -10); $message.= "\n\nSi vous n'avez pas demandé à recevoir ce message, ignorez-le, votre mot de passe restera inchangé."; return Utils::mail($membre['email'], '['.$config->get('nom_asso').'] Mot de passe perdu ?', $message); } public function recoverPasswordConfirm($hash) { $this->_sessionStart(); if (empty($_SESSION['recover_password']['hash'])) return false; if (substr($_SESSION['recover_password']['hash'], -10) != $hash) return false; $config = Config::getInstance(); $db = DB::getInstance(); $password = Utils::suggestPassword(); $dest = $_SESSION['recover_password']['email']; $id = (int)$_SESSION['recover_password']['id']; $message = "Bonjour,\n\nVous avez demandé un nouveau mot de passe pour votre compte.\n\n"; $message.= "Votre adresse email : ".$dest."\n"; $message.= "Votre nouveau mot de passe : ".$password."\n\n"; $message.= "Si vous n'avez pas demandé à recevoir ce message, merci de nous le signaler."; $password = $this->_hashPassword($password); $db->simpleUpdate('membres', ['passe' => $password], 'id = '.(int)$id); return Utils::mail($dest, '['.$config->get('nom_asso').'] Nouveau mot de passe', $message); } public function updateSessionData($membre = null, $droits = null) { if (is_null($membre)) { $membre = $this->get($_SESSION['logged_user']['id']); |
︙ | ︙ | |||
256 257 258 259 260 261 262 | $config = Config::getInstance(); $message .= "\n\n--\nCe message a été envoyé par un membre de ".$config->get('nom_asso'); $message .= ", merci de contacter ".$config->get('email_asso')." en cas d'abus."; if ($copie) { | | | | 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 | $config = Config::getInstance(); $message .= "\n\n--\nCe message a été envoyé par un membre de ".$config->get('nom_asso'); $message .= ", merci de contacter ".$config->get('email_asso')." en cas d'abus."; if ($copie) { Utils::mail($from, $sujet, $message); } return Utils::mail($dest, $sujet, $message, ['From' => $from]); } // Gestion des données /////////////////////////////////////////////////////// public function _checkFields(&$data, $check_editable = true, $check_password = true) { $champs = Config::getInstance()->get('champs_membres'); |
︙ | ︙ | |||
299 300 301 302 303 304 305 | { throw new UserException('Adresse e-mail invalide dans le champ "' . $config['title'] . '".'); } elseif ($config['type'] == 'url' && trim($data[$key]) !== '' && !filter_var($data[$key], FILTER_VALIDATE_URL)) { throw new UserException('Adresse URL invalide dans le champ "' . $config['title'] . '".'); } | | | | | 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 | { throw new UserException('Adresse e-mail invalide dans le champ "' . $config['title'] . '".'); } elseif ($config['type'] == 'url' && trim($data[$key]) !== '' && !filter_var($data[$key], FILTER_VALIDATE_URL)) { throw new UserException('Adresse URL invalide dans le champ "' . $config['title'] . '".'); } elseif ($config['type'] == 'date' && trim($data[$key]) !== '' && !Utils::checkDate($data[$key])) { throw new UserException('Date invalide "' . $config['title'] . '", format attendu : AAAA-MM-JJ.'); } elseif ($config['type'] == 'datetime' && trim($data[$key]) !== '') { if (!Utils::checkDateTime($data[$key]) || !($dt = new DateTime($data[$key]))) { throw new UserException('Date invalide "' . $config['title'] . '", format attendu : AAAA-MM-JJ HH:mm.'); } $data[$key] = $dt->format('Y-m-d H:i'); } elseif ($config['type'] == 'tel') { $data[$key] = Utils::normalizePhoneNumber($data[$key]); } elseif ($config['type'] == 'country') { $data[$key] = strtoupper(substr($data[$key], 0, 2)); } elseif ($config['type'] == 'checkbox') { |
︙ | ︙ | |||
557 558 559 560 561 562 563 | if ($champ['type'] == 'multiple') { $where = 'WHERE '.$field.' & (1 << '.(int)$query.')'; $order = false; } elseif ($champ['type'] == 'tel') { | | | 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 | if ($champ['type'] == 'multiple') { $where = 'WHERE '.$field.' & (1 << '.(int)$query.')'; $order = false; } elseif ($champ['type'] == 'tel') { $query = Utils::normalizePhoneNumber($query); $query = preg_replace('!^0+!', '', $query); if ($query == '') { return false; } |
︙ | ︙ | |||
721 722 723 724 725 726 727 | $db = DB::getInstance(); $res = $db->query('SELECT email FROM membres WHERE LENGTH(email) > 0 AND '.$where.' ORDER BY id;'); $sujet = '['.$config->get('nom_asso').'] '.$sujet; while ($row = $res->fetchArray(SQLITE3_ASSOC)) { | | | 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 | $db = DB::getInstance(); $res = $db->query('SELECT email FROM membres WHERE LENGTH(email) > 0 AND '.$where.' ORDER BY id;'); $sujet = '['.$config->get('nom_asso').'] '.$sujet; while ($row = $res->fetchArray(SQLITE3_ASSOC)) { Utils::mail($row['email'], $sujet, $message, $headers); } return true; } public function searchSQL($query) { |
︙ | ︙ |
Modified src/include/lib/Garradin/Membres/Categories.php from [14a663a7ed] to [e0ad2ac2dd].
1 2 | <?php | | > > > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php namespace Garradin\Membres; use Garradin\Membres; use Garradin\DB; use Garradin\Wiki; use Garradin\User_Exception; class Categories { protected $droits = [ 'inscription'=> Membres::DROIT_AUCUN, 'connexion' => Membres::DROIT_ACCES, 'membres' => Membres::DROIT_ACCES, 'compta' => Membres::DROIT_ACCES, 'wiki' => Membres::DROIT_ACCES, |
︙ | ︙ |
Modified src/include/lib/Garradin/Membres/Champs.php from [64b68e48e3] to [c295c68f64].
1 2 | <?php | | > > > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php namespace Garradin\Membres; use Garradin\Config; use Garradin\DB; use Garradin\Utils; use Garradin\User_Exception; class Champs { protected $champs = null; protected $types = [ 'email' => 'Adresse E-Mail', 'url' => 'Adresse URL', 'checkbox' => 'Case à cocher', |
︙ | ︙ | |||
44 45 46 47 48 49 50 | 'options' ]; static protected $presets = null; public function __toString() { | | | | | | | | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | 'options' ]; static protected $presets = null; public function __toString() { return Utils::write_ini_string($this->champs); } public function toString() { return Utils::write_ini_string($this->champs); } static public function importInstall() { $champs = parse_ini_file(ROOT . '/include/data/champs_membres.ini', true); $champs = array_filter($champs, function ($row) { return !empty($row['install']); }); return new \Garradin\Membres\Champs($champs); } static public function importPresets() { if (is_null(self::$presets)) { self::$presets = parse_ini_file(\Garradin\ROOT . '/include/data/champs_membres.ini', true); } return self::$presets; } static public function listUnusedPresets(Champs $champs) { return array_diff_key(self::importPresets(), $champs->getAll()); } public function __construct($champs) { if ($champs instanceOf Champs) { $this->champs = $champs->getAll(); } elseif (is_array($champs)) { foreach ($champs as $key=>&$config) { |
︙ | ︙ |
Modified src/include/lib/Garradin/Membres/Cotisations.php from [577baba209] to [3b4ad17d68].
1 2 | <?php | | > > > > > | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php namespace Garradin\Membres; use Garradin\Config; use Garradin\DB; use Garradin\Utils; use Garradin\User_Exception; class Cotisations { const ITEMS_PER_PAGE = 100; /** * Vérification des champs fournis pour la modification de donnée * @param array $data Tableau contenant les champs à ajouter/modifier * @return void */ protected function _checkFields(&$data, $compta = false) { $db = DB::getInstance(); if (empty($data['date']) || !Utils::checkDate($data['date'])) { throw new UserException('Date vide ou invalide.'); } if (empty($data['id_cotisation']) || !$db->simpleQuerySingle('SELECT 1 FROM cotisations WHERE id = ?;', false, (int) $data['id_cotisation'])) { |
︙ | ︙ | |||
158 159 160 161 162 163 164 | /** * Ajouter une écriture comptable pour un paiemement membre * @param int $id Numéro de la cotisation membre * @param array $data Données */ public function addOperationCompta($id, $data) { | | | 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | /** * Ajouter une écriture comptable pour un paiemement membre * @param int $id Numéro de la cotisation membre * @param array $data Données */ public function addOperationCompta($id, $data) { $journal = new \Garradin\Compta\Journal; $db = DB::getInstance(); if (!isset($data['libelle']) || trim($data['libelle']) == '') { throw new UserException('Le libellé ne peut rester vide.'); } |
︙ | ︙ | |||
181 182 183 184 185 186 187 | if ($data['moyen_paiement'] != 'ES') { $debit = $data['banque']; } else { | | | 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | if ($data['moyen_paiement'] != 'ES') { $debit = $data['banque']; } else { $debit = \Garradin\Compta\Comptes::CAISSE; } $credit = $db->simpleQuerySingle('SELECT compte FROM compta_categories WHERE id = ?;', false, $data['id_categorie']); $id_operation = $journal->add([ 'libelle' => $data['libelle'], |
︙ | ︙ |
Modified src/include/lib/Garradin/Membres/Import.php from [83a485e0d8] to [03f95aa6a9].
1 2 | <?php | | > > > > > > | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php namespace Garradin\Membres; use Garradin\Membres; use Garradin\Config; use Garradin\DB; use Garradin\Utils; use Garradin\User_Exception; class Import { /** * Champs du CSV de Galette * les lignes vides ('') ne seront pas proposées à l'import * @var array */ public $galette_fields = [ |
︙ | ︙ | |||
84 85 86 87 88 89 90 | if (!isset($row[$columns[$column]])) return null; return $row[$columns[$column]]; }; $line = 0; | | | 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | if (!isset($row[$columns[$column]])) return null; return $row[$columns[$column]]; }; $line = 0; $delim = Utils::find_csv_delim($fp); while (!feof($fp)) { $row = fgetcsv($fp, 4096, $delim); $line++; if (empty($row)) |
︙ | ︙ | |||
165 166 167 168 169 170 171 | $champs = array_keys($champs); $champs[] = 'date_inscription'; $champs[] = 'date_connexion'; $champs[] = 'id'; $champs[] = 'id_categorie'; $line = 0; | | | 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | $champs = array_keys($champs); $champs[] = 'date_inscription'; $champs[] = 'date_connexion'; $champs[] = 'id'; $champs[] = 'id_categorie'; $line = 0; $delim = Utils::find_csv_delim($fp); while (!feof($fp)) { $row = fgetcsv($fp, 4096, $delim); $line++; |
︙ | ︙ |
Modified src/include/lib/Garradin/Rappels_Envoyes.php from [e6a9adfabc] to [6ec98d77c5].
︙ | ︙ | |||
48 49 50 51 52 53 54 | || !in_array((int)$data['media'], [self::MEDIA_EMAIL, self::MEDIA_COURRIER, self::MEDIA_TELEPHONE, self::MEDIA_AUTRE])) { throw new UserException('Média invalide.'); } $data['media'] = (int) $data['media']; | | | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | || !in_array((int)$data['media'], [self::MEDIA_EMAIL, self::MEDIA_COURRIER, self::MEDIA_TELEPHONE, self::MEDIA_AUTRE])) { throw new UserException('Média invalide.'); } $data['media'] = (int) $data['media']; if (empty($data['date']) || !Utils::checkDate($data['date'])) { throw new UserException('La date indiquée n\'est pas valide.'); } } /** * Enregistrer un rappel |
︙ | ︙ | |||
131 132 133 134 135 136 137 | * Envoi de mail pour rappel automatisé * @param array $data Données du rappel automatisé * @return boolean TRUE */ public function sendAuto($data) { $replace = $data; | | | | | 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | * Envoi de mail pour rappel automatisé * @param array $data Données du rappel automatisé * @return boolean TRUE */ public function sendAuto($data) { $replace = $data; $replace['date_rappel'] = Utils::sqliteDateToFrench($replace['date_rappel']); $replace['date_expiration'] = Utils::sqliteDateToFrench($replace['expiration']); $replace['nb_jours'] = abs($replace['nb_jours']); $replace['delai'] = abs($replace['delai']); $subject = $this->replaceTagsInContent($data['sujet'], $replace); $text = $this->replaceTagsInContent($data['texte'], $replace); // Envoi du mail Utils::mail($data['email'], $subject, $text); // Enregistrement en DB $this->add([ 'id_cotisation' => $data['id_cotisation'], 'id_membre' => $data['id'], 'media' => Rappels_Envoyes::MEDIA_EMAIL, // On enregistre la date de mise en œuvre du rappel |
︙ | ︙ |
Modified src/include/lib/Garradin/Squelette.php from [8d88526c72] to [735c329dc9].
1 2 3 4 | <?php namespace Garradin; | < < | 1 2 3 4 5 6 7 8 9 10 11 | <?php namespace Garradin; class Squelette_Snippet { const TEXT = 0; const PHP = 1; const GUESS = 2; const OBJ = 3; |
︙ | ︙ | |||
165 166 167 168 169 170 171 | $this->_content[$key] = (string) (int) $type . $value; } unset($value); } } | | | 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | $this->_content[$key] = (string) (int) $type . $value; } unset($value); } } class Squelette extends \KD2\MiniSkel { private $parent = null; private $current = null; private $_vars = []; private function _registerDefaultModifiers() { |
︙ | ︙ | |||
218 219 220 221 222 223 224 | $this->assign('url_elements', WWW_URL . 'squelettes/'); $this->assign('url_admin', WWW_URL . 'admin/'); } protected function processInclude($args) { if (empty($args)) | | | | 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 | $this->assign('url_elements', WWW_URL . 'squelettes/'); $this->assign('url_admin', WWW_URL . 'admin/'); } protected function processInclude($args) { if (empty($args)) throw new \KD2\MiniSkelMarkupException("Le tag INCLURE demande à préciser le fichier à inclure."); $file = key($args); if (empty($file) || !preg_match('!^[\w\d_-]+(?:\.[\w\d_-]+)*$!', $file)) throw new \KD2\MiniSkelMarkupException("INCLURE: le nom de fichier ne peut contenir que des caractères alphanumériques."); return new Squelette_Snippet(1, '$this->fetch("'.$file.'", false);'); } protected function processVariable($name, $value, $applyDefault, $modifiers, $pre, $post, $context) { if ($context == self::CONTEXT_IN_ARG) |
︙ | ︙ | |||
254 255 256 257 258 259 260 | $out = new Squelette_Snippet(1, '$value = $this->getVariable(\''.$name.'\');'); // We process modifiers foreach ($modifiers as &$modifier) { if (!isset($this->modifiers[$modifier['name']])) { | | | 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 | $out = new Squelette_Snippet(1, '$value = $this->getVariable(\''.$name.'\');'); // We process modifiers foreach ($modifiers as &$modifier) { if (!isset($this->modifiers[$modifier['name']])) { throw new \KD2\MiniSkelMarkupException('Filtre '.$modifier['name'].' inconnu !'); } $out->append(1, '$value = call_user_func_array('.var_export($this->modifiers[$modifier['name']], true).', [$value, '); foreach ($modifier['arguments'] as $arg) { if ($arg == 'debut_liste') |
︙ | ︙ | |||
316 317 318 319 320 321 322 | return $out; } protected function processLoop($loopName, $loopType, $loopCriterias, $loopContent, $preContent, $postContent, $altContent) { if ($loopType != 'articles' && $loopType != 'rubriques' && $loopType != 'pages') { | | | 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 | return $out; } protected function processLoop($loopName, $loopType, $loopCriterias, $loopContent, $preContent, $postContent, $altContent) { if ($loopType != 'articles' && $loopType != 'rubriques' && $loopType != 'pages') { throw new \KD2\MiniSkelMarkupException("Le type de boucle '".$loopType."' est inconnu."); } $loopStart = ''; $query = $where = $order = ''; $limit = $begin = 0; $query = 'SELECT w.*, strftime(\\\'%s\\\', w.date_creation) AS date_creation, strftime(\\\'%s\\\', w.date_modification) AS date_modification'; |
︙ | ︙ | |||
355 356 357 358 359 360 361 | foreach ($loopCriterias as $criteria) { if (isset($criteria['field'])) { if (!in_array($criteria['field'], $allowed_fields)) { | | | | | | | | | | 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 | foreach ($loopCriterias as $criteria) { if (isset($criteria['field'])) { if (!in_array($criteria['field'], $allowed_fields)) { throw new \KD2\MiniSkelMarkupException("Critère '".$criteria['field']."' invalide pour la boucle '$loopName' de type '$loopType'."); } elseif ($criteria['field'] == 'rubrique') { $criteria['field'] = 'parent'; } elseif ($criteria['field'] == 'date') { $criteria['field'] = 'date_creation'; } elseif ($criteria['field'] == 'points') { if ($criteria['action'] != \KD2\MiniSkel::ACTION_ORDER_BY) { throw new \KD2\MiniSkelMarkupException("Le critère 'points' n\'est pas valide dans ce contexte."); } $search_rank = true; } } switch ($criteria['action']) { case \KD2\MiniSkel::ACTION_ORDER_BY: if (!$order) $order = 'ORDER BY '.$criteria['field'].''; else $order .= ', '.$criteria['field'].''; break; case \KD2\MiniSkel::ACTION_ORDER_DESC: if ($order) $order .= ' DESC'; break; case \KD2\MiniSkel::ACTION_LIMIT: $begin = $criteria['begin']; $limit = $criteria['number']; break; case \KD2\MiniSkel::ACTION_MATCH_FIELD_BY_VALUE: $where .= ' AND '.$criteria['field'].' '.$criteria['comparison'].' \\\'\'.$db->escapeString(\''.$criteria['value'].'\').\'\\\''; break; case \KD2\MiniSkel::ACTION_MATCH_FIELD: { if ($criteria['field'] == 'recherche') { $query = 'SELECT w.*, r.contenu AS texte, rank(matchinfo(wiki_recherche), 0, 1.0, 1.0) AS points FROM wiki_pages AS w INNER JOIN wiki_recherche AS r ON (w.id = r.id) '; $where .= ' AND wiki_recherche MATCH \\\'\'.$db->escapeString($this->getVariable(\''.$criteria['field'].'\')).\'\\\''; $search = true; } |
︙ | ︙ | |||
421 422 423 424 425 426 427 | default: break; } } if ($search_rank && !$search) { | | | 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 | default: break; } } if ($search_rank && !$search) { throw new \KD2\MiniSkelMarkupException("Le critère par points n'est possible que dans les boucles de recherche."); } if (trim($loopContent)) { $loopStart .= '$row[\'url\'] = WWW_URL . $row[\'uri\']; '; } |
︙ | ︙ | |||
451 452 453 454 455 456 457 | if ($search) { $out->append(1, 'if (trim($this->getVariable(\'recherche\'))) { '); } $out->append(1, '$statement = $db->prepare(\''.$query.'\'); '); // Sécurité anti injection | | | 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 | if ($search) { $out->append(1, 'if (trim($this->getVariable(\'recherche\'))) { '); } $out->append(1, '$statement = $db->prepare(\''.$query.'\'); '); // Sécurité anti injection $out->append(1, 'if (!$statement->readOnly()) { throw new \\MiniSkelMarkupException("Requête en écriture illégale: '.$query.'"); } '); $out->append(1, '$result_'.$hash.' = $statement->execute(); '); $out->append(1, '$nb_rows = $db->countRows($result_'.$hash.'); '); if ($search) { $out->append(1, '} else { $result_'.$hash.' = false; $nb_rows = 0; }'); } |
︙ | ︙ | |||
514 515 516 517 518 519 520 | $tpl_id = basename(dirname($path)) . '/' . $template; if (!self::compile_check($tpl_id, $path)) { if (!file_exists($path)) { | | | 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 | $tpl_id = basename(dirname($path)) . '/' . $template; if (!self::compile_check($tpl_id, $path)) { if (!file_exists($path)) { throw new \KD2\MiniSkelMarkupException('Le squelette "'.$tpl_id.'" n\'existe pas.'); } $content = file_get_contents($path); $content = strtr($content, ['<?php' => '<?php', '<?' => '<?php echo \'<?\'; ?>']); $out = new Squelette_Snippet(2, $this->parse($content)); $out->prepend(1, '/* '.$tpl_id.' */ '. |
︙ | ︙ |
Modified src/include/lib/Garradin/Squelette_Filtres.php from [7a68645339] to [bf982b60cb].
︙ | ︙ | |||
54 55 56 57 58 59 60 | 'entites_html', 'proteger_contact', 'echapper_xml', ]; static public function date_en_francais($date) { | | | | | | | | 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | 'entites_html', 'proteger_contact', 'echapper_xml', ]; static public function date_en_francais($date) { return ucfirst(strtolower(Utils::strftime_fr('%A %e %B %Y', $date))); } static public function heure_en_francais($date) { return Utils::strftime_fr('%Hh%I', $date); } static public function mois_en_francais($date) { return Utils::strftime_fr('%B %Y', $date); } static public function date_perso($date, $format) { return Utils::strftime_fr($format, $date); } static public function date_intelligente($date) { if (date('Ymd', $date) == date('Ymd')) return 'Aujourd\'hui, '.date('H\hi', $date); elseif (date('Ymd', $date) == date('Ymd', strtotime('yesterday'))) return 'Hier, '.date('H\hi', $date); elseif (date('Y', $date) == date('Y')) return strtolower(Utils::strftime_fr('%e %B, %Hh%M', $date)); else return strtolower(Utils::strftime_fr('%e %B %Y', $date)); } static public function date_atom($date) { return date(DATE_ATOM, $date); } |
︙ | ︙ | |||
125 126 127 128 129 130 131 | static public function echapper_xml($texte) { return str_replace(''', ''', htmlspecialchars($texte, ENT_QUOTES, 'UTF-8')); } static public function formatter_texte($texte) { | | | | | 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | static public function echapper_xml($texte) { return str_replace(''', ''', htmlspecialchars($texte, ENT_QUOTES, 'UTF-8')); } static public function formatter_texte($texte) { $texte = Utils::htmlLinksOnUrls($texte); $texte = Utils::htmlSpip($texte); $texte = Utils::htmlGarbage2xhtml($texte); $texte = self::typo_fr($texte); return $texte; } static public function typo_fr($str, $html = true) |
︙ | ︙ |
Modified src/include/lib/Garradin/Template.php from [84ca0c71e0] to [a4347e0678].
︙ | ︙ | |||
27 28 29 30 31 32 33 | $this->template_dir = ROOT . '/templates'; $this->compile_check = true; $this->reserved_template_varname = 'tpl'; $this->assign('www_url', WWW_URL); | | | | | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | $this->template_dir = ROOT . '/templates'; $this->compile_check = true; $this->reserved_template_varname = 'tpl'; $this->assign('www_url', WWW_URL); $this->assign('self_url', Utils::getSelfUrl()); $this->assign('is_logged', false); } } $tpl = Template::getInstance(); function tpl_csrf_field($params) { $name = Utils::CSRF_field_name($params['key']); $value = Utils::CSRF_create($params['key']); return '<input type="hidden" name="'.$name.'" value="'.$value.'" />'; } function tpl_form_field($params) { if (!isset($params['name'])) |
︙ | ︙ | |||
102 103 104 105 106 107 108 | } return $n; } function tpl_strftime_fr($ts, $format) { | | | | 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | } return $n; } function tpl_strftime_fr($ts, $format) { return Utils::strftime_fr($format, $ts); } function tpl_date_fr($ts, $format) { return Utils::date_fr($format, $ts); } function tpl_format_droits($params) { $droits = $params['droits']; $out = ['connexion' => '', 'inscription' => '', 'membres' => '', 'compta' => '', |
︙ | ︙ | |||
189 190 191 192 193 194 195 | } return implode(' ', $out); } function tpl_format_wiki($str) { | | | | | | 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 | } return implode(' ', $out); } function tpl_format_wiki($str) { $str = Utils::htmlLinksOnUrls($str); $str = Utils::htmlSpip($str); $str = Utils::htmlGarbage2xhtml($str); return $str; } function tpl_liens_wiki($str, $prefix) { return preg_replace_callback('!<a href="([^/.:@]+)">!i', function ($matches) use ($prefix) { return '<a href="' . $prefix . Wiki::transformTitleToURI($matches[1]) . '">'; }, $str); } function tpl_pagination($params) { if (!isset($params['url']) || !isset($params['page']) || !isset($params['bypage']) || !isset($params['total'])) throw new \BadFunctionCallException("Paramètre manquant pour pagination"); if ($params['total'] == -1) return ''; $pagination = Utils::getGenericPagination($params['page'], $params['total'], $params['bypage']); if (empty($pagination)) return ''; $out = '<ul class="pagination">'; foreach ($pagination as &$page) |
︙ | ︙ | |||
252 253 254 255 256 257 258 | { throw new Template_Exception('Paramètres old et new requis.'); } $old = $params['old']; $new = $params['new']; | < | | | | | | 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 | { throw new Template_Exception('Paramètres old et new requis.'); } $old = $params['old']; $new = $params['new']; $diff = \KD2\SimpleDiff::diff_to_array(false, $old, $new, 3); $out = '<table class="diff">'; $prev = key($diff); foreach ($diff as $i=>$line) { if ($i > $prev + 1) { $out .= '<tr><td colspan="5" class="separator"><hr /></td></tr>'; } list($type, $old, $new) = $line; $class1 = $class2 = ''; $t1 = $t2 = ''; if ($type == \KD2\SimpleDiff::INS) { $class2 = 'ins'; $t2 = '<b class="icn">➕</b>'; $old = htmlspecialchars($old, ENT_QUOTES, 'UTF-8'); $new = htmlspecialchars($new, ENT_QUOTES, 'UTF-8'); } elseif ($type == \KD2\SimpleDiff::DEL) { $class1 = 'del'; $t1 = '<b class="icn">➖</b>'; $old = htmlspecialchars($old, ENT_QUOTES, 'UTF-8'); $new = htmlspecialchars($new, ENT_QUOTES, 'UTF-8'); } elseif ($type == \KD2\SimpleDiff::CHANGED) { $class1 = 'del'; $class2 = 'ins'; $t1 = '<b class="icn">➖</b>'; $t2 = '<b class="icn">➕</b>'; $lineDiff = \KD2\SimpleDiff::wdiff($old, $new); $lineDiff = htmlspecialchars($lineDiff, ENT_QUOTES, 'UTF-8'); // Don't show new things in deleted line $old = preg_replace('!\{\+(?:.*)\+\}!U', '', $lineDiff); $old = str_replace(' ', ' ', $old); $old = str_replace('-] [-', ' ', $old); $old = preg_replace('!\[-(.*)-\]!U', '<del>\\1</del>', $old); |
︙ | ︙ | |||
331 332 333 334 335 336 337 | return $out; } function tpl_select_compte($params) { $name = $params['name']; $comptes = $params['comptes']; | | | 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 | return $out; } function tpl_select_compte($params) { $name = $params['name']; $comptes = $params['comptes']; $selected = isset($params['data'][$params['name']]) ? $params['data'][$params['name']] : Utils::post($name); $out = '<select name="'.$name.'" id="f_'.$name.'" class="large">'; foreach ($comptes as $compte) { // Ne pas montrer les comptes désactivés if (!empty($compte['desactive'])) |
︙ | ︙ | |||
403 404 405 406 407 408 409 | { if (empty($config['options'])) throw new \BadFunctionCallException('Paramètre options obligatoire pour champ de type select.'); } elseif ($type == 'country') { $type = 'select'; | | | 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 | { if (empty($config['options'])) throw new \BadFunctionCallException('Paramètre options obligatoire pour champ de type select.'); } elseif ($type == 'country') { $type = 'select'; $config['options'] = Utils::getCountryList(); $params['default'] = Config::getInstance()->get('pays'); } elseif ($type == 'date') { $params['pattern'] = '\d{4}-\d{2}-\d{2}'; } elseif ($type == 'multiple') |
︙ | ︙ | |||
546 547 548 549 550 551 552 | $tpl->register_function('format_droits', 'Garradin\tpl_format_droits'); $tpl->register_function('pagination', 'Garradin\tpl_pagination'); $tpl->register_function('diff', 'Garradin\tpl_diff'); $tpl->register_function('html_champ_membre', 'Garradin\tpl_html_champ_membre'); | | | | | | 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 | $tpl->register_function('format_droits', 'Garradin\tpl_format_droits'); $tpl->register_function('pagination', 'Garradin\tpl_pagination'); $tpl->register_function('diff', 'Garradin\tpl_diff'); $tpl->register_function('html_champ_membre', 'Garradin\tpl_html_champ_membre'); $tpl->register_function('plugin_url', ['Garradin\Utils', 'plugin_url']); $tpl->register_modifier('get_country_name', ['Garradin\Utils', 'getCountryName']); $tpl->register_modifier('format_tel', 'Garradin\tpl_format_tel'); $tpl->register_modifier('format_wiki', 'Garradin\tpl_format_wiki'); $tpl->register_modifier('liens_wiki', 'Garradin\tpl_liens_wiki'); $tpl->register_modifier('escape_money', 'Garradin\escape_money'); $tpl->register_modifier('html_money', 'Garradin\tpl_html_money'); $tpl->register_modifier('abs', 'abs'); $tpl->register_modifier('display_champ_membre', function ($v, $config) { if ($config['type'] == 'checkbox') { return $v ? 'Oui' : 'Non'; } elseif ($config['type'] == 'email') { return '<a href="mailto:' . $v . '">' . $v . '</a>'; } elseif ($config['type'] == 'tel') { return '<a href="tel:' . $v . '">' . $v . '</a>'; } elseif ($config['type'] == 'url') { return '<a href="' . $v . '">' . $v . '</a>'; } elseif ($config['type'] == 'country') { return Utils::getCountryName($v); } elseif ($config['type'] == 'multiple') { $out = []; foreach ($config['options'] as $b => $name) { if ($v & (0x01 << $b)) $out[] = $name; } return implode(', ', $out); } else { return $v; } }); $tpl->register_modifier('format_sqlite_date_to_french', ['Garradin\Utils', 'sqliteDateToFrench']); $tpl->register_modifier('format_bytes', function ($size) { if ($size > (1024 * 1024)) return round($size / 1024 / 1024, 2) . ' Mo'; elseif ($size > 1024) return round($size / 1024, 2) . ' Ko'; else |
︙ | ︙ |
Modified src/include/lib/Garradin/Utils.php from [2a175d6abb] to [76e15a68b6].
1 2 3 4 | <?php namespace Garradin; | | | 1 2 3 4 5 6 7 8 9 10 11 12 | <?php namespace Garradin; class Utils { static protected $country_list = null; static protected $g2x = null; static private $french_date_names = [ 'January'=>'Janvier', 'February'=>'Février', 'March'=>'Mars', 'April'=>'Avril', 'May'=>'Mai', |
︙ | ︙ | |||
386 387 388 389 390 391 392 | }, $str); } static public function htmlGarbage2xhtml($str) { if (!self::$g2x) { | < | | 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 | }, $str); } static public function htmlGarbage2xhtml($str) { if (!self::$g2x) { self::$g2x = new \KD2\Garbage2xhtml; self::$g2x->core_attributes = ['class', 'id', 'title']; } return self::$g2x->process($str); } static public function htmlSpip($str, $prefix = '') |
︙ | ︙ | |||
482 483 484 485 486 487 488 | $dir->close(); return true; } static public function suggestPassword() { | < | | 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 | $dir->close(); return true; } static public function suggestPassword() { return \KD2\Passphrase_FR::generate(); } static public function checkIBAN($iban) { $iban = substr($iban, 4) . substr($iban, 0, 4); $iban = str_replace(range('A', 'Z'), range(10, 35), $iban); return (bcmod($iban, 97) == 1); |
︙ | ︙ |
Modified src/include/lib/Garradin/Wiki.php from [0c2e7be215] to [a4b54b7c9f].
︙ | ︙ | |||
14 15 16 17 18 19 20 | const ITEMS_PER_PAGE = 25; protected $restriction_categorie = null; protected $restriction_droit = null; static public function transformTitleToURI($str) { | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | const ITEMS_PER_PAGE = 25; protected $restriction_categorie = null; protected $restriction_droit = null; static public function transformTitleToURI($str) { $str = Utils::transliterateToAscii($str); $str = preg_replace('![^\w\d_-]!i', '-', $str); $str = preg_replace('!-{2,}!', '-', $str); $str = trim($str, '-'); return $str; } |
︙ | ︙ |
Modified src/templates/admin/compta/banques/index.tpl from [5c234e7f1f] to [20cc85f3ce].
1 2 3 4 | {include file="admin/_head.tpl" title="Comptes bancaires" current="compta/banques"} <ul class="actions"> <li class="current"><a href="{$www_url}admin/compta/banques/">Comptes bancaires</a></li> | | | 1 2 3 4 5 6 7 8 9 10 11 12 | {include file="admin/_head.tpl" title="Comptes bancaires" current="compta/banques"} <ul class="actions"> <li class="current"><a href="{$www_url}admin/compta/banques/">Comptes bancaires</a></li> <li><a href="{$www_url}admin/compta/comptes/journal.php?id={Garradin\Compta\Comptes::CAISSE}&suivi">Journal de caisse</a></li> {if $user.droits.compta >= Garradin\Membres::DROIT_ADMIN}<li><strong><a href="{$www_url}admin/compta/banques/ajouter.php">Ajouter un compte bancaire</a></strong></li>{/if} </ul> {if !empty($liste)} <dl class="catList"> {foreach from=$liste item="compte"} <dt>{$compte.libelle|escape} {if !empty($compte.banque)}({$compte.banque|escape}){/if}</dt> |
︙ | ︙ |
Modified src/templates/admin/compta/categories/ajouter.tpl from [edfc24e0ce] to [5928bdf778].
︙ | ︙ | |||
10 11 12 13 14 15 16 | <fieldset> <legend>Ajouter une catégorie</legend> <dl> <dt><label for="f_type">Type</label> <b title="(Champ obligatoire)">obligatoire</b></dt> <dd> <select name="type" id="f_type" required="required"> | | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <fieldset> <legend>Ajouter une catégorie</legend> <dl> <dt><label for="f_type">Type</label> <b title="(Champ obligatoire)">obligatoire</b></dt> <dd> <select name="type" id="f_type" required="required"> <option value="{Garradin\Compta\Categories::RECETTES}"{if $type == Garradin\Compta\Categories::RECETTES} selected="selected"{/if}>Recette</option> <option value="{Garradin\Compta\Categories::DEPENSES}"{if $type == Garradin\Compta\Categories::DEPENSES} selected="selected"{/if}>Dépense</option> </select> </dd> <dt><label for="f_intitule">Intitulé</label> <b title="(Champ obligatoire)">obligatoire</b></dt> <dd><input type="text" name="intitule" id="f_intitule" value="{form_field name=intitule}" required="required" /></dd> <dt><label for="f_description">Description</label></dt> <dd><textarea name="description" id="f_description" rows="4" cols="30">{form_field name=description}</textarea></dd> <dt><label for="f_compte">Compte affecté</label> <b title="(Champ obligatoire)">obligatoire</b></dt> |
︙ | ︙ |
Modified src/templates/admin/compta/categories/index.tpl from [9500d269a7] to [7255b3876a].
1 2 3 | {include file="admin/_head.tpl" title="Catégories" current="compta/categories"} <ul class="actions"> | | | | 1 2 3 4 5 6 7 8 9 10 11 12 | {include file="admin/_head.tpl" title="Catégories" current="compta/categories"} <ul class="actions"> <li{if $type == Garradin\Compta\Categories::RECETTES} class="current"{/if}><a href="?recettes">Recettes</a></li> <li{if $type == Garradin\Compta\Categories::DEPENSES} class="current"{/if}><a href="?depenses">Dépenses</a></li> <li><strong><a href="{$www_url}admin/compta/categories/ajouter.php">Ajouter une catégorie</a></strong></li> <li><em><a href="{$www_url}admin/compta/comptes/">Plan comptable</a></em></li> </ul> {if !empty($liste)} <dl class="catList"> {foreach from=$liste item="cat"} |
︙ | ︙ |
Modified src/templates/admin/compta/comptes/journal.tpl from [defeaa23b0] to [a128bc99e1].
1 2 3 4 5 | {include file="admin/_head.tpl" title="Journal : `$compte.id` - `$compte.libelle`" current="compta/gestion" body_id="rapport"} {if isset($tpl.get.suivi)} <ul class="actions"> <li><a href="{$www_url}admin/compta/banques/">Comptes bancaires</a></li> | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 | {include file="admin/_head.tpl" title="Journal : `$compte.id` - `$compte.libelle`" current="compta/gestion" body_id="rapport"} {if isset($tpl.get.suivi)} <ul class="actions"> <li><a href="{$www_url}admin/compta/banques/">Comptes bancaires</a></li> <li><a href="{$www_url}admin/compta/comptes/journal.php?id={Garradin\Compta\Comptes::CAISSE}">Journal de caisse</a></li> {if $user.droits.compta >= Garradin\Membres::DROIT_ADMIN}<li><strong><a href="{$www_url}admin/compta/banques/ajouter.php">Ajouter un compte bancaire</a></strong></li>{/if} </ul> {/if} <table class="list"> <colgroup> |
︙ | ︙ |
Modified src/templates/admin/compta/operations/index.tpl from [53c9cca2e0] to [b230956e89].
1 2 3 | {include file="admin/_head.tpl" title="Suivi des opérations" current="compta/gestion"} <ul class="actions"> | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | {include file="admin/_head.tpl" title="Suivi des opérations" current="compta/gestion"} <ul class="actions"> <li class="recettes{if $type == Garradin\Compta\Categories::RECETTES} current{/if}"><a href="{$www_url}admin/compta/operations/?recettes">Recettes</a></li> <li class="depenses{if $type == Garradin\Compta\Categories::DEPENSES} current{/if}"><a href="{$www_url}admin/compta/operations/?depenses">Dépenses</a></li> <li class="autres{if $type == Garradin\Compta\Categories::AUTRES} current{/if}"><a href="{$www_url}admin/compta/operations/?autres">Autres</a></li> {*<li><a href="{$www_url}admin/compta/operations/recherche.php">Recherche d'opération</a></li>*} {if $user.droits.compta >= Garradin\Membres::DROIT_ADMIN} <li><a href="{$www_url}admin/compta/operations/recherche_sql.php">Recherche par requête SQL</a></li> {/if} </ul> {if $type != Garradin\Compta\Categories::AUTRES} <form method="get" action="{$self_url}"> <fieldset> <legend>Filtrer par catégorie</legend> <select name="cat" onchange="if (!this.value) location.href = '?{if $type == Garradin\Compta\Categories::RECETTES}recettes{else}depenses{/if}'; else this.form.submit();"> <option value="">-- Toutes</option> {foreach from=$liste_cats item="cat"} <option value="{$cat.id|escape}"{if $cat.id == $categorie.id} selected="selected"{/if}>{$cat.intitule|escape}</option> {/foreach} </select> <input type="submit" value="OK" /> </fieldset> |
︙ | ︙ |
Modified src/templates/admin/compta/operations/modifier.tpl from [f3bee5aee1] to [bd69dfd019].
︙ | ︙ | |||
38 39 40 41 42 43 44 | </dd> <dt class="f_cheque"><label for="f_numero_cheque">Numéro de chèque</label></dt> <dd class="f_cheque"><input type="text" name="numero_cheque" id="f_numero_cheque" value="{form_field name=numero_cheque data=$operation}" /></dd> <dt class="f_banque"><label for="f_banque">Compte bancaire</label></dt> <dd class="f_banque"> <select name="banque" id="f_banque"> {foreach from=$comptes_bancaires item="compte"} | | | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | </dd> <dt class="f_cheque"><label for="f_numero_cheque">Numéro de chèque</label></dt> <dd class="f_cheque"><input type="text" name="numero_cheque" id="f_numero_cheque" value="{form_field name=numero_cheque data=$operation}" /></dd> <dt class="f_banque"><label for="f_banque">Compte bancaire</label></dt> <dd class="f_banque"> <select name="banque" id="f_banque"> {foreach from=$comptes_bancaires item="compte"} <option value="{$compte.id|escape}"{if ($type == Garradin\Compta\Categories::DEPENSES && $compte.id == $operation.compte_credit) || $compte.id == $operation.compte_debit} selected="selected"{/if}>{$compte.libelle|escape} - {$compte.banque|escape}</option> {/foreach} </select> </dd> {/if} <dt><label for="f_numero_piece">Numéro de pièce comptable</label></dt> <dd><input type="text" name="numero_piece" id="f_numero_piece" value="{form_field name=numero_piece data=$operation}" /></dd> |
︙ | ︙ |
Modified src/templates/admin/compta/operations/saisir.tpl from [59bbe37c21] to [77c7c44d7d].
︙ | ︙ | |||
10 11 12 13 14 15 16 | <p class="confirm"> L'opération numéro <a href="{$www_url}admin/compta/operations/voir.php?id={$ok|escape}">{$ok|escape}</a> a été ajoutée. (<a href="{$www_url}admin/compta/operations/voir.php?id={$ok|escape}">Voir l'opération</a>) </p> {/if} <ul class="actions"> | | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <p class="confirm"> L'opération numéro <a href="{$www_url}admin/compta/operations/voir.php?id={$ok|escape}">{$ok|escape}</a> a été ajoutée. (<a href="{$www_url}admin/compta/operations/voir.php?id={$ok|escape}">Voir l'opération</a>) </p> {/if} <ul class="actions"> <li{if $type == Garradin\Compta\Categories::RECETTES} class="current"{/if}><a href="{$www_url}admin/compta/operations/saisir.php?recette">Recette</a></li> <li{if $type == Garradin\Compta\Categories::DEPENSES} class="current"{/if}><a href="{$www_url}admin/compta/operations/saisir.php?depense">Dépense</a></li> <li{if $type === 'virement'} class="current"{/if}><a href="{$www_url}admin/compta/operations/saisir.php?virement">Virement interne</a></li> <li{if $type === 'dette'} class="current"{/if}><a href="{$www_url}admin/compta/operations/saisir.php?dette">Dette</a></li> <li{if is_null($type)} class="current"{/if}><a href="{$www_url}admin/compta/operations/saisir.php?avance">Saisie avancée</a></li> </ul> <form method="post" action="{$self_url|escape}"> |
︙ | ︙ | |||
42 43 44 45 46 47 48 | <dd> {select_compte comptes=$comptes name="compte_credit"} </dd> {elseif $type === 'virement'} <dt><label for="f_compte1">Compte débité</label></dt> <dd> <select name="compte1" id="f_compte1"> | | | | 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | <dd> {select_compte comptes=$comptes name="compte_credit"} </dd> {elseif $type === 'virement'} <dt><label for="f_compte1">Compte débité</label></dt> <dd> <select name="compte1" id="f_compte1"> <option value="{Garradin\Compta\Comptes::CAISSE}">Caisse</option> {foreach from=$comptes_bancaires item="compte"} <option value="{$compte.id|escape}"{if $compte.id == $banque} selected="selected"{/if}>{$compte.libelle|escape} - {$compte.banque|escape}</option> {/foreach} </select> </dd> <dt><label for="f_compte2">Compte crédité</label></dt> <dd> <select name="compte2" id="f_compte2"> <option value="{Garradin\Compta\Comptes::CAISSE}">Caisse</option> {foreach from=$comptes_bancaires item="compte"} <option value="{$compte.id|escape}"{if $compte.id == $banque} selected="selected"{/if}>{$compte.libelle|escape} - {$compte.banque|escape}</option> {/foreach} </select> </dd> {elseif $type === 'dette'} <dt><label for="f_compte_usager">Type de dette</label></dt> |
︙ | ︙ | |||
94 95 96 97 98 99 100 | <dt><label for="f_numero_piece">Numéro de pièce comptable</label></dt> <dd><input type="text" name="numero_piece" id="f_numero_piece" value="{form_field name=numero_piece}" /></dd> <dt><label for="f_remarques">Remarques</label></dt> <dd><textarea name="remarques" id="f_remarques" rows="4" cols="30">{form_field name=remarques}</textarea></dd> </dl> </fieldset> | | | 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | <dt><label for="f_numero_piece">Numéro de pièce comptable</label></dt> <dd><input type="text" name="numero_piece" id="f_numero_piece" value="{form_field name=numero_piece}" /></dd> <dt><label for="f_remarques">Remarques</label></dt> <dd><textarea name="remarques" id="f_remarques" rows="4" cols="30">{form_field name=remarques}</textarea></dd> </dl> </fieldset> {if $type == Garradin\Compta\Categories::DEPENSES || $type == Garradin\Compta\Categories::RECETTES || $type == 'dette'} <fieldset> <legend>Catégorie</legend> <dl class="catList"> {foreach from=$categories item="cat"} <dt> <input type="radio" name="categorie" value="{$cat.id|escape}" id="f_cat_{$cat.id|escape}" {form_field name="categorie" checked=$cat.id} /> <label for="f_cat_{$cat.id|escape}">{$cat.intitule|escape}</label> |
︙ | ︙ |
Modified src/templates/admin/compta/operations/voir.tpl from [35e0931d5b] to [a02482de9f].
︙ | ︙ | |||
30 31 32 33 34 35 36 | {if $operation.moyen_paiement && $operation.moyen_paiement != 'ES'} <dt>Compte bancaire</dt> <dd>{$compte|escape}</dd> {/if} <dt>Catégorie</dt> <dd> | | | 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | {if $operation.moyen_paiement && $operation.moyen_paiement != 'ES'} <dt>Compte bancaire</dt> <dd>{$compte|escape}</dd> {/if} <dt>Catégorie</dt> <dd> <a href="{$www_url}admin/compta/operations/?{if $categorie.type == Garradin\Compta\Categories::DEPENSES}depenses{else}recettes{/if}">{if $categorie.type == Garradin\Compta\Categories::DEPENSES}Dépense{else}Recette{/if}</a> : <a href="{$www_url}admin/compta/operations/?cat={$operation.id_categorie|escape}">{$categorie.intitule|escape}</a> </dd> {/if} <dt>Exercice</dt> <dd> <a href="{$www_url}admin/compta/exercices/">{$exercice.libelle|escape}</a> |
︙ | ︙ |
Modified src/www/admin/_inc.php from [2ec3bb9eb1] to [6bf7160f0b].
︙ | ︙ | |||
9 10 11 12 13 14 15 | $membres = new Membres; if (!defined('Garradin\LOGIN_PROCESS')) { if (!$membres->isLogged()) { | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | $membres = new Membres; if (!defined('Garradin\LOGIN_PROCESS')) { if (!$membres->isLogged()) { Utils::redirect('/admin/login.php'); } $tpl->assign('config', Config::getInstance()->getConfig()); $tpl->assign('is_logged', true); $tpl->assign('user', $membres->getLoggedUser()); $user = $membres->getLoggedUser(); |
︙ | ︙ |
Modified src/www/admin/compta/_inc.php from [2130bd6f42] to [2d5e4f96d6].
1 2 3 4 5 6 7 8 9 10 11 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ACCES) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ACCES) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $comptes = new Compta\Comptes; ?> |
Modified src/www/admin/compta/banques/ajouter.php from [e30c487fb2] to [5795e36182].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $banque = new Compta\Comptes_Bancaires; $error = false; if (!empty($_POST['add'])) { if (!Utils::CSRF_check('compta_ajout_banque')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $id = $banque->add([ 'libelle' => Utils::post('libelle'), 'banque' => Utils::post('banque'), 'iban' => Utils::post('iban'), 'bic' => Utils::post('bic'), ]); Utils::redirect('/admin/compta/banques/'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->display('admin/compta/banques/ajouter.tpl'); ?> |
Modified src/www/admin/compta/banques/index.php from [029add7039] to [135ab2cb49].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; | | | | < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; $banques = new Compta\Comptes_Bancaires; $journal = new Compta\Journal; $liste = $banques->getList(); foreach ($liste as &$banque) { $banque['solde'] = $journal->getSolde($banque['id']); } $tpl->assign('liste', $liste); function tpl_format_iban($iban) { return implode(' ', str_split($iban, 4)); } function tpl_format_rib($iban) { if (substr($iban, 0, 2) != 'FR') return ''; $rib = Utils::IBAN_RIB($iban); $rib = explode(' ', $rib); $out = '<table class="rib"><thead><tr><th>Banque</th><th>Guichet</th><th>Compte</th><th>Clé</th></tr></thead>'; $out.= '<tbody><tr><td>'.$rib[0].'</td><td>'.$rib[1].'</td><td>'.$rib[2].'</td><td>'.$rib[3].'</td></tr></tbody></table>'; return $out; } $tpl->register_modifier('format_iban', 'Garradin\tpl_format_iban'); $tpl->register_modifier('format_rib', 'Garradin\tpl_format_rib'); $tpl->display('admin/compta/banques/index.tpl'); |
Modified src/www/admin/compta/banques/modifier.php from [9c6ce7f204] to [f7a2ede23e].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $banque = new Compta\Comptes_Bancaires; $compte = $banque->get(Utils::get('id')); if (!$compte) { throw new UserException('Le compte demandé n\'existe pas.'); } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('compta_edit_banque_'.$compte['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $id = $banque->edit($compte['id'], [ 'libelle' => Utils::post('libelle'), 'banque' => Utils::post('banque'), 'iban' => Utils::post('iban'), 'bic' => Utils::post('bic'), ]); Utils::redirect('/admin/compta/banques/'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/compta/banques/supprimer.php from [8aaef315e4] to [05db61cd3e].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $banque = new Compta\Comptes_Bancaires; $compte = $banque->get(Utils::get('id')); if (!$compte) { throw new UserException('Le compte demandé n\'existe pas.'); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('compta_delete_banque_'.$compte['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $banque->delete($compte['id']); Utils::redirect('/admin/compta/banques/'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/compta/categories/ajouter.php from [79075d4431] to [5d7dfbfcec].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cats = new Compta\Categories; $error = false; if (!empty($_POST['add'])) { if (!Utils::CSRF_check('compta_ajout_cat')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $id = $cats->add([ 'intitule' => Utils::post('intitule'), 'description' => Utils::post('description'), 'compte' => Utils::post('compte'), 'type' => Utils::post('type'), ]); if (Utils::post('type') == Compta\Categories::DEPENSES) $type = 'depenses'; elseif (Utils::post('type') == Compta\Categories::AUTRES) $type = 'autres'; else $type = 'recettes'; Utils::redirect('/admin/compta/categories/?'.$type); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('type', isset($_POST['type']) ? Utils::post('type') : Compta\Categories::RECETTES); $tpl->assign('comptes', $comptes->listTree()); $tpl->display('admin/compta/categories/ajouter.tpl'); ?> |
Modified src/www/admin/compta/categories/index.php from [3af79fd85a] to [9b123882d0].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cats = new Compta\Categories; if (isset($_GET['depenses'])) $type = Compta\Categories::DEPENSES; else $type = Compta\Categories::RECETTES; $tpl->assign('type', $type); $tpl->assign('liste', $cats->getList($type)); $tpl->display('admin/compta/categories/index.tpl'); ?> |
Modified src/www/admin/compta/categories/modifier.php from [91c6ea40ba] to [e4556a0002].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cats = new Compta\Categories; $id = (int)Utils::get('id'); $cat = $cats->get($id); if (!$cat) { throw new UserException('Cette catégorie n\'existe pas.'); } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('compta_edit_cat_'.$cat['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $id = $cats->edit($id, [ 'intitule' => Utils::post('intitule'), 'description' => Utils::post('description'), ]); if ($cat['type'] == Compta\Categories::DEPENSES) $type = 'depenses'; elseif ($cat['type'] == Compta\Categories::AUTRES) $type = 'autres'; else $type = 'recettes'; Utils::redirect('/admin/compta/categories/?'.$type); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/compta/categories/supprimer.php from [a9166144fd] to [6efa2ae0e7].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cats = new Compta\Categories; $id = (int)Utils::get('id'); $cat = $cats->get($id); if (!$cat) { throw new UserException('Cette catégorie n\'existe pas.'); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('delete_compta_cat_'.$cat['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $cats->delete($id); Utils::redirect('/admin/compta/categories/'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/compta/comptes/ajouter.php from [d37401b2ac] to [165f7a5abc].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $classe = (int) Utils::get('classe'); if (!$classe || $classe < 1 || $classe > 9) { throw new UserException("Cette classe de compte n'existe pas."); } $error = false; if (!empty($_POST['add'])) { if (!Utils::CSRF_check('compta_ajout_compte')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $id = $comptes->add([ 'id' => Utils::post('numero'), 'libelle' => Utils::post('libelle'), 'parent' => Utils::post('parent'), 'position' => Utils::post('position'), ]); Utils::redirect('/admin/compta/comptes/?classe='.$classe); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $parent = $comptes->get(Utils::post('parent') ?: $classe); $tpl->assign('positions', $comptes->getPositions()); $tpl->assign('position', Utils::post('position') ?: $parent['position']); $tpl->assign('comptes', $comptes->listTree($classe)); $tpl->display('admin/compta/comptes/ajouter.tpl'); ?> |
Modified src/www/admin/compta/comptes/index.php from [e53011c462] to [f0dee20a60].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $classe = (int) Utils::get('classe'); $tpl->assign('classe', $classe); if (!$classe) { $tpl->assign('classes', $comptes->listTree(0, false)); } |
︙ | ︙ |
Modified src/www/admin/compta/comptes/journal.php from [77ef0acb33] to [1c7098d6f2].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; | | | | < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; $compte = $comptes->get(Utils::get('id')); if (!$compte) { throw new UserException("Le compte demandé n'existe pas."); } $journal = new Compta\Journal; $solde = $journal->getSolde($compte['id']); if (($compte['position'] & Compta\Comptes::ACTIF) || ($compte['position'] & Compta\Comptes::CHARGE)) { $tpl->assign('credit', '-'); $tpl->assign('debit', '+'); } else { $tpl->assign('credit', '+'); $tpl->assign('debit', '-'); } $tpl->assign('compte', $compte); $tpl->assign('solde', $solde); $tpl->assign('journal', $journal->getJournalCompte($compte['id'])); $tpl->display('admin/compta/comptes/journal.tpl'); |
Modified src/www/admin/compta/comptes/modifier.php from [f47f82b5ec] to [48c7edb5a4].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $id = Utils::get('id'); $compte = $comptes->get($id); if (!$compte) { throw new UserException('Le compte demandé n\'existe pas.'); } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('compta_edit_compte_'.$compte['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $id = $comptes->edit($compte['id'], [ 'libelle' => Utils::post('libelle'), 'position' => Utils::post('position'), ]); Utils::redirect('/admin/compta/comptes/?classe='.substr($compte['id'], 0, 1)); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('positions', $comptes->getPositions()); $tpl->assign('position', Utils::post('position') ?: $compte['position']); $tpl->assign('compte', $compte); $tpl->display('admin/compta/comptes/modifier.tpl'); ?> |
Modified src/www/admin/compta/comptes/supprimer.php from [0a8e66c6e2] to [212afafa33].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $id = Utils::get('id'); $compte = $comptes->get($id); if (!$compte) { throw new UserException('Le compte demandé n\'existe pas.'); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('compta_delete_compte_'.$compte['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $comptes->delete($compte['id']); Utils::redirect('/admin/compta/comptes/?classe='.substr($compte['id'], 0, 1)); } catch (UserException $e) { $error = $e->getMessage(); } } } elseif (!empty($_POST['disable'])) { if (!Utils::CSRF_check('compta_disable_compte_'.$compte['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $comptes->disable($compte['id']); Utils::redirect('/admin/compta/comptes/?classe='.substr($compte['id'], 0, 1)); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/compta/exercices/ajouter.php from [0b5b6e8f75] to [84b6bbaf7d].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $e = new Compta\Exercices; $error = false; if (!empty($_POST['add'])) { if (!Utils::CSRF_check('compta_ajout_exercice')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $id = $e->add([ 'libelle' => Utils::post('libelle'), 'debut' => Utils::post('debut'), 'fin' => Utils::post('fin'), ]); Utils::redirect('/admin/compta/exercices/'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->display('admin/compta/exercices/ajouter.tpl'); ?> |
Modified src/www/admin/compta/exercices/bilan.php from [5fb4363a2f] to [8bd50769bf].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; $exercices = new Compta\Exercices; $exercice = $exercices->get((int)Utils::get('id')); if (!$exercice) { throw new UserException('Exercice inconnu.'); } $liste_comptes = $comptes->getListAll(); |
︙ | ︙ |
Modified src/www/admin/compta/exercices/cloturer.php from [dbb52c4018] to [fa758bc632].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $e = new Compta\Exercices; $exercice = $e->get((int)Utils::get('id')); if (!$exercice) { throw new UserException('Exercice inconnu.'); } $error = false; if (!empty($_POST['close'])) { if (!Utils::CSRF_check('compta_cloturer_exercice_'.$exercice['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $id = $e->close($exercice['id'], Utils::post('fin')); if ($id && Utils::post('reports')) { $e->doReports($exercice['id'], Utils::modifyDate(Utils::post('fin'), '+1 day')); } Utils::redirect('/admin/compta/exercices/'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/compta/exercices/compte_resultat.php from [1bbee3194f] to [f77464ad8f].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; $exercices = new Compta\Exercices; $exercice = $exercices->get((int)Utils::get('id')); if (!$exercice) { throw new UserException('Exercice inconnu.'); } $liste_comptes = $comptes->getListAll(); |
︙ | ︙ |
Modified src/www/admin/compta/exercices/grand_livre.php from [be02a28b84] to [6741cade3e].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; $exercices = new Compta\Exercices; $exercice = $exercices->get((int)Utils::get('id')); if (!$exercice) { throw new UserException('Exercice inconnu.'); } $liste_comptes = $comptes->getListAll(); |
︙ | ︙ |
Modified src/www/admin/compta/exercices/index.php from [5b2ebbf44d] to [89c863a8b2].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; $e = new Compta\Exercices; $tpl->assign('liste', $e->getList()); $tpl->assign('current', $e->getCurrent()); $tpl->display('admin/compta/exercices/index.tpl'); ?> |
Modified src/www/admin/compta/exercices/journal.php from [d7baa64573] to [90f31fb433].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; $exercices = new Compta\Exercices; $exercice = $exercices->get((int)Utils::get('id')); if (!$exercice) { throw new UserException('Exercice inconnu.'); } $liste_comptes = $comptes->getListAll(); |
︙ | ︙ |
Modified src/www/admin/compta/exercices/modifier.php from [4e866894e2] to [24bc6904ad].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $e = new Compta\Exercices; $exercice = $e->get((int)Utils::get('id')); if (!$exercice) { throw new UserException('Exercice inconnu.'); } if ($exercice['cloture']) { throw new UserException('Impossible de modifier un exercice clôturé.'); } $error = false; if (!empty($_POST['edit'])) { if (!Utils::CSRF_check('compta_modif_exercice_'.$exercice['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $id = $e->edit($exercice['id'], [ 'libelle' => Utils::post('libelle'), 'debut' => Utils::post('debut'), 'fin' => Utils::post('fin'), ]); Utils::redirect('/admin/compta/exercices/'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/compta/exercices/supprimer.php from [40563bfe34] to [13b3821ac6].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $e = new Compta\Exercices; $exercice = $e->get((int)Utils::get('id')); if (!$exercice) { throw new UserException('Exercice inconnu.'); } if ($exercice['cloture']) { throw new UserException('Impossible de supprimer un exercice clôturé.'); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('compta_supprimer_exercice_'.$exercice['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $id = $e->delete($exercice['id']); Utils::redirect('/admin/compta/exercices/'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/compta/graph.php from [de49fbeada] to [3dd49511bf].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; | | | | < < | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; if (!in_array(Utils::get('g'), ['recettes_depenses', 'banques_caisses'])) { throw new UserException('Graphique inconnu.'); } $graph = Utils::get('g'); if (Static_Cache::expired('graph_' . $graph)) { $stats = new Compta\Stats; $plot = new \KD2\SVGPlot(400, 300); if ($graph == 'recettes_depenses') { $r = new \KD2\SVGPlot_Data($stats->recettes()); $r->title = 'Recettes'; $d = new \KD2\SVGPlot_Data($stats->depenses()); $d->title = 'Dépenses'; $data = [$d, $r]; $plot->setTitle('Recettes et dépenses de l\'exercice courant'); } elseif ($graph == 'banques_caisses') { $banques = new Compta\Comptes_Bancaires; $data = []; $r = new \KD2\SVGPlot_Data($stats->soldeCompte(Compta\Comptes::CAISSE)); $r->title = 'Caisse'; $data[] = $r; foreach ($banques->getList() as $banque) { $r = new \KD2\SVGPlot_Data($stats->soldeCompte($banque['id'])); $r->title = $banque['libelle']; $data[] = $r; } $plot->setTitle('Solde des comptes et caisses'); } if (!empty($data)) { $labels = []; foreach ($data[0]->get() as $k=>$v) { $labels[] = Utils::date_fr('M y', strtotime(substr($k, 0, 4) . '-' . substr($k, 4, 2) .'-01')); } $plot->setLabels($labels); $i = 0; $colors = ['#c71', '#941', '#fa4', '#fd9', '#ffc', '#cc9']; |
︙ | ︙ |
Modified src/www/admin/compta/import.php from [b8811b992b] to [48462d1086].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $e = new Compta\Exercices; $import = new Compta\Import; if (isset($_GET['export'])) { header('Content-type: application/csv'); header('Content-Disposition: attachment; filename="Export comptabilité - ' . $config->get('nom_asso') . ' - ' . date('Y-m-d') . '.csv"'); $import->toCSV($e->getCurrentId()); exit; } $error = false; if (!empty($_POST['import'])) { if (!Utils::CSRF_check('compta_import')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif (empty($_FILES['upload']['tmp_name'])) { $error = 'Aucun fichier fourni.'; } else { try { if (Utils::post('type') == 'citizen') { $import->fromCitizen($_FILES['upload']['tmp_name']); } elseif (Utils::post('type') == 'garradin') { $import->fromCSV($_FILES['upload']['tmp_name']); } else { throw new UserException('Import inconnu.'); } Utils::redirect('/admin/compta/import.php?ok'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/compta/index.php from [ebf65a5059] to [bb0c467a1d].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; | | < < | 1 2 3 4 5 6 7 8 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $journal = new Compta\Journal; $tpl->display('admin/compta/index.tpl'); |
Modified src/www/admin/compta/operations/index.php from [272fd61633] to [fdbe6b0e19].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; | | | | | | | | | | < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; $cats = new Compta\Categories; $cat = $type = false; if (Utils::get('cat')) { $cat = $cats->get(Utils::get('cat')); if (!$cat) { throw new UserException("La catégorie demandée n'existe pas."); } $type = $cat['type']; } else { if (isset($_GET['autres'])) $type = Compta\Categories::AUTRES; elseif (isset($_GET['depenses'])) $type = Compta\Categories::DEPENSES; else $type = Compta\Categories::RECETTES; } $journal = new Compta\Journal; $list = $journal->getListForCategory($type === Compta\Categories::AUTRES ? null : $type, $cat ? $cat['id'] : null); $tpl->assign('categorie', $cat); $tpl->assign('journal', $list); $tpl->assign('type', $type); if ($type !== Compta\Categories::AUTRES) { $tpl->assign('liste_cats', $cats->getList($type)); } $total = 0.0; foreach ($list as $row) { $total += (float) $row['montant']; } $tpl->assign('total', $total); $tpl->display('admin/compta/operations/index.tpl'); |
Modified src/www/admin/compta/operations/membre.php from [f877939cc7] to [69c3dfa4f9].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; $exercices = new Compta\Exercices; $journal = new Compta\Journal; $exercice = Utils::get('exercice') ?: $exercices->getCurrentId(); if (!$exercice) { throw new UserException('Exercice inconnu.'); } if (empty($_GET['id']) || !is_numeric($_GET['id'])) |
︙ | ︙ | |||
43 44 45 46 47 48 49 | $tpl->assign('journal', $journal->listForMember($membre['id'], $exercice)); $tpl->assign('exercices', $exercices->getList()); $tpl->assign('exercice', $exercice); $tpl->assign('membre', $membre); $tpl->display('admin/compta/operations/membre.tpl'); | < < | 43 44 45 46 47 48 49 | $tpl->assign('journal', $journal->listForMember($membre['id'], $exercice)); $tpl->assign('exercices', $exercices->getList()); $tpl->assign('exercice', $exercice); $tpl->assign('membre', $membre); $tpl->display('admin/compta/operations/membre.tpl'); |
Modified src/www/admin/compta/operations/modifier.php from [a7a0ab58d0] to [03beca1507].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $journal = new Compta\Journal; $cats = new Compta\Categories; $banques = new Compta\Comptes_Bancaires; $operation = $journal->get(Utils::get('id')); if (!$operation) { throw new UserException("L'opération demandée n'existe pas."); } if ($operation['id_categorie']) { $categorie = $cats->get($operation['id_categorie']); } else { $categorie = false; } if ($categorie && $categorie['type'] != Compta\Categories::AUTRES) { $type = $categorie['type']; } else { $type = null; } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('compta_modifier_'.$operation['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { if (is_null($type)) { $journal->edit($operation['id'], [ 'libelle' => Utils::post('libelle'), 'montant' => Utils::post('montant'), 'date' => Utils::post('date'), 'compte_credit' => Utils::post('compte_credit'), 'compte_debit' => Utils::post('compte_debit'), 'numero_piece' => Utils::post('numero_piece'), 'remarques' => Utils::post('remarques'), ]); } else { $cat = $cats->get(Utils::post('id_categorie')); if (!$cat) { throw new UserException('Il faut choisir une catégorie.'); } if (!array_key_exists(Utils::post('moyen_paiement'), $cats->listMoyensPaiement())) { throw new UserException('Moyen de paiement invalide.'); } if (Utils::post('moyen_paiement') == 'ES') { $a = Compta\Comptes::CAISSE; $b = $cat['compte']; } else { if (!trim(Utils::post('banque'))) { throw new UserException('Le compte bancaire choisi est invalide.'); } if (!array_key_exists(Utils::post('banque'), $banques->getList())) { throw new UserException('Le compte bancaire choisi n\'existe pas.'); } $a = Utils::post('banque'); $b = $cat['compte']; } if ($type == Compta\Categories::DEPENSES) { $debit = $b; $credit = $a; } elseif ($type == Compta\Categories::RECETTES) { $debit = $a; $credit = $b; } $journal->edit($operation['id'], [ 'libelle' => Utils::post('libelle'), 'montant' => Utils::post('montant'), 'date' => Utils::post('date'), 'moyen_paiement'=> Utils::post('moyen_paiement'), 'numero_cheque' => Utils::post('numero_cheque'), 'compte_credit' => $credit, 'compte_debit' => $debit, 'numero_piece' => Utils::post('numero_piece'), 'remarques' => Utils::post('remarques'), 'id_categorie' => (int)$cat['id'], ]); } Utils::redirect('/admin/compta/operations/voir.php?id='.(int)$operation['id']); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ | |||
144 145 146 147 148 149 150 | $tpl->assign('categories', $cats->getList($type)); $tpl->assign('comptes_bancaires', $banques->getList()); } $tpl->assign('operation', $operation); $tpl->display('admin/compta/operations/modifier.tpl'); | < < | 144 145 146 147 148 149 150 | $tpl->assign('categories', $cats->getList($type)); $tpl->assign('comptes_bancaires', $banques->getList()); } $tpl->assign('operation', $operation); $tpl->display('admin/compta/operations/modifier.tpl'); |
Modified src/www/admin/compta/operations/recherche_sql.php from [8d4eaed32a] to [6de43c5825].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $journal = new Compta\Journal; $query = trim(Utils::get('query')); $tpl->assign('schema', $journal->schemaSQL()); $tpl->assign('query', $query); if ($query != '') { try { |
︙ | ︙ | |||
28 29 30 31 32 33 34 | } else { $tpl->assign('result', null); } $tpl->display('admin/compta/operations/recherche_sql.tpl'); | < < | 28 29 30 31 32 33 34 | } else { $tpl->assign('result', null); } $tpl->display('admin/compta/operations/recherche_sql.tpl'); |
Modified src/www/admin/compta/operations/saisir.php from [6bd2225100] to [29aa6904ee].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ECRITURE) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ECRITURE) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $journal = new Compta\Journal; $journal->checkExercice(); $cats = new Compta\Categories; $banques = new Compta\Comptes_Bancaires; if (isset($_GET['depense'])) $type = Compta\Categories::DEPENSES; elseif (isset($_GET['virement'])) $type = 'virement'; elseif (isset($_GET['dette'])) $type = 'dette'; elseif (isset($_GET['avance'])) $type = null; else $type = Compta\Categories::RECETTES; $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('compta_saisie')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { if (is_null($type)) { $id = $journal->add([ 'libelle' => Utils::post('libelle'), 'montant' => Utils::post('montant'), 'date' => Utils::post('date'), 'compte_credit' => Utils::post('compte_credit'), 'compte_debit' => Utils::post('compte_debit'), 'numero_piece' => Utils::post('numero_piece'), 'remarques' => Utils::post('remarques'), 'id_auteur' => $user['id'], ]); } elseif ($type === 'virement') { $id = $journal->add([ 'libelle' => Utils::post('libelle'), 'montant' => Utils::post('montant'), 'date' => Utils::post('date'), 'compte_credit' => Utils::post('compte1'), 'compte_debit' => Utils::post('compte2'), 'numero_piece' => Utils::post('numero_piece'), 'remarques' => Utils::post('remarques'), 'id_auteur' => $user['id'], ]); } else { $cat = $cats->get(Utils::post('categorie')); if (!$cat) { throw new UserException('Il faut choisir une catégorie.'); } if ($type == 'dette') { if (!trim(Utils::post('compte')) || (Utils::post('compte') != 4010 && Utils::post('compte') != 4110)) { throw new UserException('Type de dette invalide.'); } } else { if (Utils::post('moyen_paiement') == 'ES') { $a = Compta\Comptes::CAISSE; $b = $cat['compte']; } else { if (!trim(Utils::post('banque'))) { throw new UserException('Le compte bancaire choisi est invalide.'); } if (!array_key_exists(Utils::post('banque'), $banques->getList())) { throw new UserException('Le compte bancaire choisi n\'existe pas.'); } $a = Utils::post('banque'); $b = $cat['compte']; } } if ($type === Compta\Categories::DEPENSES) { $debit = $b; $credit = $a; } elseif ($type === Compta\Categories::RECETTES) { $debit = $a; $credit = $b; } elseif ($type === 'dette') { $debit = $cat['compte']; $credit = Utils::post('compte'); } $id = $journal->add([ 'libelle' => Utils::post('libelle'), 'montant' => Utils::post('montant'), 'date' => Utils::post('date'), 'moyen_paiement'=> ($type === 'dette') ? null : Utils::post('moyen_paiement'), 'numero_cheque' => ($type === 'dette') ? null : Utils::post('numero_cheque'), 'compte_credit' => $credit, 'compte_debit' => $debit, 'numero_piece' => Utils::post('numero_piece'), 'remarques' => Utils::post('remarques'), 'id_categorie' => ($type === 'dette') ? null : (int)$cat['id'], 'id_auteur' => $user['id'], ]); } $membres->sessionStore('compta_date', Utils::post('date')); if ($type == Compta\Categories::DEPENSES) $type = 'depense'; elseif (is_null($type)) $type = 'avance'; elseif ($type == Compta\Categories::RECETTES) $type = 'recette'; Utils::redirect('/admin/compta/operations/saisir.php?'.$type.'&ok='.(int)$id); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('type', $type); if ($type === null) { $tpl->assign('comptes', $comptes->listTree()); } else { $tpl->assign('moyens_paiement', $cats->listMoyensPaiement()); $tpl->assign('moyen_paiement', Utils::post('moyen_paiement') ?: 'ES'); $tpl->assign('categories', $cats->getList($type === 'dette' ? Compta\Categories::DEPENSES : $type)); $tpl->assign('comptes_bancaires', $banques->getList()); $tpl->assign('banque', Utils::post('banque')); } if (!$membres->sessionGet('compta_date')) { $exercices = new Compta\Exercices; $exercice = $exercices->getCurrent(); if ($exercice['debut'] > time() || $exercice['fin'] < time()) { $membres->sessionStore('compta_date', date('Y-m-d', $exercice['debut'])); } else { $membres->sessionStore('compta_date', date('Y-m-d')); } } $tpl->assign('date', $membres->sessionGet('compta_date') ?: false); $tpl->assign('ok', (int) Utils::get('ok')); $tpl->display('admin/compta/operations/saisir.tpl'); |
Modified src/www/admin/compta/operations/supprimer.php from [1766cca412] to [c39d3c30ab].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['compta'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $journal = new Compta\Journal; $operation = $journal->get(Utils::get('id')); if (!$operation) { throw new UserException("L'opération demandée n'existe pas."); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('compta_supprimer_'.$operation['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $journal->delete($operation['id']); Utils::redirect('/admin/compta/operations/'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('operation', $operation); $tpl->display('admin/compta/operations/supprimer.tpl'); |
Modified src/www/admin/compta/operations/voir.php from [266f5504f8] to [6f6c5cb110].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; $journal = new Compta\Journal; $operation = $journal->get(Utils::get('id')); if (!$operation) { throw new UserException("L'opération demandée n'existe pas."); } $exercices = new Compta\Exercices; $tpl->assign('operation', $operation); $credit = $comptes->get($operation['compte_credit']); $tpl->assign('nom_compte_credit', $credit['libelle']); $debit = $comptes->get($operation['compte_debit']); $tpl->assign('nom_compte_debit', $debit['libelle']); $tpl->assign('exercice', $exercices->get($operation['id_exercice'])); if ($operation['id_categorie']) { $cats = new Compta\Categories; $categorie = $cats->get($operation['id_categorie']); $tpl->assign('categorie', $categorie); if ($categorie['type'] == Compta\Categories::RECETTES) { $tpl->assign('compte', $debit['libelle']); } else { $tpl->assign('compte', $credit['libelle']); } |
︙ | ︙ |
Modified src/www/admin/compta/pie.php from [0cdcddb4b0] to [af72a48663].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; | | | | | < < | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; if (!in_array(Utils::get('g'), ['recettes', 'depenses'])) { throw new UserException('Graphique inconnu.'); } $graph = Utils::get('g'); if (Static_Cache::expired('pie_' . $graph)) { $stats = new Compta\Stats; $categories = new Compta\Categories; $pie = new \KD2\SVGPie(400, 250); if ($graph == 'recettes') { $data = $stats->repartitionRecettes(); $categories = $categories->getList(Compta\Categories::RECETTES); $pie->setTitle('Répartition des recettes'); } else { $data = $stats->repartitionDepenses(); $categories = $categories->getList(Compta\Categories::DEPENSES); $pie->setTitle('Répartition des dépenses'); } $others = 0; $colors = ['#c71', '#941', '#fa4', '#fd9', '#ffc', '#cc9']; $max = count($colors); $i = 0; |
︙ | ︙ | |||
48 49 50 51 52 53 54 | $cat = $categories[$row['id_categorie']]; $pie->add(new \SVGPie_Data($row['nb'], substr($cat['intitule'], 0, 50), $colors[$i-1])); } } if ($others > 0) { | | | 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | $cat = $categories[$row['id_categorie']]; $pie->add(new \SVGPie_Data($row['nb'], substr($cat['intitule'], 0, 50), $colors[$i-1])); } } if ($others > 0) { $pie->add(new \KD2\SVGPie_Data($others, 'Autres', '#ccc')); } Static_Cache::store('pie_' . $graph, $pie->output()); } header('Content-Type: image/svg+xml'); Static_Cache::display('pie_' . $graph); |
Modified src/www/admin/config/donnees.php from [c5c4df3394] to [2e8a19d974].
1 2 3 4 5 6 7 8 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $s = new Sauvegarde; $error = false; | | | | | | | | | | | | | | | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $s = new Sauvegarde; $error = false; if (Utils::post('config')) { if (!Utils::CSRF_check('backup_config')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $config->set('frequence_sauvegardes', Utils::post('frequence_sauvegardes')); $config->set('nombre_sauvegardes', Utils::post('nombre_sauvegardes')); $config->save(); Utils::redirect('/admin/config/donnees.php?ok=config'); } catch (UserException $e) { $error = $e->getMessage(); } } } elseif (Utils::post('create')) { if (!Utils::CSRF_check('backup_create')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $s->create(); Utils::redirect('/admin/config/donnees.php?ok=create'); } catch (UserException $e) { $error = $e->getMessage(); } } } elseif (Utils::post('download')) { if (!Utils::CSRF_check('backup_download')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { header('Content-type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . $config->get('nom_asso') . ' - Sauvegarde données - ' . date('Y-m-d') . '.sqlite"'); $s->dump(); exit; } } elseif (Utils::post('restore')) { if (!Utils::CSRF_check('backup_manage')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $s->restoreFromLocal(Utils::post('file')); Utils::redirect('/admin/config/donnees.php?ok=restore'); } catch (UserException $e) { $error = $e->getMessage(); } } } elseif (Utils::post('remove')) { if (!Utils::CSRF_check('backup_manage')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $s->remove(Utils::post('file')); Utils::redirect('/admin/config/donnees.php?ok=remove'); } catch (UserException $e) { $error = $e->getMessage(); } } } elseif (Utils::post('restore_file')) { if (!Utils::CSRF_check('backup_restore')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $s->restoreFromUpload($_FILES['file']); Utils::redirect('/admin/config/donnees.php?ok=restore'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('ok', Utils::get('ok')); $tpl->assign('liste', $s->getList()); $tpl->assign('max_file_size', Utils::getMaxUploadSize()); $tpl->display('admin/config/donnees.tpl'); ?> |
Modified src/www/admin/config/index.php from [3cf4b11b92] to [8758269459].
︙ | ︙ | |||
8 9 10 11 12 13 14 | if (isset($_GET['ok'])) { $error = 'OK'; } if (!empty($_POST['save'])) { | | | | | | | | | | | | | | | | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | if (isset($_GET['ok'])) { $error = 'OK'; } if (!empty($_POST['save'])) { if (!Utils::CSRF_check('config')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $config->set('nom_asso', Utils::post('nom_asso')); $config->set('email_asso', Utils::post('email_asso')); $config->set('adresse_asso', Utils::post('adresse_asso')); $config->set('site_asso', Utils::post('site_asso')); $config->set('email_envoi_automatique', Utils::post('email_envoi_automatique')); $config->set('accueil_wiki', Utils::post('accueil_wiki')); $config->set('accueil_connexion', Utils::post('accueil_connexion')); $config->set('categorie_membres', Utils::post('categorie_membres')); $config->set('champ_identite', Utils::post('champ_identite')); $config->set('champ_identifiant', Utils::post('champ_identifiant')); $config->set('pays', Utils::post('pays')); $config->set('monnaie', Utils::post('monnaie')); $config->save(); Utils::redirect('/admin/config/?ok'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('garradin_version', garradin_version() . ' [' . (garradin_manifest() ?: 'release') . ']'); $tpl->assign('php_version', phpversion()); $v = \SQLite3::version(); $tpl->assign('sqlite_version', $v['versionString']); $tpl->assign('pays', Utils::getCountryList()); $cats = new Membres\Categories; $tpl->assign('membres_cats', $cats->listSimple()); $champs_liste = array_merge( ['id' => ['title' => 'Numéro unique', 'type' => 'number']], $config->get('champs_membres')->getList() ); $tpl->assign('champs', $champs_liste); $tpl->display('admin/config/index.tpl'); ?> |
Modified src/www/admin/config/membres.php from [cd2611bf98] to [d2b6067eb1].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $error = false; // Restauration de ce qui était en session if ($champs = $membres->sessionGet('champs_membres')) { | | | | | | | | | | | | | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $error = false; // Restauration de ce qui était en session if ($champs = $membres->sessionGet('champs_membres')) { $champs = new Membres\Champs($champs); } else { // Il est nécessaire de créer une nouvelle instance ici, sinon // l'enregistrement des modifs ne marchera pas car les deux instances seront identiques. // Càd si on utilise directement l'instance de $config, elle sera modifiée directement // du coup quand on essaiera de comparer si ça a changé ça comparera deux fois la même chose // donc ça n'aura pas changé forcément. $champs = new Membres\Champs($config->get('champs_membres')); } if (isset($_GET['ok'])) { $error = 'OK'; } if (!empty($_POST['save']) || !empty($_POST['add']) || !empty($_POST['review']) || !empty($_POST['reset'])) { if (!Utils::CSRF_check('config_membres')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { if (!empty($_POST['reset'])) { $membres->sessionStore('champs_membres', null); Utils::redirect('/admin/config/membres.php'); } elseif (!empty($_POST['review'])) { try { $nouveau_champs = Utils::post('champs'); foreach ($nouveau_champs as $key=>&$cfg) { $cfg['type'] = $champs->get($key, 'type'); } $champs->setAll($nouveau_champs); $membres->sessionStore('champs_membres', (string)$champs); Utils::redirect('/admin/config/membres.php?review'); } catch (UserException $e) { $error = $e->getMessage(); } } elseif (!empty($_POST['add'])) { try { if (Utils::post('preset')) { $presets = Membres\Champs::listUnusedPresets($champs); if (!array_key_exists(Utils::post('preset'), $presets)) { throw new UserException('Le champ pré-défini demandé ne fait pas partie des champs disponibles.'); } $champs->add(Utils::post('preset'), $presets[Utils::post('preset')]); } elseif (Utils::post('new')) { $presets = Membres\Champs::importPresets(); $new = Utils::post('new'); if (array_key_exists($new, $presets)) { throw new UserException('Le champ personnalisé ne peut avoir le même nom qu\'un champ pré-défini.'); } $config = [ 'type' => Utils::post('new_type'), 'title' => Utils::post('new_title'), 'editable' => true, 'mandatory' => false, ]; if ($config['type'] == 'select' || $config['type'] == 'multiple') { $config['options'] = ['Première option']; } $champs->add($new, $config); } $membres->sessionStore('champs_membres', (string) $champs); Utils::redirect('/admin/config/membres.php?added'); } catch (UserException $e) { $error = $e->getMessage(); } } elseif (!empty($_POST['save'])) { try { $champs->save(); $membres->sessionStore('champs_membres', null); Utils::redirect('/admin/config/membres.php?ok'); } catch (UserException $e) { $error = $e->getMessage(); } } } } $tpl->assign('error', $error); $tpl->assign('review', isset($_GET['review']) ? true : false); $types = $champs->getTypes(); $tpl->assign('champs', $champs->getAll()); $tpl->assign('types', $types); $tpl->assign('presets', Membres\Champs::listUnusedPresets($champs)); $tpl->assign('new', Utils::post('new')); $tpl->register_modifier('get_type', function ($type) use ($types) { return $types[$type]; }); $tpl->assign('csrf_name', Utils::CSRF_field_name('config_membres')); $tpl->assign('csrf_value', Utils::CSRF_create('config_membres')); $tpl->display('admin/config/membres.tpl'); ?> |
Modified src/www/admin/config/plugins.php from [7c4b62c1ef] to [f36de87df9].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $error = false; if (!empty($_POST['install'])) { | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $error = false; if (!empty($_POST['install'])) { if (!Utils::CSRF_check('install_plugin')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { Plugin::install(Utils::post('to_install'), false); Utils::redirect('/admin/config/plugins.php'); } catch (UserException $e) { $error = $e->getMessage(); } } } if (Utils::post('delete')) { if (!Utils::CSRF_check('delete_plugin_' . Utils::get('delete'))) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $plugin = new Plugin(Utils::get('delete')); $plugin->uninstall(); Utils::redirect('/admin/config/plugins.php'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); if (Utils::get('delete')) { $plugin = new Plugin(Utils::get('delete')); $tpl->assign('plugin', $plugin->getInfos()); $tpl->assign('delete', true); } else { $tpl->assign('liste_telecharges', Plugin::listDownloaded()); $tpl->assign('liste_installes', Plugin::listInstalled()); } $tpl->display('admin/config/plugins.tpl'); ?> |
Modified src/www/admin/config/site.php from [b7ce7813a6] to [3d541425bb].
︙ | ︙ | |||
8 9 10 11 12 13 14 | if (isset($_GET['ok'])) { $error = 'OK'; } if (!empty($_POST['save'])) { | | | | | | | | | | | | | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | if (isset($_GET['ok'])) { $error = 'OK'; } if (!empty($_POST['save'])) { if (!Utils::CSRF_check('config_site')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $config->set('champs_obligatoires', Utils::post('champs_obligatoires')); $config->set('champs_modifiables_membre', Utils::post('champs_modifiables_membre')); $config->set('categorie_membres', Utils::post('categorie_membres')); $config->save(); Utils::redirect('/admin/config/site.php?ok'); } catch (UserException $e) { $error = $e->getMessage(); } } } if (Utils::get('edit')) { $source = Squelette::getSource(Utils::get('edit')); if (!$source) { throw new UserException("Ce squelette n'existe pas."); } $csrf_key = 'edit_skel_'.md5(Utils::get('edit')); if (Utils::post('save')) { if (!Utils::CSRF_check($csrf_key)) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { if (Squelette::editSource(Utils::get('edit'), Utils::post('content'))) { Utils::redirect('/admin/config/site.php?edit='.rawurlencode(Utils::get('edit')).'&ok'); } else { $error = "Impossible d'enregistrer le squelette."; } } } $tpl->assign('edit', ['file' => trim(Utils::get('edit')), 'content' => $source]); $tpl->assign('csrf_key', $csrf_key); $tpl->assign('sources_json', json_encode(Squelette::listSources())); } else { $tpl->assign('sources', Squelette::listSources()); } $tpl->assign('error', $error); $tpl->display('admin/config/site.tpl'); ?> |
Modified src/www/admin/index.php from [1c24b867dc] to [7c054dec30].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $cats = new Membres\Categories; $categorie = $cats->get($user['id_categorie']); $tpl->assign('categorie', $categorie); $wiki = new Wiki; $page = $wiki->getByURI($config->get('accueil_connexion')); $tpl->assign('page', $page); $cats = new Membres\Categories; $categorie = $cats->get($user['id_categorie']); $cotisations = new Membres\Cotisations; if (!empty($categorie['id_cotisation_obligatoire'])) { $tpl->assign('cotisation', $cotisations->isMemberUpToDate($user['id'], $categorie['id_cotisation_obligatoire'])); } else { |
︙ | ︙ |
Modified src/www/admin/install.php from [a61438fd4d] to [b3948d9213].
︙ | ︙ | |||
89 90 91 92 93 94 95 | { // Renommage du fichier sqlite à la version 0.5.0 $old_file = str_replace('.sqlite', '.db', DB_FILE); if (file_exists($old_file)) { rename($old_file, DB_FILE); | | | | | | | | | | | | | | | | | | | | | | | | 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 | { // Renommage du fichier sqlite à la version 0.5.0 $old_file = str_replace('.sqlite', '.db', DB_FILE); if (file_exists($old_file)) { rename($old_file, DB_FILE); Utils::redirect('/admin/upgrade.php'); } } $tpl = Template::getInstance(); $tpl->assign('admin_url', WWW_URL . 'admin/'); if (file_exists(DB_FILE)) { $tpl->assign('disabled', true); } else { $tpl->assign('disabled', false); $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('install')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif (Utils::post('passe_membre') != Utils::post('repasse_membre')) { $error = 'La vérification ne correspond pas au mot de passe.'; } else { try { $db = DB::getInstance(true); // Création de la base de données $db->exec('BEGIN;'); $db->exec(file_get_contents(DB_SCHEMA)); $db->exec('END;'); // Configuration de base $config = Config::getInstance(); $config->set('nom_asso', Utils::post('nom_asso')); $config->set('adresse_asso', Utils::post('adresse_asso')); $config->set('email_asso', Utils::post('email_asso')); $config->set('site_asso', WWW_URL); $config->set('monnaie', '€'); $config->set('pays', 'FR'); $config->set('email_envoi_automatique', Utils::post('email_asso')); $config->setVersion(garradin_version()); $champs = Membres\Champs::importInstall(); $champs->save(false); // Pas de copie car pas de table membres existante $config->set('champ_identifiant', 'email'); $config->set('champ_identite', 'nom'); // Création catégories $cats = new Membres\Categories; $id = $cats->add([ 'nom' => 'Membres actifs', ]); $config->set('categorie_membres', $id); $id = $cats->add([ 'nom' => 'Anciens membres', 'droit_inscription' => Membres::DROIT_AUCUN, 'droit_wiki' => Membres::DROIT_AUCUN, 'droit_membres' => Membres::DROIT_AUCUN, 'droit_compta' => Membres::DROIT_AUCUN, 'droit_config' => Membres::DROIT_AUCUN, 'droit_connexion' => Membres::DROIT_AUCUN, 'cacher' => 1, ]); $id = $cats->add([ 'nom' => ucfirst(Utils::post('cat_membre')), 'droit_inscription' => Membres::DROIT_AUCUN, 'droit_wiki' => Membres::DROIT_ADMIN, 'droit_membres' => Membres::DROIT_ADMIN, 'droit_compta' => Membres::DROIT_ADMIN, 'droit_config' => Membres::DROIT_ADMIN, ]); // Création premier membre $membres = new Membres; $id_membre = $membres->add([ 'id_categorie' => $id, 'nom' => Utils::post('nom_membre'), 'email' => Utils::post('email_membre'), 'passe' => Utils::post('passe_membre'), 'pays' => 'FR', ]); // Création wiki $page = Wiki::transformTitleToURI(Utils::post('nom_asso')); $config->set('accueil_wiki', $page); $wiki = new Wiki; $id_page = $wiki->create([ 'titre' => Utils::post('nom_asso'), 'uri' => $page, ]); $wiki->editRevision($id_page, 0, [ 'id_auteur' => $id_membre, 'contenu' => "Bienvenue dans le wiki de ".Utils::post('nom_asso')." !\n\nCliquez sur le bouton « éditer » pour modifier cette page.", ]); // Création page wiki connexion $page = Wiki::transformTitleToURI('Bienvenue'); $config->set('accueil_connexion', $page); $id_page = $wiki->create([ 'titre' => 'Bienvenue', 'uri' => $page, ]); $wiki->editRevision($id_page, 0, [ 'id_auteur' => $id_membre, 'contenu' => "Bienvenue dans l'administration de ".Utils::post('nom_asso')." !\n\n" . "Utilisez le menu à gauche pour accéder aux différentes rubriques.", ]); // Mise en place compta $comptes = new Compta\Comptes; $comptes->importPlan(); $comptes = new Compta\Categories; $comptes->importCategories(); $ex = new Compta\Exercices; $ex->add([ 'libelle' => 'Premier exercice', 'debut' => date('Y-01-01'), 'fin' => date('Y-12-31') ]); $config->save(); Utils::redirect('/admin/login.php'); } catch (UserException $e) { @unlink(DB_FILE); $error = $e->getMessage(); } } } $tpl->assign('error', $error); } $tpl->assign('passphrase', Utils::suggestPassword()); $tpl->display('admin/install.tpl'); |
Modified src/www/admin/login.php from [be9a40d98b] to [6a3ca32fc8].
1 2 3 4 5 6 7 8 9 | <?php namespace Garradin; const LOGIN_PROCESS = true; require_once __DIR__ . '/_inc.php'; if ($membres->isLogged()) { | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <?php namespace Garradin; const LOGIN_PROCESS = true; require_once __DIR__ . '/_inc.php'; if ($membres->isLogged()) { Utils::redirect('/admin/'); } // Relance session_start et renvoie une image de 1px transparente if (isset($_GET['keepSessionAlive'])) { $membres->keepSessionAlive(); header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Content-Type: image/gif'); echo base64_decode("R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="); exit; } $error = false; if (Utils::post('login')) { if (!Utils::CSRF_check('login')) { $error = 'OTHER'; } else { if (Utils::post('id') && Utils::post('passe') && $membres->login(Utils::post('id'), Utils::post('passe'))) { Utils::redirect('/admin/'); } $error = 'LOGIN'; } } $champs = $config->get('champs_membres'); |
︙ | ︙ |
Modified src/www/admin/logout.php from [50a6fd4fa1] to [fc64d98efd].
1 2 3 4 5 6 7 | <?php namespace Garradin; const LOGIN_PROCESS = true; require_once __DIR__ . '/_inc.php'; $membres->logout(); | | | 1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; const LOGIN_PROCESS = true; require_once __DIR__ . '/_inc.php'; $membres->logout(); Utils::redirect('/'); ?> |
Modified src/www/admin/membres/action.php from [15a0ce78de] to [8e75a97c35].
︙ | ︙ | |||
25 26 27 28 29 30 31 | } } $error = false; if (!empty($_POST['move_ok'])) { | | | | | | | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | } } $error = false; if (!empty($_POST['move_ok'])) { if (!Utils::CSRF_check('membres_action')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { if (!empty($_POST['id_categorie'])) { $membres->changeCategorie($_POST['id_categorie'], $_POST['selected']); } Utils::redirect('/admin/membres/'); } } elseif (!empty($_POST['delete_ok'])) { if (!Utils::CSRF_check('membres_action')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { $membres->delete($_POST['selected']); Utils::redirect('/admin/membres/'); } } $tpl->assign('selected', $_POST['selected']); $tpl->assign('nb_selected', count($_POST['selected'])); if (!empty($_POST['move'])) { $cats = new Membres\Categories; $tpl->assign('membres_cats', $cats->listSimple()); $tpl->assign('action', 'move'); } elseif (!empty($_POST['delete'])) { $tpl->assign('action', 'delete'); |
︙ | ︙ |
Modified src/www/admin/membres/ajouter.php from [60b2a14cea] to [90216da4e4].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ECRITURE) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ECRITURE) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cats = new Membres\Categories; $champs = $config->get('champs_membres'); $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('new_member')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif (Utils::post('passe') != Utils::post('repasse')) { $error = 'La vérification ne correspond pas au mot de passe.'; } else { try { if ($user['droits']['membres'] == Membres::DROIT_ADMIN) { $id_categorie = Utils::post('id_categorie'); } else { $id_categorie = $config->get('categorie_membres'); } $data = ['id_categorie' => $id_categorie]; foreach ($champs->getAll() as $key=>$dismiss) { $data[$key] = Utils::post($key); } $id = $membres->add($data); Utils::redirect('/admin/membres/fiche.php?id='.(int)$id); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('passphrase', Utils::suggestPassword()); $tpl->assign('champs', $champs->getAll()); $tpl->assign('membres_cats', $cats->listSimple()); $tpl->assign('current_cat', Utils::post('id_categorie') ?: $config->get('categorie_membres')); $tpl->display('admin/membres/ajouter.tpl'); ?> |
Modified src/www/admin/membres/cat_modifier.php from [bdc34c67d3] to [65fb457d34].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cats = new Membres\Categories; if (empty($_GET['id']) || !is_numeric($_GET['id'])) { throw new UserException("Argument du numéro de catégorie manquant."); } $id = (int) $_GET['id']; $cat = $cats->get($id); if (!$cat) { throw new UserException("Cette catégorie n'existe pas."); } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('edit_cat_'.$id)) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $cats->edit($id, [ 'nom' => Utils::post('nom'), 'description' => Utils::post('description'), 'droit_wiki' => (int) Utils::post('droit_wiki'), 'droit_compta' => (int) Utils::post('droit_compta'), 'droit_config' => (int) Utils::post('droit_config'), 'droit_membres' => (int) Utils::post('droit_membres'), 'droit_connexion' => (int) Utils::post('droit_connexion'), 'droit_inscription' => (int) Utils::post('droit_inscription'), 'cacher' => (int) Utils::post('cacher'), 'id_cotisation_obligatoire' => (int) Utils::post('id_cotisation_obligatoire'), ]); if ($id == $user['id_categorie']) { $membres->updateSessionData(); } Utils::redirect('/admin/membres/categories.php'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/membres/cat_supprimer.php from [7ec6a968ec] to [d2a7af392a].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cats = new Membres\Categories; if (empty($_GET['id']) || !is_numeric($_GET['id'])) { throw new UserException("Argument du numéro de catégorie manquant."); } $id = (int) $_GET['id']; $cat = $cats->get($id); if (!$cat) { throw new UserException("Cette catégorie n'existe pas."); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('delete_cat_'.$id)) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $cats->remove($id); Utils::redirect('/admin/membres/categories.php'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/membres/categories.php from [497ff3f034] to [2d57cb637e].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cats = new Membres\Categories; $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('new_cat')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $cats->add([ 'nom' => Utils::post('nom'), ]); Utils::redirect('/admin/membres/categories.php'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/membres/cotisations.php from [cad951826b] to [7c4f24c856].
︙ | ︙ | |||
18 19 20 21 22 23 24 | $membre = $membres->get($id); if (!$membre) { throw new UserException("Ce membre n'existe pas."); } | | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | $membre = $membres->get($id); if (!$membre) { throw new UserException("Ce membre n'existe pas."); } $cats = new Membres\Categories; $categorie = $cats->get($membre['id_categorie']); $tpl->assign('categorie', $categorie); $cotisations = new Membres\Cotisations; if (!empty($categorie['id_cotisation_obligatoire'])) { $tpl->assign('cotisation', $cotisations->isMemberUpToDate($membre['id'], $categorie['id_cotisation_obligatoire'])); } else { |
︙ | ︙ |
Modified src/www/admin/membres/cotisations/ajout.php from [ce2a28bfdf] to [28e15bf3fd].
︙ | ︙ | |||
15 16 17 18 19 20 21 | $membre = $membres->get((int) $_GET['id']); if (!$membre) { throw new UserException("Ce membre n'existe pas."); } | | | | | | | | | | | | | | | | | | | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | $membre = $membres->get((int) $_GET['id']); if (!$membre) { throw new UserException("Ce membre n'existe pas."); } $cats = new Membres\Categories; $categorie = $cats->get($membre['id_categorie']); } else { $categorie = ['id_cotisation_obligatoire' => false]; } $cotisations = new Cotisations; $m_cotisations = new Membres\Cotisations; $cats = new Compta\Categories; $banques = new Compta\Comptes_Bancaires; $error = false; if (!empty($_POST['add'])) { if (!Utils::CSRF_check('add_cotisation')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $data = [ 'date' => Utils::post('date'), 'id_cotisation' => Utils::post('id_cotisation'), 'id_membre' => Utils::post('id_membre'), 'id_auteur' => $user['id'], 'montant' => Utils::post('montant'), 'moyen_paiement' => Utils::post('moyen_paiement'), 'numero_cheque' => Utils::post('numero_cheque'), 'banque' => Utils::post('banque'), ]; $m_cotisations->add($data); Utils::redirect('/admin/membres/cotisations.php?id=' . (int)Utils::post('id_membre')); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('membre', $membre); $tpl->assign('cotisations', $cotisations->listCurrent()); $tpl->assign('default_co', null); $tpl->assign('default_amount', 0.00); $tpl->assign('default_date', date('Y-m-d')); $tpl->assign('default_compta', null); $tpl->assign('moyens_paiement', $cats->listMoyensPaiement()); $tpl->assign('moyen_paiement', Utils::post('moyen_paiement') ?: 'ES'); $tpl->assign('comptes_bancaires', $banques->getList()); $tpl->assign('banque', Utils::post('banque')); if (Utils::get('cotisation')) { $co = $cotisations->get(Utils::get('cotisation')); if (!$co) { throw new UserException("La cotisation indiquée en paramètre n'existe pas."); } $tpl->assign('default_co', $co['id']); |
︙ | ︙ | |||
104 105 106 107 108 109 110 | $tpl->assign('default_co', $co['id']); $tpl->assign('default_amount', $co['montant']); } } $tpl->display('admin/membres/cotisations/ajout.tpl'); | < < | 104 105 106 107 108 109 110 | $tpl->assign('default_co', $co['id']); $tpl->assign('default_amount', $co['montant']); } } $tpl->display('admin/membres/cotisations/ajout.tpl'); |
Modified src/www/admin/membres/cotisations/gestion/modifier.php from [43742910c5] to [0b44bd3324].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../../../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | <?php namespace Garradin; require_once __DIR__ . '/../../../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } if (!Utils::get('id') || !is_numeric(Utils::get('id'))) { throw new UserException("Argument du numéro de cotisation manquant."); } $cotisations = new Cotisations; $co = $cotisations->get(Utils::get('id')); $cats = new Compta\Categories; if (!$co) { throw new UserException("Cette cotisation n'existe pas."); } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('edit_co_' . $co['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $duree = Utils::post('periodicite') == 'jours' ? (int) Utils::post('duree') : null; $debut = Utils::post('periodicite') == 'date' ? Utils::post('debut') : null; $fin = Utils::post('periodicite') == 'date' ? Utils::post('fin') : null; $id_cat = Utils::post('categorie') ? (int) Utils::post('id_categorie_compta') : null; $cotisations->edit($co['id'], [ 'intitule' => Utils::post('intitule'), 'description' => Utils::post('description'), 'montant' => (float) Utils::post('montant'), 'duree' => $duree, 'debut' => $debut, 'fin' => $fin, 'id_categorie_compta'=> $id_cat, ]); Utils::redirect('/admin/membres/cotisations/'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $co['periodicite'] = $co['duree'] ? 'jours' : ($co['debut'] ? 'date' : 'ponctuel'); $co['categorie'] = $co['id_categorie_compta'] ? 1 : 0; $tpl->assign('cotisation', $co); $tpl->assign('categories', $cats->getList(Compta\Categories::RECETTES)); $tpl->display('admin/membres/cotisations/gestion/modifier.tpl'); ?> |
Modified src/www/admin/membres/cotisations/gestion/rappel_modifier.php from [cd4b083482] to [b4298806b4].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../../../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | <?php namespace Garradin; require_once __DIR__ . '/../../../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } if (!Utils::get('id') || !is_numeric(Utils::get('id'))) { throw new UserException("Argument du numéro de rappel manquant."); } $rappels = new Rappels; $rappel = $rappels->get(Utils::get('id')); if (!$rappel) { throw new UserException("Ce rappel n'existe pas."); } $cotisations = new Cotisations; $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('edit_rappel_' . $rappel['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { if (Utils::post('delai_choix') == 0) $delai = 0; elseif (Utils::post('delai_choix') > 0) $delai = (int) Utils::post('delai_post'); else $delai = -(int) Utils::post('delai_pre'); $rappels->edit($rappel['id'], [ 'sujet' => Utils::post('sujet'), 'texte' => Utils::post('texte'), 'delai' => $delai, 'id_cotisation' => Utils::post('id_cotisation'), ]); Utils::redirect('/admin/membres/cotisations/gestion/rappels.php'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/membres/cotisations/gestion/rappel_supprimer.php from [f4a5906826] to [4ebdec86bd].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../../../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <?php namespace Garradin; require_once __DIR__ . '/../../../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } if (!Utils::get('id') || !is_numeric(Utils::get('id'))) { throw new UserException("Argument du numéro de rappel manquant."); } $rappels = new Rappels; $rappel = $rappels->get(Utils::get('id')); if (!$rappel) { throw new UserException("Ce rappel n'existe pas."); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('delete_rappel_' . $rappel['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $rappels->delete($rappel['id'], (bool) Utils::post('delete_history')); Utils::redirect('/admin/membres/cotisations/gestion/rappels.php'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/membres/cotisations/gestion/rappels.php from [c06898a5af] to [5e80b880be].
︙ | ︙ | |||
11 12 13 14 15 16 17 | $rappels = new Rappels; $cotisations = new Cotisations; $error = false; if (!empty($_POST['save'])) { | | | | | | | | | | | 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | $rappels = new Rappels; $cotisations = new Cotisations; $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('new_rappel')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { if (Utils::post('delai_choix') == 0) $delai = 0; elseif (Utils::post('delai_choix') > 0) $delai = (int) Utils::post('delai_post'); else $delai = -(int) Utils::post('delai_pre'); $rappels->add([ 'sujet' => Utils::post('sujet'), 'texte' => Utils::post('texte'), 'delai' => $delai, 'id_cotisation' => Utils::post('id_cotisation'), ]); Utils::redirect('/admin/membres/cotisations/gestion/rappels.php'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/membres/cotisations/gestion/supprimer.php from [975df94532] to [a1937c7779].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../../../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <?php namespace Garradin; require_once __DIR__ . '/../../../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } if (!Utils::get('id') || !is_numeric(Utils::get('id'))) { throw new UserException("Argument du numéro de cotisation manquant."); } $cotisations = new Cotisations; $co = $cotisations->get(Utils::get('id')); if (!$co) { throw new UserException("Cette cotisation n'existe pas."); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('delete_co_' . $co['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $cotisations->delete($co['id']); Utils::redirect('/admin/membres/cotisations/'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/membres/cotisations/index.php from [d6edc8b919] to [2819199d61].
︙ | ︙ | |||
8 9 10 11 12 13 14 | throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cotisations = new Cotisations; if ($user['droits']['membres'] >= Membres::DROIT_ADMIN) { | | | | | | | | | | | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $cotisations = new Cotisations; if ($user['droits']['membres'] >= Membres::DROIT_ADMIN) { $cats = new Compta\Categories; $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('new_cotisation')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $duree = Utils::post('periodicite') == 'jours' ? (int) Utils::post('duree') : null; $debut = Utils::post('periodicite') == 'date' ? Utils::post('debut') : null; $fin = Utils::post('periodicite') == 'date' ? Utils::post('fin') : null; $id_cat = Utils::post('categorie') ? (int) Utils::post('id_categorie_compta') : null; $cotisations->add([ 'intitule' => Utils::post('intitule'), 'description' => Utils::post('description'), 'montant' => (float) Utils::post('montant'), 'duree' => $duree, 'debut' => $debut, 'fin' => $fin, 'id_categorie_compta'=> $id_cat, ]); Utils::redirect('/admin/membres/cotisations/'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('categories', $cats->getList(Compta\Categories::RECETTES)); } $tpl->assign('liste', $cotisations->listCurrentWithStats()); $tpl->display('admin/membres/cotisations/index.tpl'); ?> |
Modified src/www/admin/membres/cotisations/rappels.php from [fb5f6d07a6] to [92460e76ea].
︙ | ︙ | |||
19 20 21 22 23 24 25 | if (!$membre) { throw new UserException("Ce membre n'existe pas."); } $re = new Rappels_Envoyes; | | | | | | | | < < | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | if (!$membre) { throw new UserException("Ce membre n'existe pas."); } $re = new Rappels_Envoyes; $cm = new Membres\Cotisations; $error = false; if (Utils::post('save')) { if (!Utils::CSRF_check('add_rappel_'.$membre['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $re->add([ 'id_cotisation' => Utils::post('id_cotisation'), 'id_membre' => $membre['id'], 'media' => Utils::post('media'), 'date' => Utils::post('date'), ]); Utils::redirect('/admin/membres/cotisations/rappels.php?id=' . $membre['id'] . '&ok'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('ok', isset($_GET['ok'])); $tpl->assign('membre', $membre); $tpl->assign('cotisations', $cm->listSubscriptionsForMember($membre['id'])); $tpl->assign('default_date', date('Y-m-d')); $tpl->assign('rappels', $re->listForMember($membre['id'])); $tpl->display('admin/membres/cotisations/rappels.tpl'); |
Modified src/www/admin/membres/cotisations/supprimer.php from [517dc47ee8] to [4a224c8077].
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php namespace Garradin; require_once __DIR__ . '/../../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ECRITURE) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $membre = false; $cotisations = new Cotisations; | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php namespace Garradin; require_once __DIR__ . '/../../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ECRITURE) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $membre = false; $cotisations = new Cotisations; $m_cotisations = new Membres\Cotisations; if (empty($_GET['id']) || !is_numeric($_GET['id'])) { throw new UserException("Argument du numéro de cotisation membre manquant."); } $id = (int) $_GET['id']; |
︙ | ︙ | |||
34 35 36 37 38 39 40 | throw new UserException("Le membre lié à la cotisation n'existe pas ou plus."); } $error = false; if (!empty($_POST['delete'])) { | | | < < | 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | throw new UserException("Le membre lié à la cotisation n'existe pas ou plus."); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('del_cotisation_' . $co['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $m_cotisations->delete($co['id']); Utils::redirect('/admin/membres/cotisations.php?id=' . $membre['id']); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('membre', $membre); $tpl->assign('cotisation', $co); $tpl->display('admin/membres/cotisations/supprimer.tpl'); |
Modified src/www/admin/membres/cotisations/voir.php from [964a03044e] to [bc9f5b7431].
︙ | ︙ | |||
12 13 14 15 16 17 18 | { throw new UserException("Argument du numéro de cotisation manquant."); } $id = (int) $_GET['id']; $cotisations = new Cotisations; | | | | | | | < < | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | { throw new UserException("Argument du numéro de cotisation manquant."); } $id = (int) $_GET['id']; $cotisations = new Cotisations; $m_cotisations = new Membres\Cotisations; $co = $cotisations->get($id); if (!$co) { throw new UserException("Cette cotisation n'existe pas."); } $page = (int) Utils::get('p') ?: 1; $tpl->assign('page', $page); $tpl->assign('bypage', Membres\Cotisations::ITEMS_PER_PAGE); $tpl->assign('total', $m_cotisations->countMembersForCotisation($co['id'])); $tpl->assign('pagination_url', Utils::getSelfUrl(true) . '?id=' . $co['id'] . '&p=[ID]'); $tpl->assign('cotisation', $co); $tpl->assign('order', Utils::get('o') ?: 'date'); $tpl->assign('desc', !isset($_GET['a'])); $tpl->assign('liste', $m_cotisations->listMembersForCotisation( $co['id'], $page, Utils::get('o'), isset($_GET['a']) ? false : true)); $tpl->display('admin/membres/cotisations/voir.tpl'); |
Modified src/www/admin/membres/fiche.php from [6b13f39dfb] to [5ba9e3f633].
︙ | ︙ | |||
21 22 23 24 25 26 27 | { throw new UserException("Ce membre n'existe pas."); } $champs = $config->get('champs_membres'); $tpl->assign('champs', $champs->getAll()); | | | | | 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | { throw new UserException("Ce membre n'existe pas."); } $champs = $config->get('champs_membres'); $tpl->assign('champs', $champs->getAll()); $cats = new Membres\Categories; $categorie = $cats->get($membre['id_categorie']); $tpl->assign('categorie', $categorie); $cotisations = new Membres\Cotisations; if (!empty($categorie['id_cotisation_obligatoire'])) { $tpl->assign('cotisation', $cotisations->isMemberUpToDate($membre['id'], $categorie['id_cotisation_obligatoire'])); } else { $tpl->assign('cotisation', false); } $tpl->assign('nb_activites', $cotisations->countForMember($membre['id'])); if ($user['droits']['compta'] >= Membres::DROIT_ACCES) { $journal = new Compta\Journal; $tpl->assign('nb_operations', $journal->countForMember($membre['id'])); } $tpl->assign('membre', $membre); $tpl->display('admin/membres/fiche.tpl'); ?> |
Modified src/www/admin/membres/import.php from [47237a7905] to [2c608782f6].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $import = new Membres\Import; if (isset($_GET['export'])) { header('Content-type: application/csv'); header('Content-Disposition: attachment; filename="Export membres - ' . $config->get('nom_asso') . ' - ' . date('Y-m-d') . '.csv"'); $import->toCSV(); exit; } $error = false; $champs = $config->get('champs_membres')->getAll(); $champs['date_inscription'] = ['title' => 'Date inscription', 'type' => 'date']; if (Utils::post('import')) { // FIXME if (false && !Utils::CSRF_check('membres_import')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif (empty($_FILES['upload']['tmp_name'])) { $error = 'Aucun fichier fourni.'; } else { try { if (Utils::post('type') == 'galette') { $import->fromGalette($_FILES['upload']['tmp_name'], Utils::post('galette_translate')); } elseif (Utils::post('type') == 'garradin') { $import->fromCSV($_FILES['upload']['tmp_name']); } else { throw new UserException('Import inconnu.'); } Utils::redirect('/admin/membres/import.php?ok'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('ok', isset($_GET['ok']) ? true : false); $tpl->assign('garradin_champs', $champs); $tpl->assign('galette_champs', $import->galette_fields); $tpl->assign('translate', Utils::post('galette_translate')); $tpl->display('admin/membres/import.tpl'); ?> |
Modified src/www/admin/membres/index.php from [84885c8c8a] to [95b714aa01].
1 2 3 4 5 6 7 8 9 10 11 12 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ACCES) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } // Recherche de membre (pour ceux qui n'ont qu'un accès à la liste des membres) | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ACCES) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } // Recherche de membre (pour ceux qui n'ont qu'un accès à la liste des membres) if (Utils::get('r')) { $recherche = trim(Utils::get('r')); $result = $membres->search($config->get('champ_identite'), $recherche); $tpl->assign('liste', $result); $tpl->assign('recherche', $recherche); } else { $cats = new Membres\Categories; $champs = $config->get('champs_membres'); $membres_cats = $cats->listSimple(); $membres_cats_cachees = $cats->listHidden(); $cat_id = (int) Utils::get('cat') ?: 0; $page = (int) Utils::get('p') ?: 1; if ($cat_id) { if ($user['droits']['membres'] < Membres::DROIT_ECRITURE && array_key_exists($cat_id, $membres_cats_cachees)) { $cat_id = 0; } } if (!$cat_id) { $cat_id = array_diff(array_keys($membres_cats), array_keys($membres_cats_cachees)); } $order = $champs->getFirst(); $desc = false; if (Utils::get('o')) $order = Utils::get('o'); if (isset($_GET['d'])) $desc = true; $tpl->assign('order', $order); $tpl->assign('desc', $desc); $fields = $champs->getListedFields(); $tpl->assign('champs', $fields); $tpl->assign('liste', $membres->listByCategory($cat_id, array_keys($fields), $page, $order, $desc)); $tpl->assign('total', $membres->countByCategory($cat_id)); $tpl->assign('pagination_url', Utils::getSelfUrl(true) . '?p=[ID]&o=' . $order . ($desc ? '&d' : '')); $tpl->assign('membres_cats', $membres_cats); $tpl->assign('membres_cats_cachees', $membres_cats_cachees); $tpl->assign('current_cat', $cat_id); $tpl->assign('page', $page); $tpl->assign('bypage', Membres::ITEMS_PER_PAGE); } $tpl->display('admin/membres/index.tpl'); ?> |
Modified src/www/admin/membres/message.php from [ed8a685029] to [520b167629].
︙ | ︙ | |||
27 28 29 30 31 32 33 | throw new UserException("Ce membre n'existe pas."); } $error = false; if (!empty($_POST['save'])) { | | | | | | | | | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | throw new UserException("Ce membre n'existe pas."); } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('send_message_'.$id)) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif (!Utils::post('sujet')) { $error = 'Le sujet ne peut rester vide.'; } elseif (!Utils::post('message')) { $error = 'Le message ne peut rester vide.'; } else { try { $membres->sendMessage($membre['email'], Utils::post('sujet'), Utils::post('message'), (bool) Utils::post('copie')); Utils::redirect('/admin/membres/?sent'); } catch (UserException $e) { $error = $e->getMessage(); } } } $cats = new Membres\Categories; $tpl->assign('categorie', $cats->get($membre['id_categorie'])); $tpl->assign('membre', $membre); $tpl->assign('error', $error); $tpl->display('admin/membres/message.tpl'); ?> |
Modified src/www/admin/membres/message_collectif.php from [5ce0d3d537] to [0c88c5bc92].
︙ | ︙ | |||
8 9 10 11 12 13 14 | throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $error = false; if (!empty($_POST['save'])) { | | | | | | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('send_message_collectif')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif (!Utils::post('sujet')) { $error = 'Le sujet ne peut rester vide.'; } elseif (!Utils::post('message')) { $error = 'Le message ne peut rester vide.'; } else { try { $membres->sendMessageToCategory(Utils::post('dest'), Utils::post('sujet'), Utils::post('message'), (bool) Utils::post('subscribed')); Utils::redirect('/admin/membres/?sent'); } catch (UserException $e) { $error = $e->getMessage(); } } } $cats = new Membres\Categories; $tpl->assign('cats_liste', $cats->listSimple()); $tpl->assign('cats_cachees', $cats->listHidden()); $tpl->assign('error', $error); $tpl->display('admin/membres/message_collectif.tpl'); ?> |
Modified src/www/admin/membres/modifier.php from [0a04bb4489] to [1621940ba9].
︙ | ︙ | |||
18 19 20 21 22 23 24 | $membre = $membres->get($id); if (!$membre) { throw new UserException("Ce membre n'existe pas."); } | | | | | | | | | | | 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | $membre = $membres->get($id); if (!$membre) { throw new UserException("Ce membre n'existe pas."); } $cats = new Membres\Categories; $champs = $config->get('champs_membres'); // Protection contre la modification des admins par des membres moins puissants $membre_cat = $cats->get($membre['id_categorie']); if (($membre_cat['droit_membres'] == Membres::DROIT_ADMIN) && ($user['droits']['membres'] < Membres::DROIT_ADMIN)) { throw new UserException("Seul un membre admin peut modifier un autre membre admin."); } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('edit_member_'.$id)) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif (Utils::post('passe') != Utils::post('repasse')) { $error = 'La vérification ne correspond pas au mot de passe.'; } else { try { $data = []; foreach ($champs->getAll() as $key=>$config) { $data[$key] = Utils::post($key); } if ($user['droits']['membres'] == Membres::DROIT_ADMIN) { $data['id_categorie'] = Utils::post('id_categorie'); $data['id'] = Utils::post('id'); } $membres->edit($id, $data); Utils::redirect('/admin/membres/fiche.php?id='.(int)$id); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('passphrase', Utils::suggestPassword()); $tpl->assign('champs', $champs->getAll()); $tpl->assign('membres_cats', $cats->listSimple()); $tpl->assign('current_cat', Utils::post('id_categorie') ?: $membre['id_categorie']); $tpl->assign('can_change_id', $user['droits']['membres'] == Membres::DROIT_ADMIN); $tpl->assign('membre', $membre); $tpl->display('admin/membres/modifier.tpl'); ?> |
Modified src/www/admin/membres/recherche.php from [a632ab936f] to [96a9bc1326].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ECRITURE) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ECRITURE) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $recherche = trim(Utils::get('r')); $champ = trim(Utils::get('c')); $champs = $config->get('champs_membres'); $auto = false; // On détermine magiquement quel champ on recherche if (!$champ) |
︙ | ︙ | |||
40 41 42 43 44 45 46 | if ($recherche != '') { $result = $membres->search($champ, $recherche); if (count($result) == 1 && $auto) { | | | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | if ($recherche != '') { $result = $membres->search($champ, $recherche); if (count($result) == 1 && $auto) { Utils::redirect('/admin/membres/fiche.php?id=' . (int)$result[0]['id']); } } $champs_liste = $champs->getList(); $champs_liste = array_merge( ['id' => ['title' => 'Numéro unique', 'type' => 'number']], |
︙ | ︙ |
Modified src/www/admin/membres/recherche_sql.php from [004d5f3755] to [acf1e4a17e].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $query = trim(Utils::get('query')); $tpl->assign('schema', $membres->schemaSQL()); $tpl->assign('query', $query); if ($query != '') { try { |
︙ | ︙ |
Modified src/www/admin/membres/supprimer.php from [ade09b789c] to [653b4fe0c8].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <?php namespace Garradin; require_once __DIR__ . '/../_inc.php'; if ($user['droits']['membres'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } $membre = $membres->get(Utils::get('id')); if (!$membre) { throw new UserException("Ce membre n'existe pas."); } $error = false; if (Utils::post('delete')) { if (!Utils::CSRF_check('delete_membre_'.$membre['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $membres->delete($membre['id']); Utils::redirect('/admin/membres/'); } catch (UserException $e) { $error = $e->getMessage(); } } } |
︙ | ︙ |
Modified src/www/admin/mes_cotisations.php from [5f8b1d8cdc] to [df647d0b00].
︙ | ︙ | |||
10 11 12 13 14 15 16 | throw new UserException("Ce membre n'existe pas."); } $error = false; $tpl->assign('membre', $membre); | | | < < | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | throw new UserException("Ce membre n'existe pas."); } $error = false; $tpl->assign('membre', $membre); $cats = new Membres\Categories; $categorie = $cats->get($membre['id_categorie']); $tpl->assign('categorie', $categorie); $cotisations = new Membres\Cotisations; if (!empty($categorie['id_cotisation_obligatoire'])) { $tpl->assign('cotisation', $cotisations->isMemberUpToDate($membre['id'], $categorie['id_cotisation_obligatoire'])); } else { $tpl->assign('cotisation', false); } $tpl->assign('nb_activites', $cotisations->countForMember($membre['id'])); $tpl->assign('cotisations', $cotisations->listForMember($membre['id'])); $tpl->assign('cotisations_membre', $cotisations->listSubscriptionsForMember($membre['id'])); $tpl->display('admin/mes_cotisations.tpl'); |
Modified src/www/admin/mes_infos.php from [865fb1c656] to [a68d27a87a].
︙ | ︙ | |||
10 11 12 13 14 15 16 | throw new UserException("Ce membre n'existe pas."); } $error = false; if (!empty($_POST['save'])) { | | | | | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | throw new UserException("Ce membre n'existe pas."); } $error = false; if (!empty($_POST['save'])) { if (!Utils::CSRF_check('edit_me')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif (Utils::post('passe') != Utils::post('repasse')) { $error = 'La vérification ne correspond pas au mot de passe.'; } else { try { $data = []; foreach ($config->get('champs_membres')->getAll() as $key=>$c) { if (!empty($c['editable'])) { $data[$key] = Utils::post($key); } } $membres->edit($membre['id'], $data, false); $membres->updateSessionData(); Utils::redirect('/admin/'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->assign('passphrase', Utils::suggestPassword()); $tpl->assign('champs', $config->get('champs_membres')->getAll()); $tpl->assign('membre', $membre); $tpl->display('admin/mes_infos.tpl'); ?> |
Modified src/www/admin/password.php from [ccbf9da2e8] to [08fa661eb0].
1 2 3 4 5 6 7 8 9 | <?php namespace Garradin; const LOGIN_PROCESS = true; require_once __DIR__ . '/_inc.php'; $error = false; | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?php namespace Garradin; const LOGIN_PROCESS = true; require_once __DIR__ . '/_inc.php'; $error = false; if (trim(Utils::get('c'))) { if ($membres->recoverPasswordConfirm(Utils::get('c'))) { Utils::redirect('/admin/password.php?new_sent'); } $error = 'EXPIRED'; } elseif (!empty($_POST['recover'])) { if (!Utils::CSRF_check('recoverPassword')) { $error = 'OTHER'; } else { if (trim(Utils::post('id')) && $membres->recoverPasswordCheck(Utils::post('id'))) { Utils::redirect('/admin/password.php?sent'); } $error = 'MAIL'; } } if (!$error && isset($_GET['sent'])) |
︙ | ︙ |
Modified src/www/admin/plugin.php from [4d093dccc9] to [a60a417923].
1 2 3 4 5 6 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $page = Utils::get('_u') ?: 'index.php'; $plugin = new Plugin(Utils::get('_p')); define('Garradin\PLUGIN_ROOT', $plugin->path()); define('Garradin\PLUGIN_URL', WWW_URL . 'admin/plugin/' . $plugin->id() . '/'); define('Garradin\PLUGIN_QSP', '?'); $tpl->assign('plugin', $plugin->getInfos()); $tpl->assign('plugin_root', PLUGIN_ROOT); $plugin->call('admin/' . $page); |
Modified src/www/admin/upgrade.php from [bd334ced26] to [99d1408582].
︙ | ︙ | |||
48 49 50 51 52 53 54 | $config->set('monnaie', '€'); $config->set('pays', 'FR'); $config->save(); $db->exec(file_get_contents(ROOT . '/include/data/0.4.0.sql')); // Mise en place compta | | | | | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | $config->set('monnaie', '€'); $config->set('pays', 'FR'); $config->save(); $db->exec(file_get_contents(ROOT . '/include/data/0.4.0.sql')); // Mise en place compta $comptes = new Compta\Comptes; $comptes->importPlan(); $comptes = new Compta\Categories; $comptes->importCategories(); } if (version_compare($v, '0.4.3', '<')) { $db->exec(file_get_contents(ROOT . '/include/data/0.4.3.sql')); } if (version_compare($v, '0.4.5', '<')) { // Mise à jour plan comptable $comptes = new Compta\Comptes; $comptes->importPlan(); // Création page wiki connexion $wiki = new Wiki; $page = Wiki::transformTitleToURI('Bienvenue'); $config->set('accueil_connexion', $page); |
︙ | ︙ | |||
99 100 101 102 103 104 105 | $champs_modifiables_membre = $db->querySingle('SELECT valeur FROM config WHERE cle = "champs_modifiables_membre";'); $champs_modifiables_membre = !empty($champs_modifiables_membre) ? explode(',', $champs_modifiables_membre) : []; $champs_obligatoires = $db->querySingle('SELECT valeur FROM config WHERE cle = "champs_obligatoires";'); $champs_obligatoires = !empty($champs_obligatoires) ? explode(',', $champs_obligatoires) : []; // Import des champs membres par défaut | | | 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | $champs_modifiables_membre = $db->querySingle('SELECT valeur FROM config WHERE cle = "champs_modifiables_membre";'); $champs_modifiables_membre = !empty($champs_modifiables_membre) ? explode(',', $champs_modifiables_membre) : []; $champs_obligatoires = $db->querySingle('SELECT valeur FROM config WHERE cle = "champs_obligatoires";'); $champs_obligatoires = !empty($champs_obligatoires) ? explode(',', $champs_obligatoires) : []; // Import des champs membres par défaut $champs = Membres\Champs::importInstall(); // Application de l'ancienne config aux nouveaux champs membres foreach ($champs_obligatoires as $name) { if ($champs->get($name) !== null) $champs->set($name, 'mandatory', true); } |
︙ | ︙ | |||
125 126 127 128 129 130 131 | // Suppression de l'ancienne config $db->exec('DELETE FROM config WHERE cle IN ("champs_obligatoires", "champs_modifiables_membre");'); } if (version_compare($v, '0.6.0-rc1', '<')) { | | | 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | // Suppression de l'ancienne config $db->exec('DELETE FROM config WHERE cle IN ("champs_obligatoires", "champs_modifiables_membre");'); } if (version_compare($v, '0.6.0-rc1', '<')) { $categories = new Membres\Categories; $list = $categories->listComplete(); $db->exec('PRAGMA foreign_keys = OFF; BEGIN;'); // Mise à jour base de données $db->exec(file_get_contents(ROOT . '/include/data/0.6.0.sql')); |
︙ | ︙ | |||
196 197 198 199 200 201 202 | // Possibilité de choisir l'identité et l'identifiant d'un membre $config->set('champ_identite', 'nom'); $config->set('champ_identifiant', 'email'); $config->save(); } | | | 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 | // Possibilité de choisir l'identité et l'identifiant d'un membre $config->set('champ_identite', 'nom'); $config->set('champ_identifiant', 'email'); $config->save(); } Utils::clearCaches(); $config->setVersion(garradin_version()); echo '<h2>Mise à jour terminée.</h2> <p><a href="'.WWW_URL.'admin/">Retour</a></p>'; if ($redirect) |
︙ | ︙ |
Modified src/www/admin/wiki/_chercher_parent.php from [effaf27acb] to [0f4a26d1bc].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; if ((trim(Utils::get('parent')) == '') || !is_numeric(Utils::get('parent'))) { throw new UserException('Numéro de page parent invalide.'); } $parent = (int) Utils::get('parent'); $tpl->assign('parent', $parent); $tpl->assign('list', $wiki->listBackParentTree($parent)); function tpl_display_tree($params) { if (isset($params['tree'])) $tree = $params['tree']; else $tree = $params; $out = '<ul>'; foreach ($tree as $node) { $out .= '<li'.(Utils::get('parent') == $node['id'] ? ' class="current"' : '').'><h3><a href="?parent='.(int)$node['id'].'">'.htmlspecialchars($node['titre'], ENT_QUOTES, 'UTF-8', false).'</a></h3>'; if (!empty($node['children'])) { $out .= tpl_display_tree($node['children']); } $out .= '</li>'; |
︙ | ︙ |
Modified src/www/admin/wiki/chercher.php from [d240a1c23d] to [c5890b7ab3].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $q = trim(Utils::get('q')); $tpl->assign('recherche', $q); if (Utils::get('q')) { $r = $wiki->search($q); $tpl->assign('resultats', $r); $tpl->assign('nb_resultats', count($r)); } function tpl_clean_snippet($str) |
︙ | ︙ |
Modified src/www/admin/wiki/creer.php from [039b7f7a3f] to [8acb6b5d39].
1 2 3 4 5 6 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $error = false; | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $error = false; $parent = (int) Utils::get('parent') ?: 0; if (!empty($_POST['create'])) { if (!Utils::CSRF_check('wiki_create')) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { try { $id = $wiki->create([ 'titre' => Utils::post('titre'), 'parent' => $parent, ]); Utils::redirect('/admin/wiki/editer.php?id='.$id); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('error', $error); $tpl->display('admin/wiki/creer.tpl'); ?> |
Modified src/www/admin/wiki/editer.php from [b911107db9] to [af7fadd2c7].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; if ($user['droits']['wiki'] < Membres::DROIT_ECRITURE) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | | | | | | | | | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; if ($user['droits']['wiki'] < Membres::DROIT_ECRITURE) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } if (!Utils::get('id') || !is_numeric(Utils::get('id'))) { throw new UserException('Numéro de page invalide.'); } $page = $wiki->getById(Utils::get('id')); $error = false; if (!$page) { throw new UserException('Page introuvable.'); } if (!empty($page['contenu'])) { $page['chiffrement'] = $page['contenu']['chiffrement']; $page['contenu'] = $page['contenu']['contenu']; } if (Utils::post('date')) { $date = strtotime(Utils::post('date') . ' ' . Utils::post('date_h') . ':' . Utils::post('date_min')); } else { $date = false; } if (!empty($_POST['save'])) { if (!Utils::CSRF_check('wiki_edit_'.$page['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } elseif ($page['date_modification'] > (int) Utils::post('debut_edition')) { $error = 'La page a été modifiée par quelqu\'un d\'autre depuis que vous avez commencé l\'édition.'; } else { try { $wiki->edit($page['id'], [ 'titre' => Utils::post('titre'), 'uri' => Utils::post('uri'), 'parent' => Utils::post('parent'), 'droit_lecture' => Utils::post('droit_lecture'), 'droit_ecriture'=> Utils::post('droit_ecriture'), 'date_creation' => $date, ]); $wiki->editRevision($page['id'], (int) Utils::post('revision_edition'), [ 'contenu' => Utils::post('contenu'), 'modification' => Utils::post('modification'), 'id_auteur' => $user['id'], 'chiffrement' => Utils::post('chiffrement'), ]); $page = $wiki->getById($page['id']); Utils::redirect('/admin/wiki/?'.$page['uri']); } catch (UserException $e) { $error = $e->getMessage(); } } } $parent = (int) Utils::post('parent') ?: (int) $page['parent']; $tpl->assign('parent', $parent ? $wiki->getTitle($parent) : 0); $tpl->assign('error', $error); $tpl->assign('page', $page); $tpl->assign('time', time()); $tpl->assign('date', $date ? $date : $page['date_creation']); $tpl->assign('custom_js', ['wikitoolbar.js', 'wiki-encryption.js']); $tpl->display('admin/wiki/editer.tpl'); ?> |
Modified src/www/admin/wiki/historique.php from [ba4e72832c] to [af9f7b27c0].
1 2 3 4 5 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; if (!trim(Utils::get('id'))) { throw new UserException("Page inconnue."); } $page = $wiki->getByID(Utils::get('id')); if (!$page) { throw new UserException("Cette page n'existe pas."); } if (!$wiki->canReadPage($page['droit_lecture'])) { throw new UserException("Vous n'avez pas le droit de voir cette page."); } if (Utils::get('diff')) { $revs = explode('.', Utils::get('diff')); if (count($revs) != 2) { throw new UserException("Erreur de paramètre."); } $rev1 = $wiki->getRevision($page['id'], (int)$revs[0]); |
︙ | ︙ |
Modified src/www/admin/wiki/recent.php from [a9b96a50df] to [4437267093].
1 2 3 4 5 6 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; $page = (int) Utils::get('p') ?: 1; $tpl->assign('page', $page); $tpl->assign('bypage', Wiki::ITEMS_PER_PAGE); $tpl->assign('total', $wiki->countRecentModifications()); $tpl->assign('list', $wiki->listRecentModifications($page)); $tpl->display('admin/wiki/recent.tpl'); ?> |
Modified src/www/admin/wiki/supprimer.php from [8a4e744163] to [e3a0d118d5].
1 2 3 4 5 6 7 8 9 10 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; if ($user['droits']['wiki'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } | | | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <?php namespace Garradin; require_once __DIR__ . '/_inc.php'; if ($user['droits']['wiki'] < Membres::DROIT_ADMIN) { throw new UserException("Vous n'avez pas le droit d'accéder à cette page."); } if (!trim(Utils::get('id'))) { throw new UserException("Page inconnue."); } $page = $wiki->getByID(Utils::get('id')); if (!$page) { throw new UserException("Cette page n'existe pas."); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('delete_wiki_'.$page['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { if ($wiki->delete($page['id'])) { Utils::redirect('/admin/wiki/'); } else { $error = "D'autres pages utilisent cette page comme rubrique parente."; } } } |
︙ | ︙ |
Modified tools/setup_dependencies.sh from [0f8ec529cf] to [1023c19b73].
︙ | ︙ | |||
14 15 16 17 18 19 20 | SRCPATH="$SCRIPTPATH/../src/include/libs" # Template Lite svn ${KEYWORD} https://svn.kd2.org/svn/misc/libs/template_lite/ "$SRCPATH/template_lite/" # Liste des pays svn ${KEYWORD} https://svn.kd2.org/svn/misc/libs/i18n/countries/ "$SRCPATH/countries/" | < < < < < < < < < < < < < < < | 14 15 16 17 18 19 20 | SRCPATH="$SCRIPTPATH/../src/include/libs" # Template Lite svn ${KEYWORD} https://svn.kd2.org/svn/misc/libs/template_lite/ "$SRCPATH/template_lite/" # Liste des pays svn ${KEYWORD} https://svn.kd2.org/svn/misc/libs/i18n/countries/ "$SRCPATH/countries/" |