Пример #1
0
 /**
  * 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);
     }
 }
Пример #2
0
 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;
 }
Пример #3
0
 /**
  * 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');
 }
Пример #4
0
 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;
 }