/** * http://www.php.net/manual/en/function.natsort.php#45346 * @param <type> $array * @return <type> */ public static function array_sorting($array, $targetFolder, $arrange) { $ag_array_data = array(); // READS XML DATA AND GENERATES ARRAYS foreach ($array as $key => $value) { // Set Possible Description File Apsolute Path // Instant patch for upper and lower case... $ag_pathWithStripExt = $targetFolder . agHelper::ag_removExtension(basename($value)); $ag_XML_path = $ag_pathWithStripExt . ".xml"; if (agHelper::ag_exists($ag_pathWithStripExt . ".XML")) { $ag_XML_path = $ag_pathWithStripExt . ".XML"; } $ag_xml_value = array(); $ag_xml_value["value"] = $value; // IMAGE NAME $ag_xml_value["priority"] = "none"; // DEFAULT PRIORITY $ag_xml_value["date"] = date("YmdHi", filemtime($targetFolder . $value)); // DEFAULT DATE if (agHelper::ag_exists($ag_XML_path)) { $ag_XML_xml = simplexml_load_file($ag_XML_path); if (isset($ag_XML_xml)) { if (isset($ag_XML_xml->visible)) { if ((string) $ag_XML_xml->visible == 'false') { continue; // SKIP HIDDEN IMAGES } } if (isset($ag_XML_xml->priority) && is_numeric((string) $ag_XML_xml->priority) && (string) $ag_XML_xml->priority >= 0) { $ag_xml_value["priority"] = (string) $ag_XML_xml->priority; // XML PRIORITY } } } $ag_array_data[] = $ag_xml_value; } $sort_by = 'priority'; switch ($arrange) { case "date": $sort_by = 'date'; break; case "name": $sort_by = 'value'; break; } // for all arguments without the first starting at end of list // clear arrays $new_array = array(); $temporary_array = array(); // walk through original array foreach ($ag_array_data as $original_key => $original_value) { // and save only values $temporary_array[] = $original_value[$sort_by]; } // sort array on values natcasesort($temporary_array); if ($sort_by == "date") { $temporary_array = array_reverse($temporary_array, true); } // delete double values $temporary_array = array_unique($temporary_array); // walk through temporary array foreach ($temporary_array as $temporary_value) { // walk through original array foreach ($ag_array_data as $original_key => $original_value) { // and search for entries having the right value if ($temporary_value == $original_value[$sort_by]) { // save in new array $new_array[$original_key] = $original_value; } } } // update original array $ag_array_data = $new_array; // CREATE SORTED ARRAY $array = array(); foreach ($ag_array_data as $original_key => $original_value) { // and save only values $array[] = $original_value['value']; } return $array; }
/** * Reads description files */ private function readDescriptionFiles() { // Create Images Array unset($this->descArray); if (file_exists($this->imagesFolderPhysicalPath)) { $ag_images = array(); $ag_files = JFolder::files($this->imagesFolderPhysicalPath); $ag_ext_valid = array("jpg", "jpeg", "gif", "png"); // SET VALID IMAGE EXTENSION foreach ($ag_files as $key => $value) { if (is_numeric(array_search(strtolower(agHelper::ag_getExtension(basename($value))), $ag_ext_valid))) { $ag_images[] = $value; } } $ag_files = array_merge($ag_images, JFolder::folders($this->imagesFolderPhysicalPath)); if (!empty($ag_files)) { foreach ($ag_files as $key => $f) { // Set image name as imageDescription value, as predifined value $this->descArray[$f] = $f; // Set Possible Description File Apsolute Path // Instant patch for upper and lower case... $ag_pathWithStripExt = $this->imagesFolderPhysicalPath . agHelper::ag_removExtension($f); $descriptionFileApsolutePath = $ag_pathWithStripExt . ".XML"; if (file_exists($ag_pathWithStripExt . ".xml")) { $descriptionFileApsolutePath = $ag_pathWithStripExt . ".xml"; } if (file_exists($descriptionFileApsolutePath)) { // Check is descriptions file exists $ag_imgXML_xml = JFactory::getXML($descriptionFileApsolutePath); $ag_imgXML_captions = $ag_imgXML_xml->captions; $lang = JFactory::getLanguage(); $langTag = strtolower($lang->getTag()); // GET DEFAULT LABEL if (!empty($ag_imgXML_captions->caption)) { foreach ($ag_imgXML_captions->caption as $ag_imgXML_caption) { if (strtolower($ag_imgXML_caption->attributes()->lang->data()) == "default") { $this->descArray[$f] = $ag_imgXML_caption->data(); } } } // GET CURRENT LANG LABEL if (!empty($ag_imgXML_captions->caption)) { foreach ($ag_imgXML_captions->caption as $ag_imgXML_caption) { if (strtolower($ag_imgXML_caption->attributes()->lang->data()) == strtolower($langTag)) { $this->descArray[$f] = $ag_imgXML_caption->data(); } } } // RICH TEXT SUPPORT if ($this->params['plainTextCaptions']) { $this->descArray[$f] = strip_tags($this->descArray[$f]); } } } } // if(file_exists($descriptionFileApsolutePath)) } else { $this->descArray = null; } }