예제 #1
0
 function share($hasp = null)
 {
     $result = array("data" => array(), "error" => 1);
     if (empty($hasp)) {
         $user_id = @$this->request->data['user_id'];
         $folder_id = @$this->request->data['folder_id'];
         $this->user_id = $this->User->getUserIdByAPIToken(@$this->request->data['api_token']);
     } else {
         $secret = explode(self::PREFIX, Security::cipher(base64_decode($hasp), Configure::read('Security.salt')));
         if (count($secret) < 4) {
             return $this->redirect(self::APP_STORE);
         }
         $this->user_id = $secret[0];
         $user_id = $secret[1];
         $folder_id = $secret[2];
     }
     if (empty($user_id) || empty($folder_id) || empty($this->user_id)) {
         if (empty($hasp)) {
             return $this->responseOk($result);
         } else {
             return $this->redirect(self::APP_STORE);
         }
     } else {
         $my_user = $this->User->findById($this->user_id);
         $user = $this->User->findById($user_id);
         $folder = $this->FolderUser->find("first", array("conditions" => array("FolderUser.id" => $folder_id, "FolderUser.user_id" => $this->user_id)));
         if (empty($user) || empty($folder) || empty($my_user)) {
             if (empty($hasp)) {
                 return $this->responseOk($result);
             } else {
                 return $this->redirect(self::APP_STORE);
             }
         }
     }
     if (empty($hasp)) {
         $str = $this->randomString();
         $hasp = $this->safe_b64encode(Security::cipher($this->user_id . self::PREFIX . $user_id . self::PREFIX . $folder_id . self::PREFIX . $str, Configure::read('Security.salt')));
         $link = Router::url('/', true) . "Kaopass/share/{$hasp}";
         $result["error"] = 0;
         $result["data"] = $link;
         return $this->responseOk($result);
     } else {
         APP::import("Model", array("FolderShare"));
         $folderShare = new FolderShare();
         $folderShareData = $folderShare->find("first", array("conditions" => array("FolderShare.folder_id" => $folder_id, "FolderShare.user_id" => $user_id)));
         if ($folderShareData) {
             return $this->redirect(self::APP_KAOPASS);
         }
         $dataSave = array('user_id' => $user_id, "folder_id" => $folder_id);
         $folderShare->create();
         $folderShare->save($dataSave);
         return $this->redirect(self::APP_KAOPASS);
     }
 }
예제 #2
0
 /**
  * function  add,copy,move,share .... shop in folder
  * 
  */
 public function copy($call = null)
 {
     APP::import("Model", array("FolderShare"));
     $folder_id = @$this->request->data['folder_id'];
     $this->new_shop = array();
     if (!$folder_id) {
         return $this->responseNg('invalid params.');
     }
     $folderData = $this->FolderUser->findById($folder_id);
     if (!empty($call)) {
         if ($call == ADDSHOP || $call == CUT_SHOP) {
             $params = array('conditions' => array('FolderShop.shop_id' => @$this->request->data['shop_id'], 'FolderShop.folder_id' => @$this->request->data['folder_id']));
             $result = $this->FolderShop->find('first', $params);
             if (!empty($result)) {
                 $this->request->data["message_errors"] = "この店舗は既に追加されています。";
                 return FALSE;
             }
         }
         APP::import("Model", array("FolderShare"));
         $folderShare = new FolderShare();
         $folderShareData = $folderShare->find("first", array('joins' => array(array('table' => 'folders', 'alias' => 'FolderUser', 'type' => 'INNER', 'conditions' => array('FolderUser.id = FolderShare.folder_id', 'FolderUser.type_folder' => FOLDER_NORMAL))), "conditions" => array("FolderShare.folder_id" => $folder_id, "FolderShare.user_id" => $this->user_id)));
         if (!empty($folderShareData["FolderShare"]["id"])) {
             $folderShare->delete($folderShareData["FolderShare"]["id"]);
             $buffer_Folder = $folder = $this->FolderUser->findById($folder_id);
             $oldFolder = array();
             if (!$folder) {
                 return false;
             }
             $folder['FolderUser']['id'] = NULL;
             $folder['FolderUser']['user_id'] = $this->user_id;
             if ($call == CHANGE_FOLDER) {
                 $folder['FolderUser']['type_folder'] = FOLDER_SECRET;
             }
             if ($call == RENAME) {
                 $folder['FolderUser']['name'] = $this->request->data['name'];
             }
             $saveFolder = $this->FolderUser->save($folder);
             if (!$saveFolder) {
                 return false;
             }
             $shop_id = NULL;
             switch ($call) {
                 case ADDSHOP:
                     $shop_id = $this->addFriendshop($folder_id, $saveFolder);
                     break;
                 case CUT_SHOP:
                     $shop_id = $this->cutFriendshop($folder_id, $saveFolder);
                     break;
                 case ADD_INPUT_SHOP:
                     $shop_id = $this->inputFriendshop($folder_id, $saveFolder);
                     break;
                 case UPDATE:
                     $shops = @$this->request->data['shops'];
                     if (!empty($shops)) {
                         $shops_arr = explode(',', $shops);
                         $shop_id = $this->updateFriendshop($saveFolder, $shops_arr);
                     } else {
                         return $saveFolder["FolderUser"]["id"];
                     }
                     break;
                 case UPLOAD:
                     $shop_id = $this->uploadFriendshop($folder_id, $saveFolder);
                     break;
                 case MOVE_SHOP:
                     $shop_id = $this->moveFriendshop($folder_id, $saveFolder);
                     break;
                 case CHANGE_FOLDER:
                     $shop_id = $this->changeFriendFolder($folder_id, $saveFolder);
                     break;
                 case RENAME:
                     $shop_id = $this->renameFriendFolder($folder_id, $saveFolder);
                     break;
             }
             if (!empty($this->new_shop)) {
                 return $this->saveShopFolder($saveFolder, $shop_id, $call, $buffer_Folder);
             }
         } else {
             switch ($call) {
                 case ADDSHOP:
                     return $this->addMyShop($folder_id, $folderData);
                 case CUT_SHOP:
                     return $this->cutMyShop($folder_id, $folderData);
                 case ADD_INPUT_SHOP:
                     return $this->inputMyShop($folder_id, $folderData);
                 case UPDATE:
                     return $this->updateMyShop($folder_id, $folderData);
                 case UPLOAD:
                     return $this->uploadMyshop($folder_id, $folderData);
                 case MOVE_SHOP:
                     return $this->moveMyshop($folder_id, $folderData);
                 case CHANGE_FOLDER:
                     return $this->changeMyFolder($folder_id);
                 case RENAME:
                     return $this->renameMyFolder($folder_id);
             }
             return true;
         }
         return true;
     }
 }