root/events/phpframework/sabel/trunk/app/logics/User.php @ 20074

Revision 20074, 2.6 kB (checked in by sabel, 5 years ago)

minor updates

Line 
1<?php
2
3class Logics_User extends Logics_Base
4{
5  /**
6   * @var Imanage
7   */
8  protected $imanage = null;
9 
10  public function setImanage(Imanage $imanage)
11  {
12    $this->imanage = $imanage;
13  }
14 
15  /**
16   * @transaction
17   *
18   * @param User $aUser
19   *
20   * @return Logics_Result
21   */
22  public function updateSettings(User $aUser)
23  {
24    $result = new Logics_Result();
25    $result->aUser = $aUser;
26   
27    if ($errors = $this->validateModel($aUser)) {
28      return $result->setErrors($errors);
29    }
30   
31    $aUser->save();
32    if (!$aUser->private_flag) {
33      $request = new Request();
34      if ($requests = $request->select("request_id", $aUser->id)) {
35        foreach ($requests as $aRequest) {
36          $aFollower = new Follower();
37          $aFollower->save(array(
38            "user_id"    => $aRequest->user_id,
39            "follow_id"  => $aRequest->request_id,
40            "created_at" => now()
41          ));
42         
43          $aRequest->delete();
44        }
45      }
46    }
47   
48    return $result;
49  }
50 
51  /**
52   * @param int    $userId   ユーザID
53   * @param string $resource 画像データ
54   *
55   * @return Logics_Result
56   */
57  public function uploadIcon($userId, $resource)
58  {
59    $result = new Logics_Result();
60   
61    if ($this->imanage->validate($resource)) {
62      $aUser = new User($userId);
63      if ($aUser->isActive()) {
64        if ($aUser->image !== DEFAULT_IMAGE_NAME) {
65          $this->imanage->delete($aUser->image);
66        }
67       
68        $aUser->save(array("image" => $this->imanage->upload($resource)));
69        $result->aUser = $aUser;
70      } else {
71        throw new Exception_UserNotFound(__METHOD__);
72      }
73    } else {
74      $result->setErrors(array("サイズが大きすぎるか、非対応のフォーマットです"));
75    }
76   
77    return $result;
78  }
79 
80  /**
81   * @transaction
82   *
83   * @param int $userId ユーザID
84   *
85   * @return Logics_Result
86   */
87  public function destroy($userId)
88  {
89    $result = new Logics_Result();
90    $aUser  = new User($userId);
91   
92    if ($aUser->isSelected()) {
93      $or = new Sabel_Db_Condition_Or();
94      $or->add(C::create(C::EQUAL, "user_id", $aUser->id));
95      $or->add(C::create(C::EQUAL, "request_id", $aUser->id));
96      $request = new Request();
97      $request->delete($or);
98     
99      $or = new Sabel_Db_Condition_Or();
100      $or->add(C::create(C::EQUAL, "user_id", $aUser->id));
101      $or->add(C::create(C::EQUAL, "follow_id", $aUser->id));
102      $follower = new Follower();
103      $follower->delete($or);
104     
105      $status = new Status();
106      $status->delete("user_id", $userId);
107     
108      $aUser->save(array("delete_flag" => true));
109    }
110   
111    return $result;
112  }
113}
Note: See TracBrowser for help on using the browser.