Пример #1
0
 public function update(array $aWhere, array $aToSet)
 {
     $this->formatToDb($aWhere);
     $this->formatToDb($aToSet);
     list($sQuery, $aParameters) = $this->buildUpdateQuery($this->get('entity'), $aWhere, $aToSet);
     try {
         $oPdoStmt = $this->oPdo->perform($sQuery, $aParameters);
     } catch (\PDOException $oException) {
         $sErrMsg = $oException->getMessage() . "\n  Entity: " . $this->get('entity') . "\n  Query: {$sQuery}" . "\n  Parameters: " . print_r($aParameters, true);
         throw new \RuntimeException($sErrMsg);
     }
     return $oPdoStmt;
 }
    /**
     * Adds a relation.
     *
     * @param integer $class_id      Class ID.
     * @param string  $related_class Related class.
     * @param integer $relation_type Relation type.
     * @param boolean $is_internal   Is internal.
     * @param array   $old_relations Old relations.
     *
     * @return string
     */
    protected function addRelation($class_id, $related_class, $relation_type, $is_internal, array $old_relations)
    {
        $insert_sql = '	INSERT INTO ClassRelations (ClassId, RelatedClass, RelatedClassId, RelationType)
						VALUES (:class_id, :related_class, :related_class_id, :relation_type)';
        $update_sql = ' UPDATE ClassRelations
						SET RelationType = :relation_type
						WHERE ClassId = :class_id AND RelatedClassId = :related_class_id';
        if ($is_internal) {
            $related_class_id = 0;
        } else {
            $related_class_file = realpath(ReflectionEngine::locateClassFile($related_class));
            $sql = 'SELECT Id
					FROM Classes
					WHERE FileId = :file_id AND Name = :name';
            $related_class_id = $this->db->fetchValue($sql, array('file_id' => $this->processFile($related_class_file), 'name' => $related_class));
        }
        $this->db->perform(in_array($related_class, $old_relations) ? $update_sql : $insert_sql, array('class_id' => $class_id, 'related_class' => $related_class, 'related_class_id' => $related_class_id, 'relation_type' => $relation_type));
        return $related_class;
    }
Пример #3
0
    /**
     * Sets last revision processed by plugin.
     *
     * @param integer $last_revision Last revision.
     *
     * @return void
     */
    protected function setLastRevision($last_revision)
    {
        $sql = 'REPLACE INTO PluginData (Name, LastRevision)
				VALUES (:name, :last_revision)';
        $this->database->perform($sql, array('name' => $this->getName(), 'last_revision' => $last_revision));
    }
    /**
     * Adds ref to commit and commit to project.
     *
     * @param integer $revision Revision.
     * @param integer $ref_id   Ref ID.
     *
     * @return void
     */
    public function addCommitToRef($revision, $ref_id)
    {
        $sql = 'INSERT INTO CommitRefs (Revision, RefId)
				VALUES (:revision, :ref_id)';
        $this->database->perform($sql, array('revision' => $revision, 'ref_id' => $ref_id));
    }
Пример #5
0
 /**
  *
  * Performs a query after preparing the statement with bound values, then
  * returns the result as a PDOStatement.
  *
  * @param string $statement The SQL statement to prepare and execute.
  *
  * @param array $values Values to bind to the query.
  *
  * @return \PDOStatement
  *
  */
 public function perform($statement, array $values = array())
 {
     $result = $this->pdo->perform($statement, $values);
     $this->logProfiles(__FUNCTION__);
     return $result;
 }