/** * Возвращает массив тегов с количеством их повторов (если указано) * @param bool $cloud Возвращать статистику для составления облака? * @return array */ function getTags($cloud = true) { if ($cloud) { $sql = "SELECT name, COUNT(name) as cnt\n FROM tags\n WHERE user_id = ?\n GROUP BY name ORDER BY COUNT(name) DESC"; return $this->db->select($sql, Core::getInstance()->user->getId()); } else { $sql = "SELECT name\n FROM tags\n WHERE user_id = ?\n GROUP BY name ORDER BY name"; return $this->db->selectCol($sql, Core::getInstance()->user->getId()); } }
/** * Удаляет все операции по указанной категории * * @param oldUser $user * @param int $catId */ function deleteOperationsByCategory(oldUser $user, $catId) { $sql = "SELECT id FROM operation WHERE user_id = ? AND cat_id = ?"; $operations = $this->db->selectCol($sql, $user->getId(), $catId); if (count($operations) > 0) { $this->db->query("BEGIN;"); foreach ($operations as $opId) { $this->deleteOperation($opId); } $this->db->query("COMMIT;"); } return (int) count($operations); }
public function parseTables(DbSimple_Mysql $db) { $prefix = $db->getPrefix(); foreach ($db->selectCol("SHOW TABLES LIKE ?", $prefix . '%') as $tablename) { if (strlen($prefix) && strpos($tablename, $prefix) !== 0) { continue; } // other prefix? $name = substr($tablename, strlen($prefix)); $table = new Am_DbSync_Table($name); foreach ($db->select("DESCRIBE ?#", $tablename) as $row) { $table->addField(Am_DbSync_Field::createFromDb($row)); } $indexes = array(); foreach ($db->select("SHOW INDEX FROM ?#", $tablename) as $row) { $indexes[$row['Key_name']][] = $row; } foreach ($indexes as $indexRows) { $table->addIndex(Am_DbSync_Index::createFromDb($indexRows)); } $this->addTable($table); } }
function guessDbPrefix(DbSimple_Mysql $db, $database = null, $prefix = null) { $res = array(); foreach ($dbs = $db->selectCol("SHOW DATABASES") as $dbname) { try { $tables = $db->selectCol("SHOW TABLES FROM ?# LIKE '%{$this->guessTablePattern}'", $dbname); } catch (Am_Exception_Db $e) { continue; } if (is_array($tables)) { foreach ($tables as $t) { // check fields here $info = $db->select("SHOW COLUMNS FROM `{$dbname}`.{$t}"); $infostr = ""; if (is_array($info)) { foreach ($info as $k => $v) { $infostr .= join(';', $v) . "\n"; } } $wrong = 0; foreach ($this->guessFieldsPattern as $pat) { if (!preg_match('|^' . $pat . '|m', $infostr)) { $wrong++; } } if ($wrong) { continue; } $res[] = $dbname . '.' . substr($t, 0, -strlen($this->guessTablePattern)); } } } return $res; }