/** * * @PublicPage * @NoAdminRequired * @NoCSRFRequired * * @param $share * @return TemplateResponse */ public function publicChart($share) { $project = $this->connect->project()->getShare($share); $params = ['template' => 'guest', 'protected' => false, 'wrongpw' => false, 'requesttoken' => false]; if ($project['open'] == 1 && $project['is_share'] == 1) { // static requesttoken $params['requesttoken'] = md5($project['share_password'] . md5($project['share_link'])); // share time is over if ($project['share_is_expire'] == '1' && strtotime($project['share_expire_time']) < time()) { $params['protected'] = true; $params['template'] = 'guest'; } else { // $session_publickey = Helper::session('publickey'); if (!empty($session_publickey) && $session_publickey == $params['requesttoken']) { $params['template'] = 'project'; } else { if ($project['share_is_protected'] == 1) { $post_requesttoken = Helper::get('requesttoken'); $post_password = Helper::get('password'); $params['protected'] = true; $params['template'] = 'authenticate'; if ($post_requesttoken == $params['requesttoken'] && md5($post_password) == $project['share_password']) { Helper::session('publickey', $params['requesttoken']); $params['template'] = 'project'; } else { if (!empty($post_password)) { $params['wrongpw'] = true; } } } else { $params['template'] = 'project'; } } } } if ($params['template'] == 'guest') { $template = new \OCP\Template('', '404', 'guest'); $template->printPage(); exit; } if ($params['template'] == 'authenticate') { return new TemplateResponse($this->appName, 'authenticate', ['wrongpw' => $params['wrongpw'], 'requesttoken' => $params['requesttoken']], 'guest'); } if ($params['template'] == 'project') { unset($project['is_share']); unset($project['share_link']); unset($project['share_is_protected']); unset($project['share_password']); unset($project['share_is_expire']); unset($project['share_expire_time']); $jsonData = ['project' => $project, 'tasks' => $this->connect->task()->get(), 'links' => $this->connect->link()->get()]; $params = ['current_user' => null]; return new TemplateResponse($this->appName, 'main', $params); } }
/** * Common updater, save all task and links * @param $data * @return DataResponse */ public function saveall($data) { $params = ['error' => null, 'errorinfo' => '']; $project = false; $tasks = false; $links = false; $params['tasksdecode'] = json_decode($data['tasks']); try { $tasks = isset($data['tasks']) ? json_decode($data['tasks'], true) : false; } catch (\Exception $error) { $params['errorinfo'] .= "tasks json_decode error"; } try { $links = isset($data['links']) ? json_decode($data['links'], true) : false; } catch (\Exception $error) { $params['errorinfo'] .= "links json_decode error"; } try { $project = isset($data['project']) ? json_decode($data['project'], true) : false; } catch (\Exception $error) { $params['errorinfo'] .= "project json_decode error"; } if ($this->isAdmin && ($tasks || $links)) { $params['isadmin'] = true; $this->connect->db->beginTransaction(); if (is_array($tasks) and count($tasks) > 0) { $this->connect->task()->clear(); $params['SQL_tasks'] = $this->connect->task()->add($tasks); $params['SQL_tasks_Error'] = $this->connect->db->errorInfo(); } if (is_array($links) and count($links) > 0) { $this->connect->link()->clear(); $params['SQL_links'] = $this->connect->link()->add($links); $params['SQL_links_Error'] = $this->connect->db->errorInfo(); } $this->connect->db->commit(); if ((int) $this->connect->db->errorCode() == 0) { $calEncodeData = 'key=jasj765Uyt87ouIIfars&app=owncollab_chart'; $calUrl = \OC::$server->getURLGenerator()->getAbsoluteURL('index.php/apps/owncollab_calendar/updates'); ob_start(); system('curl -k --request POST "' . $calUrl . '" --data "' . $calEncodeData . '"'); ob_clean(); } } return new DataResponse($params); }