function CreatePackageJson()
 {
     $extensionData = ExtensionData::get();
     $count = 0;
     if ($extensionData && !empty($extensionData)) {
         $count = $extensionData->Count();
         $filename = 'packages.json';
         $repo = array('packages' => array());
         foreach ($extensionData as $extension) {
             // Include only Approved extensions
             if ($extension->Accepted == '1') {
                 $json = new JsonHandler($extension->Url);
                 $jsonData = $json->cloneJson();
                 $packages = $jsonData['AllRelease'];
                 $dumper = new ArrayDumper();
                 foreach ($packages as $package) {
                     $repo['packages'][$package->getPrettyName()][$package->getPrettyVersion()] = $dumper->dump($package);
                 }
             }
         }
         if (!empty($repo['packages'])) {
             $packagesJsonData = Convert::array2json($repo);
             $packageJsonFile = fopen(BASE_PATH . DIRECTORY_SEPARATOR . $filename, 'w');
             fwrite($packageJsonFile, $packagesJsonData);
             fclose($packageJsonFile);
             echo "<br /><br /><strong> package.json file created successfully...</strong><br />";
         } else {
             throw new InvalidArgumentException('package.json file could not be created');
         }
     }
 }
 function updateJson()
 {
     $extensionData = ExtensionData::get();
     $count = 0;
     if ($extensionData && !empty($extensionData)) {
         $count = 0;
         foreach ($extensionData as $extension) {
             // Include only Approved extensions
             if ($extension->Accepted == '1') {
                 $json = new JsonHandler($extension->Url);
                 $jsonData = $json->cloneJson();
                 $updateJson = $json->UpdateJson();
                 if (array_key_exists('ExtensionID', $updateJson)) {
                     $id = $updateJson['ExtensionID'];
                     $deleteVersion = $json->deleteVersionData($id);
                     if ($deleteVersion) {
                         $saveVersion = $json->saveVersionData($id);
                         if ($saveVersion) {
                             echo "<br>{$extension->Name} is updated <br>";
                         }
                     }
                 } else {
                     throw new InvalidArgumentException("{$extension->Name}  could not updated <br />");
                 }
                 $count++;
             }
         }
         echo "<br><br><strong>{$count} Repositories processed...</strong><br>";
     } else {
         throw new InvalidArgumentException('No Extension found...');
     }
 }
 /**
  * Get comma seprated list of authors email
  *
  * @param  int $extensionId
  * @return string
  */
 public static function get_authors_email($extensionId)
 {
     $authors = ExtensionData::get()->byID($extensionId)->ExtensionAuthors();
     $emails = array();
     foreach ($authors as $author) {
         array_push($emails, $author->Email);
     }
     $commaSeparatedEmail = implode(",", $emails);
     return $commaSeparatedEmail;
 }
 function testSaveJsonFunction()
 {
     $repoUrl = 'https://github.com/vikas-srivastava/extensionmanager.git';
     $jsonHandler = new JsonHandler($repoUrl);
     $jsonHandler->repo = new MockVCSRepositoryWithRealValues();
     $result = $jsonHandler->cloneJson();
     $this->latestReleasePackage = $result['LatestRelease'];
     $result = $jsonHandler->saveJson();
     $this->assertArrayNotHasKey('ErrorMsg', $result);
     $this->assertArrayHasKey('ExtensionID', $result);
     $extensionId = $result['ExtensionID'];
     $extensionData = ExtensionData::get()->byID($extensionId);
     list($vendorName, $extensionName) = explode("/", $this->latestReleasePackage->getPrettyName());
     $this->assertEquals($extensionData->Name, $extensionName);
 }
 /**
  * Get Selected Module.
  *
  * @return Array .
  */
 public function SelectedModule()
 {
     $module = null;
     $param = $this->getRequest()->param("ID");
     if ($param) {
         $module = ExtensionData::get()->where("(ID = '{$param}' OR URLSegment = '{$param}') AND (Type = 'Module') AND (Accepted = '1')")->first();
     }
     return $module;
 }
 /**
  * Display 10 recently submitted Extensions.
  *
  * @return array
  */
 public function newExtension()
 {
     return ExtensionData::get()->filter(array('Accepted' => '1', 'Type' => $this->extensionType))->sort('Created', 'DESC')->limit('10');
 }
 /**
  * update json content in database
  *
  * @return boolean
  */
 public function updateJson()
 {
     $ExtensionData = ExtensionData::get()->filter(array("Title" => $this->latestReleasePackage->getPrettyName()))->First();
     if ($ExtensionData) {
         $result = $this->dataFields($ExtensionData);
         return $result;
     } else {
         return;
     }
 }