示例#1
0
 public function RefreshTokenAction($data_connector_id)
 {
     $data_connector = DataConnector::findFirstByid($data_connector_id);
     $parameters = (array) json_decode($data_connector->parameters, true);
     if (array_key_exists('auth', $parameters)) {
         $provider = new $this->provider_name(['clientId' => $parameters['auth']['client_id'], 'clientSecret' => $parameters['auth']['client_secret'], 'redirectUri' => "http://" . $_SERVER['HTTP_HOST'] . "/Authenticators/" . $this->dispatcher->getControllerName()]);
     }
     $storage_data = (array) json_decode($data_connector->storage, true);
     $grant = new \League\OAuth2\Client\Grant\RefreshToken();
     $token = $provider->getAccessToken($grant, ['refresh_token' => $storage_data['refresh_token']]);
     if ($this->authorizationHeader == null) {
         $this->authorizationHeader = $provider->authorizationHeader;
     }
     $storage_data['Authorization'] = $this->authorizationHeader . " " . $token->accessToken;
     $data_connector->storage = json_encode($storage_data);
     $data_connector->save();
     return '<h1>Refreshing Token Was Successful</h1>';
 }
 public function updateAction($data_connector_id)
 {
     set_time_limit(500);
     $data_connector = DataConnector::findFirstByid($data_connector_id);
     $parameters = (array) json_decode($data_connector->parameters, true);
     $parm_in = array();
     $parm_in["query"]['folder'] = $parameters['google_parm']["folder"];
     $folder_structure = json_decode($this->getResultsOverrideAction($data_connector_id, "GET", $parameters['google_parm']["macro_url"], json_encode($parm_in), true));
     $data = array();
     foreach ($folder_structure as $l1key => $l1value) {
         if (property_exists($l1value, "type")) {
         } else {
             foreach ($l1value->children as $l2key => $l2value) {
                 if (property_exists($l2value, "type")) {
                     $newController = new \PRIME\DataConnectors\Google\DriveFileController();
                     $newController->initialize();
                     $data[$l1key][$l2key] = $newController->updateAction(1, $l2value->id);
                     $this->writeMysql($data_connector_id, $data[$l1key][$l2key]);
                 }
             }
         }
     }
     return;
 }
 public function writeMysql($data_connector_id, $data, $queryType = "override", $primary_key = "auto")
 {
     $data_connector = DataConnector::findFirstByid($data_connector_id);
     $database = OrgDatabase::findFirstByorganisation_id($data_connector->organisation_id);
     $connection = new \Phalcon\Db\Adapter\Pdo\Mysql(array('host' => $database->db_host, 'username' => $database->db_username, 'password' => $database->db_password, 'dbname' => $database->db_name));
     if ($queryType == "override") {
         $sql = "DROP TABLE IF EXISTS " . preg_replace("/[^A-Za-z0-9 ]/", "_", $data_connector->type) . "_" . $data_connector_id;
     }
     $sql = "CREATE TABLE IF NOT EXISTS " . preg_replace("/[^A-Za-z0-9 ]/", "_", $data_connector->type) . "_" . $data_connector_id . "(";
     foreach ($data['headings'] as $key => $column_name) {
         $type = gettype($data['0'][$key]);
         if ('string' == gettype($data['0'][$key])) {
             if (is_numeric($data['0'][$key])) {
                 if ((int) $data['0'][$key] == (double) $data['0'][$key]) {
                     $type = "integer";
                 } else {
                     $type = "double";
                 }
             } else {
                 if (strtotime($data['0'][$key]) != false) {
                     $type = "date";
                 } else {
                 }
             }
         }
         if ($type == "integer") {
             $sql = $sql . "`" . $column_name . "` int DEFAULT NULL, ";
         } elseif ($type == "double") {
             $sql = $sql . "`" . $column_name . "` real DEFAULT NULL, ";
         } elseif ($type == "date") {
             $sql = $sql . "`" . $column_name . "` datetime DEFAULT NULL, ";
         } else {
             $sql = $sql . "`" . $column_name . "` varchar(255) DEFAULT NULL, ";
         }
     }
     if ($primary_key == "auto") {
         $sql = $sql . "id INT NOT NULL AUTO_INCREMENT PRIMARY KEY";
     } elseif ($primary_key == "first") {
         $sql = $sql . "PRIMARY KEY (`" . reset($data['headings']) . "`)";
     } else {
         $sql = $sql . "PRIMARY KEY (" . $primary_key . ")";
     }
     $sql = $sql . ");";
     $connection->query($sql);
     $rows = array();
     $sql = "INSERT INTO " . preg_replace("/[^A-Za-z0-9 ]/", "_", $data_connector->type) . "_" . $data_connector_id . " (`" . implode("`,`", $data['headings']) . "`) VALUES ";
     foreach ($data as $row) {
         if (count($data['headings']) == count($row)) {
             $rows[] = "('" . implode("','", $row) . "')";
         }
     }
     array_shift($rows);
     $sql = $sql . implode(", ", $rows) . " ON DUPLICATE KEY UPDATE ";
     $duplicate_values = array();
     foreach ($data['headings'] as $column_name) {
         $duplicate_values[] = "`" . $column_name . "` =VALUES(`" . $column_name . "`)";
     }
     $sql = $sql . implode(" ,", $duplicate_values) . ";";
     $connection->query($sql);
 }