/** * add a link to another artefact * use this function, as it makes sure the artefact we're linking to is included * in the feed. * * @param ArtefactType $artefact artefact to link to * @param string rel the LEAP relationship to use */ public function add_artefact_link(ArtefactType $artefact, $rel) { if (array_key_exists($artefact->get('id'), $this->exporter->get('artefacts'))) { $this->add_generic_link('artefact' . $artefact->get('id'), $rel); } }
public function data_mapping(ArtefactType $artefact) { $artefacttype = $artefact->get('artefacttype'); $artefactnote = $artefact->get('note'); // Mapping shouldn't contain 'socialprofile' artefacttype // which is handled separately... static $mapping = array('firstname' => 'legal_given_name', 'lastname' => 'legal_family_name', 'preferredname' => 'preferred_given_name', 'email' => 'email', 'blogaddress' => 'website', 'personalwebsite' => 'website', 'officialwebsite' => 'website', 'mobilenumber' => 'mobile', 'businessnumber' => 'workphone', 'homenumber' => 'homephone', 'faxnumber' => 'fax'); static $spacialmapping = array('country' => 'country', 'city' => 'addressline', 'town' => 'addressline', 'address' => 'addressline'); if (array_key_exists($artefacttype, $mapping)) { return array('field' => $mapping[$artefacttype]); } if ($artefacttype == 'socialprofile') { if (in_array($artefactnote, ArtefactTypeSocialprofile::$socialnetworks)) { // Export old messaging system accounts as // persondata fields with leap:field="id". return array('field' => 'id', 'service' => $artefactnote); } else { // Export new social site profiles as persondata fields // with leap:field="website" (what they basically are). return array('field' => 'website'); } } if (array_key_exists($artefacttype, $spacialmapping)) { $result = array('spacial' => true, 'type' => $spacialmapping[$artefacttype]); if ($artefacttype == 'country') { require_once 'country.php'; $result['countrycode'] = Country::iso3166_1alpha2_to_iso3166_1alpha3($artefact->get('title')); } return $result; } if ($artefacttype == 'studentid') { return array('field' => 'other', 'label' => 'Student ID'); } /* 'industry // not part of persondata 'occupation // not part of persondata 'introduction // not part of persondata */ return false; }
/** * Indicates whether the user has permission to use the artefact in their own Pages. The name * refers to the "publish" permission for group files. * * If a user has "publish" permission on an artefact, it is assumed the also have "edit" and * "view" permission (i.e. can view it in the artefact chooser -- see $USER->can_view_artefact()) * * @param ArtefactType $a * @return boolean */ public function can_publish_artefact($a) { $parent = $a->get_parent_instance(); if ($parent) { if (!$this->can_view_artefact($parent)) { return false; } } if ($this->get('id') and $this->get('id') == $a->get('owner')) { return true; } if ($i = $a->get('institution')) { if ($i == 'mahara') { return $this->get('admin'); } return $this->in_institution($i) || $this->can_edit_institution($i); } if (!($group = $a->get('group'))) { return false; } require_once 'group.php'; if (!($role = group_user_access($group, $this->id))) { return false; } if ($role == 'admin') { return true; } if ($this->id == $a->get('author')) { return true; } return $a->role_has_permission($role, 'republish'); }
public function data_mapping(ArtefactType $artefact) { $artefacttype = $artefact->get('artefacttype'); static $mapping = array('firstname' => 'legal_given_name', 'lastname' => 'legal_family_name', 'preferredname' => 'preferred_given_name', 'email' => 'email', 'blogaddress' => 'website', 'personalwebsite' => 'website', 'officialwebsite' => 'website', 'mobilenumber' => 'mobile', 'businessnumber' => 'workphone', 'homenumber' => 'homephone', 'faxnumber' => 'fax'); static $idmapping = array('jabberusername' => 'jabber', 'skypeusername' => 'skype', 'yahoochat' => 'yahoo', 'aimscreenname' => 'aim', 'msnnumber' => 'msn', 'icqnumber' => 'icq'); static $spacialmapping = array('country' => 'country', 'city' => 'addressline', 'town' => 'addressline', 'address' => 'addressline'); if (array_key_exists($artefacttype, $mapping)) { return array('field' => $mapping[$artefacttype]); } if (array_key_exists($artefacttype, $idmapping)) { return array('field' => 'id', 'service' => $idmapping[$artefacttype]); } if (array_key_exists($artefacttype, $spacialmapping)) { $result = array('spacial' => true, 'type' => $spacialmapping[$artefacttype]); if ($artefacttype == 'country') { require_once 'country.php'; $result['countrycode'] = Country::iso3166_1alpha2_to_iso3166_1alpha3($artefact->get('title')); } return $result; } if ($artefacttype == 'studentid') { return array('field' => 'other', 'label' => 'Student ID'); } /* 'industry // not part of persondata 'occupation // not part of persondata 'introduction // not part of persondata */ return false; }