Changeset 20329 for events

Show
Ignore:
Timestamp:
10/01/08 03:41:41 (2 months ago)
Author:
sabel
Message:

improvement

Location:
events/phpframework/sabel/trunk
Files:
4 added
24 modified

Legend:

Unmodified
Added
Removed
  • events/phpframework/sabel/trunk/PHWITTR.TXT

    r20153 r20329  
    3030 
    3131  運用時はENVIRONMENTをPRODUCTIONにしてください 
     32 
     33  * PRODUCTIONではテンプレートや一部のデータがキャッシュされます 
     34    テンプレートを修正した場合は'cache/templates/'の下を削除してください 
     35    データベースのデータを直接変更した場合は'cache/user/'の下を削除してください 
    3236 
    3337================================================================================ 
  • events/phpframework/sabel/trunk/Sabel/sabel/Context.php

    r20236 r20329  
    6868  } 
    6969   
     70  public static function getResponse() 
     71  { 
     72    $context = self::getContext(); 
     73    return ($context->bus) ? $context->bus->get("response") : null; 
     74  } 
     75   
    7076  public static function getDestination() 
    7177  { 
     
    8692  } 
    8793   
    88   public static function getResponse() 
     94  public static function getView() 
    8995  { 
    9096    $context = self::getContext(); 
    91     return ($context->bus) ? $context->bus->get("response") : null; 
     97    return ($context->bus) ? $context->bus->get("view") : null; 
    9298  } 
    9399} 
  • events/phpframework/sabel/trunk/Sabel/sabel/ValueObject.php

    r20063 r20329  
    8686      throw new Sabel_Exception_InvalidArgument($message); 
    8787    } 
     88     
     89    return $this; 
    8890  } 
    8991} 
  • events/phpframework/sabel/trunk/addon/renderer/sabel/Replacer.php

    r20065 r20329  
    174174    } else { 
    175175      $fmt = '<?php echo $this->partial("%s", %s) ?>'; 
    176       $assign  = preg_match_replace("/'.+[^\\\\]'/U", ",", "_%CMM%_", $assign); 
     176      $assign  = preg_match_replace("/'.*[^\\\\]'/U", ",", "_%CMM%_", $assign); 
    177177      $assigns = explode(",", $assign); 
    178178      if (strpos($assigns[0], ":") === false) { 
  • events/phpframework/sabel/trunk/app/aspects/Transaction.php

    r20065 r20329  
    88     
    99    try { 
     10      l("before: transaction"); 
    1011      $result = $inv->proceed(); 
     12      l("after: transaction"); 
    1113      Sabel_Db_Transaction::commit(); 
    1214      return $result; 
  • events/phpframework/sabel/trunk/app/controllers/Application.php

    r20073 r20329  
    2424    $aclUser->isProtected = $aUser->isProtected(); 
    2525  } 
    26    
    27   protected function assignUserSubmenu() 
    28   { 
    29     $user = $this->aclUser; 
    30     $userData = $this->getUserData($user->id); 
    31      
    32     if ($user->isProtected) { 
    33       $userData->requestCount = Request::getRequestsCount($user->id); 
    34     } 
    35      
    36     $userData->name  = $user->name; 
    37     $userData->image = $user->image; 
    38     $userData->latestComment = Status::getLatestCommentByUserId($user->id); 
    39      
    40     $renderer = $this->view->getRenderer(); 
    41     $contents = file_get_contents( 
    42       MODULES_DIR_PATH . DS . VIEW_DIR_NAME . DS . "submenu" . DS . "user.tpl" 
    43     ); 
    44      
    45     $this->submenuHtml = $renderer->rendering($contents, array("userData" => $userData)); 
    46   } 
    47    
    48   protected function assignOthersSubmenu($userId, $userName = null) 
    49   { 
    50     $userData = $this->getUserData($userId); 
    51      
    52     if ($userName === null) { 
    53       $aUser = new User($userId); 
    54       $userData->name = $aUser->user_name; 
    55     } else { 
    56       $userData->name = $userName; 
    57     } 
    58      
    59     $renderer = $this->view->getRenderer(); 
    60     $contents = file_get_contents( 
    61       MODULES_DIR_PATH . DS . VIEW_DIR_NAME . DS . "submenu" . DS . "others.tpl" 
    62     ); 
    63      
    64     $this->submenuHtml = $renderer->rendering($contents, array("userData" => $userData)); 
    65   } 
    66    
    67   private function getUserData($userId) 
    68   { 
    69     return Sabel_ValueObject::fromArray(array( 
    70       "userId"         => $userId, 
    71       "friends"        => Follower::getFriends($userId, FRIENDS_ICON_LIMIT + 1), 
    72       "friendsCount"   => Follower::getFriendsCount($userId), 
    73       "followersCount" => Follower::getFollowersCount($userId), 
    74       "statusesCount"  => Status::getCountByUserId($userId) 
    75     )); 
    76   } 
    7726} 
  • events/phpframework/sabel/trunk/app/helpers/application.php

    r20238 r20329  
    6767} 
    6868 
    69 /* 
    70 function to_date($date, $format) 
    71 { 
    72   return Helpers_Date::format($date, constant("Helpers_Date::" . $format)); 
    73 } 
    74  
    75 function __include($uri, $values = array(), $method = Sabel_Request::GET, $withLayout = false) 
    76 { 
    77   $requester = new Sabel_Request_Internal($method); 
    78   $requester->values($values)->withLayout($withLayout); 
    79   return $requester->request($uri)->getResult(); 
    80 } 
    81 */ 
    82  
    8369function datetime($date, $format = "m/d H:i") 
    8470{ 
  • events/phpframework/sabel/trunk/app/index/controllers/Friendship.php

    r20073 r20329  
    4646     
    4747    if ($success) { 
    48       $aUser = new User($this->id); 
    49       $this->redirect->to("n: users, c: {$aUser->user_name}, a: "); 
     48      if (!$this->isAjaxRequest()) { 
     49        $aUser = new User($this->id); 
     50        $this->redirect->to("n: users, c: {$aUser->user_name}, a: "); 
     51      } 
    5052    } else { 
    5153      $this->badRequest(); 
     
    5557  public function requests() 
    5658  { 
    57     $this->assignUserSubmenu(); 
     59    $this->submenu->setUser($this->aclUser->id); 
    5860    $this->requests = Request::getRequestsByUserId($this->aclUser->id); 
    5961     
  • events/phpframework/sabel/trunk/app/index/controllers/Index.php

    r20238 r20329  
    1212  public function timeline() 
    1313  { 
     14    // これしょぼす 
    1415    $this->rsslink = '<link rel="alternate" type="application/rss+xml" ' 
    1516                   . 'title="Phwittr public timeline" ' 
     
    2223      $this->clientId = $this->session->getClientId(); 
    2324      $this->isProtected = $this->aclUser->isProtected; 
    24       $this->assignUserSubmenu(); 
     25      $this->submenu->setUser($this->aclUser->id); 
    2526    } 
    2627  } 
     
    7374     
    7475    if ($isSelf) { 
    75       $this->assignUserSubmenu(); 
     76      $this->submenu->setUser($this->aclUser->id); 
    7677    } else { 
    77       $this->assignOthersSubmenu($aUser->id, $aUser->name); 
     78      $this->submenu->setUser($aUser->id, Views_Submenu::TYPE_OTHERS); 
    7879    } 
    7980  } 
  • events/phpframework/sabel/trunk/app/index/controllers/Status.php

    r20065 r20329  
    4545      $this->badRequest(); 
    4646    } else { 
    47       $aStatus = new Status($this->param); 
    48       if ($aStatus->user_id === $this->aclUser->id) { 
    49         $aStatus->delete(); 
    50       } 
     47      $this->getLogic("status")->remove($this->aclUser->id, $this->param); 
    5148    } 
    5249  } 
  • events/phpframework/sabel/trunk/app/index/controllers/User.php

    r20153 r20329  
    1111  { 
    1212    if ($this->response->isSuccess() && $this->action !== "logout") { 
    13       $this->assignUserSubmenu(); 
     13      $this->submenu->setUser($this->aclUser->id); 
    1414    } 
    1515  } 
  • events/phpframework/sabel/trunk/app/index/controllers/Users.php

    r20238 r20329  
    1010    if ($this->aUser = $this->fetchModel("User", array("user_name" => $parts[0]))) { 
    1111      if ($this->aUser->isActive()) { 
    12         $this->assignOthersSubmenu($this->aUser->id, $this->aUser->name); 
     12        $this->submenu->setUser($this->aUser->id, Views_Submenu::TYPE_OTHERS); 
    1313      } else { 
    1414        $this->notFound(); 
  • events/phpframework/sabel/trunk/app/logics/DI.php

    r20074 r20329  
    1111    } 
    1212     
    13     $this->aspect("Logics_Base")->annotate( 
    14       "transaction", array("Aspects_Transaction") 
    15     ); 
     13    if (ENVIRONMENT === PRODUCTION) { 
     14      $this->bind("Mail")->to("Mail_Object"); 
     15    } else { 
     16      $this->bind("Mail")->to("Mail_Mock"); 
     17    } 
     18     
     19    $aspect = $this->aspect("Logics_Base"); 
     20    $aspect->annotate("transaction", array("Aspects_Transaction")); 
     21     
     22    if ((ENVIRONMENT & PRODUCTION) > 0) { 
     23      $aspect->annotate("userCache", array("Aspects_UserCache")); 
     24    } 
    1625  } 
    1726} 
  • events/phpframework/sabel/trunk/app/logics/Follow.php

    r20074 r20329  
    44{ 
    55  /** 
     6   * @userCache 
     7   * 
    68   * @param int $userId   ユーザID 
    79   * @param int $targetId フォローするユーザのID 
     
    2325          "created_at" => now() 
    2426        )); 
     27         
     28        $result->addType = "request"; 
    2529      } else { 
    2630        $follower = new Follower(); 
     
    3034          "created_at" => now() 
    3135        )); 
     36         
     37        $result->addType = "follow"; 
    3238      } 
    3339    } else { 
     
    3945   
    4046  /** 
     47   * @userCache 
     48   * 
    4149   * @param int $userId   ユーザID 
    4250   * @param int $targetId フォロー中ユーザのID 
     
    5664        $request->setCondition("request_id", $targetId); 
    5765        $request->delete(); 
     66        $result->removeType = "request"; 
    5867      } else { 
    5968        $follower = new Follower(); 
     
    6170        $follower->setCondition("follow_id", $targetId); 
    6271        $follower->delete(); 
     72        $result->removeType = "follow"; 
    6373      } 
    6474    } else { 
     
    7181  /** 
    7282   * @transaction 
     83   * @userCache 
    7384   * 
    7485   * @param int $userId      リクエストされたユーザのID 
  • events/phpframework/sabel/trunk/app/logics/Status.php

    r20074 r20329  
    55  /** 
    66   * @transaction 
     7   * @userCache 
    78   * 
    89   * @param int    $userId  ユーザID 
     
    3435    return $result; 
    3536  } 
     37   
     38  /** 
     39   * @userCache 
     40   * 
     41   * @param int $userId   ユーザID 
     42   * @param int $statusId ステータスID 
     43   * 
     44   * @return Logics_Result 
     45   */ 
     46  public function remove($userId, $statusId) 
     47  { 
     48    $result  = new Logics_Result(); 
     49    $aStatus = new Status($statusId); 
     50     
     51    if ($aStatus->isSelected() && $aStatus->user_id === $userId) { 
     52      $aStatus->delete(); 
     53    } else { 
     54      $result->failure(); 
     55    } 
     56     
     57    return $result; 
     58  } 
    3659} 
  • events/phpframework/sabel/trunk/app/models/Status.php

    r20073 r20329  
    88  { 
    99    $status = new self(); 
     10    $status->setProjection(array("comment")); 
    1011    $status->setCondition("user_id", $userId); 
    1112    $status->setOrderBy("created_at", "desc"); 
     
    1314     
    1415    $statuses = $status->select(); 
    15     return (isset($statuses[0])) ? $statuses[0] : null; 
     16    return (isset($statuses[0])) ? $statuses[0]->comment : ""; 
    1617  } 
    1718   
  • events/phpframework/sabel/trunk/app/views/layout.tpl

    r20065 r20329  
    4242         
    4343        <div id="subMenu"> 
    44           <if isset="$submenuHtml"> 
    45             <?e $submenuHtml ?> 
    46           <else /> 
    47             <partial name="submenu/default" /> 
    48           </if> 
     44          <?e $submenuHtml ?> 
    4945           
    5046          <p class="poweredBy"> 
  • events/phpframework/sabel/trunk/app/views/submenu/others.tpl

    r20074 r20329  
    3030</ul> 
    3131 
    32 <? $uri = uri("n: users, c: {$userData->name}, a: friends") ?> 
    33 <partial name="submenu/_friendIcons" assign="userData: $userData, toAllFriends: $uri" /> 
     32<? $_uri = uri("n: users, c: {$userData->name}, a: friends") ?> 
     33<partial name="submenu/_friendIcons" assign="userData: $userData, toAllFriends: $_uri" /> 
  • events/phpframework/sabel/trunk/app/views/submenu/user.tpl

    r20065 r20329  
    1717<p id="latestComment"> 
    1818  <if expr="$userData->latestComment"> 
    19     <?e $userData->latestComment->comment|showComment ?> 
     19    <?e $userData->latestComment|showComment ?> 
    2020  </if> 
    2121</p> 
     
    3838</ul> 
    3939 
    40 <? $uri = uri("n: default, c: user, a: friends") ?> 
    41 <partial name="submenu/_friendIcons" assign="userData: $userData, toAllFriends: $uri" /> 
     40<? $_uri = uri("n: default, c: user, a: friends") ?> 
     41<partial name="submenu/_friendIcons" assign="userData: $userData, toAllFriends: $_uri" /> 
  • events/phpframework/sabel/trunk/config/DI.php

    r20065 r20329  
    55  public function configure() 
    66  { 
    7     if (ENVIRONMENT === PRODUCTION) { 
    8       $this->bind("Mail")->to("Mail_Object"); 
    9     } else { 
    10       $this->bind("Mail")->to("Mail_Mock"); 
    11     } 
     7     
    128  } 
    139} 
  • events/phpframework/sabel/trunk/config/environment.php

    r20065 r20329  
    44 * define sabel environment. 
    55 */ 
    6 // if (!defined("ENVIRONMENT")) define("ENVIRONMENT", PRODUCTION); 
     6if (!defined("ENVIRONMENT")) define("ENVIRONMENT", PRODUCTION); 
    77// if (!defined("ENVIRONMENT")) define("ENVIRONMENT", BENCHMARK); 
    88// if (!defined("ENVIRONMENT")) define("ENVIRONMENT", TEST); 
  • events/phpframework/sabel/trunk/lib/AjaxResult.php

    r20065 r20329  
    66  { 
    77    $this->success(); 
     8     
     9    $this->useTemplate = false; 
    810  } 
    911   
  • events/phpframework/sabel/trunk/lib/processor/Action.php

    r20238 r20329  
    2727      $controller->setAttribute("ajax", new AjaxResult()); 
    2828    } 
     29     
     30    $controller->setAttribute("submenu", new Views_Submenu()); 
    2931     
    3032    try { 
  • events/phpframework/sabel/trunk/lib/processor/View.php

    r20238 r20329  
    4646    if ($response->isRedirected()) return; 
    4747     
    48     $controller = $bus->get("controller"); 
    49     $responses  = $response->getResponses(); 
    50     $contents   = (isset($responses["contents"])) ? $responses["contents"] : ""; 
     48    $responses = $response->getResponses(); 
     49    $contents  = (isset($responses["contents"])) ? $responses["contents"] : ""; 
    5150     
    5251    $isAjax = $bus->get("AJAX_REQUEST"); 
    53      
    54     // @todo... 
    55     if ($isAjax && isset($responses["ajax"])) { 
     52    if ($isAjax && isset($responses["ajax"]) && !$responses["ajax"]->useTemplate) { 
    5653      return $bus->set("result", $responses["ajax"]->toString()); 
    5754    } 
     
    6259      if ($location = $view->getValidLocation()) { 
    6360        $contents = $view->rendering($location, $responses); 
    64       } elseif (!$controller->isExecuted()) { 
     61      } elseif (!$bus->get("controller")->isExecuted()) { 
    6562        $response->getStatus()->setCode(Sabel_Response::NOT_FOUND); 
    6663        if ($location = $view->getValidLocation("notFound")) { 
     
    7572      $bus->set("result", $contents); 
    7673    } else { 
    77       $layout = DEFAULT_LAYOUT_NAME; 
    7874      if ($response->isFailure()) { 
    7975        $layout = "noColumnLayout"; 
    80       } elseif (isset($responses["layout"])) { 
    81         $layout = $responses["layout"]; 
     76      } else { 
     77        $layout = (isset($responses["layout"])) ? $responses["layout"] : DEFAULT_LAYOUT_NAME; 
     78        if (isset($responses["submenu"])) { 
     79          $submenu = $responses["submenu"]; 
     80          $responses["submenuHtml"] = $submenu->merge($responses)->rendering($view->getRenderer());; 
     81        } 
    8282      } 
    8383