/**
  * Add new users to database
  *
  * @param string $email
  * @param string $name
  * @param string $password
  * @param string $website
  * @param string $isgroup 'Y'/'N'
  * @param string $authtype
  * @param string $description
  * @param string $status
  * @param string $photo
  * @return User object (this) (or Error object)
  */
 function add($email, $name, $password, $website, $isgroup = "N", $authtype = "", $description = "", $status = "", $photo = "")
 {
     global $DB, $CFG, $HUB_SQL;
     $params = array();
     if ($isgroup == 'N') {
         $lasttestgroup = $DB->select($HUB_SQL->DATAMODEL_USER_LAST_TEST_GROUP, $params);
     }
     if ($isgroup == 'Y' || $lasttestgroup !== false && isset($lasttestgroup[0]['TestGroup'])) {
         $dt = time();
         // If no authtype passed, set to default value
         if ($authtype == "") {
             $authtype = $CFG->AUTH_TYPE_EVHUB;
         }
         // if no status passed then set to default status
         // must be === otherwise status of 0=active will match
         if ($status === "") {
             $status = $CFG->USER_STATUS_UNVALIDATED;
         }
         // If no photo passed then set to the default one
         if ($photo == "") {
             if ($isgroup == 'Y') {
                 $photo = $CFG->DEFAULT_GROUP_PHOTO;
             } else {
                 $photo = $CFG->DEFAULT_USER_PHOTO;
             }
         }
         $this->userid = getUniqueID();
         $registrationKey = createRegistrationKey();
         $passwordcrypt = "";
         if ($authtype == $CFG->AUTH_TYPE_EVHUB && $password != "") {
             $passwordcrypt = crypt($password);
         }
         $testGroup = 0;
         if ($isgroup == 'N') {
             $testGroup = 1;
             if ($lasttestgroup[0]['TestGroup'] == 1) {
                 $testGroup = 2;
             }
         }
         $params[0] = $this->userid;
         $params[1] = $dt;
         $params[2] = $dt;
         $params[3] = $email;
         $params[4] = $name;
         $params[5] = $passwordcrypt;
         $params[6] = $website;
         $params[7] = 'N';
         $params[8] = $dt;
         $params[9] = 'N';
         $params[10] = $isgroup;
         $params[11] = $authtype;
         $params[12] = $description;
         $params[13] = $photo;
         $params[14] = $registrationKey;
         $params[15] = $status;
         $params[16] = $testGroup;
         $res = $DB->insert($HUB_SQL->DATAMODEL_USER_ADD, $params);
         if (!$res) {
             return database_error();
         } else {
             $this->load();
             // add the default roles for user
             $r = new Role();
             $r->setUpDefaultRoles($this->userid);
             // add default links for user.
             $lt = new LinkType();
             $lt->setUpDefaultLinkTypes($this->userid);
             // set email activity
             $this->updateFollowSendEmail($CFG->ACTIVITY_EMAIL_SENDING_ON);
             $this->updateFollowRunInterval($CFG->ACTIVITY_EMAIL_SENDING_INTERVAL);
             // add default node for user
             //$n = new CNode();
             //$n->setUpDefaultUserNode($this->userid);
             return $this;
         }
     } else {
         return database_error();
     }
 }