Beispiel #1
0
 public static function handle_resource_content(cc_i_manifest &$manifest, $packageroot, $contextid, $outdir, $allinone = true)
 {
     $result = array();
     cc_helpers::add_files($manifest, $packageroot, $outdir, $allinone);
     $files = cc_helpers::embedded_mapping($packageroot, $contextid);
     //$rdir = $allinone ? new cc_resource_location($outdir) : null;
     $rootnode = null;
     $rootvals = null;
     $depfiles = array();
     $depres = array();
     $flocation = null;
     foreach ($files as $virtual => $values) {
         $clean_filename = $values[2];
         $vals = pkg_static_resources::instance()->get_identifier($virtual);
         $resource = $vals[3];
         $identifier = $resource->identifier;
         $flocation = $vals[1];
         if ($values[1]) {
             $rootnode = $resource;
             $rootvals = $flocation;
             continue;
         }
         $depres[] = $identifier;
         $depfiles[] = $vals[1];
         $result[$virtual] = array($identifier, $flocation, false);
     }
     if (!empty($rootnode)) {
         $rootnode->files = array_merge($rootnode->files, $depfiles);
         $result[$virtual] = array($rootnode->identifier, $rootvals, true);
     }
     return $result;
 }
Beispiel #2
0
 public static function add_files(cc_i_manifest &$manifest, $packageroot, $outdir, $allinone = true)
 {
     global $CFG;
     if (pkg_static_resources::instance()->finished) {
         return;
     }
     $files = cc_helpers::embedded_mapping($packageroot);
     $rdir = $allinone ? new cc_resource_location($outdir) : null;
     foreach ($files as $virtual => $values) {
         $clean_filename = $values[2];
         if (!$allinone) {
             $rdir = new cc_resource_location($outdir);
         }
         $rtp = $rdir->fullpath() . $values[7] . $clean_filename;
         //Are there any relative virtual directories?
         //let us try to recreate them
         $justdir = $rdir->fullpath(false) . $values[7];
         if (!file_exists($justdir)) {
             if (!mkdir($justdir, $CFG->directorypermissions, true)) {
                 throw new RuntimeException('Unable to create directories!');
             }
         }
         $source = $packageroot . DIRECTORY_SEPARATOR . $values[0];
         if (!copy($source, $rtp)) {
             throw new RuntimeException('Unable to copy files!');
         }
         $resource = new cc_resource($rdir->rootdir(), $values[7] . $clean_filename, $rdir->dirname(false));
         $res = $manifest->add_resource($resource, null, cc_version11::webcontent);
         pkg_static_resources::instance()->add($virtual, $res[0], $rdir->dirname(false) . $values[7] . $clean_filename, $values[1], $resource);
     }
     pkg_static_resources::instance()->finished = true;
 }