Beispiel #1
0
 public function __construct(PlIterator $it, array $pids, $fields = 0x0, $visibility = null)
 {
     require_once 'profilefields.inc.php';
     if ($visibility === null) {
         $visibility = Visibility::defaultForRead();
     }
     $this->fields = $fields;
     $this->visibility = $visibility;
     $subits = array();
     $callbacks = array();
     $subits[0] = $it;
     $callbacks[0] = PlIteratorUtils::arrayValueCallback('pid');
     $cb = PlIteratorUtils::objectPropertyCallback('pid');
     $fields = $fields & self::FETCH_ALL;
     for ($field = 1; $field < $fields; $field *= 2) {
         if ($fields & $field) {
             $callbacks[$field] = $cb;
             $subits[$field] = new ProfileFieldIterator($field, $pids, $visibility);
         }
     }
     $this->iterator = PlIteratorUtils::parallelIterator($subits, $callbacks, 0);
 }
Beispiel #2
0
 public static function fetchData(array $pids, Visibility $visibility)
 {
     $data = XDB::iterator('SELECT  ppss.pid, ppss.exposed_uid, ppss.sharing_level,
                                    ppss.allow_email, ppss.partner_id,
                                    ppse.shortname AS partner_shortname,
                                    ppse.name AS partner_name,
                                    ppse.url AS partner_url
                              FROM  profile_partnersharing_settings AS ppss
                         LEFT JOIN  profile_partnersharing_enum AS ppse ON (ppss.partner_id = ppse.id)
                             WHERE  ppss.pid IN {?}
                          ORDER BY  ' . XDB::formatCustomOrder('ppss.pid', $pids), $pids);
     return PlIteratorUtils::subIterator($data, PlIteratorUtils::arrayValueCallback('pid'));
 }