コード例 #1
0
ファイル: Manage.php プロジェクト: romainneutron/Phraseanet
 public function search()
 {
     $offset_start = (int) $this->request->get('offset_start');
     $offset_start = $offset_start < 0 ? 0 : $offset_start;
     $results_quantity = (int) $this->request->get('per_page');
     $results_quantity = $results_quantity < 10 || $results_quantity > 50 ? 20 : $results_quantity;
     $this->query_parms = ['inactives' => $this->request->get('inactives'), 'like_field' => $this->request->get('like_field'), 'like_value' => $this->request->get('like_value'), 'sbas_id' => $this->request->get('sbas_id'), 'base_id' => $this->request->get('base_id'), 'last_model' => $this->request->get('last_model'), 'srt' => $this->request->get("srt", \User_Query::SORT_CREATIONDATE), 'ord' => $this->request->get("ord", \User_Query::ORD_DESC), 'per_page' => $results_quantity, 'offset_start' => $offset_start];
     $query = new \User_Query($this->app);
     if (is_array($this->query_parms['base_id'])) {
         $query->on_base_ids($this->query_parms['base_id']);
     } elseif (is_array($this->query_parms['sbas_id'])) {
         $query->on_sbas_ids($this->query_parms['sbas_id']);
     }
     $this->results = $query->sort_by($this->query_parms["srt"], $this->query_parms["ord"])->like($this->query_parms['like_field'], $this->query_parms['like_value'])->last_model_is($this->query_parms['last_model'])->get_inactives($this->query_parms['inactives'])->include_templates(true)->on_bases_where_i_am($this->app['acl']->get($this->app['authentication']->getUser()), ['canadmin'])->limit($offset_start, $results_quantity)->execute();
     if (null === ($invite = $this->app['manipulator.user']->getRepository()->findByLogin(User::USER_GUEST))) {
         $invite = $this->app['manipulator.user']->createUser(User::USER_GUEST, User::USER_GUEST);
     }
     if (null == ($autoregister = $this->app['manipulator.user']->getRepository()->findByLogin(User::USER_AUTOREGISTER))) {
         $autoregister = $this->app['manipulator.user']->createUser(User::USER_AUTOREGISTER, User::USER_AUTOREGISTER);
     }
     foreach ($this->query_parms as $k => $v) {
         if (is_null($v)) {
             $this->query_parms[$k] = false;
         }
     }
     $query = new \User_Query($this->app);
     $templates = $query->only_templates(true)->execute()->get_results();
     return ['users' => $this->results, 'parm' => $this->query_parms, 'invite_user' => $invite, 'autoregister_user' => $autoregister, 'templates' => $templates];
 }
コード例 #2
0
ファイル: Edit.php プロジェクト: romainneutron/Phraseanet
 public function get_users_rights()
 {
     $list = array_keys($this->app['acl']->get($this->app['authentication']->getUser())->get_granted_base(['canadmin']));
     $sql = "SELECT\n            b.sbas_id,\n            b.base_id,\n            sum(actif) as actif,\n            sum(canputinalbum) as canputinalbum,\n            sum(candwnldpreview) as candwnldpreview,\n            sum(candwnldhd) as candwnldhd,\n            sum(cancmd) as cancmd,\n            sum(nowatermark) as nowatermark,\n\n            sum(canaddrecord) as canaddrecord,\n            sum(canmodifrecord) as canmodifrecord,\n            sum(chgstatus) as chgstatus,\n            sum(candeleterecord) as candeleterecord,\n            sum(imgtools) as imgtools,\n\n            sum(canadmin) as canadmin,\n            sum(canreport) as canreport,\n            sum(canpush) as canpush,\n            sum(manage) as manage,\n            sum(modify_struct) as modify_struct,\n\n            sum(sbu.bas_modif_th) as bas_modif_th,\n            sum(sbu.bas_manage) as bas_manage,\n            sum(sbu.bas_modify_struct) as bas_modify_struct,\n            sum(sbu.bas_chupub) as bas_chupub,\n\n            sum(time_limited) as time_limited,\n            DATE_FORMAT(limited_from,'%Y%m%d') as limited_from,\n            DATE_FORMAT(limited_to,'%Y%m%d') as limited_to,\n\n            sum(restrict_dwnld) as restrict_dwnld,\n            sum(remain_dwnld) as remain_dwnld,\n            sum(month_dwnld_max) as month_dwnld_max,\n\n            sum(mask_and + mask_xor) as masks\n\n            FROM (Users u, bas b, sbas s)\n              LEFT JOIN (basusr bu)\n                ON (bu.base_id = b.base_id AND u.id = bu.usr_id)\n              LEFT join  sbasusr sbu\n                ON (sbu.sbas_id = b.sbas_id AND u.id = sbu.usr_id)\n            WHERE ( (u.id = " . implode(' OR u.id = ', $this->users) . " )\n                    AND b.sbas_id = s.sbas_id\n                    AND (b.base_id = '" . implode("' OR b.base_id = '", $list) . "'))\n            GROUP BY b.base_id\n            ORDER BY s.ord, s.sbas_id, b.ord, b.base_id ";
     $stmt = $this->app['phraseanet.appbox']->get_connection()->prepare($sql);
     $stmt->execute();
     $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $sql = 'SELECT base_id, sum(1) as access FROM basusr
         WHERE (usr_id = ' . implode(' OR usr_id = ', $this->users) . ')
           AND  (base_id = ' . implode(' OR base_id = ', $list) . ')
         GROUP BY base_id';
     $stmt = $this->app['phraseanet.appbox']->get_connection()->prepare($sql);
     $stmt->execute();
     $access = $stmt->fetchAll(\PDO::FETCH_ASSOC);
     $stmt->closeCursor();
     $base_ids = [];
     foreach ($access as $acc) {
         $base_ids[$acc['base_id']] = $acc;
     }
     unset($access);
     foreach ($rs as $k => $row) {
         $rs[$k]['access'] = array_key_exists($row['base_id'], $base_ids) ? $base_ids[$row['base_id']]['access'] : '0';
         foreach ($row as $dk => $data) {
             if (is_null($data)) {
                 $rs[$k][$dk] = '0';
             }
         }
     }
     $query = new \User_Query($this->app);
     $templates = $query->only_templates(true)->execute()->get_results();
     $this->users_datas = $rs;
     $out = ['datas' => $this->users_datas, 'users' => $this->users, 'users_serial' => implode(';', $this->users), 'base_id' => $this->base_id, 'main_user' => null, 'templates' => $templates];
     if (count($this->users) == 1) {
         $usr_id = array_pop($this->users);
         $out['main_user'] = $this->app['manipulator.user']->getRepository()->find($usr_id);
     }
     return $out;
 }