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'] . " | "; } } }
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]; }
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; }
public static function get_request($pid) { return parent::get_typed_request($pid, 'photo'); }
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; }
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; }
public static function getPublicNames($pid) { if ($request = parent::get_typed_request($pid, 'usage')) { return $request->public_names; } return false; }
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(); } } }
/** 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)); } } } }