Пример #1
0
 public function __construct(User $_user, Profile $_profile, $_id, $_name, $_acronym, $_url, $_email, $_tel, $_fax, $_address, $_stamp = 0)
 {
     parent::__construct($_user, $_profile, false, 'entreprise', $_stamp);
     $this->id = $_id;
     $this->name = $_name;
     $this->acronym = $_acronym;
     $this->url = $_url;
     $this->email = $_email;
     $this->tel = $_tel;
     $this->fax = $_fax;
     $this->address = $_address;
     $_name = preg_replace('/[^0-9a-z]/i', ' ', strtolower(replace_accent($_name)));
     $name = explode(" ", $_name);
     $name_array = array_map("trim", $name);
     $length = count($name_array);
     $where = "";
     for ($i = 0; $i < $length; $i++) {
         if (strlen($name_array[$i]) > 2) {
             if ($where !== "") {
                 $where .= " OR ";
             }
             $where .= "name LIKE '%" . $name_array[$i] . "%'";
         }
     }
     if ($where != '') {
         $res = XDB::iterator('SELECT  name
                                 FROM  profile_job_enum
                                WHERE  ' . $where);
         $this->suggestions = "| ";
         while ($sug = $res->next()) {
             $this->suggestions .= $sug['name'] . " | ";
         }
     }
 }
Пример #2
0
 public function __construct(User $_user, Profile $_profile, $_newGradYear)
 {
     parent::__construct($_user, $_profile, true, 'orange');
     $this->newGradYear = $_newGradYear;
     $res = XDB::query("SELECT  entry_year, grad_year\n                             FROM  profile_education\n                            WHERE  pid = {?} AND FIND_IN_SET('primary', flags)", $this->profile->id());
     $years = $res->fetchOneRow();
     $this->entryYear = $years[0];
     $this->oldGradYear = $years[1];
 }
Пример #3
0
 public function value(ProfilePage $page, $field, $value, &$success)
 {
     $success = true;
     if (is_null($value) || !S::user()->isMyProfile($profile) && $page->values['medals_pub'] == 'private' && !S::user()->checkPerms(User::PERM_DIRECTORY_PRIVATE)) {
         // Fetch already attributed medals
         $value = XDB::fetchAllAssoc("SELECT  m.mid AS id, m.gid AS grade, 1 AS valid, FIND_IN_SET('has_levels', e.flags) AS has_levels, m.level\n                                           FROM  profile_medals     AS m\n                                     INNER JOIN  profile_medal_enum AS e ON (m.mid = e.id)\n                                          WHERE  m.pid = {?}", $page->pid());
         // Fetch not yet validated medals
         $medals = ProfileValidate::get_typed_requests($page->pid(), 'medal');
         foreach ($medals as &$medal) {
             $value[] = array('id' => $medal->mid, 'grade' => $medal->gid, 'level' => $medal->level, 'has_levels' => $medal->has_levels, 'valid' => '0');
         }
     } elseif (!is_array($value)) {
         $value = array();
     }
     usort($value, 'self::compareMedals');
     return $value;
 }
Пример #4
0
 public static function get_request($pid)
 {
     return parent::get_typed_request($pid, 'photo');
 }
Пример #5
0
 public static function get_request($pid, $type, $grade, $level)
 {
     $reqs = parent::get_typed_requests($pid, 'medal');
     foreach ($reqs as &$req) {
         if ($req->mid == $type && $req->gid == $grade && $req->level == $level) {
             return $req;
         }
     }
     return null;
 }
Пример #6
0
 public function value(ProfilePage $page, $field, $value, &$success)
 {
     $entreprise = ProfileValidate::get_typed_requests($page->pid(), 'entreprise');
     $entr_val = 0;
     $init = false;
     if (is_null($value)) {
         $value = $this->fetchJobs($page);
         $init = true;
     }
     $success = true;
     foreach ($value as $key => $job) {
         $job['name'] = trim($job['name']);
         if ($job['name'] == '' && $entreprise[$entr_val]->id == $key) {
             $job['tmp_name'] = $entreprise[$entr_val]->name;
             ++$entr_val;
         } else {
             if ($job['name'] == '') {
                 if ($job['description'] == '' && $job['w_url'] == '' && $job['w_address']['text'] == '' && $job['w_email'] == '' && count($job['w_phone']) >= 1 && $job['w_phone'][0]['display'] == '') {
                     unset($value[$key]);
                     continue;
                 }
                 if (!$init) {
                     $job['name_error'] = true;
                     $success = false;
                 }
             }
         }
         if (isset($job['removed']) && $job['removed']) {
             if (!S::user()->checkPerms('directory_private') && (Phone::hasPrivate($job['w_phone']) || Address::hasPrivate($job['w_address']) || $job['w_email_pub'] == 'private')) {
                 Platal::page()->trigWarning("L'entreprise ne peut être supprimée car elle contient des informations pour lesquelles vous n'avez pas le droit d'édition.");
             } else {
                 if ($job['name'] == '' && $entreprise && isset($entreprise[$entr_val - 1])) {
                     $entreprise[$entr_val - 1]->clean();
                 }
                 unset($value[$key]);
                 continue;
             }
         }
         if (!isset($job['pub']) || !$job['pub']) {
             $job['pub'] = 'private';
         }
         $value[$key] = $job;
     }
     foreach ($value as $key => &$job) {
         $address = new Address($job['w_address']);
         $s = $address->format();
         // Force the address publicity to be at least as restricted as
         // the job publicity.
         $job_level = $job['pub'];
         if (Visibility::isLessRestrictive($job_level, $address->pub)) {
             $address->pub = $job_level;
         }
         $job['w_address'] = $address->toFormArray();
         $this->cleanJob($page, $key, $job, $s, $job_level);
         if (!$init) {
             $success = $success && $s;
         }
     }
     usort($value, 'Visibility::comparePublicity');
     return $value;
 }
Пример #7
0
 public static function getPublicNames($pid)
 {
     if ($request = parent::get_typed_request($pid, 'usage')) {
         return $request->public_names;
     }
     return false;
 }
Пример #8
0
 public static function purge_requests($pid, $jobid, $groupid, $type)
 {
     $requests = parent::get_all_typed_requests('address');
     foreach ($requests as &$req) {
         if ($req->key_pid == $pid && $req->key_jobid == $jobid && $req->key_groupid == $groupid && $req->key_type == $type) {
             $req->clean();
         }
     }
 }
Пример #9
0
 /** Fields are:
  * pid, id, company_id, description, url, email
  */
 public function __construct($data)
 {
     foreach ($data as $key => $val) {
         $this->{$key} = $val;
     }
     $this->company = CompanyList::get($this->jobid);
     if (is_null($this->company)) {
         $entreprises = ProfileValidate::get_typed_requests($this->pid, 'entreprise');
         foreach ($entreprises as $entreprise) {
             if ($entreprise->id == $this->id) {
                 $this->company = new Company(array('name' => $entreprise->name));
             }
         }
     }
 }