public function executeCreateOkFilter(sfWebRequest $request) { $this->forward404Unless($request->isMethod('post')); // On récupère les informations dont on a besoin dans le formulaire $params = array('mode' => 'create', 'filter_id' => $request->getPostParameter('id'), 'filter_name' => $request->getPostParameter('form[name]'), 'filter_description' => $request->getPostParameter('form[description]'), 'private_blacklist_content' => $request->getPostParameter('form[PBlist]'), 'globale_blacklist_content' => $request->getPostParameter('form[GBlist]'), 'private_whitelist_content' => $request->getPostParameter('form[PWlist]'), 'globale_whitelist_content' => $request->getPostParameter('form[GWlist]')); // Si le champ 'name' est vide, on arrête le traitement if ($params['filter_name'] == null) { //return $params; } // création du filtre s'il n'existe pas if ($params['filter_id'] == null) { $this->menu = $this->getMenu('createFilter'); // On créé un nouveau filtre $filter = new Filter(); $filter->name = $params['filter_name']; $filter->description = $params['filter_description']; $filter->save(); // On récupère son ID $params['filter_id'] = $filter->id; // Lien avec liste globales white $lfwg = new ListsFilter(); $lfwg->filter_id = $params['filter_id']; $lfwg->list_id = 1; $lfwg->ordre = 0; $lfwg->save(); // Lien avec liste global black $lfbg = new ListsFilter(); $lfbg->filter_id = $params['filter_id']; $lfbg->list_id = 2; $lfbg->ordre = 1; $lfbg->save(); // Création liste SI White du filtre $lists = new Lists(); $lists->name = "PW" . $params['filter_id']; $lists->type = "W"; $lists->origin = "SI"; $lists->static = 0; $lists->save(); $lfwp = new ListsFilter(); $lfwp->filter_id = $params['filter_id']; $lfwp->list_id = $lists->id; $lfwp->ordre = 2; $lfwp->save(); // Création liste SI Black du filtre $lists = new Lists(); $lists->name = "PB" . $params['filter_id']; $lists->type = "B"; $lists->origin = "SI"; $lists->static = 0; $lists->save(); $lfbp = new ListsFilter(); $lfbp->filter_id = $params['filter_id']; $lfbp->list_id = $lists->id; $lfbp->ordre = 3; $lfbp->save(); } else { $this->menu = $this->getMenu('index'); $sql = "UPDATE filter SET name = '{$params['filter_name']}', description = '{$params['filter_description']}' WHERE id = '{$params['filter_id']}';"; $dq = new Doctrine_Query(); $conn = $dq->getConnection(); $conn->execute($sql); } // On remet à jour les listes SI $private_blacklist_content_details = explode("\n", $params['private_blacklist_content']); $globale_blacklist_content_details = explode("\n", $params['globale_blacklist_content']); $private_whitelist_content_details = explode("\n", $params['private_whitelist_content']); $globale_whitelist_content_details = explode("\n", $params['globale_whitelist_content']); // Mise à jour White liste Globale $listGlobale_whitelist = Doctrine_Query::create()->delete()->from('ListsDetail')->where('lists_id = ?', 1)->execute(); for ($i = 0; $i < count($globale_whitelist_content_details); $i++) { if (trim($globale_whitelist_content_details[$i]) != "") { $insert = new ListsDetail(); $insert->domain = trim($globale_whitelist_content_details[$i]); $insert->lists_id = 1; $insert->save(); } } // Mise à jour Black liste Globale $listGlobale_blacklist = Doctrine_Query::create()->delete()->from('ListsDetail')->where('lists_id = ?', 2)->execute(); for ($i = 0; $i < count($globale_blacklist_content_details); $i++) { if (trim($globale_blacklist_content_details[$i]) != "") { $insert = new ListsDetail(); $insert->domain = trim($globale_blacklist_content_details[$i]); $insert->lists_id = 2; $insert->save(); } } // Mise à jour White liste Locale // Recherche de l'id de la liste $lists_query = Doctrine_Query::create()->select('id')->from('Lists')->where('name = ?', 'PW' . $params['filter_id']); $lists_res = $lists_query->fetchOne(); $id_PW = $lists_res['id']; // Suppression des détails $listLocale_whitelist = Doctrine_Query::create()->delete()->from('ListsDetail')->where('lists_id = ?', $id_PW)->execute(); for ($i = 0; $i < count($private_whitelist_content_details); $i++) { if (trim($private_whitelist_content_details[$i]) != "") { $insert = new ListsDetail(); $insert->domain = trim($private_whitelist_content_details[$i]); $insert->lists_id = $id_PW; $insert->save(); } } // Mise à jour Black liste Locale // Recherche de l'id de la liste $lists_query = Doctrine_Query::create()->select('id')->from('Lists')->where('name = ?', 'PB' . $params['filter_id']); $lists_res = $lists_query->fetchOne(); $id_PB = $lists_res['id']; // Suppression des détails $listLocale_blacklist = Doctrine_Query::create()->delete()->from('ListsDetail')->where('lists_id = ?', $id_PB)->execute(); for ($i = 0; $i < count($private_blacklist_content_details); $i++) { if (trim($private_blacklist_content_details[$i]) != "") { $insert = new ListsDetail(); $insert->domain = trim($private_blacklist_content_details[$i]); $insert->lists_id = $id_PB; $insert->save(); } } // Traitement des listes externes (Toulouse) // Ajout des liens $lists_query = Doctrine_Query::create()->select('id')->from('Lists')->where('origin != ?', 'SI'); $lists_res = $lists_query->fetchArray(); $dq = new Doctrine_Query(); $conn = $dq->getConnection(); foreach ($lists_res as $list) { // Suppression de l'ancien lien s'il existe $sql = " delete from lists_filter"; $sql .= " where list_id = {$list['id']}"; $sql .= " and filter_id = {$params['filter_id']}"; $conn->execute($sql); // Ajout du lien s'il est coché if ($request->getPostParameter('chBox_' . $list['id']) != null) { $insert = new ListsFilter(); $insert->list_id = $list['id']; $insert->filter_id = $params['filter_id']; $insert->ordre = 4; $insert->save(); } } }
public function executeCreateOkFilter(sfWebRequest $request) { $this->menu = $this->getMenu('index'); $this->forward404Unless($request->isMethod('post')); // On récupère les informations dont on a besoin dans le formulaire $params = array('mode' => 'create', 'filter_id' => $request->getPostParameter('id'), 'filter_name' => $request->getPostParameter('form[name]'), 'filter_description' => $request->getPostParameter('form[description]'), 'private_blacklist_content' => $request->getPostParameter('form[PBlist]'), 'globale_blacklist_content' => $request->getPostParameter('form[GBlist]'), 'private_whitelist_content' => $request->getPostParameter('form[PWlist]'), 'globale_whitelist_content' => $request->getPostParameter('form[GWlist]')); // Si le champ 'name' est vide, on arrête le traitement if ($params['filter_name'] == null) { //return $params; } if ($params['filter_id'] == null) { // On créé un nouveau filtre $filter = new Filter(); $filter->name = $params['filter_name']; $filter->description = $params['filter_description']; $filter->save(); // On récupère son ID $params['filter_id'] = $filter->id; } else { $params['mode'] = 'update'; $sql = <<<SQL \t\t\t\tSELECT ld.id, ld.lists_id \t\t\t\tFROM lists_detail ld \t\t\t\t\tLEFT JOIN lists li ON ld.lists_id = li.id \t\t\t\t\tLEFT JOIN lists_filter lf ON li.id = lf.list_id \t\t\t\tWHERE lf.filter_id = '{$params['filter_id']}' \t\t\t\t\tAND li.origin = 'SI' \t\t\t\tORDER BY ld.lists_id SQL; $dq = new Doctrine_Query(); $conn = $dq->getConnection(); $lists = $conn->fetchAll($sql); foreach ($lists as $list) { $sql = <<<SQL \t\t\t\t\tDELETE FROM lists_detail WHERE id = '{$list['id']}'; SQL; $dq = new Doctrine_Query(); $conn = $dq->getConnection(); $conn->execute($sql); if ($list['lists_id'] != $ancVal) { $ancVal = $list['lists_id']; $sql = <<<SQL \t\t\t\t\t\tDELETE FROM lists WHERE id = '{$ancVal}'; SQL; $dq = new Doctrine_Query(); $conn = $dq->getConnection(); $conn->execute($sql); } } $sql = "UPDATE filter SET name = '{$params['filter_name']}', description = '{$params['filter_description']}' WHERE id = '{$params['filter_id']}';"; $dq = new Doctrine_Query(); $conn = $dq->getConnection(); $conn->execute($sql); $deleteAllListFilter = Doctrine_Query::create()->delete()->from('ListsFilter')->where('filter_id = ?', $params['filter_id'])->execute(); } // On remet à jour les listes globales $private_blacklist_content_details = explode("\n", $params['private_blacklist_content']); $globale_blacklist_content_details = explode("\n", $params['globale_blacklist_content']); $private_whitelist_content_details = explode("\n", $params['private_whitelist_content']); $globale_whitelist_content_details = explode("\n", $params['globale_whitelist_content']); $listGlobale_whitelist = Doctrine_Query::create()->delete()->from('ListsDetail')->where('lists_id = ?', 0)->execute(); for ($i = 0; $i < count($globale_whitelist_content_details); $i++) { if ($globale_whitelist_content_details[$i] != null) { $insert = new ListsDetail(); $insert->domain = $globale_whitelist_content_details[$i]; $insert->lists_id = 0; $insert->save(); } } $listGlobale_blacklist = Doctrine_Query::create()->delete()->from('ListsDetail')->where('lists_id = ?', 1)->execute(); for ($i = 0; $i < count($globale_blacklist_content_details); $i++) { if ($globale_blacklist_content_details[$i] != null) { $insert = new ListsDetail(); $insert->domain = $globale_blacklist_content_details[$i]; $insert->lists_id = 1; $insert->save(); } } // On les attachent au filtre que l'on a créé $attach_global_whitelist = new ListsFilter(); $attach_global_whitelist->list_id = 0; $attach_global_whitelist->filter_id = $params['filter_id']; $attach_global_whitelist->ordre = 0; $attach_global_whitelist->save(); $attach_global_blacklist = new ListsFilter(); $attach_global_blacklist->list_id = 1; $attach_global_blacklist->filter_id = $params['filter_id']; $attach_global_blacklist->ordre = 1; $attach_global_blacklist->save(); // On créé une nouvelle liste (whitelist) if ($params['private_whitelist_content'] != null) { $whitelist = new Lists(); $whitelist->name = 'PW' . $params['filter_id']; $whitelist->type = 'W'; $whitelist->origin = 'SI'; $whitelist->static = '1'; $whitelist->save(); $id = $whitelist->id; for ($i = 0; $i < count($private_whitelist_content_details); $i++) { if ($private_whitelist_content_details[$i] != null) { $insert = new ListsDetail(); $insert->domain = $private_whitelist_content_details[$i]; $insert->lists_id = $whitelist->id; $insert->save(); } } $attach_whitelist = new ListsFilter(); $attach_whitelist->list_id = $whitelist->id; $attach_whitelist->filter_id = $params['filter_id']; $attach_whitelist->ordre = 2; $attach_whitelist->save(); } // On créé une nouvelle liste (blacklist) if ($params['private_blacklist_content'] != null) { $blacklist = new Lists(); $blacklist->name = 'PB' . $params['filter_id']; $blacklist->type = 'B'; $blacklist->origin = 'SI'; $blacklist->static = '1'; $blacklist->save(); $id = $blacklist->id; for ($i = 0; $i < count($private_blacklist_content_details); $i++) { if ($private_blacklist_content_details[$i] != null) { $insert = new ListsDetail(); $insert->domain = $private_blacklist_content_details[$i]; $insert->lists_id = $blacklist->id; $insert->save(); } } $attach_blacklist = new ListsFilter(); $attach_blacklist->list_id = $blacklist->id; $attach_blacklist->filter_id = $params['filter_id']; $attach_blacklist->ordre = 3; $attach_blacklist->save(); } // On récupère les listes provenant de Toulouse $lists_query = Doctrine_Query::create()->select('id')->from('Lists')->where('origin != ?', 'SI'); $lists_res = $lists_query->fetchArray(); foreach ($lists_res as $list) { if ($request->getPostParameter('chBox_' . $list['id']) != null) { $insert = new ListsFilter(); $insert->list_id = $list['id']; $insert->filter_id = $params['filter_id']; $insert->ordre = 4; $insert->save(); } } }