예제 #1
0
 /**
  * @param $object object
  * @return boolean
  */
 public function delete($object)
 {
     if (Dao::getObjectIdentifier($object)) {
         return Dao::delete($object);
     }
     return false;
 }
예제 #2
0
파일: Tests.php 프로젝트: TuxBoy/Demo-saf
 public function testWriteAnnotations()
 {
     $tests = new Tests();
     $tests->data = 'test';
     Dao::write($tests, [Dao::only(['data'])]);
     Dao::delete($tests);
     $this->assume(__METHOD__, $tests->data, 'test+locbefore(data)+disbefore(data)+locafter(data)+disafter(data)');
 }
예제 #3
0
 /**
  * Delete the Data_List_Settings object from the Settings set
  */
 public function delete()
 {
     if ($this->name) {
         $code = $this->class_name . DOT . static::customId();
         $setting = new Setting($code . DOT . $this->name);
         $setting = Dao::searchOne($setting);
         if (isset($setting)) {
             Dao::delete($setting);
         }
     }
 }
예제 #4
0
 /**
  * @param $parameters Parameters
  * @param $form       array
  * @param $files      array
  * @param $class_name string
  * @return mixed
  */
 public function run(Parameters $parameters, $form, $files, $class_name)
 {
     $parameters = $parameters->getObjects();
     Dao::begin();
     $deleted = 0;
     foreach ($parameters as $object) {
         if (is_object($object)) {
             if (!Dao::delete($object)) {
                 $deleted = 0;
                 break;
             }
             $deleted++;
         }
     }
     Dao::commit();
     $parameters['deleted'] = $deleted ? true : false;
     return View::run($parameters, $form, $files, $class_name, Feature::F_DELETE);
 }
예제 #5
0
 /**
  * @param $last_time integer compile only files modified since this time
  */
 public function compile($last_time = 0)
 {
     set_time_limit(900);
     clearstatcache();
     $cache_dir = $this->getCacheDir();
     // create data set for dependencies, check for dependencies for deleted files
     Dao::createStorage(Dependency::class);
     Dao::begin();
     if (isset($_GET['Z'])) {
         $link = Dao::current();
         if ($link instanceof Link) {
             $link->query('TRUNCATE TABLE `dependencies`');
         }
     }
     foreach (Dao::select(Dependency::class, ['file_name' => Func::distinct()]) as $file_dependency) {
         /** @var $file_dependency List_Row */
         $file_name = $file_dependency->getValue('file_name');
         if (!file_exists($file_name)) {
             foreach (Dao::search(['file_name' => $file_name], Dependency::class) as $dependency) {
                 /** @var $dependency Dependency */
                 Dao::delete($dependency);
                 foreach (Dao::search(['dependency_name' => $dependency->class_name], Dependency::class) as $sub_dependency) {
                     /** @var $sub_dependency Dependency */
                     Dao::delete($sub_dependency);
                 }
             }
         }
     }
     Dao::commit();
     $this->sources = array_merge($this->more_sources, $this->getFilesToCompile($last_time));
     $first_group = true;
     foreach ($this->compilers as $compilers) {
         /** @var $compilers ICompiler[] */
         $saved_sources = $this->sources;
         while ($this->sources) {
             // get source and update dependencies
             foreach ($this->sources as $source) {
                 /** @var Reflection_Source $source inspector bug */
                 /** @noinspection PhpParamsInspection inspector bug (a Dependency is an object) */
                 (new Set())->replace($source->getDependencies(true), Dependency::class, ['file_name' => $source->file_name]);
             }
             do {
                 $added = [];
                 // ask each compiler for adding of compiled files, until they have nothing to add
                 foreach ($compilers as $compiler) {
                     if ($compiler instanceof Needs_Main) {
                         $compiler->setMainController($this->main_controller);
                     }
                     $added = array_merge($added, $compiler->moreSourcesToCompile($this->sources));
                 }
                 foreach ($added as $source) {
                     /** @var Reflection_Source $source inspector bug */
                     /** @noinspection PhpParamsInspection inspector bug (a Dependency is an object) */
                     (new Set())->replace($source->getDependencies(true), Dependency::class, ['file_name' => $source->file_name]);
                     $this->sources[$source->file_name] = $source;
                 }
                 if (count($compilers) == 1) {
                     $added = [];
                 }
             } while ($added);
             $saved_sources = array_merge($saved_sources, $this->sources);
             // fill in sources cache
             $sources_count = count($this->sources);
             foreach ($this->sources as $source) {
                 foreach (array_keys($source->getClasses()) as $class_name) {
                     $this->sources_cache[$class_name] = $source;
                 }
                 if ($sources_count > self::MAX_OPENED_SOURCES) {
                     $source->free(self::SOURCES_FREE);
                 }
             }
             // compile sources
             foreach ($this->sources as $source) {
                 $this->compileSource($source, $compilers, $cache_dir, $first_group, $sources_count);
             }
             $this->sources = $this->more_sources;
             $this->more_sources = [];
             foreach ($this->sources as $source) {
                 if (!isset($saved_sources[$source->file_name])) {
                     $saved_sources[$source->file_name] = $source;
                 }
             }
         }
         $this->sources = $saved_sources;
         $first_group = false;
     }
     $this->sources = null;
 }