コード例 #1
0
 private function _cascade($to_deactivate)
 {
     $to_deactivate_deps = array();
     foreach ($to_deactivate as $plugin_id) {
         $to_deactivate_deps = array_merge($to_deactivate_deps, self::get_provided($plugin_id));
     }
     $found = array();
     foreach (self::$active_plugins as $dep) {
         $matching_deps = array_intersect($to_deactivate_deps, self::get_dependencies($dep));
         if (!empty($matching_deps)) {
             $found[] = $dep;
         }
     }
     $found = array_diff($found, self::$deactivate_cascade);
     // prevent endless loop
     if (empty($found)) {
         return;
     }
     self::$deactivate_cascade = array_merge(self::$deactivate_cascade, $found);
     self::_cascade($found);
     deactivate_plugins($found);
 }