Esempio n. 1
0
 /**
  * Load extension from specify folder.
  *
  * @param string $package filepath to folder with extension
  * @return mixed
  */
 function loadExtension($package)
 {
     $db = JFactory::getDbo();
     /* @var $db JDatabaseMySQL */
     // try to load extension language
     $language = JFactory::getLanguage();
     /* @var $language JLanguage */
     $language->load(JFile::getName($package), JPATH_ADMINISTRATOR);
     if (($manifest =& AInstaller::getManifest($package)) !== false) {
         $root = $manifest->parser;
         $element = $root->files;
         if (is_object($element)) {
             $type = (string) $root->attributes()->type;
             foreach ($element->children() as $file) {
                 if (isset($file->attributes()->{$type}) and $name = (string) $file->attributes()->{$type}) {
                     if (class_exists($classname = 'AInstaller' . ucfirst($type))) {
                         $model = new $classname();
                         $extension = $model->getTable();
                         $db->setQuery($model->getQuery($name, $root));
                         if ($id = (int) $db->loadResult()) {
                             $extension->load($id);
                             if (isset($extension->iscore) && (int) $extension->iscore != 0) {
                                 $extension->iscore = 0;
                                 $extension->store();
                             }
                         }
                         if (isset($root->setting)) {
                             foreach ($root->setting->attributes() as $name => $value) {
                                 if (isset($extension->{$name})) {
                                     $extension->{$name} = (string) $value;
                                 }
                             }
                         }
                         $model->extra($extension);
                         $extension->extType = $type;
                         return $extension;
                     }
                 }
             }
         }
     }
     return null;
 }