OCA\Richdocuments\Db\Op::addOpsArray PHP Method

addOpsArray() public static method

public static addOpsArray ( $esId, $memberId, $ops )
    public static function addOpsArray($esId, $memberId, $ops)
    {
        $opObj = new Op();
        foreach ($ops as $op) {
            if (!$opObj->canInsertOp($esId, $memberId, $op)) {
                continue;
            }
            $opObj->setData(array($esId, $op['optype'], $memberId, json_encode($op)));
            $opObj->insert();
        }
        return $opObj->getHeadSeq($esId);
    }

Usage Example

Example #1
0
 public function syncOps($memberId, $currentHead, $clientHead, $clientOps)
 {
     $hasOps = count($clientOps) > 0;
     $op = new \OCA\Richdocuments\Db\Op();
     // TODO handle the case ($currentHead == "") && ($seqHead != "")
     if ($clientHead == $currentHead) {
         // matching heads
         if ($hasOps) {
             // incoming ops without conflict
             // Add incoming ops, respond with a new head
             $newHead = \OCA\Richdocuments\Db\Op::addOpsArray($this->getEsId(), $memberId, $clientOps);
             $result = array('result' => 'added', 'head_seq' => $newHead ? $newHead : $currentHead);
         } else {
             // no incoming ops (just checking for new ops...)
             $result = array('result' => 'new_ops', 'ops' => array(), 'head_seq' => $currentHead);
         }
     } else {
         // HEADs do not match
         $result = array('result' => $hasOps ? 'conflict' : 'new_ops', 'ops' => $op->getOpsAfterJson($this->getEsId(), $clientHead), 'head_seq' => $currentHead);
     }
     return $result;
 }