public function process(SplFileInfo $controller) { $controllerPath = $controller->getPathName(); $controllerClass = $this->getClassName($controller->getContents()); if (!$controllerClass) { return $this; } $resource = $this->getResource($controllerClass); if (!$resource) { return $this; } $operations = $this->getOperations($controllerClass); if (!$operations) { return $this; } $resourceModel = Entities\Resources::findFirstByResourceKey($resource['resourceKey']); if (!$resourceModel) { $resourceModel = new Entities\Resources(); } $resourceModel->assign($resource); $operationModels = array(); foreach ($operations as $operation) { $operationModel = Entities\Operations::findFirst(array("conditions" => "resourceKey = :resourceKey: AND operationKey = :operationKey:", "bind" => array('resourceKey' => $operation['resourceKey'], 'operationKey' => $operation['operationKey']))); if (!$operationModel) { $operationModel = new Entities\Operations(); } $operationModel->assign($operation); $operationModels[] = $operationModel; } $resourceModel->operations = $operationModels; if ($resourceModel->save()) { echo sprintf("Resource %s already added to DB\n", $resource['resourceKey']); } else { print_r($resourceModel->getMessages()); } /* p($resource); p($operations); p('-----------------'); */ return $this; }
/** * copy applied sql file to the applied directory. * * @param SplFileInfo $file */ public function copyToAppliedDir($file) { if (false === @copy($file->getPathName(), $this->appliedFilesDir . '/' . $file->getFileName())) { throw new RuntimeException('cannot copy the sql file to applied directory. check the <info>' . $this->appliedFilesDir . '</info> directory.'); } }