From 76cbe885cee40ea53bf1c52b70b44d792024f341 Mon Sep 17 00:00:00 2001 From: Florent Bruneau Date: Sun, 15 Feb 2009 23:01:46 +0100 Subject: [PATCH] Start porting userset to userfilter architecture. Signed-off-by: Florent Bruneau --- classes/user.php | 2 +- classes/userfilter.php | 4 +- include/userset.inc.php | 127 +++++---------------------------- modules/carnet.php | 19 ++--- templates/include/minifiche.tpl | 63 ++++++++-------- templates/include/plview.minifiche.tpl | 6 +- 6 files changed, 67 insertions(+), 154 deletions(-) diff --git a/classes/user.php b/classes/user.php index b013532..3d8063e 100644 --- a/classes/user.php +++ b/classes/user.php @@ -451,7 +451,7 @@ class User extends PlUser private $contacts = null; public function isContact(PlUser &$user) { - if ($this->contacts) { + if (is_null($this->contacts)) { $this->contacts = XDB::fetchAllAssoc('contact', 'SELECT * FROM contacts WHERE uid = {?}', diff --git a/classes/userfilter.php b/classes/userfilter.php index 0b172dd..ebe69f4 100644 --- a/classes/userfilter.php +++ b/classes/userfilter.php @@ -726,9 +726,9 @@ class UserFilter $limit = ''; if (!is_null($count)) { if (!is_null($offset)) { - $limit = XDB::format('LIMIT {?}, {?}', $offset, $count); + $limit = XDB::format('LIMIT {?}, {?}', (int)$offset, (int)$count); } else { - $limit = XDB::format('LIMIT {?}', $count); + $limit = XDB::format('LIMIT {?}', (int)$count); } } $cond = ''; diff --git a/include/userset.inc.php b/include/userset.inc.php index 01bbcfb..0eb0033 100644 --- a/include/userset.inc.php +++ b/include/userset.inc.php @@ -19,37 +19,24 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***************************************************************************/ -require_once('user.func.inc.php'); - -global $globals; - -@$globals->search->result_where_statement = ' - LEFT JOIN profile_education AS edu ON (u.user_id = edu.uid) - LEFT JOIN profile_education_enum AS ede ON (ede.id = edu.eduid) - LEFT JOIN profile_job AS j ON (j.id = 0 AND j.uid = u.user_id) - LEFT JOIN profile_job_enum AS je ON (je.id = j.jobid) - LEFT JOIN profile_job_sector_enum AS es ON (j.sectorid = es.id) - LEFT JOIN fonctions_def AS ef ON (j.functionid = ef.id) - LEFT JOIN geoloc_pays AS n1 ON (u.nationalite = n1.a2) - LEFT JOIN geoloc_pays AS n2 ON (u.nationalite2 = n2.a2) - LEFT JOIN geoloc_pays AS n3 ON (u.nationalite2 = n3.a2) - LEFT JOIN adresses AS adr ON (u.user_id = adr.uid AND FIND_IN_SET(\'active\',adr.statut)) - LEFT JOIN geoloc_pays AS gp ON (adr.country = gp.a2) - LEFT JOIN geoloc_region AS gr ON (adr.country = gr.a2 AND adr.region = gr.region) - LEFT JOIN emails AS em ON (em.uid = u.user_id AND em.flags = \'active\')'; - class UserSet extends PlSet { - public function __construct($joins = '', $where = '') + private $cond; + + public function __construct($cond = null) { - global $globals; - parent::__construct('auth_user_md5 AS u', - (!empty($GLOBALS['IS_XNET_SITE']) ? - 'INNER JOIN groupex.membres AS gxm ON (u.user_id = gxm.uid - AND gxm.asso_id = ' . $globals->asso('id') . ') ' : '') - . 'LEFT JOIN auth_user_quick AS q USING (user_id)' . $joins, - $where, - 'u.user_id'); + $this->cond = new UFC_And(); + if (!is_null($cond)) { + $this->cond->addChild($cond); + } + } + + public function &get($fields, $joins, $where, $groupby, $order, $limitcount = null, $limitfrom = null) + { + $uf = new UserFilter($this->cond); + $users = $uf->getUsers($limitcount, $limitfrom); + $this->count = $uf->getTotalCount(); + return $users; } } @@ -169,90 +156,14 @@ class MinificheView extends MultipageView parent::__construct($set, $data, $params); } - public function fields() - { - global $globals; - return "u.user_id AS id, u.*, d.promo, - CONCAT(a.alias, '@{$globals->mail->domain}') AS bestemail, - u.perms != 'pending' AS inscrit, - u.perms != 'pending' AS wasinscrit, - u.deces != 0 AS dcd, u.deces, u.matricule_ax, - FIND_IN_SET('femme', u.flags) AS sexe, - je.name AS entreprise, je.url AS job_web, es.name AS secteur, ef.fonction_fr AS fonction, - IF(n1.nat = '', n1.pays, n1.nat) AS nat1, n1.a2 AS iso3166_1, - IF(n2.nat = '', n2.pays, n2.nat) AS nat2, n2.a2 AS iso3166_2, - IF(n3.nat = '', n3.pays, n3.nat) AS nat3, n3.a2 AS iso3166_3, - IF(ede0.abbreviation = '', ede0.name, ede0.abbreviation) AS eduname0, ede0.url AS eduurl0, - IF(edd0.abbreviation = '', edd0.degree, edd0.abbreviation) AS edudegree0, - edu0.grad_year AS edugrad_year0, f0.field AS edufield0, edu0.program AS eduprogram0, - IF(ede1.abbreviation = '', ede1.name, ede1.abbreviation) AS eduname1, ede1.url AS eduurl1, - IF(edd1.abbreviation = '', edd1.degree, edd1.abbreviation) AS edudegree1, - edu1.grad_year AS edugrad_year1, f1.field AS edufield1, edu1.program AS eduprogram1, - IF(ede2.abbreviation = '', ede2.name, ede2.abbreviation) AS eduname2, ede2.url AS eduurl2, - IF(edd2.abbreviation = '', edd2.degree, edd2.abbreviation) AS edudegree2, - edu2.grad_year AS edugrad_year2, f2.field AS edufield2, edu2.program AS eduprogram2, - IF(ede3.abbreviation = '', ede3.name, ede3.abbreviation) AS eduname3, ede3.url AS eduurl3, - IF(edd3.abbreviation = '', edd3.degree, edd3.abbreviation) AS edudegree3, - edu3.grad_year AS edugrad_year3, f3.field AS edufield3, edu3.program AS eduprogram3, - adr.city, gp.a2, gp.pays AS countrytxt, gr.name AS region, - (COUNT(em.email) > 0 OR FIND_IN_SET('googleapps', u.mail_storage) > 0) AS actif, - d.directory_name, d.sort_name" . - (S::logged() ? ", c.contact AS contact" : ''); - } - - public function joins() + public function bounds() { - return "LEFT JOIN aliases AS a ON (u.user_id = a.id AND FIND_IN_SET('bestalias', a.flags)) - LEFT JOIN search_name AS n ON (u.user_id = n.uid) - LEFT JOIN profile_job AS j ON (j.uid = u.user_id".(S::logged() ? "" : " AND j.pub = 'public'").") - LEFT JOIN profile_job_enum AS je ON (je.id = j.jobid) - LEFT JOIN profile_job_sector_enum AS es ON (j.sectorid = es.id) - LEFT JOIN fonctions_def AS ef ON (j.functionid = ef.id) - LEFT JOIN geoloc_pays AS n1 ON (u.nationalite = n1.a2) - LEFT JOIN geoloc_pays AS n2 ON (u.nationalite2 = n2.a2) - LEFT JOIN geoloc_pays AS n3 ON (u.nationalite3 = n3.a2) - LEFT JOIN profile_education AS edu0 ON (u.user_id = edu0.uid AND edu0.id = 0) - LEFT JOIN profile_education_enum AS ede0 ON (ede0.id = edu0.eduid) - LEFT JOIN profile_education_degree_enum AS edd0 ON (edd0.id = edu0.degreeid) - LEFT JOIN profile_education_field_enum AS f0 ON (f0.id = edu0.fieldid) - LEFT JOIN profile_education AS edu1 ON (u.user_id = edu1.uid AND edu1.id = 1) - LEFT JOIN profile_education_enum AS ede1 ON (ede1.id = edu1.eduid) - LEFT JOIN profile_education_degree_enum AS edd1 ON (edd1.id = edu1.degreeid) - LEFT JOIN profile_education_field_enum AS f1 ON (f1.id = edu1.fieldid) - LEFT JOIN profile_education AS edu2 ON (u.user_id = edu2.uid AND edu2.id = 2) - LEFT JOIN profile_education_enum AS ede2 ON (ede2.id = edu2.eduid) - LEFT JOIN profile_education_degree_enum AS edd2 ON (edd2.id = edu2.degreeid) - LEFT JOIN profile_education_field_enum AS f2 ON (f2.id = edu2.fieldid) - LEFT JOIN profile_education AS edu3 ON (u.user_id = edu3.uid AND edu3.id = 3) - LEFT JOIN profile_education_enum AS ede3 ON (ede3.id = edu3.eduid) - LEFT JOIN profile_education_degree_enum AS edd3 ON (edd3.id = edu3.degreeid) - LEFT JOIN profile_education_field_enum AS f3 ON (f3.id = edu3.fieldid) - LEFT JOIN adresses AS adr ON (u.user_id = adr.uid - AND FIND_IN_SET('active', adr.statut)".(S::logged() ? "" : " - AND adr.pub = 'public'").") - LEFT JOIN geoloc_pays AS gp ON (adr.country = gp.a2) - LEFT JOIN geoloc_region AS gr ON (adr.country = gr.a2 AND adr.region = gr.region) - LEFT JOIN emails AS em ON (em.uid = u.user_id AND em.flags = 'active') - INNER JOIN profile_display AS d ON (d.pid = u.user_id)" . (S::logged() ? - "LEFT JOIN contacts AS c ON (c.contact = u.user_id AND c.uid = " . S::v('uid') . ")" - : ""); + return null; } - public function bounds() + public function fields() { - $order = Env::v('order', $this->defaultkey); - $show_bounds = 0; - if (($order == "name") || ($order == "-name")) { - $this->bound_field = "nom"; - $show_bounds = 1; - } elseif (($order == "promo") || ($order == "-promo")) { - $this->bound_field = "promo"; - $show_bounds = -1; - } - if ($order{0} == '-') { - $show_bounds = -$show_bounds; - } - return $show_bounds; + return null; } public function templateName() diff --git a/modules/carnet.php b/modules/carnet.php index e643505..8109acb 100644 --- a/modules/carnet.php +++ b/modules/carnet.php @@ -254,7 +254,7 @@ class CarnetModule extends PLModule $page->setTitle('Mes contacts'); $this->_add_rss_link($page); - $uid = S::v('uid'); + $uid = S::i('uid'); $user = Env::v('user'); // For XSRF protection, checks both the normal xsrf token, and the special RSS token. @@ -284,14 +284,13 @@ class CarnetModule extends PLModule break; } - $search = false; +/* $search = false; if ($action == 'search') { $action = $subaction; $subaction = $ssaction; $search = true; } if ($search && trim(Env::v('quick'))) { - require_once 'userset.inc.php'; $base = 'carnet/contacts/search'; Platal::load('search', 'classes.inc.php'); @@ -300,14 +299,18 @@ class CarnetModule extends PLModule } else { $base = 'carnet/contacts'; $view = new UserSet("INNER JOIN contacts AS c2 ON (u.user_id = c2.contact)", " c2.uid = $uid "); - } + }*/ + + require_once 'userset.inc.php'; + $user = S::user(); + $view = new UserSet(new UFC_Contact($user)); $view->addMod('minifiche', 'Mini-fiches', true); $view->addMod('trombi', 'Trombinoscope', false, array('with_admin' => false, 'with_promo' => true)); $view->addMod('geoloc', 'Planisphère', false, array('with_annu' => 'carnet/contacts/search')); - $view->apply($base, $page, $action, $subaction); - if ($action != 'geoloc' || ($search && !$ssaction) || (!$search && !$subaction)) { - $page->changeTpl('carnet/mescontacts.tpl'); - } + $view->apply('carnet/contacts', $page, $action, $subaction); + //if ($action != 'geoloc' || ($search && !$ssaction) || (!$search && !$subaction)) { + $page->changeTpl('carnet/mescontacts.tpl'); + //} } function handler_pdf(&$page, $arg0 = null, $arg1 = null) diff --git a/templates/include/minifiche.tpl b/templates/include/minifiche.tpl index 3d7942c..9a33366 100644 --- a/templates/include/minifiche.tpl +++ b/templates/include/minifiche.tpl @@ -20,34 +20,37 @@ {* *} {**************************************************************************} -
+{assign var=profile value=$user->profile()} +
state neq 'pending'}{if $smarty.session.auth ge AUTH_COOKIE}title="fiche mise à jour le {$profile->last_change|date_format}"{/if}{/if}>
{if $smarty.session.auth ge AUTH_COOKIE}
- {$c.name_display} + {$profile->directory_name}
{/if}
- {if $c.sexe}•{/if} - {if !$c.dcd && ($c.inscrit || $smarty.session.auth eq AUTH_PUBLIC)}{/if} - {$c.name_display} - {if !$c.dcd && ($c.inscrit || $smarty.session.auth eq AUTH_PUBLIC)}{/if} + {if $profile->isFemale()}•{/if} + {if !$profile->deathdate && ($user->state neq 'pending' || $smarty.session.auth eq AUTH_PUBLIC)}{/if} + {$profile->full_name} + {if !$profile->deathdate && ($user->state neq 'pending' || $smarty.session.auth eq AUTH_PUBLIC)}{/if}
- {if $c.iso3166_1} - {$c.nat1}  + {if $profile->nationality1} + {$profile->nationality1}  {/if} - {if $c.iso3166_2} - {$c.nat2}  + {if $profile->nationality2} + {$profile->nationality2}  {/if} - {if $c.iso3166_3} - {$c.nat3}  + {if $profile->nationality3} + {$profile->nationality3}  {/if} - {$c.promo_display}{if $c.eduname0}, {education_fmt name=$c.eduname0 url=$c.eduurl0 degree=$c.edudegree0 + {$profile->promo()} + + {if $c.eduname0}, {education_fmt name=$c.eduname0 url=$c.eduurl0 degree=$c.edudegree0 grad_year=$c.edugrad_year0 field=$c.edufield0 program=$c.eduprogram0 sexe=$c.sexe}{* *}{/if}{if $c.eduname1}, {education_fmt name=$c.eduname1 url=$c.eduurl1 degree=$c.edudegree1 grad_year=$c.edugrad_year1 field=$c.edufield1 program=$c.eduprogram1 sexe=$c.sexe}{* @@ -62,27 +65,27 @@ {if $smarty.session.auth ge AUTH_COOKIE}
- {if !$c.wasinscrit && !$c.dcd} + {if $user->state eq 'pending' && !$profile->deathdate} {if $show_action eq ajouter} - {* + {* *}{icon name=add title="Ajouter à la liste de mes surveillances"} {else} - {* + {* *}{icon name=cross title="Retirer de la liste de mes surveillances"} {/if} - {elseif $c.wasinscrit} - {* + {elseif $user->state neq 'pending'} + {* *}{icon name=user_suit title="Afficher la fiche"} - {if !$c.dcd} - {* + {if !$profile->deathdate} + {* *}{icon name=vcard title="Afficher la carte de visite"} - {* + {* *}{icon name=email title="Envoyer un email"} - {if $show_action eq ajouter} - {* + {if !$smarty.session.user->isContact($user)} + {* *}{icon name=add title="Ajouter à mes contacts"} {else} - {* + {* *}{icon name=cross title="Retirer de mes contacts"} {/if} {/if} @@ -91,13 +94,13 @@ {if hasPerm('admin')} {/if} diff --git a/templates/include/plview.minifiche.tpl b/templates/include/plview.minifiche.tpl index 38e3c78..d6ef8c3 100644 --- a/templates/include/plview.minifiche.tpl +++ b/templates/include/plview.minifiche.tpl @@ -22,11 +22,7 @@
{foreach from=$set item=res} - {if $res.contact} - {include file="include/minifiche.tpl" c=$res show_action="retirer"} - {else} - {include file="include/minifiche.tpl" c=$res show_action="ajouter"} - {/if} + {include file="include/minifiche.tpl" user=$res} {/foreach}
-- 2.1.4