Example #1
0
 public function create($username, $password, $email, $salt = false, $group_id = 3, $psoverride = 1, $ipaddr = false, $mustValidate = true)
 {
     $user = $this->getByUsername($username);
     if ($user) {
         return self::CREATE_USERNAME_EXISTS;
     }
     $query = new Query('SELECT');
     $query->field('COUNT(*)', 'count');
     $query->from('users');
     $query->where('email like ?', $email);
     $stmt = $query->prepare();
     $stmt->execute();
     $obj = $stmt->fetchObj();
     if ($obj->count > 0) {
         return self::CREATE_EMAIL_EXISTS;
     }
     $salt = $salt ?: $this->generateSalt();
     $passhash = md5(md5($salt) . md5($password));
     $bean = new UserProfileBean();
     $bean->username = $username;
     $bean->email = $email;
     $bean->group_id = $group_id;
     $bean->permission_override_id = $psoverride;
     $bean->password = $passhash;
     $bean->salt = $salt;
     $bean->set('joindate', "NOW()", true);
     $bean->reg_ip = $ipaddr ?: $_SERVER['REMOTE_ADDR'];
     $bean->must_validate = $mustValidate ? 1 : 0;
     try {
         $bean->insert();
     } catch (QueryFailedException $e) {
         return self::CREATE_ERROR;
     }
     return self::CREATE_OK;
 }
Example #2
0
 public function getUniqueURLs($linkArray)
 {
     if (!is_array($linkArray) || !$linkArray) {
         throw new Exception('AppLinkModel::getUniqueURLs argument must be an array.');
     }
     $query = new Query('SELECT');
     $query->field('url');
     $query->from('links');
     foreach ($linkArray as $link) {
         $query->where('url like ?', '%' . $link . '%', 'OR');
     }
     $stmt = $query->prepare();
     $stmt->execute();
     $existing = array();
     while ($row = $stmt->fetchObj()) {
         $existing[] = $row->url;
     }
     $unique = array();
     foreach ($linkArray as $link) {
         $exists = false;
         foreach ($existing as $elink) {
             if (strtolower($link) == strtolower($elink) || in_array($link, $unique)) {
                 $exists = true;
                 break;
             }
         }
         if (!$exists) {
             $unique[] = $link;
         }
     }
     return $unique;
 }
 public function setValue($key, $data)
 {
     $q = new Query("DELETE");
     $q->from("config");
     $q->where("key = ?", $key);
     $stmt = $q->prepare();
     $stmt->execute();
     $cvb = new ConfigValueBean();
     $cvb->key = $key;
     $cvb->data = serialize($data);
     $cvb->set("last_updated_time", "NOW()", true);
     $cvb->insert();
 }
Example #4
0
 /**
  * Database template loader
  * Assumes that the table specified in the config has
  * a 'path' and 'content' field.
  * The former should contain the path as it would be
  * loaded through a controller (e.g. ucp/user_logged_in)
  * The latter should contain the Hydrogen/purephp template
  * as it would be in a file.
  *
  * @param string viewName The name of the view to be found.
  */
 public function load($viewName)
 {
     $query = new Query("SELECT");
     $query->from($this->getTableName());
     $query->where("path = ?", $viewName);
     $query->limit(1);
     $stmt = $query->prepare();
     $stmt->execute();
     $result = $stmt->fetchObject();
     if (!$result->content) {
         throw new NoSuchViewException("View " . $viewName . " does not exist in database.");
     }
     return $result->content;
 }
 public function store($key, $data, $moduleNamespace)
 {
     $moduleNamespace = str_replace("\\", "*", $moduleNamespace);
     $q = new Query("DELETE");
     $q->from("module_data");
     $q->where("title = ?", $key);
     $q->where("module = ?", $moduleNamespace);
     $stmt = $q->prepare();
     $stmt->execute();
     $mdb = new ModuleDataBean();
     $mdb->title = $key;
     $mdb->data = serialize($data);
     $mdb->module = $moduleNamespace;
     $mdb->set("last_updated_time", "NOW()", true);
     $mdb->insert();
 }
Example #6
0
 public function banIPs($desc, $ips, $permissionSet = 10)
 {
     $query = new Query('INSERT');
     $query->intoTable('bans_ip');
     $query->intoField('ban_desc');
     $query->intoField('ip_low');
     $query->intoField('ip_high');
     $query->intoField('permissionset_id');
     $query->intoField('date_banned');
     foreach ($ips as $ip) {
         $intip = $this->toIntIP($ip);
         $query->values('(?, ?, ?, ?, NOW())', array($desc, $intip, $intip, $permissionSet));
     }
     $stmt = $query->prepare();
     return $stmt->execute();
 }
Example #7
0
 /**
  * Loads the contents of the specified template.
  *
  * @param string $templateName The name of the template to be loaded.
  * @return string The unaltered, unparsed contents of the specified
  * 		template.
  * @throws hydrogen\view\exceptions\NoSuchViewException if the specified
  * 		template is not found or cannot be loaded.
  */
 public function load($viewName)
 {
     $table = Config::getRequiredVal("view", "table_name");
     $nameCol = Config::getRequiredVal("view", "name_field");
     $contentCol = Config::getRequiredVal("view", "content_field");
     $query = new Query("SELECT");
     $query->field($contentCol);
     $query->from($table);
     $query->where($nameCol . " = ?", $viewName);
     $query->limit(1);
     $stmt = $query->prepare();
     $stmt->execute();
     $result = $stmt->fetchObject();
     if (!$result->{$contentCol}) {
         throw new NoSuchViewException("View " . $viewName . " does not exist in database.");
     }
     return $result->{$contentCol};
 }
Example #8
0
 public function create($app_id, $version, $verinfo)
 {
     $ver = $this->getByAppID($app_id, $version);
     if ($ver) {
         return false;
     }
     $query = new Query('SELECT');
     $query->field('MAX(intversion)', 'maxint');
     $query->from('versions');
     $query->where('app_id = ?', $app_id);
     $stmt = $query->prepare();
     $stmt->execute();
     if (!($row = $stmt->fetchObj())) {
         $max = false;
     } else {
         $max = $row->maxint;
     }
     if ($max) {
         $curTokens = $this->getNumTokens($max);
         $intver = $this->getIntVersion($version, $curTokens);
         $newTokens = $this->getNumTokens($intver);
         if ($newTokens > $curTokens) {
             $this->updateTokens($app_id, $newTokens);
         }
     } else {
         $intver = $this->getIntVersion($version);
     }
     $ver = new AppVersionBean();
     $ver->app_id = $app_id;
     $ver->version = $version;
     $ver->intversion = $intver;
     $ver->versioninfo = $verinfo;
     $ver->set('date_added', 'NOW()', true);
     $ver->set('last_updated', 'NOW()', true);
     try {
         $ver->insert();
     } catch (QueryFailedException $e) {
         return false;
     }
     return true;
 }
Example #9
0
 public function setScreenshots($app_id, $itunes_id, $shots)
 {
     $i = 0;
     $beans = array();
     foreach ($shots as $shot) {
         if ($i) {
             $filename = "{$itunes_id}_{$i}screen.jpg";
         } else {
             $filename = "{$itunes_id}screen.jpg";
         }
         if ($this->saveScreenshotLocally($shot, $filename, $is_horiz)) {
             $bean = new ScreenshotBean();
             $bean->app_id = $app_id;
             $bean->shot_url = '%BASE_URL%/appimages/screenshots/' . $filename;
             $bean->is_horiz = $is_horiz ? 1 : 0;
             $beans[] = $bean;
             $i++;
         }
     }
     if (!$beans) {
         return false;
     }
     $query = new Query('DELETE');
     $query->from('screenshots');
     $query->where('app_id = ?', $app_id);
     $stmt = $query->prepare();
     $stmt->execute();
     foreach ($beans as $bean) {
         try {
             $bean->insert(true);
         } catch (QueryFailedException $e) {
         }
     }
     $this->cm->clear("sm_appid_{$app_id}");
     return true;
 }
Example #10
0
 public function delete()
 {
     if (!isset($this->stored[static::$primaryKey])) {
         $class = get_class($this);
         throw new MissingPrimaryKeyException($class . '->delete() cannot be called until a primary key is set.');
     }
     $query = new Query('DELETE', $this->dbengine);
     $query->from(static::$tableNoPrefix);
     $query->where(static::$primaryKey . ' = ?', $this->stored[static::$primaryKey]);
     $query->limit(1);
     $stmt = $query->prepare();
     if (!$stmt->execute()) {
         $info = $stmt->errorInfo();
         $e = new QueryFailedException($info[2]);
         $e->errorInfo = $info;
         throw $e;
     }
     return true;
 }
Example #11
0
        $name = $row['name'];
        $app_id = $row['id'];
        // Pull out the words we'll need to index
        $iwords = $am->getIndexable($name);
        // Add 'em
        if (count($iwords) > 0) {
            echo "Indexing: " . implode(', ', $iwords) . "<br />\n";
            foreach ($iwords as $iword) {
                $sindex[$iword][] = $app_id;
            }
        } else {
            echo "No words to be indexed.<br />\n";
        }
    }
}
echo "<br />Saving and caching:<br />\n";
foreach ($sindex as $term => $idarray) {
    echo "<strong>{$term}</strong> ";
    echo str_replace("\n", "<br />\n", print_r($idarray, true));
    $cm->set("search_name_index:{$term}", $idarray, 0);
    $query = new Query('INSERT');
    $query->intoTable('search_name_index');
    $query->intoField('term');
    $query->intoField('app_id_array');
    $query->values("(?, ?)", array($term, serialize($idarray)));
    $stmt = $query->prepare();
    if (!$stmt->execute()) {
        echo "Error while adding term '{$term}'.<br />\n";
    }
}
echo "<br />Done!";
 /**
  * Get the total number of users connected
  * to the channel
  *
  * @return integer number of users
  */
 public function getTotalUsers()
 {
     $query = new Query("SELECT");
     $query->from("channel_users");
     $query->field("id");
     $query->where("channel_name = ?", Config::getVal("general", "channel"));
     $stmt = $query->prepare();
     $stmt->execute();
     $i = 0;
     while ($row = $stmt->fetchObject()) {
         $i++;
     }
     return $i;
 }
Example #13
0
 protected function indexName($name, $id)
 {
     $iwords = $this->getIndexable($name);
     if (count($iwords) > 0) {
         $sem = SemaphoreEngineFactory::getEngine();
         $sindex = array();
         $create = array();
         $docreate = false;
         $query = new Query('SELECT');
         $query->field('term');
         $query->field('app_id_array');
         $query->from('search_name_index');
         foreach ($iwords as $iword) {
             $sindex[$iword] = array();
             $create[$iword] = true;
             $docreate = true;
             $query->where('term = ?', $iword, 'OR');
         }
         $stmt = $query->prepare();
         $semkey = Config::getVal('recache', 'unique_name') . ":LOCK:sindex";
         $sem->acquire($semkey);
         $stmt->execute();
         while ($row = $stmt->fetchObj()) {
             $create[$row->term] = false;
             $sindex[$row->term] = unserialize($row->app_id_array);
         }
         unset($query);
         unset($stmt);
         $iquery = new Query('INSERT');
         $iquery->ignore();
         $iquery->intoTable('search_name_index');
         $iquery->intoField('term');
         $iquery->intoField('app_id_array');
         $uqueries = array();
         foreach ($iwords as $iword) {
             if (!in_array($id, $sindex[$iword])) {
                 $sindex[$iword][] = $id;
                 $this->cm->set("search_name_index:{$iword}", $sindex[$iword], 0);
             }
             if ($create[$iword]) {
                 $iquery->VALUES('(?, ?)', array($iword, serialize($sindex[$iword])));
             } else {
                 $query = new Query('UPDATE');
                 $query->table('search_name_index');
                 $query->set('app_id_array = ?', serialize($sindex[$iword]));
                 $query->where('term = ?', $iword);
                 $uqueries[] = $query;
             }
         }
         if ($docreate) {
             $stmt = $iquery->prepare();
             unset($iquery);
             $stmt->execute();
         }
         foreach ($uqueries as $uquery) {
             $stmt = $uquery->prepare();
             $stmt->execute();
         }
         $sem->release($semkey);
     }
 }
Example #14
0
 public function getMessageCount($nick, $time = false)
 {
     if (!$time) {
         $query = new Query("SELECT");
         $query->from("channel_actions");
         $query->field("id");
         $query->where("channel_name = ?", Config::getVal("general", "channel"));
         $query->where("nickname = ?", $nick);
         $query->where("type = ?", ReceivedLineTypes::CHANMSG);
         $stmt = $query->prepare();
         $stmt->execute();
         $i = 0;
         while ($row = $stmt->fetchObject()) {
             $i++;
         }
         return $i;
     } else {
         if ($time == "hour") {
             $query = new Query("SELECT");
             $query->from("channel_actions");
             $query->field("id");
             $query->where("channel_name = ?", Config::getVal("general", "channel"));
             $query->where("time > ?", time() - 60 * 60);
             $query->where("nickname = ?", $nick);
             $query->where("type = ?", ReceivedLineTypes::CHANMSG);
             $stmt = $query->prepare();
             $stmt->execute();
             $i = 0;
             while ($row = $stmt->fetchObject()) {
                 $i++;
             }
             return $i;
         } else {
             if ($time == "day") {
                 $query = new Query("SELECT");
                 $query->from("channel_actions");
                 $query->field("id");
                 $query->where("channel_name = ?", Config::getVal("general", "channel"));
                 $query->where("time > ?", time() - 60 * 60 * 24);
                 $query->where("nickname = ?", $nick);
                 $query->where("type = ?", ReceivedLineTypes::CHANMSG);
                 $stmt = $query->prepare();
                 $stmt->execute();
                 $i = 0;
                 while ($row = $stmt->fetchObject()) {
                     $i++;
                 }
                 return $i;
             } else {
                 if ($time == "week") {
                     $query = new Query("SELECT");
                     $query->from("channel_actions");
                     $query->field("id");
                     $query->where("channel_name = ?", Config::getVal("general", "channel"));
                     $query->where("time > ?", time() - 60 * 60 * 24 * 7);
                     $query->where("nickname = ?", $nick);
                     $query->where("type = ?", ReceivedLineTypes::CHANMSG);
                     $stmt = $query->prepare();
                     $stmt->execute();
                     $i = 0;
                     while ($row = $stmt->fetchObject()) {
                         $i++;
                     }
                     return $i;
                 }
             }
         }
     }
 }