public function afterStoreCallback() { if (!$this->material['host_id'] && $this->material['user_id'] !== $GLOBALS['user']->id) { PersonalNotifications::add($this->material['user_id'], URLHelper::getURL("plugins.php/lernmarktplatz/market/details/" . $this->material->getId() . "#review_" . $this->getId()), $this->isNew() ? sprintf(_("%s hat ein Review zu '%s' geschrieben."), $this['host_id'] ? LernmarktplatzUser::find($this['user_id'])->name : get_fullname($this['user_id']), $this->material['name']) : sprintf(_("%s hat ein Review zu '%s' verändert."), $this['host_id'] ? LernmarktplatzUser::find($this['user_id'])->name : get_fullname($this['user_id']), $this->material['name']), "review_" . $this->getId(), Icon::create("support", "clickable")); } //only push if the comment is from this server and the material-server is different if ($this->material['host_id'] && !$this['host_id'] && $this->isDirty()) { $remote = new LernmarktplatzHost($this->material['host_id']); $myHost = LernmarktplatzHost::thisOne(); $data = array(); $data['host'] = array('name' => $myHost['name'], 'url' => $myHost['url'], 'public_key' => $myHost['public_key']); $data['data'] = $this->toArray(); $data['data']['foreign_review_id'] = $data['data']['review_id']; unset($data['data']['review_id']); unset($data['data']['id']); unset($data['data']['user_id']); unset($data['data']['host_id']); $user_description_datafield = DataField::find(get_config("LERNMARKTPLATZ_USER_DESCRIPTION_DATAFIELD")) ?: DataField::findOneBySQL("name = ?", array(get_config("LERNMARKTPLATZ_USER_DESCRIPTION_DATAFIELD"))); if ($user_description_datafield) { $datafield_entry = DatafieldEntryModel::findOneBySQL("range_id = ? AND datafield_id = ?", array($this['user_id'], $user_description_datafield->getId())); } $data['user'] = array('user_id' => $this['user_id'], 'name' => get_fullname($this['user_id']), 'avatar' => Avatar::getAvatar($this['user_id'])->getURL(Avatar::NORMAL), 'description' => $datafield_entry ? $datafield_entry['content'] : null); if (!$remote->isMe()) { $remote->pushDataToEndpoint("add_review/" . $this->material['foreign_material_id'], $data); } } }
public function map($format, $value) { switch ($format) { case "number": $course = Course::findOneBySQL("VeranstaltungsNummer = ?", array($value)); if ($course) { return $course->getId(); } break; case "name": $course = Course::findOneBySQL("name = ?", array($value)); if ($course) { return $course->getId(); } break; default: //Datenfeld: $datafield = DataField::find($format); if ($datafield && $datafield['object_type'] === "sem") { $entry = DatafieldEntryModel::findOneBySQL("datafield_id = ? AND content = ?", array($datafield->getId(), $value)); if ($entry) { return $entry['range_id']; } } } }
public function afterStoreCallback() { if ($this->isDirty()) { //add notification to writer of review if (!$this->review['host_id'] && $this->review['user_id'] !== $this['user_id']) { PersonalNotifications::add($this->review['user_id'], URLHelper::getURL("plugins.php/lernmarktplatz/market/discussion/" . $this['review_id'] . "#comment_" . $this->getId()), sprintf(_("%s hat einen Kommentar zu Ihrem Review geschrieben."), $this['host_id'] ? LernmarktplatzUser::find($this['user_id'])->name : get_fullname($this['user_id'])), "comment_" . $this->getId(), Icon::create("support", "clickable")); } //add notification to all users of this servers who discussed this review but are neither the new //commentor nor the writer of the review $statement = DBManager::get()->prepare("\n SELECT user_id\n FROM lernmarktplatz_comments\n WHERE review_id = :review_id\n AND host_id IS NULL\n GROUP BY user_id\n "); $statement->execute(array('review_id' => $this->review->getId())); foreach ($statement->fetchAll(PDO::FETCH_COLUMN, 0) as $user_id) { if (!in_array($user_id, array($this->review['user_id'], $this['user_id']))) { PersonalNotifications::add($user_id, URLHelper::getURL("plugins.php/lernmarktplatz/market/discussion/" . $this['review_id'] . "#comment_" . $this->getId()), sprintf(_("%s hat auch einen Kommentar geschrieben."), $this['host_id'] ? LernmarktplatzUser::find($this['user_id'])->name : get_fullname($this['user_id'])), "comment_" . $this->getId(), Icon::create("support", "clickable")); } } //only push if the comment is from this server and the material-server is different if (!$this['host_id']) { $myHost = LernmarktplatzHost::thisOne(); $data = array(); $data['host'] = array('name' => $myHost['name'], 'url' => $myHost['url'], 'public_key' => $myHost['public_key']); $data['data'] = $this->toArray(); $data['data']['foreign_comment_id'] = $data['data']['comment_id']; unset($data['data']['comment_id']); unset($data['data']['id']); unset($data['data']['user_id']); unset($data['data']['host_id']); $user_description_datafield = DataField::find(get_config("LERNMARKTPLATZ_USER_DESCRIPTION_DATAFIELD")) ?: DataField::findOneBySQL("name = ?", array(get_config("LERNMARKTPLATZ_USER_DESCRIPTION_DATAFIELD"))); if ($user_description_datafield) { $datafield_entry = DatafieldEntryModel::findOneBySQL("range_id = ? AND datafield_id = ?", array($this['user_id'], $user_description_datafield->getId())); } $data['user'] = array('user_id' => $this['user_id'], 'name' => get_fullname($this['user_id']), 'avatar' => Avatar::getAvatar($this['user_id'])->getURL(Avatar::NORMAL), 'description' => $datafield_entry ? $datafield_entry['content'] : null); $statement = DBManager::get()->prepare("\n SELECT host_id\n FROM lernmarktplatz_comments\n WHERE review_id = :review_id\n AND host_id IS NOT NULL\n GROUP BY host_id\n "); $statement->execute(array('review_id' => $this->review->getId())); $hosts = $statement->fetchAll(PDO::FETCH_COLUMN, 0); if ($this->review['host_id'] && !in_array($this->review['host_id'], $hosts)) { $hosts[] = $this->review['host_id']; } if ($this->review->material['host_id'] && !in_array($this->review->material['host_id'], $hosts)) { $hosts[] = $this->review->material['host_id']; } foreach ($hosts as $host_id) { $remote = new LernmarktplatzHost($host_id); if (!$remote->isMe()) { $review_id = $this->review['foreign_review_id'] ?: $this->review->getId(); if ($this->review['foreign_review_id']) { if ($this->review->host_id === $remote->getId()) { $host_hash = null; } else { $host_hash = md5($this->review->host['public_key']); } } else { $host_hash = md5($myHost['public_key']); } $remote->pushDataToEndpoint("add_comment/" . $review_id . "/" . $host_hash, $data); } } } } }
public function map($format, $value) { switch ($format) { case "username": $user = User::findOneByUsername($value); if ($user) { return $user->getId(); } break; case "email": $user = User::findOneByEmail($value); if ($user) { return $user->getId(); } break; default: //Datenfeld: $datafield = DataField::find($format); if ($datafield && $datafield['object_type'] === "user") { $entry = DatafieldEntryModel::findOneBySQL("datafield_id = ? AND content = ?", array($datafield->getId(), $value)); if ($entry) { return $entry['range_id']; } } } }
/** * * returns the datafields * @return list of datafields */ public function getFields() { if (sizeOf($this->fields) == 0) { $this->fields = DataField::getByDataType($this); } return $this->fields; }
public function map($format, $value) { switch ($format) { case "name": $inst = Institute::findOneBySQL("Name = ?", array($value)); if ($inst) { return $inst->getId(); } break; default: //Datenfeld: $datafield = DataField::find($format); if ($datafield && $datafield['object_type'] === "inst") { $entry = DatafieldEntryModel::findOneBySQL("datafield_id = ? AND content = ?", array($datafield->getId(), $value)); if ($entry) { return $entry['range_id']; } } } }
/** * Edit or create a rule * * @param md5 $edit_id */ function edit_action($id = null) { //get data $user_field = 'user'; $semdata_field = 'usersemdata'; $this->semFields = AuxLockRules::getSemFields(); $this->entries_user = DataField::getDataFields($user_field); $this->entries_semdata = DataField::getDataFields($semdata_field); $this->rule = is_null($id) ? false : AuxLockRules::getLockRuleByID($id); if ($GLOBALS['perm']->have_perm('root') && count($this->entries_semdata) == 0) { $this->flash['info'] = sprintf(_('Sie müssen zuerst im Bereich %sDatenfelder%s in der Kategorie ' . '<i>Datenfelder für Personenzusatzangaben in Veranstaltungen</i> einen neuen Eintrag erstellen.'), '<a href="' . URLHelper::getLink('dispatch.php/admin/datafields') . '">', '</a>'); } // save action if (Request::submitted('erstellen') || Request::submitted('uebernehmen')) { //checking for errors $errors = array(); if (!Request::get('rulename')) { array_push($errors, _("Bitte geben Sie der Regel mindestens einen Namen!")); } if (!AuxLockRules::checkLockRule(Request::getArray('fields'))) { array_push($errors, _('Bitte wählen Sie mindestens ein Feld aus der Kategorie "Zusatzinformationen" aus!')); } if (!empty($errors)) { $this->flash['error'] = _("Ihre Eingaben sind ungültig."); $this->flash['error_detail'] = $errors; // save } else { //new if (is_null($id)) { AuxLockRules::createLockRule(Request::get('rulename'), Request::get('description'), Request::getArray('fields'), Request::getArray('order')); //edit } else { AuxLockRules::updateLockRule($id, Request::get('rulename'), Request::get('description'), Request::getArray('fields'), Request::getArray('order')); } $this->flash['success'] = sprintf(_('Die Regel "%s" wurde erfolgreich gespeichert!'), htmlReady(Request::get('rulename'))); $this->redirect('admin/specification'); } } }
/** * @see UserFilterField::__construct */ public function __construct($typeparam, $fieldId = '') { $this->validCompareOperators = array('>=' => _('mindestens'), '<=' => _('höchstens'), '=' => _('gleich'), '!=' => _('ungleich')); if ($fieldId) { $this->id = $fieldId; $this->load(); } else { $this->id = $this->generateId(); $this->datafield_id = $typeparam; } $df = DataField::find($this->datafield_id); if ($df) { $this->datafield_name = $df->name; } else { throw new UnexpectedValueException('datafield not found, id: ' . $typeparam); } $typed_df = DataFieldEntry::createDataFieldEntry($df); if ($typed_df instanceof DataFieldBoolEntry) { $this->validValues = array(1 => _('Ja'), 0 => _('Nein')); unset($this->validCompareOperators['>=']); unset($this->validCompareOperators['<=']); unset($this->validCompareOperators['!=']); $this->null_yields = 0; } else { if ($typed_df instanceof DataFieldSelectboxEntry) { list($valid_values, $is_assoc) = $typed_df->getParams(); if (!$is_assoc) { $valid_values = array_combine($valid_values, $valid_values); } $this->validValues = $valid_values; $this->null_yields = $typed_df instanceof DataFieldSelectboxMultipleEntry ? '' : key($valid_values); } else { $this->null_yields = ''; } } }
: <select multiple size="<?php echo count($controller->user_status); ?> " name="object_class[]" id="object_class" required> <option value="0" <? if ($item->object_class === null) echo 'selected'; ?>> <?php echo _('alle'); ?> </option> <? foreach ($controller->user_status as $key => $value): ?> <option value="<?php echo $value; ?> " <? if ($item->object_class & DataField::permMask($key)) echo 'selected'; ?>> <?php echo $key; ?> </option> <? endforeach; ?> </select> <? endif; ?> </label> <label> <?php echo _('Benötigter Status zum Bearbeiten'); ?> <select name="edit_perms" id="edit_perms">
/** * returns an array containing all lockable attributes for * given entity type * * @param string $type entity type, one of [sem,inst,user] * @return array */ public static function getLockRuleConfig($type) { $groups['basic'] = _("Grunddaten"); $groups['personnel'] = _("Personen und Einordnung"); $groups['misc'] = _("weitere Daten"); $groups['room_time'] = _("Zeiten/Räume"); $groups['access'] = _("Zugangsberechtigungen"); $groups['actions'] = _("spezielle Aktionen"); $attributes['sem']['veranstaltungsnummer'] = array('name' => _("Veranstaltungsnummer"), 'group' => 'basic'); $attributes['sem']['seminar_inst'] = array('name' => _("beteiligte Einrichtungen"), 'group' => 'basic'); $attributes['sem']['name'] = array('name' => _("Name"), 'group' => 'basic'); $attributes['sem']['untertitel'] = array('name' => _("Untertitel"), 'group' => 'basic'); $attributes['sem']['status'] = array('name' => _("Status"), 'group' => 'basic'); $attributes['sem']['beschreibung'] = array('name' => _("Beschreibung"), 'group' => 'basic'); $attributes['sem']['ort'] = array('name' => _("Ort"), 'group' => 'basic'); $attributes['sem']['art'] = array('name' => _("Veranstaltungstyp"), 'group' => 'basic'); $attributes['sem']['ects'] = array('name' => _("ECTS-Punkte"), 'group' => 'basic'); $attributes['sem']['admission_turnout'] = array('name' => _("Teilnehmerzahl"), 'group' => 'basic'); $attributes['sem']['dozent'] = array('name' => _("Lehrende"), 'group' => 'personnel'); $attributes['sem']['tutor'] = array('name' => _("Tutor/-innen"), 'group' => 'personnel'); $attributes['sem']['institut_id'] = array('name' => _("Heimateinrichtung"), 'group' => 'personnel'); $attributes['sem']['sem_tree'] = array('name' => _("Studienbereiche"), 'group' => 'personnel'); $attributes['sem']['participants'] = array('name' => _("Personen hinzufügen/löschen"), 'group' => 'personnel'); $attributes['sem']['groups'] = array('name' => _("Gruppen hinzufügen/löschen"), 'group' => 'personnel'); $attributes['sem']['sonstiges'] = array('name' => _("Sonstiges"), 'group' => 'misc'); $attributes['sem']['teilnehmer'] = array('name' => _("Beschreibung des Teilnehmerkreises"), 'group' => 'misc'); $attributes['sem']['voraussetzungen'] = array('name' => _("Teilnahmevoraussetzungen"), 'group' => 'misc'); $attributes['sem']['lernorga'] = array('name' => _("Lernorganisation"), 'group' => 'misc'); $attributes['sem']['leistungsnachweis'] = array('name' => _("Leistungsnachweis"), 'group' => 'misc'); $attributes['sem']['room_time'] = array('name' => _("Zeiten/Räume"), 'group' => 'room_time'); $attributes['sem']['cancelled_dates'] = array('name' => _("Termine ausfallen lassen"), 'group' => 'room_time'); $attributes['sem']['admission_endtime'] = array('name' => _("Zeit/Datum des Losverfahrens/Kontingentierung"), 'group' => 'access'); $attributes['sem']['admission_disable_waitlist'] = array('name' => _("Aktivieren/Deaktivieren der Warteliste"), 'group' => 'access'); $attributes['sem']['admission_binding'] = array('name' => _("Verbindlichkeit der Anmeldung"), 'group' => 'access'); $attributes['sem']['admission_type'] = array('name' => _("Typ des Anmeldeverfahrens"), 'group' => 'access'); $attributes['sem']['admission_prelim'] = array('name' => _("zugelassenene Studiengänge"), 'group' => 'access'); $attributes['sem']['admission_prelim_txt'] = array('name' => _("Vorläufigkeit der Anmeldungen"), 'group' => 'access'); $attributes['sem']['admission_disable_waitlist'] = array('name' => _("Hinweistext bei Anmeldungen"), 'group' => 'access'); $attributes['sem']['admission_starttime'] = array('name' => _("Startzeitpunkt der Anmeldemöglichkeit"), 'group' => 'access'); $attributes['sem']['admission_endtime_sem'] = array('name' => _("Endzeitpunkt der Anmeldemöglichkeit"), 'group' => 'access'); $attributes['sem']['lesezugriff'] = array('name' => _("Lesezugriff"), 'group' => 'access'); $attributes['sem']['schreibzugriff'] = array('name' => _("Schreibzugriff"), 'group' => 'access'); $attributes['sem']['passwort'] = array('name' => _("Passwort"), 'group' => 'access'); $attributes['sem']['user_domain'] = array('name' => _("Nutzerdomänen zuordnen"), 'group' => 'access'); $attributes['sem']['seminar_copy'] = array('name' => _("Veranstaltung kopieren"), 'group' => 'actions'); $attributes['sem']['seminar_archive'] = array('name' => _("Veranstaltung archivieren"), 'group' => 'actions'); $attributes['sem']['seminar_visibility'] = array('name' => _("Veranstaltung sichtbar/unsichtbar schalten"), 'group' => 'actions'); $attributes['inst']['name'] = array('name' => _("Name"), 'group' => 'basic'); $attributes['inst']['fakultaets_id'] = array('name' => _("Fakultät"), 'group' => 'basic'); $attributes['inst']['type'] = array('name' => _("Bezeichnung"), 'group' => 'basic'); $attributes['inst']['strasse'] = array('name' => _("Straße"), 'group' => 'basic'); $attributes['inst']['plz'] = array('name' => _("Ort"), 'group' => 'basic'); $attributes['inst']['telefon'] = array('name' => _("Telefonnummer"), 'group' => 'basic'); $attributes['inst']['fax'] = array('name' => _("Faxnummer"), 'group' => 'basic'); $attributes['inst']['email'] = array('name' => _("E-Mail-Adresse"), 'group' => 'basic'); $attributes['inst']['url'] = array('name' => _("Homepage"), 'group' => 'basic'); $attributes['inst']['participants'] = array('name' => _("Mitarbeiter hinzufügen/löschen"), 'group' => 'personnel'); $attributes['inst']['groups'] = array('name' => _("Gruppen hinzufügen/löschen"), 'group' => 'personnel'); $attributes['user']['name'] = array('name' => _("Vor- und Nachname"), 'group' => 'basic'); $attributes['user']['username'] = array('name' => _("Nutzername"), 'group' => 'basic'); $attributes['user']['password'] = array('name' => _("Passwort"), 'group' => 'basic'); $attributes['user']['email'] = array('name' => _("E-Mail"), 'group' => 'basic'); $attributes['user']['title'] = array('name' => _("Titel"), 'group' => 'basic'); $attributes['user']['gender'] = array('name' => _("Geschlecht"), 'group' => 'basic'); $attributes['user']['privatnr'] = array('name' => _("Telefon (privat)"), 'group' => 'basic'); $attributes['user']['privatcell'] = array('name' => _("Mobiltelefon"), 'group' => 'basic'); $attributes['user']['privadr'] = array('name' => _("Adresse (privat)"), 'group' => 'basic'); $attributes['user']['hobby'] = array('name' => _("Hobbys"), 'group' => 'basic'); $attributes['user']['lebenslauf'] = array('name' => _("Lebenslauf"), 'group' => 'basic'); $attributes['user']['home'] = array('name' => _("Homepage"), 'group' => 'basic'); $attributes['user']['publi'] = array('name' => _("Schwerpunkte"), 'group' => 'misc'); $attributes['user']['schwerp'] = array('name' => _("Publikationen"), 'group' => 'misc'); $attributes['user']['institute_data'] = array('name' => _("Einrichtungsdaten"), 'group' => 'misc'); foreach (DataField::getDataFields($type) as $df_id => $df) { $attributes[$type][$df_id] = array('name' => $df->data['name'], 'group' => 'misc'); } return array('groups' => $groups, 'attributes' => $attributes[$type]); }
/** * Caching for the datafields * @param type $member * @param type $fieldID * @return null */ private function getDatafield($member, $fieldID) { if (strlen($fieldID) == 32) { if (!array_key_exists($fieldID, $this->datafieldCache)) { $this->datafieldCache[$fieldID] = DataField::find($fieldID); } if (isset($this->datafieldCache[$fieldID])) { if ($this->datafieldCache[$fieldID]->object_type == 'usersemdata') { $field = current(DatafieldEntryModel::findByModel($member, $fieldID)); } if ($this->datafieldCache[$fieldID]->object_type == 'user') { $field = current(DatafieldEntryModel::findByModel(User::find($member->user_id), $fieldID)); } if ($field) { $range_id = $field->sec_range_id ? array($field->range_id, $field->sec_range_id) : $field->range_id; $typed_df = DataFieldEntry::createDataFieldEntry($field->datafield, $range_id, $field->getValue('content')); return array($field->name => $typed_df); } } } }
/** * * @return DataField */ public function getDataField() { if ($this->dataField == null) { $this->dataField = DataField::getByFormAndName($this->form->getDataType(), $this->dataName); } return $this->dataField; }
private static function addTypes($field, $ind1, $record, $types, $isElectronical = false) { if (!empty($types)) { foreach ($types as $type) { $datafield = new DataField($field, $ind1, ' '); $datafield->addSubfield(new Subfield('a', '')); $typeStr = $isElectronical ? self::getFileFormat($type) : self::getType($type); if (!empty($type)) { $datafield->addSubfield(new Subfield('q', $typeStr)); } $record->addDataField($datafield); } } }
echo htmlReady($val->type); ?> </span> </td> <td> <? if ($key === 'sem'): ?> <?php echo $val->object_class !== null ? htmlReady($GLOBALS['SEM_CLASS'][$val->object_class]['name']) : _('alle'); ?> <? elseif ($key == 'inst'): ?> <?php echo $val->object_class !== null ? htmlReady($GLOBALS['INST_TYPE'][$val->object_class]['name']) : _('alle'); ?> <? else: ?> <?php echo $val->object_class !== null ? DataField::getReadableUserClass($val->object_class) : _('alle'); ?> <? endif; ?> </td> <td><?php echo $val->edit_perms; ?> </td> <td><?php echo $val->view_perms; ?> </td> <? if ($key === 'user'): ?> <td> <? if ($val->system): ?> <?php
/** * The constructor * * @param $name (string) the field name * @param $table (DataTable) the DataTable * @param $optionArrays (string array) all options */ function DataFieldEnum($name, &$table, $optionArrays) { parent::DataField($name, $table, DATATYPE_ENUM); $this->_optionArrays = $optionArrays; }
public function pushDataToIndexServers($delete = false) { $myHost = LernmarktplatzHost::thisOne(); $data = array(); $data['host'] = array('name' => $myHost['name'], 'url' => $myHost['url'], 'public_key' => $myHost['public_key']); $data['data'] = $this->toArray(); $data['data']['foreign_material_id'] = $data['data']['material_id']; unset($data['data']['material_id']); unset($data['data']['id']); unset($data['data']['user_id']); unset($data['data']['host_id']); $user_description_datafield = DataField::find(get_config("LERNMARKTPLATZ_USER_DESCRIPTION_DATAFIELD")) ?: DataField::findOneBySQL("name = ?", array(get_config("LERNMARKTPLATZ_USER_DESCRIPTION_DATAFIELD"))); if ($user_description_datafield) { $datafield_entry = DatafieldEntryModel::findOneBySQL("range_id = ? AND datafield_id = ?", array($this['user_id'], $user_description_datafield->getId())); } $data['user'] = array('user_id' => $this['user_id'], 'name' => get_fullname($this['user_id']), 'avatar' => Avatar::getAvatar($this['user_id'])->getURL(Avatar::NORMAL), 'description' => $datafield_entry ? $datafield_entry['content'] : null); $data['topics'] = array(); foreach ($this->getTopics() as $tag) { if ($tag['name']) { $data['topics'][] = $tag['name']; } } if ($delete) { $data['delete_material'] = 1; } foreach (LernmarktplatzHost::findBySQL("index_server = '1' AND allowed_as_index_server = '1' ") as $index_server) { if (!$index_server->isMe()) { echo " push "; $index_server->pushDataToEndpoint("push_data", $data); } } }
private static function addField935($record) { $date = JFactory::getDate(); $date = JHtml::date($date, 'Y'); $datafield = new DataField('935', ' ', ' '); $datafield->addSubfield(new Subfield('a', $date)); $datafield->addSubfield(new Subfield('5', 'FENNI')); $record->addDataField($datafield); }
/** * Enter description here... * * @param unknown_type $range_id * @param unknown_type $object_type * @param unknown_type $object_class_hint * @return unknown */ public static function getDataFieldEntries($range_id, $object_type = '', $object_class_hint = '') { if (!$range_id) { return false; // we necessarily need a range ID } $parameters = array(); if (is_array($range_id)) { // rangeID may be an array ("classic" rangeID and second rangeID used for user roles) $secRangeID = $range_id[1]; $rangeID = $range_id[0]; // to keep compatible with following code if ('usersemdata' !== $object_type && 'roleinstdata' !== $object_type) { $object_type = 'userinstrole'; } $clause1 = "AND sec_range_id= :sec_range_id"; $parameters[':sec_range_id'] = $secRangeID; } else { $rangeID = $range_id; } if (!$object_type) { $object_type = get_object_type($rangeID); } if ($object_type) { switch ($object_type) { case 'sem': if ($object_class_hint) { $object_class = SeminarCategories::GetByTypeId($object_class_hint); } else { $object_class = SeminarCategories::GetBySeminarId($rangeID); } $clause2 = "object_class = :object_class OR object_class IS NULL"; $parameters[':object_class'] = (int) $object_class->id; break; case 'inst': case 'fak': if ($object_class_hint) { $object_class = $object_class_hint; } else { $query = "SELECT type FROM Institute WHERE Institut_id = ?"; $statement = DBManager::get()->prepare($query); $statement->execute(array($rangeID)); $object_class = $statement->fetchColumn(); } $object_type = "inst"; $clause2 = "object_class = :object_class OR object_class IS NULL"; $parameters[':object_class'] = (int) $object_class; break; case 'roleinstdata': //hmm tja, vermutlich so $clause2 = '1'; break; case 'user': case 'userinstrole': case 'usersemdata': $object_class = is_object($GLOBALS['perm']) ? DataField::permMask($GLOBALS['perm']->get_perm($rangeID)) : 0; $clause2 = "((object_class & :object_class) OR object_class IS NULL)"; $parameters[':object_class'] = (int) $object_class; break; } $query = "SELECT a.*, content\n FROM datafields AS a\n LEFT JOIN datafields_entries AS b\n ON (a.datafield_id = b.datafield_id AND range_id = :range_id {$clause1})\n WHERE object_type = :object_type AND ({$clause2})\n ORDER BY priority"; $parameters[':range_id'] = $rangeID; $parameters[':object_type'] = $object_type; $rs = DBManager::get()->prepare($query); $rs->execute($parameters); $entries = array(); while ($data = $rs->fetch(PDO::FETCH_ASSOC)) { $datafield = DataField::buildExisting($data); $entries[$data['datafield_id']] = DataFieldEntry::createDataFieldEntry($datafield, $range_id, $data['content']); } } return $entries; }
/** * Configures a datafield * * @param String $datafield_id Datafield id */ public function config_action($datafield_id) { $datafield = DataField::find($datafield_id); if (Request::get('typeparam')) { $datafield->typeparam = Request::get('typeparam'); } if (Request::isPost() && Request::submitted('store')) { $datafield->store(); PageLayout::postSuccess(_('Die Parameter wurden übernommen.')); $this->redirect('admin/datafields/index/' . $datafield_id->object_type . '#item_' . $datafield_id); } $this->struct = $datafield; if (Request::submitted('preview')) { $this->preview = DataFieldEntry::createDataFieldEntry($datafield); $this->render_action('preview'); } }
<div class="author_name"> <a href="<?php echo URLHelper::getLink("dispatch.php/profile", array('username' => $user['username'])); ?> "> <?php echo htmlReady($user->getFullName()); ?> </a> </div> <div class="author_host">(<?php echo htmlReady($GLOBALS['UNI_NAME_CLEAN']); ?> )</div> <div class="description"><? $user_description_datafield = DataField::find(get_config("LERNMARKTPLATZ_USER_DESCRIPTION_DATAFIELD")) ?: DataField::findOneBySQL("name = ?", array(get_config("LERNMARKTPLATZ_USER_DESCRIPTION_DATAFIELD"))); if ($user_description_datafield) { $datafield_entry = DatafieldEntryModel::findOneBySQL("range_id = ? AND datafield_id = ?", array($user['user_id'], $user_description_datafield->getId())); echo $datafield_entry && $datafield_entry['content'] ? formatReady($datafield_entry['content']) : ""; if ($material['user_id'] === $GLOBALS['user']->id) : ?> <a href="<?php echo URLHelper::getLink("dispatch.php/settings/details#datafields_" . $user_description_datafield->getId()); ?> " title="<?php echo _("Text bearbeiten"); ?> "> <?php echo Icon::create("edit", "clickable")->asImg(20, array('class' => "text-bottom")); ?>
/** * Returns data of a given item including where to download it and the structure, decription, etc. * If item is not hosted on this server, just relocate the request to the real server. * * This endpoint should be called by a remote whenever a client wants to view the details of an item. * * @param $item_id : ID of the item on this server. */ public function get_item_data_action($item_id) { $material = new LernmarktplatzMaterial($item_id); if ($material->isNew()) { $this->render_json(array('deleted' => 1)); } elseif (!$material['foreign_material_id']) { $me = LernmarktplatzHost::thisOne(); $topics = array(); foreach ($material->getTopics() as $topic) { $topics[] = $topic['name']; } $user_description_datafield = DataField::find(get_config("LERNMARKTPLATZ_USER_DESCRIPTION_DATAFIELD")) ?: DataField::findOneBySQL("name = ?", array(get_config("LERNMARKTPLATZ_USER_DESCRIPTION_DATAFIELD"))); if ($user_description_datafield) { $datafield_entry = DatafieldEntryModel::findOneBySQL("range_id = ? AND datafield_id = ?", array($material['user_id'], $user_description_datafield->getId())); } $reviews = array(); foreach ($material->reviews as $review) { if ($review['host_id']) { $user = LernmarktplatzUser::findOneBySQL("user_id = ?", array($review['user_id'])); $user = array('user_id' => $review['user_id'], 'name' => $user['name'], 'avatar' => $user['avatar'], 'description' => $user['description']); } else { if ($user_description_datafield) { $user_description = DatafieldEntryModel::findOneBySQL("range_id = ? AND datafield_id = ?", array($review['user_id'], $user_description_datafield->getId())); } $user = array('user_id' => $review['user_id'], 'name' => get_fullname($review['user_id']), 'avatar' => Avatar::getAvatar($review['user_id'])->getURL(Avatar::NORMAL), 'description' => $user_description['content'] ?: null); } $reviews[] = array('foreign_review_id' => $review['foreign_review_id'] ?: $review->getId(), 'review' => $review['review'], 'rating' => $review['rating'], 'user' => $user, 'host' => array('name' => $review['host_id'] ? $review->host['name'] : $me['name'], 'url' => $review['host_id'] ? $review->host['url'] : $me['url'], 'public_key' => $review['host_id'] ? $review->host['public_key'] : $me['public_key']), 'mkdate' => $review['mkdate'], 'chkdate' => $review['chdate']); } $this->render_json(array('data' => array('name' => $material['name'], 'short_description' => $material['short_description'], 'description' => $material['description'], 'content_type' => $material['content_type'], 'front_image_content_type' => $material['front_image_content_type'], 'url' => ($GLOBALS['LERNMARKTPLATZ_PREFERRED_URI'] ?: $GLOBALS['ABSOLUTE_URI_STUDIP']) . "/plugins.php/lernmarktplatz/market/download/" . $item_id, 'structure' => $material['structure'], 'license' => $material['license']), 'user' => array('user_id' => $material['user_id'], 'name' => User::find($material['user_id'])->getFullName(), 'avatar' => Avatar::getAvatar($material['user_id'])->getURL(Avatar::NORMAL), 'description' => $datafield_entry ? $datafield_entry['content'] : null), 'topics' => $topics, 'reviews' => $reviews)); } else { $host = new LernmarktplatzHost($material['host_id']); header("Location: " . $host['url'] . "get_item_data/" . $item_id); return; } }
function MakeDatafieldsDefault($user_id, $statusgruppe_id, $default = 'default_value') { global $auth; $fields = DataField::getDataFields('userinstrole'); $query = "SELECT datafield_id FROM datafields WHERE object_type = 'userinstrole'"; $ids = DBManager::get()->query($query)->fetchAll(PDO::FETCH_COLUMN); $query = "REPLACE INTO datafields_entries (datafield_id, range_id, content, sec_range_id, mkdate, chdate) VALUES (?, ?, ?, ?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP())"; $insert = DBManager::get()->prepare($query); foreach ($ids as $id) { if ($fields[$id]->editAllowed($auth->auth['perm'])) { $insert->execute(array($id, $user_id, $default, $statusgruppe_id)); } } }
function checkData() { global $invalidEntries; // check the standard role data if (!Request::get('new_name') && Request::get('presetName') != 'none') { $this->name = remove_magic_quotes(Request::get('presetName')); } else { $this->name = remove_magic_quotes(Request::get('new_name')); } $this->size = (int) Request::int('new_size'); // check if we have to remove the self_assign_exclusive-flag $this->selfassign = SetSelfAssign($this->statusgruppe_id, Request::quoted('new_selfassign') ? 1 : 0); /*if (Request::quoted('new_selfassign')) { if ($this->selfassign == 0) { $this->selfassign = 1; } } else { if ($this->selfassign == 2) { if ($GLOBALS['SessSemName']) { SetSelfAssignExclusive($GLOBALS['SessSemName'][1], false); } } $this->selfassign = 0; }*/ if (Request::get('groupfolder')) { // check if there already exists a folder $stmt = DBManager::get()->prepare("SELECT COUNT(*) as c FROM folder WHERE range_id = ?"); $stmt->execute(array($this->statusgruppe_id)); if ($folder = $stmt->fetch(PDO::FETCH_ASSOC)) { if ($folder['c'] == 0) { // if no folder exists, we create one $title = _("Dateiordner der Gruppe:") . ' ' . $this->name; $description = _("Ablage für Ordner und Dokumente dieser Gruppe"); $permission = 15; create_folder(addslashes($title), $description, $this->statusgruppe_id, $permission); $this->messages['msg'][] = _("Es wurde ein Gruppenordner angelegt."); } } } if (!$this->isSeminar()) { // check the datafields foreach (Request::quotedArray('datafields') as $id => $data) { $struct = DataField::find($id); $entry = DataFieldEntry::createDataFieldEntry($struct, array($this->range_id, $this->statusgruppe_id)); $entry->setValueFromSubmit($data); if ($entry->isValid()) { $entry->store(); } else { $invalidEntries[$struct->id] = $entry; } } // a group cannot be its own vather! if (Request::get('vather') == $this->statusgruppe_id) { $this->messages['error'][] = _("Sie könne diese Gruppe nicht sich selbst unterordnen!"); } else { // check if the group shall be moved if (Request::get('vather') != 'nochange') { if (Request::option('vather') == 'root') { $vather_id = $GLOBALS['range_id']; } else { $vather_id = Request::option('vather'); } if (!isVatherDaughterRelation($this->statusgruppe_id, $vather_id)) { $this->range_id = $vather_id; //$db->query("UPDATE statusgruppen SET range_id = '$vather_id' WHERE statusgruppe_id = '{$this->statusgruppe_id}'"); } else { $this->messages['error'][] = _("Sie können diese Gruppe nicht einer ihr untergeordneten Gruppe zuweisen!"); } } } } if (!$this->isSeminar() && is_array($invalidEntries)) { $this->messages['error'][] = _("Korrigieren Sie die fehlerhaften Eingaben!"); return false; } return true; }
/** * Old version of CSV import (copy and paste from teilnehmer.php * @return type * @throws AccessDeniedException */ public function set_autor_csv_action() { // Security Check if (!$this->is_tutor) { throw new AccessDeniedException('Sie haben leider keine ausreichende Berechtigung, um auf diesen Bereich von Stud.IP zuzugreifen.'); } CSRFProtection::verifyUnsafeRequest(); // prepare CSV-Lines $messaging = new messaging(); $csv_request = preg_split('/(\\n\\r|\\r\\n|\\n|\\r)/', trim(Request::get('csv_import'))); $csv_mult_founds = array(); $csv_count_insert = 0; $csv_count_multiple = 0; $datafield_id = null; if (Request::get('csv_import_format') && !in_array(Request::get('csv_import_format'), words('realname username'))) { foreach (DataField::getDataFields('user', 1 | 2 | 4 | 8, true) as $df) { if ($df->accessAllowed() && in_array($df->getId(), $GLOBALS['TEILNEHMER_IMPORT_DATAFIELDS']) && $df->getId() == Request::quoted('csv_import_format')) { $datafield_id = $df->getId(); break; } } } if (Request::get('csv_import')) { // remove duplicate users from csv-import $csv_lines = array_unique($csv_request); $csv_count_contingent_full = 0; foreach ($csv_lines as $csv_line) { $csv_name = preg_split('/[,\\t]/', substr($csv_line, 0, 100), -1, PREG_SPLIT_NO_EMPTY); $csv_nachname = trim($csv_name[0]); $csv_vorname = trim($csv_name[1]); if ($csv_nachname) { if (Request::quoted('csv_import_format') == 'realname') { $csv_users = $this->members->getMemberByIdentification($csv_nachname, $csv_vorname); } elseif (Request::quoted('csv_import_format') == 'username') { $csv_users = $this->members->getMemberByUsername($csv_nachname); } else { $csv_users = $this->members->getMemberByDatafield($csv_nachname, $datafield_id); } } // if found more then one result to given name if (count($csv_users) > 1) { // if user have two accounts $csv_count_present = 0; foreach ($csv_users as $row) { if ($row['is_present']) { $csv_count_present++; } else { $csv_mult_founds[$csv_line][] = $row; } } if (is_array($csv_mult_founds[$csv_line])) { $csv_count_multiple++; } } elseif (count($csv_users) > 0) { $row = reset($csv_users); if (!$row['is_present']) { $consider_contingent = Request::option('consider_contingent_csv'); if (insert_seminar_user($this->course_id, $row['user_id'], 'autor', isset($consider_contingent), $consider_contingent)) { $csv_count_insert++; setTempLanguage($this->user_id); $message = sprintf(_('Sie wurden in die Veranstaltung **%s** eingetragen.'), $this->course_title); restoreLanguage(); $messaging->insert_message($message, $row['username'], '____%system%____', FALSE, FALSE, '1', FALSE, sprintf('%s %s', _('Systemnachricht:'), _('Eintragung in Veranstaltung')), TRUE); } elseif (isset($consider_contingent)) { $csv_count_contingent_full++; } } else { $csv_count_present++; } } else { // not found $csv_not_found[] = stripslashes($csv_nachname) . ($csv_vorname ? ', ' . stripslashes($csv_vorname) : ''); } } } $selected_users = Request::getArray('selected_users'); if (!empty($selected_users) && count($selected_users) > 0) { foreach ($selected_users as $selected_user) { if ($selected_user) { if (insert_seminar_user($this->course_id, get_userid($selected_user), 'autor', isset($consider_contingent), $consider_contingent)) { $csv_count_insert++; setTempLanguage($this->user_id); if ($GLOBALS['SEM_CLASS'][$GLOBALS['SEM_TYPE'][$_SESSION['SessSemName']['art_num']]['class']]['workgroup_mode']) { $message = sprintf(_('Sie wurden manuell in die Veranstaltung **%s** eingetragen.'), $this->course_title); } else { $message = sprintf(_('Sie wurden manuell in die Veranstaltung **%s** eingetragen.'), $this->course_title); } restoreLanguage(); $messaging->insert_message($message, $selected_user, '____%system%____', FALSE, FALSE, '1', FALSE, sprintf('%s %s', _('Systemnachricht:'), _('Eintragung in Veranstaltung')), TRUE); } elseif (isset($consider_contingent)) { $csv_count_contingent_full++; } } } } // no results if (!sizeof($csv_lines) && !sizeof($selected_users)) { PageLayout::postMessage(MessageBox::error(_("Niemanden gefunden!"))); } if ($csv_count_insert) { PageLayout::postMessage(MessageBox::success(sprintf(_('%s Personen in die Veranstaltung eingetragen!'), $csv_count_insert))); } if ($csv_count_present) { PageLayout::postMessage(MessageBox::info(sprintf(_('%s Personen waren bereits in der Veranstaltung eingetragen!'), $csv_count_present))); } // redirect to manual assignment if ($csv_mult_founds) { PageLayout::postMessage(MessageBox::info(sprintf(_('%s Personen konnten <b>nicht eindeutig</b> zugeordnet werden! Nehmen Sie die Zuordnung bitte manuell vor.'), $csv_count_multiple))); $this->flash['csv_mult_founds'] = $csv_mult_founds; $this->redirect('course/members/csv_manual_assignment'); return; } if (count($csv_not_found) > 0) { PageLayout::postMessage(MessageBox::error(sprintf(_('%s konnten <b>nicht</b> zugeordnet werden!'), htmlReady(join(',', $csv_not_found))))); } if ($csv_count_contingent_full) { PageLayout::postMessage(MessageBox::error(sprintf(_('%s Personen konnten <b>nicht</b> zugeordnet werden, da das ausgewählte Kontingent keine freien Plätze hat.'), $csv_count_contingent_full))); } $this->redirect('course/members/index'); }
static function checkLockRule($fields) { $entries = DataField::getDataFields('usersemdata'); foreach ($entries as $id => $entry) { if ($fields[$id] == 1) return true; } return false; }