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