/**
  * Retrieves programs of the currently loged in user
  *
  * @return array an array of com_meego_devprogram_programs objects
  *         null if user is not logged in
  */
 public static function get_open_programs_of_current_user()
 {
     $programs = array();
     // retrieve the user's guid based on the login name
     $user = self::require_login();
     if (!is_object($user)) {
         return null;
     }
     // all devices from this user and by fellow members of the same provider
     $memberships = com_meego_devprogram_membutils::get_memberships_of_current_user();
     foreach ($memberships as $membership) {
         // check status
         if ($membership->status == CMD_MEMBERSHIP_APPROVED) {
             // get device objects
             $devices = com_meego_devprogram_devutils::get_devices(array('provider' => $membership->provider));
             // find all programs belonging all devices found before
             foreach ($devices as $device) {
                 $filters = array('status' => CMD_PROGRAM_OPEN, 'device' => $device->id);
                 $programs = array_merge($programs, self::get_programs($filters));
             }
         }
     }
     return $programs;
 }
 /**
  * Finds devices that belong to the given provider
  *
  * @param integer id of the provider
  * @return boolean true: if provider has devices; false otherwise
  */
 public function has_provider_devices($id = 0)
 {
     $retval = false;
     if ($id) {
         $filters = array('provider' => $id);
         $devices = com_meego_devprogram_devutils::get_devices($filters);
         if (count($devices)) {
             $retval = true;
         }
         unset($filters, $devices);
     }
     return $retval;
 }