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); } }
/** * 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; } }