Merge commit 'origin/fusionax' into account
authorFlorent Bruneau <florent.bruneau@polytechnique.org>
Wed, 14 Jan 2009 22:34:15 +0000 (23:34 +0100)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Wed, 14 Jan 2009 22:34:15 +0000 (23:34 +0100)
Conflicts:

include/userset.inc.php
modules/profile/general.inc.php

Signed-off-by: Florent Bruneau <florent.bruneau@polytechnique.org>
1  2 
include/notifs.inc.php
include/user.func.inc.php
modules/profile/general.inc.php
templates/profile/general.tpl

Simple merge
Simple merge
   *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
   ***************************************************************************/
  
- class ProfileNom implements ProfileSetting
+ class ProfileSearchNames implements ProfileSetting
  {
 -    private function matchWord($old, $new, $newLen) {
+     private $public_name;
+     private $private_name;
+     private $directory_name;
+     private $short_name;
+     private $sort_name;
 +    private function matchWord($old, $new, $newLen)
 +    {
          return ($i = strpos($old, $new)) !== false
              && ($i == 0 || $old{$i-1} == ' ')
              && ($i + $newLen == strlen($old) || $old{$i + $newLen} == ' ');
@@@ -241,21 -348,19 +350,18 @@@ class ProfileGeneral extends ProfilePag
      public function __construct(PlWizard &$wiz)
      {
          parent::__construct($wiz);
 -        $this->settings['naissance'] 
 -                                  = new ProfileDate();
+         $this->settings['search_names']
+                                   = new ProfileSearchNames();
 +        $this->settings['birthdate'] = new ProfileDate();
          $this->settings['freetext_pub']
                                    = $this->settings['photo_pub']
                                    = new ProfilePub();
          $this->settings['freetext']
 -                                  = $this->settings['nationalite']
 -                                  = $this->settings['nationalite2']
 -                                  = $this->settings['nationalite3']
 +                                  = $this->settings['nationality1']
 +                                  = $this->settings['nationality2']
 +                                  = $this->settings['nationality3']
-                                   = $this->settings['nick']
                                    = $this->settings['yourself']
-                                   = $this->settings['display_name']
-                                   = $this->settings['sort_name']
-                                   = $this->settings['tooltip_name']
-                                   = $this->settings['promo_display']
-                                   = $this->settings['search_names']
+                                   = $this->settings['promo']
                                    = null;
          $this->settings['synchro_ax']
                                    = new ProfileBool();
          $this->settings['edus']   = new ProfileEdu();
          $this->watched= array('freetext' => true, 'tels' => true,
                                'networking' => true, 'edus' => true,
 -                              'nationalite' => true, 'nationalite2' => true,
 -                              'nationalite3' => true, 'search_names' => true);
 +                              'nationality1' => true, 'nationality2' => true,
-                               'nationality3' => true, 'nick' => true);
++                              'nationality3' => true, 'search_names' => true);
      }
  
      protected function _fetchData()
      {
          // Checkout all data...
-         $res = XDB::query("SELECT  p.promo AS promo_display, e.entry_year AS entry_year, e.grad_year AS grad_year,
+         $res = XDB::query("SELECT  p.promo, e.entry_year AS entry_year, e.grad_year AS grad_year,
 -                                   u.nationalite, u.nationalite2, u.nationalite3, u.naissance,
 +                                   pr.nationality1, pr.nationality2, pr.nationality3, pr.birthdate,
                                     t.display_tel as mobile, t.pub as mobile_pub,
                                     d.email_directory as email_directory,
-                                    pr.freetext, pr.freetext_pub as freetext_pub,
-                                    n.yourself, n.display AS display_name, n.sort AS sort_name,
-                                    n.tooltip AS tooltip_name
 -                                   q.profile_freetext as freetext, q.profile_freetext_pub as freetext_pub,
 -                                   q.profile_from_ax as synchro_ax, u.matricule_ax, p.yourself
 -                             FROM  auth_user_md5         AS u
 -                       INNER JOIN  auth_user_quick       AS q ON (u.user_id = q.user_id)
 -                       INNER JOIN  profile_display       AS p ON (p.pid = u.user_id)
 -                       INNER JOIN  profile_education     AS e ON (e.uid = u.user_id AND FIND_IN_SET('primary', e.flags))
 -                        LEFT JOIN  profile_phones        AS t ON (u.user_id = t.uid AND link_type = 'user')
 -                        LEFT JOIN  profile_directory     AS d ON (d.uid = u.user_id)
 -                            WHERE  u.user_id = {?}", S::v('uid', -1));
++                                   pr.freetext, pr.freetext_pub as freetext_pub
 +                             FROM  profiles              AS pr
-                        INNER JOIN  profile_names_display AS n ON (n.user_id = pr.pid)
 +                       INNER JOIN  profile_display       AS p ON (p.pid = pr.pid)
 +                       INNER JOIN  profile_education     AS e ON (e.uid = pr.pid AND FIND_IN_SET('primary', e.flags))
 +                        LEFT JOIN  profile_phones        AS t ON (t.uid = pr.pid AND link_type = 'user')
 +                        LEFT JOIN  profile_directory     AS d ON (d.uid = pr.pid)
 +                            WHERE  pr.pid = {?}", $this->pid());
          $this->values = $res->fetchOneAssoc();
++        if ($this->owner) {
++            $this->values['yourself'] = $this->owner->displayName();
++        }
  
          // Retreive photo informations
          $res = XDB::query("SELECT  pub
                               FROM  photo
 -                            WHERE  uid = {?}", S::v('uid'));
 +                            WHERE  uid = {?}", $this->pid());
          $this->values['photo_pub'] = $res->fetchOneCell();
  
 -        $res = XDB::query("SELECT  COUNT(*)
 -                             FROM  requests
 -                            WHERE  type='photo' AND user_id = {?}",
 -                          S::v('uid'));
 -        $this->values['nouvellephoto'] = $res->fetchOneCell();
 +        if ($this->owner) {
 +            $res = XDB::query("SELECT  COUNT(*)
 +                                 FROM  requests
 +                                WHERE  type='photo' AND user_id = {?}",
 +                              $this->owner->id());
 +            $this->values['nouvellephoto'] = $res->fetchOneCell();
 +        } else {
 +            $this->values['nouvellephoto'] = 0;
 +        }
  
-         // Retreive search names info
-         $sn_all = XDB::iterator("SELECT  IF(sn.particle = '', sn.name, CONCAT(sn.particle, ' ', sn.name)) AS name,
-                                          sn.particle, sn.typeid, e.name AS type,
-                                          FIND_IN_SET('has_particle', e.flags) AS has_particle,
-                                          FIND_IN_SET('always_displayed', e.flags) AS always_displayed,
-                                          FIND_IN_SET('public', e.flags) AS pub
-                                    FROM  profile_name_search      AS sn
-                              INNER JOIN  profile_name_search_enum AS e  ON (e.id = sn.typeid)
-                                   WHERE  sn.pid = {?} AND NOT FIND_IN_SET('not_displayed', e.flags)
-                                ORDER BY  NOT FIND_IN_SET('always_displayed', e.flags), e.id, sn.name",
-                                 $this->pid());
-         $sn_types = XDB::iterator("SELECT  id, name, FIND_IN_SET('has_particle', flags) AS has_particle
-                                      FROM  profile_name_search_enum
-                                     WHERE  NOT FIND_IN_SET('not_displayed', flags)
-                                            AND FIND_IN_SET('always_displayed', flags)
-                                  ORDER BY  id");
-         $this->values['search_names'] = array();
-         $sn = $sn_all->next();
-         while ($sn_type = $sn_types->next()) {
-             if ($sn_type['id'] == $sn['typeid']) {
-                 $this->values['search_names'][] = $sn;
-                 $sn = $sn_all->next();
-             } else {
-                 $this->values['search_names'][] = array('typeid' => $sn_type['id'],
-                                                         'type'   => $sn_type['name'],
-                                                         'pub'    => 1,
-                                                         'has_particle'     => $sn_type['has_particle'],
-                                                         'always_displayed' => 1);
-             }
-         }
-         do {
-             $this->values['search_names'][] = $sn;
-         } while ($sn = $sn_all->next());
-         // Proposes choice for promo_display
+         // Proposes choice for promotion
          if ($this->values['entry_year'] != $this->values['grad_year'] - 3) {
              for ($i = $this->values['entry_year']; $i < $this->values['grad_year'] - 2; $i++) {
                  $this->values['promo_choice'][] = "X" . $i;
              XDB::execute("UPDATE  photo
                               SET  pub = {?}
                             WHERE  uid = {?}",
 -                         $this->values['photo_pub'], S::v('uid'));
 +                         $this->values['photo_pub'], $this->pid());
          }
-         if ($this->changed['yourself'] || $this->changed['search_names']) {
-             if ($this->changed['search_names']) {
-                 XDB::execute("DELETE FROM  s
-                                     USING  profile_name_search      AS s
-                                INNER JOIN  profile_name_search_enum AS e ON (s.typeid = e.id)
-                                     WHERE  s.pid = {?} AND NOT FIND_IN_SET('not_displayed', e.flags)",
-                              $this->pid());
-                 $search_names = array();
-                 foreach ($this->values['search_names'] as $sn) {
-                     if ($sn['name'] != '') {
-                         if ($sn['particle']) {
-                             list($particle, $name) = explode(' ', $sn['name'], 2);
-                             if (!$name) {
-                                 list($particle, $name) = explode('\'', $sn['name'], 2);
-                             }
-                         } else {
-                             $particle = '';
-                             $name     = $sn['name'];
-                         }
-                         $particle   = trim($particle);
-                         $name       = trim($name);
-                         $sn['name'] = trim($sn['name']);
-                         XDB::execute("INSERT INTO  profile_name_search (particle, name, typeid, pid)
-                                            VALUES  ({?}, {?}, {?}, {?})",
-                                      $particle, $name, $sn['typeid'], $this->pid());
-                         if (!isset($search_names[$sn['typeid']])) {
-                             $search_names[$sn['typeid']] = array($sn['name'], $name);
-                         } else {
-                             $search_names[$sn['typeid']] = array_merge($search_names[$sn['typeid']], array($name));
-                         }
-                     }
-                 }
-                 require_once 'name.func.inc.php';
-                 $sn_types_public  = build_types('public');
-                 $sn_types_private = build_types('private');
-                 $full_name      = build_full_name($search_names, $sn_types_public);
-                 $directory_name = build_directory_name($search_names, $sn_types_public, $full_name);
-                 $short_name     = short_name($search_names, $sn_types_public);
-                 $sort_name      = short_name($search_names, $sn_types_public);
-                 $this->values['public_name']  = build_public_name($search_names, $sn_types_public, $full_name);
-                 $this->values['private_name'] = $public_name . build_private_name($search_names, $sn_types_private);
-                 XDB::execute("UPDATE  profile_display
-                                  SET  yourself = {?}, public_name = {?}, private_name = {?},
-                                       directory_name = {?}, short_name = {?}, sort_name = {?}
-                                WHERE  pid = {?}",
-                              $this->values['yourself'], $this->values['public_name'],
-                              $this->values['private_name'], $directory_name, $short_name,
-                              $sort_name, $this->pid());
-                 /*if ($this->changed['search_names']) {
-                     require_once('user.func.inc.php');
-                     user_reindex(S::v('uid'));
-                 }*/
-             } else {
-                 XDB::execute("UPDATE  profile_display
-                                  SET  yourself = {?}
-                                WHERE  pid = {?}",
-                              $this->values['yourself'], $this->pid());
-             }
+         if ($this->changed['yourself']) {
 -            XDB::execute("UPDATE  profile_display
 -                             SET  yourself = {?}
 -                           WHERE  pid = {?}",
 -                         $this->values['yourself'], S::v('uid'));
++            XDB::execute('UPDATE  accounts
++                             SET  display_name = {?}
++                           WHERE  pid = {?}', $this->pid());
          }
-         if ($this->changed['promo_display']) {
+         if ($this->changed['promo']) {
              XDB::execute("UPDATE  profile_display
                               SET  promo = {?}
                             WHERE  pid = {?}",
-                          $this->values['promo_display'], $this->pid());
 -                         $this->values['promo'], S::v('uid'));
++                         $this->values['promo'], $this->pid());
          }
      }
  
Simple merge