/** * Search in whole database * <p>We do multiple queries.</p> * @param $query string String to search * @return array Results sorted by type */ public function rechercher($query) { $like = $this->_bdd->echapper("%{$query}%"); $results = []; // "cotisations" for companies $select = <<<SQL SELECT pers.nom, pers.prenom, pers.email, pers.raison_sociale, cotis.* FROM afup_cotisations AS cotis LEFT JOIN afup_personnes_morales AS pers ON pers.id = cotis.id_personne WHERE cotis.type_personne = 1 AND ( cotis.informations_reglement LIKE {$like} OR cotis.numero_facture LIKE {$like} OR cotis.commentaires LIKE {$like} OR pers.email LIKE {$like} OR pers.nom LIKE {$like} OR pers.prenom LIKE {$like} ) ; SQL; if ($cotisations = $this->_bdd->obtenirTous($select, MYSQLI_ASSOC)) { $results['cotisations_personnes_morales'] = $cotisations; } // "cotisations" for people $select = <<<SQL SELECT pers.nom, pers.prenom, pers.email, pers.login, cotis.* FROM afup_cotisations AS cotis LEFT JOIN afup_personnes_physiques AS pers ON pers.id = cotis.id_personne WHERE cotis.type_personne = 0 AND ( cotis.informations_reglement LIKE {$like} OR cotis.numero_facture LIKE {$like} OR cotis.commentaires LIKE {$like} OR pers.login LIKE {$like} OR pers.email LIKE {$like} OR pers.nom LIKE {$like} OR pers.prenom LIKE {$like} ) ; SQL; if ($cotisations = $this->_bdd->obtenirTous($select, MYSQLI_ASSOC)) { $results['cotisations_personnes_physiques'] = $cotisations; } // Forum registrations $select = <<<SQL SELECT insc.*, forum.titre AS forum_titre FROM afup_inscription_forum AS insc LEFT JOIN afup_forum AS forum ON insc.id_forum = forum.id WHERE insc.reference LIKE {$like} OR insc.informations_reglement LIKE {$like} OR insc.commentaires LIKE {$like} OR insc.nom LIKE {$like} OR insc.prenom LIKE {$like} OR insc.email LIKE {$like} ; SQL; if ($registrations = $this->_bdd->obtenirTous($select, MYSQLI_ASSOC)) { $results['forum_inscriptions'] = $registrations; } // Forum invoicing $select = <<<SQL SELECT inv.*, forum.titre AS forum_titre FROM afup_facturation_forum AS inv LEFT JOIN afup_forum AS forum ON inv.id_forum = forum.id WHERE inv.reference LIKE {$like} OR inv.informations_reglement LIKE {$like} OR inv.email LIKE {$like} OR inv.societe LIKE {$like} OR inv.nom LIKE {$like} OR inv.prenom LIKE {$like} OR inv.autorisation LIKE {$like} OR inv.transaction LIKE {$like} ; SQL; if ($invoices = $this->_bdd->obtenirTous($select, MYSQLI_ASSOC)) { $results['forum_factures'] = $invoices; } // Global invoicing $select = <<<SQL SELECT inv.*, SUM(det.pu * det.quantite) AS total, GROUP_CONCAT(det.ref SEPARATOR ', ') AS refs, GROUP_CONCAT(det.designation SEPARATOR ', ') AS details FROM afup_compta_facture AS inv LEFT JOIN afup_compta_facture_details AS det ON det.idafup_compta_facture = inv.id AND det.quantite > 0 WHERE inv.numero_devis LIKE {$like} OR inv.numero_facture LIKE {$like} OR inv.societe LIKE {$like} OR inv.service LIKE {$like} OR inv.email LIKE {$like} OR inv.ref_clt1 LIKE {$like} OR inv.ref_clt2 LIKE {$like} OR inv.ref_clt3 LIKE {$like} OR inv.observation LIKE {$like} GROUP BY inv.id ; SQL; if ($invoices = $this->_bdd->obtenirTous($select, MYSQLI_ASSOC)) { $results['factures'] = $invoices; } return $results; }
$url = $_SERVER['REQUEST_URI']; if (strrpos($url, '?') !== false) { $position = strrpos($url, '?'); $url = substr($url, 0, $position); } $position = strrpos($url, '/'); $url = substr($_SERVER['REQUEST_URI'], 0, $position); $parties = explode('/', $url); $sous_site = array_pop($parties); if (empty($sous_site) and strpos($_SERVER['HTTP_HOST'], "planete") !== false) { $sous_site = "planete"; $serveur = "http://afup.org"; } // Initialisation de Smarty require_once dirname(__FILE__) . '/../../dependencies/smarty/Smarty.class.php'; $smarty = new Smarty(); $smarty->template_dir = array(dirname(__FILE__) . '/../../htdocs/templates/' . $sous_site . '/', dirname(__FILE__) . '/../../htdocs/templates/commun/'); $smarty->compile_dir = dirname(__FILE__) . '/../../htdocs/cache/templates'; $smarty->compile_id = $sous_site; $smarty->use_sub_dirs = true; $smarty->check_compile = true; $smarty->php_handling = SMARTY_PHP_ALLOW; $smarty->assign('url_base', 'http://' . $_SERVER['HTTP_HOST'] . '/'); $smarty->assign('chemin_template', $serveur . $conf->obtenir('web|path') . 'templates/' . $sous_site . '/'); $smarty->assign('chemin_javascript', $serveur . $conf->obtenir('web|path') . 'javascript/'); // Initialisation de la couche d'abstraction de la base de données require_once dirname(__FILE__) . '/../../sources/Afup/AFUP_Base_De_Donnees.php'; $bdd = new AFUP_Base_De_Donnees($conf->obtenir('bdd|hote'), $conf->obtenir('bdd|base'), $conf->obtenir('bdd|utilisateur'), $conf->obtenir('bdd|mot_de_passe')); $bdd->executer("SET NAMES 'utf8'"); // Inclusion de la classe permettant l envoi de mail require_once dirname(__FILE__) . '/../../sources/Afup/AFUP_Mailing.php';
<?php require_once __DIR__ . '/../sources/Afup/Bootstrap/Cli.php'; echo "Synchronisation Redmine " . date('Y-m-d H:i:s') . PHP_EOL; $redmine = new AFUP_Base_De_Donnees($conf->obtenir('redmine|hote'), $conf->obtenir('redmine|base'), $conf->obtenir('redmine|utilisateur'), $conf->obtenir('redmine|mot_de_passe')); echo " - recuperation membres Afup...\n"; $membresAfup = $bdd->obtenirTous('SELECT id as multipass_remote_uid, login, prenom as firstname, nom as lastname, email as mail, etat as status FROM afup_personnes_physiques WHERE etat = 1'); echo " - recuperation comptes Redmine...\n"; $tmpMembresRedmine = $redmine->obtenirTous('SELECT multipass_remote_uid, login, firstname, lastname, mail, status FROM users WHERE multipass_remote_uid is not null and multipass_remote_uid > 0'); foreach ($tmpMembresRedmine as $mR) { $membresRedmine[$mR['multipass_remote_uid']] = $mR; } foreach ($membresAfup as $mA) { $id = $mA['multipass_remote_uid']; if (array_key_exists($id, $membresRedmine)) { $mR = $membresRedmine[$id]; // On teste les différences $diff = array_diff($mA, $mR); if (count($diff)) { $data = array(); foreach ($diff as $k => $v) { $data[] = "{$k} = '" . mysqli_real_escape_string($bdd->getDbLink(), $v) . "'"; } // On modifie l'utilisateur echo " - modification: {$id}\n"; $redmine->executer("UPDATE users SET " . implode(', ', $data) . " WHERE multipass_remote_uid = '" . $id . "'"); } } else { // On crée l'utilisateur echo " - creation: {$id}\n"; $redmine->executer("INSERT INTO users VALUES(null,\n '" . mysql_real_escape_string($mA['login']) . "',\n sha1(concat('" . mysql_real_escape_string($mA['mail']) . "', now())),\n '" . mysql_real_escape_string($mA['firstname']) . "',\n '" . mysql_real_escape_string($mA['lastname']) . "',\n '" . mysql_real_escape_string($mA['mail']) . "',\n 0, 0, 1, null,\n 'fr', null, now(), now(),\n 'User', null, {$id})");
function __construct() { $conf = $GLOBALS['AFUP_CONF']; parent::AFUP_Base_De_Donnees($conf->obtenir('bdd|hote'), $conf->obtenir('bdd|base'), $conf->obtenir('bdd|utilisateur'), $conf->obtenir('bdd|mot_de_passe')); }